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

📄 test.v

📁 If you have not registered, Please [regist first].You should upload at least five sourcecodes/docume
💻 V
📖 第 1 页 / 共 2 页
字号:
    input [data_bits - 1 : 0] dq2;
    input [data_bits - 1 : 0] dq3;      // Last Data
    begin
                    Cke   = 1'b1;
                    Cs_n  = 1'b0;
                    Ras_n = 1'b1;
                    Cas_n = 1'b0;
                    We_n  = 1'b0;
                    Dm    = 1'b0;
                    Ba    =   ba;
                    Addr  = addr;
                    Dq    =  HiZ;
                    Dqs   = 1'bz;
        #half_clk;  Dqs   = 1'b0;
        #half_clk;  Cas_n = 1'b1;
                    We_n  = 1'b1;
        #quar_clk;  Dq    = dq0;
        #quar_clk;  Dqs   = 1'b1;
        #quar_clk;  Dq    = dq1;
        #quar_clk;  Dqs   = 1'b0;
        #quar_clk;  Dq    = dq2;
        #quar_clk;  Dqs   = 1'b1;
        #quar_clk;  Dq    = dq3;
        #quar_clk;  Dqs   = 1'b0;
        #quar_clk;  Dq    = HiZ;
        #quar_clk;  Dqs   = 1'bz;
        #half_clk;
        #full_clk;
    end
endtask

// Write Burst Length = 8
task write_8;
    input             [1 : 0] ba;       // Bank
    input [addr_bits - 1 : 0] addr;     // Column
    input [data_bits - 1 : 0] dq0;      // First Data
    input [data_bits - 1 : 0] dq1;
    input [data_bits - 1 : 0] dq2;
    input [data_bits - 1 : 0] dq3;
    input [data_bits - 1 : 0] dq4;
    input [data_bits - 1 : 0] dq5;
    input [data_bits - 1 : 0] dq6;
    input [data_bits - 1 : 0] dq7;      // Last Data
    begin
                    Cke   = 1'b1;
                    Cs_n  = 1'b0;
                    Ras_n = 1'b1;
                    Cas_n = 1'b0;
                    We_n  = 1'b0;
                    Dm    = 1'b0;
                    Ba    =   ba;
                    Addr  = addr;
                    Dq    =  HiZ;
                    Dqs   = 1'bz;
        #half_clk;  Dqs   = 1'b0;
        #half_clk;  Cas_n = 1'b1;
                    We_n  = 1'b1;
        #quar_clk;  Dq    = dq0;
        #quar_clk;  Dqs   = 1'b1;
        #quar_clk;  Dq    = dq1;
        #quar_clk;  Dqs   = 1'b0;
        #quar_clk;  Dq    = dq2;
        #quar_clk;  Dqs   = 1'b1;
        #quar_clk;  Dq    = dq3;
        #quar_clk;  Dqs   = 1'b0;

        #quar_clk;  Dq    = dq4;
        #quar_clk;  Dqs   = 1'b1;
        #quar_clk;  Dq    = dq5;
        #quar_clk;  Dqs   = 1'b0;
        #quar_clk;  Dq    = dq6;
        #quar_clk;  Dqs   = 1'b1;
        #quar_clk;  Dq    = dq7;
        #quar_clk;  Dqs   = 1'b0;

        #quar_clk;  Dq    = HiZ;
        #quar_clk;  Dqs   = 1'bz;
        #half_clk;
        #full_clk;
    end
endtask

// Write Burst Length = 4
// Even burst with precharge terminate (for testing tWR)
task write_4_even;
    input             [1 : 0] ba;       // Bank
    input [addr_bits - 1 : 0] addr;     // Column
    input [data_bits - 1 : 0] dq0;      // First Data
    input [data_bits - 1 : 0] dq1;
    input [data_bits - 1 : 0] dq2;
    input [data_bits - 1 : 0] dq3;      // Last Data
    begin
                    Cke   = 1'b1;
                    Cs_n  = 1'b0;
                    Ras_n = 1'b1;
                    Cas_n = 1'b0;
                    We_n  = 1'b0;
                    Dm    = 1'b0;
                    Ba    =   ba;
                    Addr  = addr;
                    Dq    =  HiZ;
                    Dqs   = 1'bz;
        #half_clk;  Dqs   = 1'b0;
        #half_clk;  Cas_n = 1'b1;
                    We_n  = 1'b1;
        #quar_clk;  Dq    = dq0;
        #quar_clk;  Dqs   = 1'b1;
        #quar_clk;  Dq    = dq1;
        #quar_clk;  Dqs   = 1'b0;
        #quar_clk;  Dq    = dq2; Dm = 1'b1;
        #quar_clk;  Dqs   = 1'b1;
        #quar_clk;  Dq    = dq3; Dm = 1'b1;
        #quar_clk;  Dqs   = 1'b0;
        #quar_clk;  Dq    = HiZ;
        #quar_clk;  Dqs   = 1'bz;
        
        #half_clk;  Ras_n = 1'b1; We_n = 1'b1;  // Nop - extra nop here pass tWR check
        
        #full_clk;  Ras_n = 1'b0; We_n = 1'b0;  // Precharge
        #full_clk;  Ras_n = 1'b1; We_n = 1'b1;  // Nop
        
        #full_clk;
    end
endtask

initial begin
    begin
        // POWERUP SECTION 
        //power_up;
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);

        // INITIALIZE SECTION
        precharge       (2'b00, 1024);                  // Precharge all banks
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        
        load_mode_reg   (2'b01, 12'b00000_000_0_000);   // Extended Mode Register (Enable DLL)
        nop             (HiZ, 1'bz, 1'b0);
        
        load_mode_reg   (2'b00, 12'b00010_010_0_010);   // Load Mode Register (DLL Reset, CL=2, BL=4)
        nop             (HiZ, 1'bz, 1'b0);
        
        load_mode_reg   (2'b00, 12'b00000_010_0_010);   // Load Mode Register (CL=2, BL=4, this second LMR is not needed on Micron DDR SDRAM)
        nop             (HiZ, 1'bz, 1'b0);
        
        precharge       (2'b00, 1024);                  // Precharge all banks
        nop             (HiZ, 1'bz, 1'b0);
        
        auto_refresh;
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);

        auto_refresh;
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);

        active          (2'b00, 0, HiZ, 1'bz, 1'b0);    // Active Bank 0, Row 0
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        write_4         (2'b00, 1024, 10, 11, 12, 13);     // Write  Bank 0, Col 0

        active          (2'b01, 0, HiZ, 1'bz, 1'b0);    // Active Bank 1, Row 0
        nop             (HiZ, 1'bz, 1'b0);              
        nop             (HiZ, 1'bz, 1'b0);
        write_4         (2'b01, 1024, 20, 21, 22, 23);     // Write  Bank 1, Col 0

        active          (2'b10, 0, HiZ, 1'bz, 1'b0);    // Active Bank 2, Row 0
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        write_4         (2'b10, 1024, 30, 31, 32, 33);     // Write  Bank 2, Col 0

        active          (2'b11, 0, HiZ, 1'bz, 1'b0);    // Active Bank 3, Row 0
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        write_4         (2'b11, 1024, 40, 41, 42, 43);     // Write  Bank 3, Col 0

        // DLL RESET ENABLE - you will need 200 tCK before any read command.
        #(200*full_clk);

        active          (2'b00, 0, HiZ, 1'bz, 1'b0);    // Active Bank 0, Row 0
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        read            (2'b00, 1024);                     // Read   Bank 0, Col 0
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);

        active          (2'b01, 0, HiZ, 1'bz, 1'b0);    // Active Bank 1, Row 0
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);              
        read            (2'b01, 1024);                     // Read   Bank 1, Col 0
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);

        active          (2'b10, 0, HiZ, 1'bz, 1'b0);    // Active Bank 2, Row 0
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        read            (2'b10, 1024);                     // Read   Bank 2, Col 0
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);

        active          (2'b11, 0, HiZ, 1'bz, 1'b0);    // Active Bank 3, Row 0
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        read            (2'b11, 1024);                     // Read   Bank 3, Col 0
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);

        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
        nop             (HiZ, 1'bz, 1'b0);
    end
    $stop;
    $finish;
end

endmodule

⌨️ 快捷键说明

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