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

📄 mb811643242.vhd

📁 vhdl cod for ram.For sp3e
💻 VHD
📖 第 1 页 / 共 5 页
字号:
            DataIn(27) =>  DQ27_nwv,            DataIn(28) =>  DQ28_nwv,            DataIn(29) =>  DQ29_nwv,            DataIn(30) =>  DQ30_nwv,            DataIn(31) =>  DQ31_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,            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(31 DOWNTO 0);    BEGIN    PoweredUp <= true after tpowerup;    ----------------------------------------------------------------------------    -- Main Behavior Process    ----------------------------------------------------------------------------        Behavior : PROCESS (BAIn, DQM0In, DQM1In, DQM2In, DQM3In, DataIn, CLKIn,                            CKEIn, AddressIn, WENegIn, RASNegIn, CSNegIn,                            CASNegIn)            -- 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_DQM3_CLK     : X01 := '0';            VARIABLE TD_DQM3_CLK        : VitalTimingDataType;            VARIABLE Tviol_DQM2_CLK     : X01 := '0';            VARIABLE TD_DQM2_CLK        : VitalTimingDataType;            VARIABLE Tviol_DQM1_CLK     : X01 := '0';            VARIABLE TD_DQM1_CLK        : VitalTimingDataType;            VARIABLE Tviol_DQM0_CLK     : X01 := '0';            VARIABLE TD_DQM0_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;            -- Memory array declaration            TYPE MemStore IS ARRAY (0 to depth) OF NATURAL                             RANGE  0 TO 255;            TYPE MemBlock IS ARRAY (0 to 3) OF MemStore;            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(18 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 Burst_Inc_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;            TYPE OutWord IS ARRAY (3 downto 0) OF std_logic_vector(7 DOWNTO 0);            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);            VARIABLE MemData0   : MemBlock;            VARIABLE MemData1   : MemBlock;            VARIABLE MemData2   : MemBlock;            VARIABLE MemData3   : MemBlock;            VARIABLE MemAddr      : MemLoc;            VARIABLE Location     : NATURAL RANGE 0 TO depth := 0;            VARIABLE BaseLoc      : BaseLoc_type;            VARIABLE Burst_Inc    : Burst_Inc_type;            VARIABLE StartAddr    : StartAddr_type;            VARIABLE Burst_Length : 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 Burst_Cnt    : burst_counter;            VARIABLE command : command_type;            VARIABLE written    : boolean := false;            VARIABLE cur_bank : natural range 0 to hi_bank;            VARIABLE ModeReg    : std_logic_vector(10 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(31 DOWNTO 0)                                   := (OTHERS => 'Z');            VARIABLE DataDrive  : OutWord;            VARIABLE DataDrive1 : OutWord;            VARIABLE DataDrive2 : OutWord;            VARIABLE DataDrive3 : OutWord;            VARIABLE DQM0_reg0  : UX01;            VARIABLE DQM1_reg0  : UX01;            VARIABLE DQM2_reg0  : UX01;            VARIABLE DQM3_reg0  : UX01;            VARIABLE DQM0_reg1  : UX01;            VARIABLE DQM1_reg1  : UX01;            VARIABLE DQM2_reg1  : UX01;            VARIABLE DQM3_reg1  : UX01;            VARIABLE DQM0_reg2  : UX01;            VARIABLE DQM1_reg2  : UX01;            VARIABLE DQM2_reg2  : UX01;            VARIABLE DQM3_reg2  : UX01;        BEGIN            --------------------------------------------------------------------            -- Timing Check Section            --------------------------------------------------------------------            IF (TimingChecksOn) THEN                VitalSetupHoldCheck (                    TestSignal      => BAIn,                    TestSignalName  => "BA",                    RefSignal       => CLKIn,                    RefSignalName   => "CLK",                    SetupHigh       => tsetup_DQ0_CLK,                    SetupLow        => tsetup_DQ0_CLK,                    HoldHigh        => thold_DQ0_CLK,                    HoldLow         => thold_DQ0_CLK,                    CheckEnabled    => (CKEreg ='1'),                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_BA_CLK,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_BA_CLK );                VitalSetupHoldCheck (                    TestSignal      => DQM3In,                    TestSignalName  => "DQM3",                    RefSignal       => CLKIn,                    RefSignalName   => "CLK",                    SetupHigh       => tsetup_DQ0_CLK,                    SetupLow        => tsetup_DQ0_CLK,                    HoldHigh        => thold_DQ0_CLK,                    HoldLow         => thold_DQ0_CLK,                    CheckEnabled    => (CKEreg ='1'),                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_DQM3_CLK,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_DQM3_CLK );                VitalSetupHoldCheck (                    TestSignal      => DQM2In,                    TestSignalName  => "DQM2",                    RefSignal       => CLKIn,                    RefSignalName   => "CLK",                    SetupHigh       => tsetup_DQ0_CLK,                    SetupLow        => tsetup_DQ0_CLK,                    HoldHigh        => thold_DQ0_CLK,                    HoldLow         => thold_DQ0_CLK,                    CheckEnabled    => (CKEreg ='1'),                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_DQM2_CLK,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_DQM2_CLK );                VitalSetupHoldCheck (                    TestSignal      => DQM1In,                    TestSignalName  => "DQM1",                    RefSignal       => CLKIn,                    RefSignalName   => "CLK",                    SetupHigh       => tsetup_DQ0_CLK,                    SetupLow        => tsetup_DQ0_CLK,                    HoldHigh        => thold_DQ0_CLK,                    HoldLow         => thold_DQ0_CLK,                    CheckEnabled    => (CKEreg ='1'),                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_DQM1_CLK,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_DQM1_CLK );                VitalSetupHoldCheck (                    TestSignal      => DQM0In,                    TestSignalName  => "DQM0",                    RefSignal       => CLKIn,                    RefSignalName   => "CLK",                    SetupHigh       => tsetup_DQ0_CLK,                    SetupLow        => tsetup_DQ0_CLK,                    HoldHigh        => thold_DQ0_CLK,                    HoldLow         => thold_DQ0_CLK,                    CheckEnabled    => (CKEreg ='1'),                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_DQM0_CLK,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_DQM0_CLK );

⌨️ 快捷键说明

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