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

📄 idt72261.vhd

📁 VHDL的ram和fifo model code 包含众多的厂家
💻 VHD
📖 第 1 页 / 共 5 页
字号:
---------------------------------------------------------------------------------- File name : idt72261.vhd----------------------------------------------------------------------------------  Copyright (C) 1998 Integrated Device Technology; http://www.idt.com/--  Developed by SEVA Technologies Inc. (Moscow branch) under contract to IDT--  and supported by 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.----  This VHDL model is provided on an "AS IS" basis and IDT makes absolutely no--  warranty with respect to the information contained herein. IDT DISCLAIMS--  AND CUSTOMER WAIVES ALL WARRANTIES, EXPRESS AND IMPLIED, INCLUDING--  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE--  ENTIRE RISK AS TO QUALITY AND PERFORMANCE IS WITH THE USER ACCORDINGLY, IN--  NO EVENT SHALL IDT BE LIABLE FOR ANY DIRECT OR INDIRECT DAMAGES, WHETHER IN--  CONTRACT OR TORT, INCLUDING ANY LOST PROFITS OR OTHER INCIDENTAL,--  CONSEQUENTIAL, EXEMPLARY, OR PUNITIVE DAMAGES ARISING OUT OF THE USE OR--  APPLICATION OF THE VHDL model. Further, IDT reserves the right to make--  changes without notice to any product herein to improve reliability,--  function, or design.  IDT does not convey any license under patent rights--  or any other intellectual property rights, including those of third parties.--  IDT is not obligated to provide maintenance or support for the licensed VHDL--  model.---- MODIFICATION HISTORY :---- version | author              | mod date: | changes made--   V1.0  | Vladimir V. Erokhin | 98 MAY 10 | initial coding--   V1.1  | R. Munden  | 02 MAY 19 | licensing changed to GPL------------------------------------------------------------------------------------ PART DESCRIPTION :---- Library:     IDT_FIFO-- Technology:  CMOS-- Part:        IDT72261---- Descripton:  SuperSync FIFO 32768 x 9--------------------------------------------------------------------------------LIBRARY ieee;   USE ieee.std_logic_1164.ALL;                USE ieee.vital_primitives.ALL;                USE ieee.vital_timing.ALL;LIBRARY fmf;    USE fmf.ff_package.ALL;                USE fmf.gen_utils.ALL;                USE fmf.conversions.to_nat;                USE fmf.conversions.to_slv;---------------------------------------------------------------------------------- ENTITY DECLARATION                                                         ----------------------------------------------------------------------------------ENTITY IDT72261 IS    GENERIC (         -- tipd delays: interconnect path delays         --              (there must be one generic for each input pin)         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_MRSNeg   : VitalDelayType01 := VitalZeroDelay01;         tipd_PRSNeg   : VitalDelayType01 := VitalZeroDelay01;         tipd_RTNeg    : VitalDelayType01 := VitalZeroDelay01;         tipd_FWFTSI   : VitalDelayType01 := VitalZeroDelay01;         tipd_WCLK     : VitalDelayType01 := VitalZeroDelay01;         tipd_WENNeg   : VitalDelayType01 := VitalZeroDelay01;         tipd_RCLK     : VitalDelayType01 := VitalZeroDelay01;         tipd_RENNeg   : VitalDelayType01 := VitalZeroDelay01;         tipd_OENeg    : VitalDelayType01 := VitalZeroDelay01;         tipd_SENNeg   : VitalDelayType01 := VitalZeroDelay01;         tipd_LDNeg    : VitalDelayType01 := VitalZeroDelay01;         tipd_FS       : VitalDelayType01 := VitalZeroDelay01;         -- tpd delays: propagation delays         -- tRSF (applicable for all flags and Q)         tpd_MRSNeg_EFORNeg : VitalDelayType01 := UnitDelay01;         tpd_MRSNeg_Q0      : VitalDelayType01Z := UnitDelay01Z;         -- tA   (applicable for RCLKxQ-valid         tpd_RCLK_Q0        : VitalDelayType01Z := UnitDelay01Z;         -- tOLZ/tOE/tOHZ         tpd_OENeg_Q0       : VitalDelayType01Z := UnitDelay01Z;         -- tWFF         tpd_WCLK_FFIRNeg   : VitalDelayType01 := UnitDelay01;         -- tREF         tpd_RCLK_EFORNeg   : VitalDelayType01 := UnitDelay01;         -- tPAF         tpd_WCLK_PAFNeg    : VitalDelayType01 := UnitDelay01;         -- tPAE         tpd_RCLK_PAENeg    : VitalDelayType01 := UnitDelay01;         -- tHF (applicable for both WCLK and RCLK)         tpd_RCLK_HFNeg     : VitalDelayType01 := UnitDelay01;         -- tpw values: pulse widths         -- tperiod_RCLK_posedgeH         tpw_RCLK_posedge          : VitalDelayType := UnitDelay;         -- tperiod_RCLK_posedgeL         tpw_RCLK_negedge          : VitalDelayType := UnitDelay;         -- tWCLKH         tpw_WCLK_posedge          : VitalDelayType := UnitDelay;         -- tWCLKL         tpw_WCLK_negedge          : VitalDelayType := UnitDelay;         -- tRS   (applicable for both MRS and PRS)         tpw_MRSNeg_negedge        : VitalDelayType := UnitDelay;         tpw_PRSNeg_negedge        : VitalDelayType := UnitDelay;         -- tperiod values: min calculated as 1/max freq         -- tperiod_RCLK_posedge         tperiod_RCLK_posedge      : VitalDelayType := UnitDelay;         -- tWCLK         tperiod_WCLK_posedge      : VitalDelayType := UnitDelay;         -- tsetup values: setup times         -- tDS   (applicable for D/WCLK)         tsetup_D0_WCLK_noedge_posedge       : VitalDelayType := UnitDelay;         tsetup_FWFTSI_WCLK_noedge_posedge   : VitalDelayType := UnitDelay;         -- tENS  (applicable for both WEN/WCLK and REN/RCLK)         tsetup_RTNeg_RCLK_noedge_posedge    : VitalDelayType := UnitDelay;         tsetup_RENNeg_RCLK_noedge_posedge   : VitalDelayType := UnitDelay;         tsetup_SENNeg_WCLK_noedge_posedge   : VitalDelayType := UnitDelay;         -- tLDS  (applicable for LDNeg/WCLK)         tsetup_LDNeg_WCLK_noedge_posedge    : VitalDelayType := UnitDelay;         tsetup_LDNeg_RCLK_noedge_posedge    : VitalDelayType := UnitDelay;         -- tRSS  (applicable for REN,WEN,LD,RT,SEN/MRS and REN,WEN,RT,SEN/PRS)         tsetup_WENNeg_MRSNeg_noedge_posedge : VitalDelayType := UnitDelay;         tsetup_RENNeg_MRSNeg_noedge_posedge : VitalDelayType := UnitDelay;         tsetup_LDNeg_MRSNeg_noedge_posedge  : VitalDelayType := UnitDelay;         tsetup_RTNeg_MRSNeg_noedge_posedge  : VitalDelayType := UnitDelay;         tsetup_SENNeg_MRSNeg_noedge_posedge : VitalDelayType := UnitDelay;         tsetup_WENNeg_PRSNeg_noedge_posedge : VitalDelayType := UnitDelay;         tsetup_RENNeg_PRSNeg_noedge_posedge : VitalDelayType := UnitDelay;         tsetup_RTNeg_PRSNeg_noedge_posedge  : VitalDelayType := UnitDelay;         tsetup_SENNeg_PRSNeg_noedge_posedge : VitalDelayType := UnitDelay;         -- tFWFT (applicable for FWFTSI\MRSNeg         tsetup_FWFTSI_MRSNeg_noedge_negedge : VitalDelayType := UnitDelay;         -- tRTS           tsetup_WENNeg_RCLK_noedge_posedge  : VitalDelayType := UnitDelay;         -- thold values: hold times         -- tDH   (applicable for D/WCLK)         thold_D0_WCLK_noedge_posedge       : VitalDelayType := UnitDelay;         -- tENH  (applicable for both WEN/WCLK and REN/RCLK)         thold_RTNeg_RCLK_noedge_posedge    : VitalDelayType := UnitDelay;         thold_RENNeg_RCLK_noedge_posedge   : VitalDelayType := UnitDelay;         thold_SENNeg_WCLK_noedge_posedge   : VitalDelayType := UnitDelay;         -- tLDH  (applicable for LDNeg/WCLK)         thold_LDNeg_WCLK_noedge_posedge    : VitalDelayType := UnitDelay;         thold_LDNeg_RCLK_noedge_posedge    : VitalDelayType := UnitDelay;         -- trecovery values: recovery times         -- tRSR (applicable for REN,WEN,FWFTSI,LD/MRS and REN,WEN/PRS)         thold_LDNeg_MRSNeg_noedge_posedge  : VitalDelayType := UnitDelay;         thold_FWFTSI_MRSNeg_noedge_posedge : VitalDelayType := UnitDelay;         thold_RENNeg_MRSNeg_noedge_posedge : VitalDelayType := UnitDelay;         thold_WENNeg_MRSNeg_noedge_posedge : VitalDelayType := UnitDelay;         thold_RENNeg_PRSNeg_noedge_posedge : VitalDelayType := UnitDelay;         thold_WENNeg_PRSNeg_noedge_posedge : VitalDelayType := UnitDelay;         -- tskew values: skew times         tdevice_SKEW1               : VitalDelayType := UnitDelay;         tdevice_SKEW2               : VitalDelayType := UnitDelay;         InstancePath                : STRING  := DefaultInstancePath;         TimingChecksOn              : BOOLEAN := DefaultTimingChecks;         MsgOn                       : BOOLEAN := DefaultMsgOn;         XOn                         : BOOLEAN := DefaultXOn;         TimingModel                 : STRING  := DefaultTimingModel       );    PORT (        D0       : IN  std_logic := 'X';  -----------------------------        D1       : IN  std_logic := 'X';  --        D2       : IN  std_logic := 'X';  --        D3       : IN  std_logic := 'X';  --        D4       : IN  std_logic := 'X';  --        D5       : IN  std_logic := 'X';  --        D6       : IN  std_logic := 'X';  --        D7       : IN  std_logic := 'X';  --        D8       : IN  std_logic := 'X';  --        MRSNeg   : IN  std_logic := 'X';  -- Master Reset        PRSNeg   : IN  std_logic := 'X';  -- Partial Reset        RTNeg    : IN  std_logic := 'X';  -- Retransmit        FWFTSI   : IN  std_logic := 'X';  -- First Word Fall Trough/Serial In        WCLK     : IN  std_logic := 'X';  -- Write Clock        WENNeg   : IN  std_logic := 'X';  -- Write Enable        RCLK     : IN  std_logic := 'X';  -- Read Clock        RENNeg   : IN  std_logic := 'X';  -- Read Enable        OENeg    : IN  std_logic := 'X';  -- Output Enable        SENNeg   : IN  std_logic := 'X';  -- Serial Enable        LDNeg    : IN  std_logic := 'X';  -- Load        FS       : IN  std_logic := 'X';  -- Frequency Select        FFIRNeg  : OUT std_logic := 'U';  -- Full Flag/Input Ready        EFORNeg  : OUT std_logic := 'U';  -- Empty Flag/Output Ready        PAFNeg   : OUT std_logic := 'U';  -- Programmable Almost Full Flag        PAENeg   : OUT std_logic := 'U';  -- Programmable Almost Empty Flag        HFNeg    : OUT std_logic := 'U';  -- Programmable Almost Empty Flag        Q0       : OUT std_logic := 'U';  ---------------------------------        Q1       : OUT std_logic := 'U';  --        Q2       : OUT std_logic := 'U';  --        Q3       : OUT std_logic := 'U';  --        Q4       : OUT std_logic := 'U';  -- Data Output Bus        Q5       : OUT std_logic := 'U';  --        Q6       : OUT std_logic := 'U';  --        Q7       : OUT std_logic := 'U';  --        Q8       : OUT std_logic := 'U'   ---------------------------------      );    ATTRIBUTE vital_level0 OF IDT72261 : ENTITY IS True;END IDT72261;---------------------------------------------------------------------------------- ARCHITECTURE DECLARATION                                                   ----------------------------------------------------------------------------------ARCHITECTURE vhdl_behavioral OF IDT72261 IS    ATTRIBUTE vital_level0 OF vhdl_behavioral : ARCHITECTURE IS True; CONSTANT partID : String := "IDT72261"; CONSTANT FIFOWordLength : integer := 9;  -- delayed inputs (func. sec. must use these signals instead of actual inputs)    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 D8_ipd     : std_ulogic := 'X';    SIGNAL MRSNeg_ipd : std_ulogic := 'X';    SIGNAL PRSNeg_ipd : std_ulogic := 'X';    SIGNAL RTNeg_ipd  : std_ulogic := 'X';    SIGNAL FWFTSI_ipd : std_ulogic := 'X';    SIGNAL WCLK_ipd   : std_ulogic := 'X';    SIGNAL WENNeg_ipd : std_ulogic := 'X';    SIGNAL RCLK_ipd   : std_ulogic := 'X';    SIGNAL RENNeg_ipd : std_ulogic := 'X';    SIGNAL OENeg_ipd  : std_ulogic := 'X';    SIGNAL SENNeg_ipd : std_ulogic := 'X';    SIGNAL LDNeg_ipd  : std_ulogic := 'X';    SIGNAL FS_ipd     : std_ulogic := 'X';    SIGNAL D          : std_ulogic_vector(FIFOWordLength-1 DOWNTO 0);    SIGNAL Q          : std_ulogic_vector(FIFOWordLength-1 DOWNTO 0);    SIGNAL OpenIn, OpenOut : std_logic; -- Additional signals    -- FIFO memory definitions (constants)    -- internal signals    ALIAS tpd_MRSNeg_HFNeg	: VitalDelayType01	IS tpd_MRSNeg_EFORNeg;    ALIAS tpd_MRSNeg_FFIRNeg	: VitalDelayType01	IS tpd_MRSNeg_EFORNeg;    ALIAS tpd_MRSNeg_PAFNeg	: VitalDelayType01	IS tpd_MRSNeg_EFORNeg;    ALIAS tpd_MRSNeg_PAENeg	: VitalDelayType01	IS tpd_MRSNeg_EFORNeg;    ALIAS tpd_PRSNeg_HFNeg	: VitalDelayType01	IS tpd_MRSNeg_EFORNeg;    ALIAS tpd_PRSNeg_FFIRNeg	: VitalDelayType01	IS tpd_MRSNeg_EFORNeg;    ALIAS tpd_PRSNeg_PAFNeg	: VitalDelayType01	IS tpd_MRSNeg_EFORNeg;    ALIAS tpd_PRSNeg_PAENeg	: VitalDelayType01	IS tpd_MRSNeg_EFORNeg;    ALIAS tpd_PRSNeg_EFORNeg	: VitalDelayType01	IS tpd_MRSNeg_EFORNeg;    ALIAS tpd_WCLK_HFNeg	: VitalDelayType01	IS tpd_RCLK_HFNeg;    ALIAS tpd_PRSNeg_Q0		: VitalDelayType01Z	IS tpd_MRSNeg_Q0;BEGIN  -- architecture body--------------------------------------------------------------------------------  -- Skew Delays--------------------------------------------------------------------------------  -- Artificient VITAL primitives wich allows pass complex non-constaint  -- SKEW time into the model  SKEW1: VitalBuf (OpenOut, OpenIn, (tdevice_SKEW1, tdevice_SKEW1));  SKEW2: VitalBuf (OpenOut, OpenIn, (tdevice_SKEW2, tdevice_SKEW2));    ----------------------------------------------------------------------------    -- Wire Delays                                                            --    ----------------------------------------------------------------------------    D <= D0_ipd & D1_ipd & D2_ipd & D3_ipd & D4_ipd & D5_ipd &         D6_ipd & D7_ipd & D8_ipd;    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_10: VitalWireDelay (MRSNeg_ipd, MRSNeg,  tipd_MRSNeg);        w_11: VitalWireDelay (PRSNeg_ipd, PRSNeg,  tipd_PRSNeg);        w_12: VitalWireDelay (RTNeg_ipd , RTNeg ,  tipd_RTNeg );        w_13: VitalWireDelay (FWFTSI_ipd, FWFTSI,  tipd_FWFTSI);        w_14: VitalWireDelay (WCLK_ipd  , WCLK  ,  tipd_WCLK  );        w_15: VitalWireDelay (WENNeg_ipd, WENNeg,  tipd_WENNeg);        w_16: VitalWireDelay (RCLK_ipd  , RCLK  ,  tipd_RCLK  );        w_17: VitalWireDelay (RENNeg_ipd, RENNeg,  tipd_RENNeg);        w_18: VitalWireDelay (OENeg_ipd , OENeg ,  tipd_OENeg );        w_19: VitalWireDelay (SENNeg_ipd, SENNeg,  tipd_SENNeg);        w_20: VitalWireDelay (LDNeg_ipd , LDNeg ,  tipd_LDNeg );

⌨️ 快捷键说明

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