⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdc391.vhd

📁 Vhdl cod for a clock for sp3e
💻 VHD
字号:
----------------------------------------------------------------------------------  File Name: cdc391.vhd----------------------------------------------------------------------------------  Copyright (C) 1998 Free Model Foundry http://www.FreeModelFoundry.com/-- --  This program is free software; you can redistribute it and/or modify--  it under the terms of the GNU General Public License version 2 as--  published by the Free Software Foundation.-- --  MODIFICATION HISTORY:-- --  version: |  author:  | mod date: | changes made:--    V1.0    R. Munden    98 APR 29   Initial release-- ----------------------------------------------------------------------------------  PART DESCRIPTION:-- --  Library:    CLOCK--  Technology: TTL--  Part:       CDC391-- --  Desciption: Clock driver with selectable polarity and 3-state outputs--------------------------------------------------------------------------------LIBRARY IEEE;   USE IEEE.std_logic_1164.ALL;                USE IEEE.VITAL_timing.ALL;                USE IEEE.VITAL_primitives.ALL;LIBRARY FMF;    USE FMF.gen_utils.ALL;---------------------------------------------------------------------------------- ENTITY DECLARATION--------------------------------------------------------------------------------ENTITY cdc391 IS    GENERIC (        -- tipd delays: interconnect path delays        tipd_A                   : VitalDelayType01 := VitalZeroDelay01;        tipd_TC1                 : VitalDelayType01 := VitalZeroDelay01;        tipd_TC2                 : VitalDelayType01 := VitalZeroDelay01;        tipd_TC3                 : VitalDelayType01 := VitalZeroDelay01;        tipd_OENeg               : VitalDelayType01 := VitalZeroDelay01;        -- tpd delays        tpd_A_N3Y                : VitalDelayType01 := UnitDelay01;        tpd_TC1_N3Y              : VitalDelayType01 := UnitDelay01;        tpd_OENeg_N3Y            : VitalDelayType01Z := UnitDelay01Z;        -- generic control parameters        InstancePath        : STRING    := DefaultInstancePath;        MsgOn               : BOOLEAN   := DefaultMsgOn;        XOn                 : BOOLEAN   := DefaultXon;        -- For FMF SDF technology file usage        TimingModel         : STRING    := DefaultTimingModel    );    PORT (        N1Y1            : OUT   std_logic := 'U';        N1Y2            : OUT   std_logic := 'U';        N1Y3            : OUT   std_logic := 'U';        N2Y1            : OUT   std_logic := 'U';        N2Y2            : OUT   std_logic := 'U';        N3Y             : OUT   std_logic := 'U';        A               : IN    std_logic := 'U';        TC1             : IN    std_logic := 'U';        TC2             : IN    std_logic := 'U';        TC3             : IN    std_logic := 'U';        OENeg           : IN    std_logic := 'U'    );    ATTRIBUTE VITAL_LEVEL0 of cdc391 : ENTITY IS TRUE;END cdc391;---------------------------------------------------------------------------------- ARCHITECTURE DECLARATION--------------------------------------------------------------------------------ARCHITECTURE vhdl_behavioral of cdc391 IS    ATTRIBUTE VITAL_LEVEL1 of vhdl_behavioral : ARCHITECTURE IS TRUE;    SIGNAL A_ipd               : std_ulogic := 'X';    SIGNAL TC1_ipd             : std_ulogic := 'X';    SIGNAL TC2_ipd             : std_ulogic := 'X';    SIGNAL TC3_ipd             : std_ulogic := 'X';    SIGNAL OENeg_ipd           : std_ulogic := 'X';BEGIN    ----------------------------------------------------------------------------    -- Wire Delays    ----------------------------------------------------------------------------    WireDelay : BLOCK    BEGIN        w_7 : VitalWireDelay (A_ipd, A, tipd_A);        w_8 : VitalWireDelay (TC1_ipd, TC1, tipd_TC1);        w_9 : VitalWireDelay (TC2_ipd, TC2, tipd_TC2);        w_10 : VitalWireDelay (TC3_ipd, TC3, tipd_TC3);        w_11 : VitalWireDelay (OENeg_ipd, OENeg, tipd_OENeg);    END BLOCK;    ----------------------------------------------------------------------------        -- VITALBehavior Process    ----------------------------------------------------------------------------        VITALBehavior1 : PROCESS(A_ipd, OENeg_ipd, TC1_ipd)        -- Functionality Results Variables        VARIABLE Y_zd        : std_ulogic := 'X';        VARIABLE Yint        : std_ulogic := 'X';        -- Output Glitch Detection Variables        VARIABLE Y1_GlitchData : VitalGlitchDataType;        VARIABLE Y2_GlitchData : VitalGlitchDataType;        VARIABLE Y3_GlitchData : VitalGlitchDataType;    BEGIN        ------------------------------------------------------------------------        -- Functionality Section        ------------------------------------------------------------------------                Yint := VitalXOR2(a=> A_ipd, b => TC1_ipd);                Y_zd := VitalBUFIF0 (data => Yint, enable => OENeg_ipd);        ------------------------------------------------------------------------        -- Path Delay Section        ------------------------------------------------------------------------        VitalPathDelay01Z (            OutSignal       =>  N1Y1,            OutSignalName   =>  "N1Y1",            OutTemp         =>  Y_zd,            XOn             => XOn,            MsgOn           => MsgOn,            Paths           => (                0 => (InputChangeTime   => A_ipd'LAST_EVENT,                      PathDelay         => VitalExtendToFillDelay(tpd_A_N3Y),                      PathCondition     => TRUE ),                1 => (InputChangeTime   => TC1_ipd'LAST_EVENT,                      PathDelay         => VitalExtendToFillDelay(tpd_TC1_N3Y),                      PathCondition     => TRUE ),                2 => (InputChangeTime   => OENeg_ipd'LAST_EVENT,                      PathDelay         => tpd_OENeg_N3Y,                      PathCondition     => TRUE ) ),            GlitchData      => Y1_GlitchData );        VitalPathDelay01Z (            OutSignal       =>  N1Y2,            OutSignalName   =>  "N1Y2",            OutTemp         =>  Y_zd,            XOn             => XOn,            MsgOn           => MsgOn,            Paths           => (                0 => (InputChangeTime   => A_ipd'LAST_EVENT,                      PathDelay         => VitalExtendToFillDelay(tpd_A_N3Y),                      PathCondition     => TRUE ),                1 => (InputChangeTime   => TC1_ipd'LAST_EVENT,                      PathDelay         => VitalExtendToFillDelay(tpd_TC1_N3Y),                      PathCondition     => TRUE ),                2 => (InputChangeTime   => OENeg_ipd'LAST_EVENT,                      PathDelay         => tpd_OENeg_N3Y,                      PathCondition     => TRUE ) ),            GlitchData      => Y2_GlitchData );        VitalPathDelay01Z (            OutSignal       =>  N1Y3,            OutSignalName   =>  "N1Y3",            OutTemp         =>  Y_zd,            XOn             => XOn,            MsgOn           => MsgOn,            Paths           => (                0 => (InputChangeTime   => A_ipd'LAST_EVENT,                      PathDelay         => VitalExtendToFillDelay(tpd_A_N3Y),                      PathCondition     => TRUE ),                1 => (InputChangeTime   => TC1_ipd'LAST_EVENT,                      PathDelay         => VitalExtendToFillDelay(tpd_TC1_N3Y),                      PathCondition     => TRUE ),                2 => (InputChangeTime   => OENeg_ipd'LAST_EVENT,                      PathDelay         => tpd_OENeg_N3Y,                      PathCondition     => TRUE ) ),            GlitchData      => Y3_GlitchData );    END PROCESS VITALBehavior1;    ----------------------------------------------------------------------------        -- VITALBehavior Process    ----------------------------------------------------------------------------        VITALBehavior2 : PROCESS(A_ipd, OENeg_ipd, TC2_ipd)        -- Functionality Results Variables        VARIABLE Y_zd        : std_ulogic := 'X';        VARIABLE Yint        : std_ulogic := 'X';        -- Output Glitch Detection Variables        VARIABLE Y1_GlitchData : VitalGlitchDataType;        VARIABLE Y2_GlitchData : VitalGlitchDataType;    BEGIN        ------------------------------------------------------------------------        -- Functionality Section        ------------------------------------------------------------------------                Yint := VitalXOR2(a=> A_ipd, b => TC2_ipd);                Y_zd := VitalBUFIF0 (data => Yint, enable => OENeg_ipd);        ------------------------------------------------------------------------        -- Path Delay Section        ------------------------------------------------------------------------        VitalPathDelay01Z (            OutSignal       =>  N2Y1,            OutSignalName   =>  "N2Y1",            OutTemp         =>  Y_zd,            XOn             => XOn,            MsgOn           => MsgOn,            Paths           => (                0 => (InputChangeTime   => A_ipd'LAST_EVENT,                      PathDelay         => VitalExtendToFillDelay(tpd_A_N3Y),                      PathCondition     => TRUE ),                1 => (InputChangeTime   => TC2_ipd'LAST_EVENT,                      PathDelay         => VitalExtendToFillDelay(tpd_TC1_N3Y),                      PathCondition     => TRUE ),                2 => (InputChangeTime   => OENeg_ipd'LAST_EVENT,                      PathDelay         => tpd_OENeg_N3Y,                      PathCondition     => TRUE ) ),            GlitchData      => Y1_GlitchData );        VitalPathDelay01Z (            OutSignal       =>  N2Y2,            OutSignalName   =>  "N2Y2",            OutTemp         =>  Y_zd,            XOn             => XOn,            MsgOn           => MsgOn,            Paths           => (                0 => (InputChangeTime   => A_ipd'LAST_EVENT,                      PathDelay         => VitalExtendToFillDelay(tpd_A_N3Y),                      PathCondition     => TRUE ),                1 => (InputChangeTime   => TC2_ipd'LAST_EVENT,                      PathDelay         => VitalExtendToFillDelay(tpd_TC1_N3Y),                      PathCondition     => TRUE ),                2 => (InputChangeTime   => OENeg_ipd'LAST_EVENT,                      PathDelay         => tpd_OENeg_N3Y,                      PathCondition     => TRUE ) ),            GlitchData      => Y2_GlitchData );    END PROCESS VITALBehavior2;    ----------------------------------------------------------------------------        -- VITALBehavior Process    ----------------------------------------------------------------------------        VITALBehavior3 : PROCESS(A_ipd, OENeg_ipd, TC3_ipd)        -- Functionality Results Variables        VARIABLE Y_zd        : std_ulogic := 'X';        VARIABLE Yint        : std_ulogic := 'X';        -- Output Glitch Detection Variables        VARIABLE Y1_GlitchData : VitalGlitchDataType;    BEGIN        ------------------------------------------------------------------------        -- Functionality Section        ------------------------------------------------------------------------                Yint := VitalXOR2(a=> A_ipd, b => TC3_ipd);                Y_zd := VitalBUFIF0 (data => Yint, enable => OENeg_ipd);        ------------------------------------------------------------------------        -- Path Delay Section        ------------------------------------------------------------------------        VitalPathDelay01Z (            OutSignal       =>  N3Y,            OutSignalName   =>  "N3Y",            OutTemp         =>  Y_zd,            XOn             => XOn,            MsgOn           => MsgOn,            Paths           => (                0 => (InputChangeTime   => A_ipd'LAST_EVENT,                      PathDelay         => VitalExtendToFillDelay(tpd_A_N3Y),                      PathCondition     => TRUE ),                1 => (InputChangeTime   => TC3_ipd'LAST_EVENT,                      PathDelay         => VitalExtendToFillDelay(tpd_TC1_N3Y),                      PathCondition     => TRUE ),                2 => (InputChangeTime   => OENeg_ipd'LAST_EVENT,                      PathDelay         => tpd_OENeg_N3Y,                      PathCondition     => TRUE ) ),            GlitchData      => Y1_GlitchData );    END PROCESS VITALBehavior3;END vhdl_behavioral;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -