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

📄 ddr2.v

📁 free hardware ip core about sparcv8,a soc cpu in vhdl
💻 V
📖 第 1 页 / 共 5 页
字号:
    parameter RDQSEN_PST       =       1; // DQS driving time after last read strobe    parameter RDQS_PRE         =       2; // DQS low time prior to first read strobe    parameter RDQS_PST         =       1; // DQS low time after last valid read strobe    parameter RDQEN_PRE        =       0; // DQ/DM driving time prior to first read data    parameter RDQEN_PST        =       0; // DQ/DM driving time after last read data    parameter WDQS_PRE         =       1; // DQS half clock periods prior to first write strobe    parameter WDQS_PST         =       1; // DQS half clock periods after last valid write strobe    // text macros    `define DQ_PER_DQS DQ_BITS/DQS_BITS    `define BANKS      (1<<BA_BITS)    `define MAX_BITS   (BA_BITS+ROW_BITS+COL_BITS-BL_BITS)    `define MAX_SIZE   (1<<(BA_BITS+ROW_BITS+COL_BITS-BL_BITS))    `define MEM_SIZE   (1<<MEM_BITS)    `define MAX_PIPE   2*(AL_MAX + CL_MAX)    // Declare Ports    input   ck;    input   ck_n;    input   cke;    input   cs_n;    input   ras_n;    input   cas_n;    input   we_n;    inout   [DM_BITS-1:0]   dm_rdqs;    input   [BA_BITS-1:0]   ba;    input   [ADDR_BITS-1:0] addr;    inout   [DQ_BITS-1:0]   dq;    inout   [DQS_BITS-1:0]  dqs;    inout   [DQS_BITS-1:0]  dqs_n;    output  [DQS_BITS-1:0]  rdqs_n;    input   odt;                                // clock jitter    real    tck_avg;    time    tck_sample [TDLLK-1:0];    time    tch_sample [TDLLK-1:0];    time    tcl_sample [TDLLK-1:0];    time    tck_i;    time    tch_i;    time    tcl_i;    real    tch_avg;    real    tcl_avg;    time    tm_ck_pos;    time    tm_ck_neg;    real    tjit_per_rtime;    integer tjit_cc_time;    real    terr_nper_rtime;    // clock skew    real    out_delay;    integer dqsck [DQS_BITS-1:0];    integer dqsck_min;    integer dqsck_max;    integer dqsq_min;    integer dqsq_max;    integer seed;    // Mode Registers    reg     burst_order;    reg     [BL_BITS:0] burst_length;    integer cas_latency;    integer additive_latency;    reg     dll_reset;    reg     dll_locked;    reg     dll_en;    integer write_recovery;    reg     low_power;    reg     [1:0] odt_rtt;    reg     odt_en;    reg     [2:0] ocd;    reg     dqs_n_en;    reg     rdqs_en;    reg     out_en;    integer read_latency;    integer write_latency;    // cmd encoding    parameter        LOAD_MODE = 4'b0000,        REFRESH   = 4'b0001,        PRECHARGE = 4'b0010,        ACTIVATE  = 4'b0011,        WRITE     = 4'b0100,        READ      = 4'b0101,        NOP       = 4'b0111,        PWR_DOWN  = 4'b1000,        SELF_REF  = 4'b1001    ;    reg [8*9-1:0] cmd_string [9:0];    initial begin        cmd_string[LOAD_MODE] = "Load Mode";        cmd_string[REFRESH  ] = "Refresh  ";        cmd_string[PRECHARGE] = "Precharge";        cmd_string[ACTIVATE ] = "Activate ";        cmd_string[WRITE    ] = "Write    ";        cmd_string[READ     ] = "Read     ";        cmd_string[NOP      ] = "No Op    ";        cmd_string[PWR_DOWN ] = "Pwr Down ";        cmd_string[SELF_REF ] = "Self Ref ";    end    // command state    reg     [`BANKS-1:0] active_bank;    reg     [`BANKS-1:0] auto_precharge_bank;    reg     [`BANKS-1:0] write_precharge_bank;    reg     [`BANKS-1:0] read_precharge_bank;    reg     [ROW_BITS-1:0] active_row [`BANKS-1:0];    reg     in_power_down;    reg     in_self_refresh;    reg     precharge_all;    reg     [3:0] init_mode_reg;    reg     init_done;    integer init_step;    reg     er_trfc_max;    reg     odt_state;    reg     prev_odt;    // cmd timers/counters    integer ref_cntr;    integer ck_cntr;    integer ck_load_mode;    integer ck_write;    integer ck_read;    integer ck_power_down;    integer ck_slow_exit_pd;    integer ck_self_refresh;    integer ck_cke;    integer ck_odt;    integer ck_dll_reset;    integer ck_bank_write     [`BANKS-1:0];    integer ck_bank_read      [`BANKS-1:0];    time    tm_refresh;    time    tm_precharge;    time    tm_activate;    time    tm_write_end;    time    tm_self_refresh;    time    tm_odt_en;    time    tm_bank_precharge [`BANKS-1:0];    time    tm_bank_activate  [`BANKS-1:0];    time    tm_bank_write_end [`BANKS-1:0];    time    tm_bank_read_end  [`BANKS-1:0];    // pipelines    reg     [`MAX_PIPE:0]   al_pipeline;    reg     [`MAX_PIPE:0]   wr_pipeline;    reg     [`MAX_PIPE:0]   rd_pipeline;    reg     [`MAX_PIPE:0]   odt_pipeline;    reg     [BA_BITS-1:0]   ba_pipeline  [`MAX_PIPE:0];    reg     [ROW_BITS-1:0]  row_pipeline [`MAX_PIPE:0];    reg     [COL_BITS-1:0]  col_pipeline [`MAX_PIPE:0];    reg     prev_cke;        // data state    reg     [BL_MAX*DQ_BITS-1:0] memory_data;    reg     [BL_MAX*DQ_BITS-1:0] bit_mask;    reg     [BL_BITS-1:0]        burst_position;    reg     [BL_BITS:0]          burst_cntr;    reg     [DQ_BITS-1:0]        dq_temp;    reg     [31:0] check_write_postamble;    reg     [31:0] check_write_preamble;    reg     [31:0] check_write_dqs_high;    reg     [31:0] check_write_dqs_low;    reg     [15:0] check_dm_tdipw;    reg     [63:0] check_dq_tdipw;    // data timers/counters    time    tm_cke;    time    tm_odt;    time    tm_tdqss;    time    tm_dm        [15:0];    time    tm_dqs       [15:0];    time    tm_dqs_pos   [31:0];    time    tm_dqss_pos  [31:0];    time    tm_dqs_neg   [31:0];    time    tm_dq        [63:0];    time    tm_cmd_addr  [22:0];    reg [8*7-1:0] cmd_addr_string [22:0];    initial begin        cmd_addr_string[ 0] = "CS_N   ";        cmd_addr_string[ 1] = "RAS_N  ";        cmd_addr_string[ 2] = "CAS_N  ";        cmd_addr_string[ 3] = "WE_N   ";        cmd_addr_string[ 4] = "BA 0   ";        cmd_addr_string[ 5] = "BA 1   ";        cmd_addr_string[ 6] = "BA 2   ";        cmd_addr_string[ 7] = "ADDR  0";        cmd_addr_string[ 8] = "ADDR  1";        cmd_addr_string[ 9] = "ADDR  2";        cmd_addr_string[10] = "ADDR  3";        cmd_addr_string[11] = "ADDR  4";        cmd_addr_string[12] = "ADDR  5";        cmd_addr_string[13] = "ADDR  6";        cmd_addr_string[14] = "ADDR  7";        cmd_addr_string[15] = "ADDR  8";        cmd_addr_string[16] = "ADDR  9";        cmd_addr_string[17] = "ADDR 10";        cmd_addr_string[18] = "ADDR 11";        cmd_addr_string[19] = "ADDR 12";        cmd_addr_string[20] = "ADDR 13";        cmd_addr_string[21] = "ADDR 14";        cmd_addr_string[22] = "ADDR 15";    end    reg [8*5-1:0] dqs_string [1:0];    initial begin        dqs_string[0] = "DQS  ";        dqs_string[1] = "DQS_N";    end    // Memory Storage`ifdef MAX_MEM    reg     [BL_MAX*DQ_BITS-1:0] memory  [0:`MAX_SIZE-1];

⌨️ 快捷键说明

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