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

📄 cy7c128.vhd

📁 vhdl cod for ram.For sp3e
💻 VHD
📖 第 1 页 / 共 2 页
字号:
----------------------------------------------------------------------------------  File Name: cy7c128.vhd----------------------------------------------------------------------------------  Copyright (C) 1998, 1999 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   99 FEB 11   Initial release derived from sram2k8-- ----------------------------------------------------------------------------------  PART DESCRIPTION:-- --  Library:     RAM--  Technology:  not ECL--  Part:        CY7C128-- --  Description: 2K X 8 SRAM--------------------------------------------------------------------------------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 cy7c128 IS    GENERIC (        -- tipd delays: interconnect path delays        tipd_OENeg          : VitalDelayType01 := VitalZeroDelay01;        tipd_WENeg          : VitalDelayType01 := VitalZeroDelay01;        tipd_CENeg          : VitalDelayType01 := VitalZeroDelay01;        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_A0             : VitalDelayType01 := VitalZeroDelay01;        tipd_A1             : VitalDelayType01 := VitalZeroDelay01;        tipd_A2             : VitalDelayType01 := VitalZeroDelay01;        tipd_A3             : VitalDelayType01 := VitalZeroDelay01;        tipd_A4             : VitalDelayType01 := VitalZeroDelay01;        tipd_A5             : VitalDelayType01 := VitalZeroDelay01;        tipd_A6             : VitalDelayType01 := VitalZeroDelay01;        tipd_A7             : VitalDelayType01 := VitalZeroDelay01;        tipd_A8             : VitalDelayType01 := VitalZeroDelay01;        tipd_A9             : VitalDelayType01 := VitalZeroDelay01;        tipd_A10            : VitalDelayType01 := VitalZeroDelay01;        -- tpd delays        tpd_OENeg_D0                    : VitalDelayType01Z := UnitDelay01Z;        tpd_CENeg_D0                    : VitalDelayType01Z := UnitDelay01Z;        tpd_A0_D0                       : VitalDelayType01  := UnitDelay01;        -- tpw values: pulse widths        tpw_WENeg_negedge               : VitalDelayType    := UnitDelay;        tpw_WENeg_posedge               : VitalDelayType    := UnitDelay;        -- tsetup values: setup times        tsetup_D0_WENeg                 : VitalDelayType    := UnitDelay;        tsetup_A0_WENeg                 : VitalDelayType    := UnitDelay;        tsetup_CENeg_WENeg              : VitalDelayType    := UnitDelay;        -- thold values: hold times        thold_D0_WENeg                  : VitalDelayType    := UnitDelay;        thold_A0_WENeg                  : VitalDelayType    := UnitDelay;        thold_CENeg_WENeg               : VitalDelayType    := UnitDelay;        -- generic control parameters        InstancePath        : STRING    := DefaultInstancePath;        TimingChecksOn      : BOOLEAN   := DefaultTimingChecks;        MsgOn               : BOOLEAN   := DefaultMsgOn;        XOn                 : BOOLEAN   := DefaultXOn;        SeverityMode        : SEVERITY_LEVEL := WARNING;        -- For FMF SDF technology file usage        TimingModel         : STRING    := DefaultTimingModel    );    PORT (        A0              : IN    std_logic := 'X';        A1              : IN    std_logic := 'X';        A2              : IN    std_logic := 'X';        A3              : IN    std_logic := 'X';        A4              : IN    std_logic := 'X';        A5              : IN    std_logic := 'X';        A6              : IN    std_logic := 'X';        A7              : IN    std_logic := 'X';        A8              : IN    std_logic := 'X';        A9              : IN    std_logic := 'X';        A10             : IN    std_logic := 'X';        D0              : INOUT std_logic := 'X';        D1              : INOUT std_logic := 'X';        D2              : INOUT std_logic := 'X';        D3              : INOUT std_logic := 'X';        D4              : INOUT std_logic := 'X';        D5              : INOUT std_logic := 'X';        D6              : INOUT std_logic := 'X';        D7              : INOUT std_logic := 'X';        OENeg           : IN    std_logic := 'X';        WENeg           : IN    std_logic := 'X';        CENeg           : IN    std_logic := 'X'    );    ATTRIBUTE VITAL_LEVEL0 of cy7c128 : ENTITY IS TRUE;END cy7c128;---------------------------------------------------------------------------------- ARCHITECTURE DECLARATION--------------------------------------------------------------------------------ARCHITECTURE vhdl_behavioral of cy7c128 IS    ATTRIBUTE VITAL_LEVEL0 of vhdl_behavioral : ARCHITECTURE IS TRUE;    ----------------------------------------------------------------------------    -- Note that this style of model departs significantly from the original    -- intent of the VITAL spec.  The timing checks section does not generate    -- any 'X' values for output results since the array only stores integer    -- values.  So, to check for timing errors one will have to monitor the    -- warning messages closely.  Also, the path delay procedures are included    -- in their own processes which are generated as a function of data width.    -- This method together with the behavior block aids in reducing coding    -- by converting the address bus and data bus to vectors.  Scalars on the    -- input ports is necessary for backannotation of wire delays.    ----------------------------------------------------------------------------    CONSTANT partID         : STRING := "CY7C128";    SIGNAL D0_ipd           : std_ulogic := 'X';    SIGNAL D1_ipd           : std_ulogic := 'X';    SIGNAL D2_ipd           : std_ulogic := 'X';    SIGNAL D3_ipd           : std_ulogic := 'X';    SIGNAL D4_ipd           : std_ulogic := 'X';    SIGNAL D5_ipd           : std_ulogic := 'X';    SIGNAL D6_ipd           : std_ulogic := 'X';    SIGNAL D7_ipd           : std_ulogic := 'X';    SIGNAL A0_ipd           : std_ulogic := 'X';    SIGNAL A1_ipd           : std_ulogic := 'X';    SIGNAL A2_ipd           : std_ulogic := 'X';    SIGNAL A3_ipd           : std_ulogic := 'X';    SIGNAL A4_ipd           : std_ulogic := 'X';    SIGNAL A5_ipd           : std_ulogic := 'X';    SIGNAL A6_ipd           : std_ulogic := 'X';    SIGNAL A7_ipd           : std_ulogic := 'X';    SIGNAL A8_ipd           : std_ulogic := 'X';    SIGNAL A9_ipd           : std_ulogic := 'X';    SIGNAL A10_ipd          : std_ulogic := 'X';    SIGNAL OENeg_ipd        : std_ulogic := 'X';    SIGNAL WENeg_ipd        : std_ulogic := 'X';    SIGNAL CENeg_ipd        : std_ulogic := 'X';BEGIN    ----------------------------------------------------------------------------    -- Wire Delays    ----------------------------------------------------------------------------    WireDelay : BLOCK    BEGIN        w_1: VitalWireDelay (OENeg_ipd, OENeg, tipd_OENeg);        w_2: VitalWireDelay (WENeg_ipd, WENeg, tipd_WENeg);        w_3: VitalWireDelay (CENeg_ipd, CENeg, tipd_CENeg);        w_5: VitalWireDelay (D0_ipd, D0, tipd_D0);        w_6: VitalWireDelay (D1_ipd, D1, tipd_D1);        w_7: VitalWireDelay (D2_ipd, D2, tipd_D2);        w_8: VitalWireDelay (D3_ipd, D3, tipd_D3);        w_9: VitalWireDelay (D4_ipd, D4, tipd_D4);        w_10: VitalWireDelay (D5_ipd, D5, tipd_D5);        w_11: VitalWireDelay (D6_ipd, D6, tipd_D6);        w_12: VitalWireDelay (D7_ipd, D7, tipd_D7);        w_13: VitalWireDelay (A0_ipd, A0, tipd_A0);        w_14: VitalWireDelay (A1_ipd, A1, tipd_A1);        w_15: VitalWireDelay (A2_ipd, A2, tipd_A2);        w_16: VitalWireDelay (A3_ipd, A3, tipd_A3);        w_17: VitalWireDelay (A4_ipd, A4, tipd_A4);        w_18: VitalWireDelay (A5_ipd, A5, tipd_A5);        w_19: VitalWireDelay (A6_ipd, A6, tipd_A6);        w_20: VitalWireDelay (A7_ipd, A7, tipd_A7);        w_21: VitalWireDelay (A8_ipd, A8, tipd_A8);        w_22: VitalWireDelay (A9_ipd, A9, tipd_A9);        w_23: VitalWireDelay (A10_ipd, A10, tipd_A10);    END BLOCK;    ----------------------------------------------------------------------------    -- Main Behavior Block    ----------------------------------------------------------------------------    Behavior: BLOCK        PORT (            AddressIn       : IN    std_logic_vector(10 downto 0);            DataIn          : IN    std_logic_vector(7 downto 0);            DataOut         : OUT   std_logic_vector(7 downto 0);            OENegIn         : IN    std_ulogic := 'X';            WENegIn         : IN    std_ulogic := 'X';            CENegIn         : IN    std_ulogic := 'X'        );        PORT MAP (            DataOut(0) =>  D0,            DataOut(1) =>  D1,            DataOut(2) =>  D2,            DataOut(3) =>  D3,            DataOut(4) =>  D4,            DataOut(5) =>  D5,            DataOut(6) =>  D6,            DataOut(7) =>  D7,            DataIn(0) =>  D0_ipd,            DataIn(1) =>  D1_ipd,            DataIn(2) =>  D2_ipd,            DataIn(3) =>  D3_ipd,            DataIn(4) =>  D4_ipd,            DataIn(5) =>  D5_ipd,            DataIn(6) =>  D6_ipd,            DataIn(7) =>  D7_ipd,            AddressIn(0) => A0_ipd,            AddressIn(1) => A1_ipd,            AddressIn(2) => A2_ipd,

⌨️ 快捷键说明

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