📄 cy7c128.vhd
字号:
---------------------------------------------------------------------------------- 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 + -