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

📄 cy7c443.vhd

📁 VHDL的ram和fifo model code 包含众多的厂家
💻 VHD
📖 第 1 页 / 共 2 页
字号:
----------------------------------------------------------------------------------  File Name: cy7c443.vhd----------------------------------------------------------------------------------  Copyright (C) 2001 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     B.Bizic     01 Sep 01   Initial release--    V1.1     B.Bizic     01 Oct 02   Fifo array changed to reduce simulation --                                     memory requirements--                                     No Weak Values conversions added----------------------------------------------------------------------------------  PART DESCRIPTION:-- --  Library:    FIFO--  Technology: CMOS--  Part:       CY7C443-- --  Description: Clocked FIFO  2,048 x 9--------------------------------------------------------------------------------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;                USE FMF.conversions.ALL;---------------------------------------------------------------------------------- ENTITY DECLARATION--------------------------------------------------------------------------------ENTITY cy7c443 IS    GENERIC (        -- tipd delays: interconnect path delays        tipd_D0                  : VitalDelayType01 := VitalZeroDelay01;        tipd_D1                  : VitalDelayType01 := VitalZeroDelay01;        tipd_D2                  : VitalDelayType01 := VitalZeroDelay01;        tipd_D3                  : VitalDelayType01 := VitalZeroDelay01;        tipd_D4                  : VitalDelayType01 := VitalZeroDelay01;        tipd_D5                  : VitalDelayType01 := VitalZeroDelay01;        tipd_D6                  : VitalDelayType01 := VitalZeroDelay01;        tipd_D7                  : VitalDelayType01 := VitalZeroDelay01;        tipd_D8                  : VitalDelayType01 := VitalZeroDelay01;        tipd_ENWNeg              : VitalDelayType01 := VitalZeroDelay01;        tipd_ENRNeg              : VitalDelayType01 := VitalZeroDelay01;        tipd_CKW                 : VitalDelayType01 := VitalZeroDelay01;        tipd_CKR                 : VitalDelayType01 := VitalZeroDelay01;        tipd_MRNeg               : VitalDelayType01 := VitalZeroDelay01;        -- tpd delays        tpd_CKR_Q0                 : VitalDelayType01 := UnitDelay01;        tpd_MRNeg_Q0             : VitalDelayType01 := UnitDelay01;-- tAMR        tpd_MRNeg_F1             : VitalDelayType01 := UnitDelay01;-- tMEF        tpd_CKW_F1               : VitalDelayType01 := UnitDelay01;        -- tpw values: pulse widths        tpw_CKR_negedge          : VitalDelayType   := UnitDelay;        tpw_CKR_posedge          : VitalDelayType   := UnitDelay;        tpw_MRNeg_negedge        : VitalDelayType   := UnitDelay;        -- tperiod_min: minimum clock period = 1/max freq        tperiod_CKR              : VitalDelayType   := UnitDelay;        -- tsetup values: setup times        tsetup_D0_CKW            : VitalDelayType   := UnitDelay; --tSD        tsetup_ENWNeg_CKW        : VitalDelayType   := UnitDelay; --tSEN        tsetup_CKW_MRNeg         : VitalDelayType   := UnitDelay; --tSCMR        -- thold values: hold times        thold_D0_CKW             : VitalDelayType   := UnitDelay; --tHD        thold_ENWNeg_CKW         : VitalDelayType   := UnitDelay; --tHEN        -- tskew time:skew times         tdevice_SKEW1 : VitalDelayType := UnitDelay; -- tSKEW1 (skew time /CKR/        tdevice_SKEW2 : VitalDelayType := UnitDelay; -- tSKEW2 (skew time /CKW/)        -- trecovery time:recovery time        trecovery_CKW_MRNeg     : VitalDelayType := UnitDelay; -- tMRR        -- generic control parameters        InstancePath        : STRING    := DefaultInstancePath;        TimingChecksOn      : BOOLEAN   := DefaultTimingChecks;        MsgOn               : BOOLEAN   := DefaultMsgOn;        XOn                 : BOOLEAN   := DefaultXon;        -- For FMF SDF technology file usage        TimingModel         : STRING    := DefaultTimingModel    );    PORT (        D0              : IN    STD_ULOGIC := 'U';        D1              : IN    STD_ULOGIC := 'U';        D2              : IN    STD_ULOGIC := 'U';        D3              : IN    STD_ULOGIC := 'U';        D4              : IN    STD_ULOGIC := 'U';        D5              : IN    STD_ULOGIC := 'U';        D6              : IN    STD_ULOGIC := 'U';        D7              : IN    STD_ULOGIC := 'U';        D8              : IN    STD_ULOGIC := 'U';        Q0              : OUT   STD_ULOGIC := 'U';        Q1              : OUT   STD_ULOGIC := 'U';        Q2              : OUT   STD_ULOGIC := 'U';        Q3              : OUT   STD_ULOGIC := 'U';        Q4              : OUT   STD_ULOGIC := 'U';        Q5              : OUT   STD_ULOGIC := 'U';        Q6              : OUT   STD_ULOGIC := 'U';        Q7              : OUT   STD_ULOGIC := 'U';        Q8              : OUT   STD_ULOGIC := 'U';        ENWNeg          : IN   STD_ULOGIC := 'U';        ENRNeg          : IN   STD_ULOGIC := 'U';        CKW             : IN   STD_ULOGIC := 'U';        CKR             : IN   STD_ULOGIC := 'U';        MRNeg           : IN    STD_ULOGIC := 'U';        F1              : OUT   STD_ULOGIC := 'U';        F2              : OUT   STD_ULOGIC := 'U'    );    ATTRIBUTE VITAL_LEVEL0 of cy7c443 : ENTITY IS TRUE;END cy7c443;---------------------------------------------------------------------------------- ARCHITECTURE DECLARATION--------------------------------------------------------------------------------ARCHITECTURE vhdl_behavioral of cy7c443 IS    ATTRIBUTE VITAL_LEVEL0 of vhdl_behavioral : ARCHITECTURE IS TRUE;    CONSTANT partID         : STRING := "CY7C443";    SIGNAL D0_ipd              : STD_ULOGIC := 'U';    SIGNAL D1_ipd              : STD_ULOGIC := 'U';    SIGNAL D2_ipd              : STD_ULOGIC := 'U';    SIGNAL D3_ipd              : STD_ULOGIC := 'U';    SIGNAL D4_ipd              : STD_ULOGIC := 'U';    SIGNAL D5_ipd              : STD_ULOGIC := 'U';    SIGNAL D6_ipd              : STD_ULOGIC := 'U';    SIGNAL D7_ipd              : STD_ULOGIC := 'U';    SIGNAL D8_ipd              : STD_ULOGIC := 'U';    SIGNAL ENWNeg_ipd          : STD_ULOGIC := 'U';    SIGNAL ENRNeg_ipd          : STD_ULOGIC := 'U';    SIGNAL CKW_ipd             : STD_ULOGIC := 'U';    SIGNAL CKR_ipd             : STD_ULOGIC := 'U';    SIGNAL MRNeg_ipd           : STD_ULOGIC := 'U';    -- No Weak Values --    SIGNAL D0_nwv              : STD_ULOGIC := 'U';    SIGNAL D1_nwv              : STD_ULOGIC := 'U';    SIGNAL D2_nwv              : STD_ULOGIC := 'U';    SIGNAL D3_nwv              : STD_ULOGIC := 'U';    SIGNAL D4_nwv              : STD_ULOGIC := 'U';    SIGNAL D5_nwv              : STD_ULOGIC := 'U';    SIGNAL D6_nwv              : STD_ULOGIC := 'U';    SIGNAL D7_nwv              : STD_ULOGIC := 'U';    SIGNAL D8_nwv              : STD_ULOGIC := 'U';    SIGNAL ENWNeg_nwv          : STD_ULOGIC := 'U';    SIGNAL ENRNeg_nwv          : STD_ULOGIC := 'U';    SIGNAL CKW_nwv             : STD_ULOGIC := 'U';    SIGNAL CKR_nwv             : STD_ULOGIC := 'U';    SIGNAL MRNeg_nwv           : STD_ULOGIC := 'U';    -- FIFO memory definations    CONSTANT FIFOSize       : POSITIVE  := 2048;    CONSTANT FIFOWordLength : POSITIVE  := 9;    TYPE     FIFOArray      IS array (0 TO FIFOSize) OF INTEGER RANGE -2 TO 511;    -- internal signals    SIGNAL EmptyOffReg      : NATURAL:=16;    SIGNAL FullOffReg       : NATURAL:=16;    SIGNAL CountPointer     : NATURAL RANGE 0 TO FIFOSize :=0;    SIGNAL Start            : STD_ULOGIC := '0';    -- SKEW stuff (see also generics list)    ALIAS  tSKEW1          : VitalDelayType IS tdevice_SKEW1;    ALIAS  tSKEW2          : VitalDelayType IS tdevice_SKEW2;    SIGNAL tSKEW_CKW_CKR   : Time := 0 ns;    -- actual /CKW/CKR skew time    SIGNAL tSKEW_CKR_CKW   : Time := 0 ns;    -- actual /CKR/CKW skew time    SIGNAL OpenIn, OpenOut : STD_LOGIC;    ALIAS  tCKR            : VitalDelayType IS tperiod_CKR;    ALIAS  tCKW            : VitalDelayType IS tperiod_CKR;BEGIN---------------------------------------------------------------------------------- Dummy instances for exporting tSKEW vals from SDF file-- using DEVICE construct--------------------------------------------------------------------------------  SKEW1: VitalBuf (OpenOut, OpenIn, (tdevice_SKEW1, tdevice_SKEW1));  SKEW2: VitalBuf (OpenOut, OpenIn, (tdevice_SKEW2, tdevice_SKEW2));    -------------------------------------------------------------------    -- Wire Delays    -------------------------------------------------------------------    WireDelay: BLOCK    BEGIN        w_1 : VitalWireDelay (D0_ipd, D0, tipd_D0);        w_2 : VitalWireDelay (D1_ipd, D1, tipd_D1);        w_3 : VitalWireDelay (D2_ipd, D2, tipd_D2);        w_4 : VitalWireDelay (D3_ipd, D3, tipd_D3);        w_5 : VitalWireDelay (D4_ipd, D4, tipd_D4);        w_6 : VitalWireDelay (D5_ipd, D5, tipd_D5);        w_7 : VitalWireDelay (D6_ipd, D6, tipd_D6);        w_8 : VitalWireDelay (D7_ipd, D7, tipd_D7);        w_9 : VitalWireDelay (D8_ipd, D8, tipd_D8);        w_20 : VitalWireDelay (ENWNeg_ipd, ENWNeg, tipd_ENWNeg);        w_21 : VitalWireDelay (ENRNeg_ipd, ENRNeg, tipd_ENRNeg);        w_22 : VitalWireDelay (CKW_ipd, CKW, tipd_CKW);        w_23 : VitalWireDelay (CKR_ipd, CKR, tipd_CKR);        w_26 : VitalWireDelay (MRNeg_ipd, MRNeg, tipd_MRNeg);    END BLOCK WireDelay;    D0_nwv      <= To_UX01 (s => D0_ipd);    D1_nwv      <= To_UX01 (s => D1_ipd);    D2_nwv      <= To_UX01 (s => D2_ipd);    D3_nwv      <= To_UX01 (s => D3_ipd);    D4_nwv      <= To_UX01 (s => D4_ipd);    D5_nwv      <= To_UX01 (s => D5_ipd);    D6_nwv      <= To_UX01 (s => D6_ipd);    D7_nwv      <= To_UX01 (s => D7_ipd);    D8_nwv      <= To_UX01 (s => D8_ipd);    ENWNeg_nwv  <= To_UX01 (s => ENWNeg_ipd);    ENRNeg_nwv  <= To_UX01 (s => ENRNeg_ipd);    CKW_nwv     <= To_UX01 (s => CKW_ipd);    CKR_nwv     <= To_UX01 (s => CKR_ipd);    MRNeg_nwv   <= To_UX01 (s => MRNeg_ipd);        -------------------------------------------------------------------    --  Main behavior Block    -------------------------------------------------------------------    VitalBehavior: BLOCK        PORT (            Data    : IN    STD_LOGIC_VECTOR(FIFOWordLength-1 DOWNTO 0);            Q       : OUT   STD_LOGIC_VECTOR(FIFOWordLength-1 DOWNTO 0);            ENWNeg  : IN    std_Ulogic := 'U';            ENRNeg  : IN    std_Ulogic := 'U';            CKW     : IN    std_Ulogic := 'U';            CKR     : IN    std_Ulogic := 'U';            F1      : OUT   std_Ulogic := 'U';            F2      : OUT   std_Ulogic := 'U';            MRNeg   : IN    std_Ulogic := 'U'              );        PORT MAP (            Data(0) => D0_nwv,            Data(1) => D1_nwv,            Data(2) => D2_nwv,            Data(3) => D3_nwv,            Data(4) => D4_nwv,            Data(5) => D5_nwv,            Data(6) => D6_nwv,            Data(7) => D7_nwv,            Data(8) => D8_nwv,            Q(0)    => Q0,            Q(1)    => Q1,            Q(2)    => Q2,            Q(3)    => Q3,            Q(4)    => Q4,            Q(5)    => Q5,            Q(6)    => Q6,            Q(7)    => Q7,            Q(8)    => Q8,            ENWNeg  => ENWNeg_nwv,            ENRNeg  => ENRNeg_nwv,            CKW     => CKW_nwv,            CKR     => CKR_nwv,            MRNeg   => MRNeg_nwv,            F1      => F1,            F2      => F2        );    SIGNAL F1_zd   : STD_ULOGIC := 'X';    SIGNAL F2_zd   : STD_ULOGIC := 'X';    SIGNAL Q_zd    : STD_LOGIC_VECTOR(FIFOWordLength-1 DOWNTO 0):=(OTHERS=>'X');      BEGIN  -- VitalBehavior block        ---------------------------------------------------------------        -- Timing Check Section        ---------------------------------------------------------------        MainReadWrite:PROCESS (Data,ENWNeg, ENRNeg, CKW, CKR,MRNeg)              VARIABLE FIFOMemory : FIFOArray;             TYPE stat_type IS (inact, act);             VARIABLE rd_stat    : stat_type;             VARIABLE wr_stat    : stat_type;            -- Timing Check Variables            VARIABLE Tviol_D0_CKW          : X01 := '0';            VARIABLE TD_D0_CKW             : VitalTimingDataType;            VARIABLE Tviol_MRNeg_CKW       : X01 := '0';            VARIABLE TD_MRNeg_CKW          : VitalTimingDataType;            VARIABLE Tviol_MRNeg_CKR       : X01 := '0';            VARIABLE TD_MRNeg_CKR          : VitalTimingDataType;            VARIABLE Tviol_ENWNeg_CKW      : X01 := '0';            VARIABLE TD_ENWNeg_CKW         : VitalTimingDataType;            VARIABLE Tviol_ENRNeg_CKR      : X01 := '0';            VARIABLE TD_ENRNeg_CKR         : VitalTimingDataType;            VARIABLE Tviol_CKW_MRNeg       : X01 := '0';            VARIABLE TD_CKW_MRNeg          : VitalTimingDataType;            VARIABLE Tviol_CKR_MRNeg       : X01 := '0';            VARIABLE TD_CKR_MRNeg          : VitalTimingDataType;            VARIABLE Pviol_CKW             : X01 := '0';            VARIABLE TD_CKW                : VitalPeriodDataType                                              := VitalPeriodDataInit;            VARIABLE Pviol_CKR             :  X01 := '0';            VARIABLE TD_CKR                : VitalPeriodDataType                                              := VitalPeriodDataInit;            VARIABLE Pviol_MRNeg           : X01 := '0';            VARIABLE TD_MRNeg              : VitalPeriodDataType                                              := VitalPeriodDataInit;            VARIABLE Rviol_CKW_MRNeg       : X01 := '0';                          VARIABLE RD_CKW_MRNeg          : VitalTimingDataType;            VARIABLE Rviol_CKR_MRNeg       : X01 := '0';                          VARIABLE RD_CKR_MRNeg          : VitalTimingDataType;            -- Functionality Results Variables            VARIABLE Violation  : X01 := '0';          BEGIN            --------------------------------------------------------------------            -- Timing Check Section            --------------------------------------------------------------------            IF (TimingChecksOn) THEN                VitalSetupHoldCheck (                    TestSignal      => Data,                    TestSignalName  => "D",                    RefSignal       => CKW,

⌨️ 快捷键说明

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