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

📄 cy7c1354b.vhd

📁 free hardware ip core about sparcv8,a soc cpu in vhdl
💻 VHD
📖 第 1 页 / 共 2 页
字号:
---------------------------------------------------------------------------------------------     File Name:  CY7C1354B.VHD--       Version:  2.0--          Date:  Nov 22nd, 2004--         Model:  BUS Functional--     -- --        Author:  RKF --       Company:  Cypress Semiconductor--         Model:  CY7C1354B (256k x 36)--          Mode:  Pipelined----   Description:  NoBL SRAM VHDL Model----    Limitation:  None----          Note:  - BSDL Model available separately--                 - Set simulator resolution to "ps" timescale----    Disclaimer:  THESE DESIGNS ARE PROVIDED "AS IS" WITH NO WARRANTY--                 WHATSOEVER AND CYPRESS SPECIFICALLY DISCLAIMS ANY--                 IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR--                 A PARTICULAR PURPOSE, OR AGAINST INFRINGEMENT.----                 Copyright (c) 2004 Cypress Semiconductor --                 All rights reserved----     Trademarks: NoBL and No Bus Latency are trademarks of Cypress Semiconductor----  Rev  Author          Date        Changes--  ---  --------       -------     ----------  --  2.0  RKF 		11/22/2004  - Second Release--				    - Fully Tested with New Test Bench and Test Vectors	-----------------------------------------------------------------------------------------LIBRARY ieee,work,grlib,gaisler;	USE ieee.std_logic_1164.all;--	USE ieee.std_logic_unsigned.all;--	Use IEEE.Std_Logic_Arith.all;--	Use work.all;   	USE work.package_utility.all;   	use grlib.stdlib.all;	use ieee.std_logic_1164.all;	use std.textio.all;	use gaisler.sim.all;	ENTITY cy7c1354 IS    GENERIC (		fname	: string := "prom.srec"; -- File to read from	        -- Constant parameters	addr_bits : INTEGER := 18;	data_bits : INTEGER := 36;        -- Timing parameters for -5 (225 Mhz)        tCYC	: TIME    := 4.4 ns;        tCH	: TIME    :=  1.8 ns;        tCL	: TIME    :=  1.8 ns;        tCO	: TIME    :=  2.8 ns;        tAS	: TIME    :=  1.4 ns;        tCENS	: TIME    :=  1.4 ns;        tWES	: TIME    :=  1.4 ns;        tDS	: TIME    :=  1.4 ns;        tAH	: TIME    :=  0.4 ns;        tCENH	: TIME    :=  0.4 ns;        tWEH	: TIME    :=  0.4 ns;        tDH	: TIME    :=  0.4 ns             -- Timing parameters for -5 (200 Mhz)        --tCYC	: TIME    := 5.0 ns;        --tCH	: TIME    :=  2.0 ns;        --tCL	: TIME    :=  2.0 ns;        --tCO	: TIME    :=  3.2 ns;        --tAS	: TIME    :=  1.5 ns;        --tCENS	: TIME    :=  1.5 ns;        --tWES	: TIME    :=  1.5 ns;        --tDS	: TIME    :=  1.5 ns;        --tAH	: TIME    :=  0.5 ns;        --tCENH	: TIME    :=  0.5 ns;        --tWEH	: TIME    :=  0.5 ns;        --tDH	: TIME    :=  0.5 ns                 -- Timing parameters for -5 (166 Mhz)        --tCYC	: TIME    := 6.0 ns;        --tCH	: TIME    :=  2.4 ns;        --tCL	: TIME    :=  2.4 ns;        --tCO	: TIME    :=  3.5 ns;        --tAS	: TIME    :=  1.5 ns;        --tCENS	: TIME    :=  1.5 ns;        --tWES	: TIME    :=  1.5 ns;        --tDS	: TIME    :=  1.5 ns;        --tAH	: TIME    :=  0.5 ns;        --tCENH	: TIME    :=  0.5 ns;        --tWEH	: TIME    :=  0.5 ns;        --tDH	: TIME    :=  0.5 ns                );    -- Port Declarations    PORT (	Dq	: INOUT STD_LOGIC_VECTOR ((data_bits - 1) DOWNTO 0);   	-- Data I/O	Addr	: IN	STD_LOGIC_VECTOR ((addr_bits - 1) DOWNTO 0);   	-- Address	Mode	: IN	STD_LOGIC	:= '1'; 			-- Burst Mode	Clk	: IN	STD_LOGIC;                                   -- Clk	CEN_n	: IN	STD_LOGIC;                                   -- CEN#	AdvLd_n	: IN	STD_LOGIC;                                   -- Adv/Ld#	Bwa_n	: IN	STD_LOGIC;                                   -- Bwa#	Bwb_n	: IN	STD_LOGIC;                                   -- BWb#	Bwc_n	: IN	STD_LOGIC;                                   -- Bwc#	Bwd_n	: IN	STD_LOGIC;                                   -- BWd#	Rw_n	: IN	STD_LOGIC;                                   -- RW#	Oe_n	: IN	STD_LOGIC;                                   -- OE#	Ce1_n	: IN	STD_LOGIC;                                   -- CE1#	Ce2	: IN	STD_LOGIC;                                   -- CE2	Ce3_n	: IN	STD_LOGIC;                                   -- CE3#	Zz	: IN	STD_LOGIC                                    -- Snooze Mode    );END cy7c1354;ARCHITECTURE behave OF cy7c1354 IS    SIGNAL ce : STD_LOGIC := '0';    SIGNAL doe : STD_LOGIC := '0';    SIGNAL dout : STD_LOGIC_VECTOR ((data_bits - 1) DOWNTO 0) := (OTHERS => 'Z');    SIGNAL Addr_read_sig : STD_LOGIC_VECTOR ((addr_bits - 1) DOWNTO 0) := (OTHERS => 'Z');BEGIN    ce <= NOT(Ce1_n) AND NOT(Ce3_n) AND Ce2;    doe <= NOT(Oe_n) AND NOT(Zz);    -- Output Buffers    WITH doe SELECT        Dq <= TRANSPORT dout            AFTER (tCO) WHEN '1',                        (OTHERS => 'Z') AFTER (tCO) WHEN OTHERS;                                    -- Check for Clock Timing Violation    clk_check : PROCESS        VARIABLE clk_high, clk_low : TIME := 0 ns;    BEGIN        WAIT ON Clk;            IF Clk = '1' AND NOW >= tCYC THEN                ASSERT (NOW - clk_low >= tCH)                    REPORT "Clk width low - tCH violation"                    SEVERITY ERROR;                ASSERT (NOW - clk_high >= tCYC)                    REPORT "Clk period high - tCYC violation"                    SEVERITY ERROR;                clk_high := NOW;            ELSIF Clk = '0' AND NOW /= 0 ns THEN                ASSERT (NOW - clk_high >= tCL)                    REPORT "Clk width high - tCL violation"                    SEVERITY ERROR;                ASSERT (NOW - clk_low >= tCYC)                    REPORT "Clk period low - tCYC violation"                    SEVERITY ERROR;                clk_low := NOW;            END IF;    END PROCESS;    -- Check for Setup Timing Violation    setup_check : PROCESS    BEGIN        WAIT ON Clk;        IF Clk = '1' THEN            ASSERT (Addr'LAST_EVENT >= tAS)                REPORT "Addr - tAS violation"                SEVERITY ERROR;            ASSERT (CEN_n'LAST_EVENT >= tCENS)                REPORT "CKE# - tCENS violation"                SEVERITY ERROR;            ASSERT (Ce1_n'LAST_EVENT >= tWES)                REPORT "CE1# - tWES violation"                SEVERITY ERROR;            ASSERT (Ce2'LAST_EVENT >= tWES)                REPORT "CE2 - tWES violation"                SEVERITY ERROR;            ASSERT (Ce3_n'LAST_EVENT >= tWES)                REPORT "CE3# - tWES violation"                SEVERITY ERROR;            ASSERT (AdvLd_n'LAST_EVENT >= tWES)                REPORT "ADV/LD# - tWES violation"                SEVERITY ERROR;            ASSERT (Rw_n'LAST_EVENT >= tWES)                REPORT "RW# - tWES violation"                SEVERITY ERROR;            ASSERT (Bwa_n'LAST_EVENT >= tWES)                REPORT "BWa# - tWES violation"                SEVERITY ERROR;            ASSERT (Bwb_n'LAST_EVENT >= tWES)                REPORT "BWb# - tWES violation"                SEVERITY ERROR;            ASSERT (Bwc_n'LAST_EVENT >= tWES)                REPORT "BWc# - tWES violation"                SEVERITY ERROR;            ASSERT (Bwd_n'LAST_EVENT >= tWES)                REPORT "BWd# - tWES violation"                SEVERITY ERROR;            --ASSERT (Dq'LAST_EVENT >= tDS)            --    REPORT "Dq - tDS violation"            --    SEVERITY ERROR;        END IF;    END PROCESS;    -- Check for Hold Timing Violation    hold_check : PROCESS    BEGIN        WAIT ON Clk'DELAYED(tAH), Clk'DELAYED(tCENH), Clk'DELAYED(tWEH), Clk'DELAYED(tDH);        IF Clk'DELAYED(tAH) = '1' THEN            ASSERT (Addr'LAST_EVENT > tAH)

⌨️ 快捷键说明

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