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

📄 mt48lc32m16a2.vhd

📁 vhdl cod for ram.For sp3e
💻 VHD
📖 第 1 页 / 共 5 页
字号:
        w_28 : VitalWireDelay (A5_ipd, A5, tipd_A5);        w_29 : VitalWireDelay (A6_ipd, A6, tipd_A6);        w_30 : VitalWireDelay (A7_ipd, A7, tipd_A7);        w_31 : VitalWireDelay (A8_ipd, A8, tipd_A8);        w_32 : VitalWireDelay (A9_ipd, A9, tipd_A9);        w_33 : VitalWireDelay (A10_ipd, A10, tipd_A10);        w_34 : VitalWireDelay (A11_ipd, A11, tipd_A11);        w_35 : VitalWireDelay (A12_ipd, A12, tipd_A12);        w_36 : VitalWireDelay (WENeg_ipd, WENeg, tipd_WENeg);        w_37 : VitalWireDelay (RASNeg_ipd, RASNeg, tipd_RASNeg);        w_38 : VitalWireDelay (CSNeg_ipd, CSNeg, tipd_CSNeg);        w_39 : VitalWireDelay (CASNeg_ipd, CASNeg, tipd_CASNeg);    END BLOCK;    WENeg_nwv  <= To_UX01(WENeg_ipd);    RASNeg_nwv <= To_UX01(RASNeg_ipd);    CSNeg_nwv  <= To_UX01(CSNeg_ipd);    CASNeg_nwv <= To_UX01(CASNeg_ipd);    CLK_nwv <= To_UX01(CLK_ipd);    CKE_nwv <= To_UX01(CKE_ipd);    BA0_nwv <= To_UX01(BA0_ipd);    BA1_nwv <= To_UX01(BA1_ipd);    DQML_nwv <= To_UX01(DQML_ipd);    DQMH_nwv <= To_UX01(DQMH_ipd);    DQ0_nwv <= To_UX01(DQ0_ipd);    DQ1_nwv <= To_UX01(DQ1_ipd);    DQ2_nwv <= To_UX01(DQ2_ipd);    DQ3_nwv <= To_UX01(DQ3_ipd);    DQ4_nwv <= To_UX01(DQ4_ipd);    DQ5_nwv <= To_UX01(DQ5_ipd);    DQ6_nwv <= To_UX01(DQ6_ipd);    DQ7_nwv <= To_UX01(DQ7_ipd);    DQ8_nwv <= To_UX01(DQ8_ipd);    DQ9_nwv <= To_UX01(DQ9_ipd);    DQ10_nwv <= To_UX01(DQ10_ipd);    DQ11_nwv <= To_UX01(DQ11_ipd);    DQ12_nwv <= To_UX01(DQ12_ipd);    DQ13_nwv <= To_UX01(DQ13_ipd);    DQ14_nwv <= To_UX01(DQ14_ipd);    DQ15_nwv <= To_UX01(DQ15_ipd);    A0_nwv  <= To_UX01(A0_ipd);    A1_nwv  <= To_UX01(A1_ipd);    A2_nwv  <= To_UX01(A2_ipd);    A3_nwv  <= To_UX01(A3_ipd);    A4_nwv  <= To_UX01(A4_ipd);    A5_nwv  <= To_UX01(A5_ipd);    A6_nwv  <= To_UX01(A6_ipd);    A7_nwv  <= To_UX01(A7_ipd);    A8_nwv  <= To_UX01(A8_ipd);    A9_nwv  <= To_UX01(A9_ipd);    A10_nwv <= To_UX01(A10_ipd);    A11_nwv <= To_UX01(A11_ipd);    A12_nwv <= To_UX01(A12_ipd);    ----------------------------------------------------------------------------    -- Main Behavior Block    ----------------------------------------------------------------------------    Main : BLOCK        PORT (            BAIn      : IN   std_logic_vector(1 downto 0);            DQMLIn    : IN   std_ulogic := 'X';            DQMHIn    : IN   std_ulogic := 'X';            DataIn    : IN   std_logic_vector(15 downto 0);            DataOut   : OUT  std_logic_vector(15 downto 0) := (others => 'Z');            CLKIn     : IN   std_ulogic := 'X';            CKEIn     : IN   std_ulogic := 'X';            AddressIn : IN   std_logic_vector(12 downto 0);            WENegIn   : IN   std_ulogic := 'X';            RASNegIn  : IN   std_ulogic := 'X';            CSNegIn   : IN   std_ulogic := 'X';            CASNegIn  : IN   std_ulogic := 'X'        );        PORT MAP (            BAIn(0)     => BA0_nwv,            BAIn(1)     => BA1_nwv,            DQMHIn      => DQMH_nwv,            DQMLIn      => DQML_nwv,            DataOut(0)  =>  DQ0,            DataOut(1)  =>  DQ1,            DataOut(2)  =>  DQ2,            DataOut(3)  =>  DQ3,            DataOut(4)  =>  DQ4,            DataOut(5)  =>  DQ5,            DataOut(6)  =>  DQ6,            DataOut(7)  =>  DQ7,            DataOut(8)  =>  DQ8,            DataOut(9)  =>  DQ9,            DataOut(10) =>  DQ10,            DataOut(11) =>  DQ11,            DataOut(12) =>  DQ12,            DataOut(13) =>  DQ13,            DataOut(14) =>  DQ14,            DataOut(15) =>  DQ15,            DataIn(0)   =>  DQ0_nwv,            DataIn(1)   =>  DQ1_nwv,            DataIn(2)   =>  DQ2_nwv,            DataIn(3)   =>  DQ3_nwv,            DataIn(4)   =>  DQ4_nwv,            DataIn(5)   =>  DQ5_nwv,            DataIn(6)   =>  DQ6_nwv,            DataIn(7)   =>  DQ7_nwv,            DataIn(8)   =>  DQ8_nwv,            DataIn(9)   =>  DQ9_nwv,            DataIn(10)  =>  DQ10_nwv,            DataIn(11)  =>  DQ11_nwv,            DataIn(12)  =>  DQ12_nwv,            DataIn(13)  =>  DQ13_nwv,            DataIn(14)  =>  DQ14_nwv,            DataIn(15)  =>  DQ15_nwv,            CLKIn       => CLK_nwv,            CKEIn       => CKE_nwv,            AddressIn(0) => A0_nwv,            AddressIn(1) => A1_nwv,            AddressIn(2) => A2_nwv,            AddressIn(3) => A3_nwv,            AddressIn(4) => A4_nwv,            AddressIn(5) => A5_nwv,            AddressIn(6) => A6_nwv,            AddressIn(7) => A7_nwv,            AddressIn(8) => A8_nwv,            AddressIn(9) => A9_nwv,            AddressIn(10) => A10_nwv,            AddressIn(11) => A11_nwv,            AddressIn(12) => A12_nwv,            WENegIn  => WENeg_nwv,            RASNegIn => RASNeg_nwv,            CSNegIn  => CSNeg_nwv,            CASNegIn => CASNeg_nwv        );        -- Type definition for state machine        TYPE mem_state IS (                        pwron,                        precharge,                        idle,                        mode_set,                        self_refresh,                        self_refresh_rec,                        auto_refresh,                        pwrdwn,                        bank_act,                        bank_act_pwrdwn,                        write,                        write_suspend,                        read,                        read_suspend,                        write_auto_pre,                        read_auto_pre                        );        TYPE statebanktype IS array (hi_bank downto 0) of mem_state;        SIGNAL statebank : statebanktype;        SIGNAL CAS_Lat  : NATURAL RANGE 0 to 3 := 0;        SIGNAL D_zd     : std_logic_vector(15 DOWNTO 0);         -- Memory array declaration        TYPE MemStore IS ARRAY (0 to 2*depth-1) OF INTEGER RANGE  -2 TO 255;        TYPE MemBlock   IS ARRAY (0 to 3) OF MemStore;        SHARED VARIABLE Mem : MemBlock;        SHARED VARIABLE DataDrive  : std_logic_vector(15 DOWNTO 0);    BEGIN    PoweredUp <= true after tpowerup;    ----------------------------------------------------------------------------    -- Main Behavior Process    ----------------------------------------------------------------------------    Behavior : PROCESS (BAIn, DQMLIn, DQMHIn, DataIn, CLKIn,                        CKEIn, AddressIn, WENegIn, RASNegIn, CSNegIn,                        CASNegIn, PoweredUp)    -- Type definition for commands    TYPE command_type is (                        desl,                        nop,                        bst,                        read,                        writ,                        act,                        pre,                        mrs,                        ref                        );    -- Timing Check Variables    VARIABLE Tviol_BA_CLK       : X01 := '0';    VARIABLE TD_BA_CLK          : VitalTimingDataType;    VARIABLE Tviol_DQML_CLK     : X01 := '0';    VARIABLE TD_DQML_CLK        : VitalTimingDataType;    VARIABLE Tviol_DQMH_CLK     : X01 := '0';    VARIABLE TD_DQMH_CLK        : VitalTimingDataType;    VARIABLE Tviol_D0_CLK       : X01 := '0';    VARIABLE TD_D0_CLK          : VitalTimingDataType;    VARIABLE Tviol_CKE_CLK      : X01 := '0';    VARIABLE TD_CKE_CLK         : VitalTimingDataType;    VARIABLE Tviol_Address_CLK  : X01 := '0';    VARIABLE TD_Address_CLK     : VitalTimingDataType;    VARIABLE Tviol_WENeg_CLK    : X01 := '0';    VARIABLE TD_WENeg_CLK       : VitalTimingDataType;    VARIABLE Tviol_RASNeg_CLK   : X01 := '0';    VARIABLE TD_RASNeg_CLK      : VitalTimingDataType;    VARIABLE Tviol_CSNeg_CLK    : X01 := '0';    VARIABLE TD_CSNeg_CLK       : VitalTimingDataType;    VARIABLE Tviol_CASNeg_CLK   : X01 := '0';    VARIABLE TD_CASNeg_CLK      : VitalTimingDataType;    VARIABLE Pviol_CLK  : X01 := '0';    VARIABLE PD_CLK     : VitalPeriodDataType := VitalPeriodDataInit;    TYPE Burst_type IS (sequential, interleave);    TYPE Write_Burst_type IS (programmed, single);    TYPE sequence       IS ARRAY (0 to 7) OF NATURAL RANGE 0 to 7;    TYPE seqtab         IS ARRAY (0 to 7) OF sequence;    TYPE MemLoc         IS ARRAY (0 to 3) OF std_logic_vector(22 DOWNTO 0);    TYPE burst_counter  IS ARRAY (0 to 3) OF NATURAL RANGE 0 to 257;    TYPE StartAddr_type IS ARRAY (0 to 3) OF NATURAL RANGE 0 TO 7;    TYPE BurstInc_type  IS ARRAY (0 to 3) OF NATURAL RANGE 0 TO 255;    TYPE BaseLoc_type   IS ARRAY (0 to 3) OF NATURAL RANGE 0 TO depth;    CONSTANT seq0 : sequence := (0 & 1 & 2 & 3 & 4 & 5 & 6 & 7);    CONSTANT seq1 : sequence := (1 & 0 & 3 & 2 & 5 & 4 & 7 & 6);    CONSTANT seq2 : sequence := (2 & 3 & 0 & 1 & 6 & 7 & 4 & 5);    CONSTANT seq3 : sequence := (3 & 2 & 1 & 0 & 7 & 6 & 5 & 4);    CONSTANT seq4 : sequence := (4 & 5 & 6 & 7 & 0 & 1 & 2 & 3);    CONSTANT seq5 : sequence := (5 & 4 & 7 & 6 & 1 & 0 & 3 & 2);    CONSTANT seq6 : sequence := (6 & 7 & 4 & 5 & 2 & 3 & 0 & 1);    CONSTANT seq7 : sequence := (7 & 6 & 5 & 4 & 3 & 2 & 1 & 0);    CONSTANT intab : seqtab :=(seq0, seq1, seq2, seq3, seq4, seq5, seq6, seq7);    FILE mem_file       : text IS mem_file_name;    VARIABLE file_bank  : NATURAL := 0;    VARIABLE ind        : NATURAL := 0;    VARIABLE buf        : line;    VARIABLE MemAddr     : MemLoc;    VARIABLE Loc         : NATURAL RANGE 0 TO depth := 0;    VARIABLE BaseLoc     : BaseLoc_type;    VARIABLE BurstInc    : BurstInc_type;    VARIABLE StartAddr   : StartAddr_type;    VARIABLE BurstLen    : NATURAL RANGE 0 TO 256 := 0;    VARIABLE Burst_Bits  : NATURAL RANGE 0 TO 7   := 0;    VARIABLE Burst       : Burst_Type;    VARIABLE WB          : Write_Burst_Type;    VARIABLE BurstCnt    : burst_counter;    VARIABLE command   : command_type;    VARIABLE written   : boolean := false;    VARIABLE chip_en   : boolean := false;    VARIABLE cur_bank  : natural range 0 to hi_bank;    VARIABLE ModeReg   : std_logic_vector(12 DOWNTO 0) := (OTHERS => 'X');    VARIABLE Ref_Cnt     : NATURAL RANGE 0 TO 4096 := 0;    VARIABLE next_ref    : TIME;    VARIABLE BankString  : STRING(8 DOWNTO 1) := " Bank-X ";    -- Functionality Results Variables    VARIABLE Violation     : X01 := '0';    VARIABLE DataDriveOut  :  std_logic_vector(15 DOWNTO 0) := (OTHERS => 'Z');    SUBTYPE OutWord   IS std_logic_vector(15 DOWNTO 0);    VARIABLE DataDrive1 : OutWord;    VARIABLE DataDrive2 : OutWord;    VARIABLE DataDrive3 : OutWord;    VARIABLE DQML_reg0  : UX01;    VARIABLE DQML_reg1  : UX01;    VARIABLE DQML_reg2  : UX01;    VARIABLE DQMH_reg0  : UX01;    VARIABLE DQMH_reg1  : UX01;    VARIABLE DQMH_reg2  : UX01;    VARIABLE check_DQML_init : BOOLEAN := FALSE;    VARIABLE check_DQMH_init : BOOLEAN := FALSE;    VARIABLE report_err : BOOLEAN := FALSE;    VARIABLE line : NATURAL := 0;    PROCEDURE generate_out    (Bank  :   IN  NATURAL )    IS    BEGIN        DataDrive(7 downto 0) := (others => 'U');        IF Mem(Bank)(Loc) > -2 THEN            DataDrive(7 downto 0) := (others => 'X');        END IF;        IF Mem(Bank)(Loc) > -1 THEN            DataDrive(7 downto 0) := to_slv(Mem(Bank)(Loc),8);        END IF;        DataDrive(15 downto 8) := (others => 'U');        IF Mem(Bank)(Loc+1) > -2 THEN            DataDrive(15 downto 8) := (others => 'X');        END IF;        IF Mem(Bank)(Loc+1) > -1 THEN            DataDrive(15 downto 8) := to_slv(Mem(Bank)(Loc+1),8);        END IF;    END PROCEDURE generate_out;    PROCEDURE MemWrite    (Bank  :   IN  NATURAL )    IS    BEGIN

⌨️ 快捷键说明

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