亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sdr_sdram_tb.v

?? sdram控制器的開發程序
?? V
?? 第 1 頁 / 共 2 頁
字號:
                for(i = 1; i <= length-2; i = i + 1)
                begin
                #1000;
                        datain <= start_value + i;
                        
                        @(posedge clk);
                        
                end
                #1000;
                datain <= start_value + i;               // keep incrementing the data value
                #1000;    
                cmd <= 3'b100;                           // issue a precharge/terminate command to terminate the page burst                         
                @(posedge clk);
                #1000;

                datain <= start_value + i + 1;           // increment the data one more
                   
                @(cmdack == 1)                           // Wait for the controller to ack the command   
                #2000;
                cmd <= 3'b000;                           // Clear the command by issuing a NOP
                
                dm <= 0;
                #1000000;
                cmd <= 3'b100;                           // issue a precharge command to close the page                          
                @(posedge clk);
                @(cmdack==1);
                @(posedge clk);
                #1000;    
                cmd  <= 3'b000;


        end
endtask



//      page_read_burst(address, start_value, CL, RCD, length)
//
//      This task performs a page read access of size length 
//      at SDRAM address to the SDRAM controller
//
//      address         :       Address in SDRAM to start the burst access
//      start_value     :       Starting value for the burst read sequence.  The read burst task
//                                simply increments and compares the data values from the start_value.
//      CL              :       CAS latency the sdram devices have been configured for.
//      RCD             :       RCD value the controller has been configured for.
//      length          :       burst length of the access


task    page_read_burst;

        input   [`ASIZE-1 : 0]         address;
        input   [`DSIZE-1 : 0]         start_value;
        input   [1 : 0]                CL;
        input   [1 : 0]                RCD;
        input   [15 : 0]               length;
        integer                        i;
        reg     [`DSIZE-1 : 0]         read_data;
        
        begin
                addr  <= address;
                cmd   <= 3'b001;                                 // issue a read command to the controller
                @(cmdack == 1);                                  // wait for the controller to ack
                @(posedge clk);
                #1000;
                cmd <= 3'b000;
                                                   // NOP on the command input
                for (i=1 ; i<=(CL+RCD+1); i=i+1)                 // Wait for activate and cas latency delays
                @(posedge clk);
                for(i = 1; i <= length; i = i + 1)               // loop and collect the data
                begin
                        @(posedge clk);
                        read_data <= dataout;
                        #2000;
                        if (i == (length-8)) cmd <= 3'b100;      // Terminate the page burst 
                        if (cmdack == 1) cmd<=3'b000;            // end the precharge command once the controller has ack'd
                        if (read_data !== start_value + i - 1)
                        begin
                                $display("Read error at %h read %h expected %h", (addr+i-1), read_data, (start_value + i -1));
                                $stop;
                        end
                end
        end
endtask






//      config(bl, cl, rc, pm, ref)
//
//      This task cofigures the SDRAM devices and the controller 
//
//      bl         :       Burst length 1,2,4, or 8
//      cl         :       Cas latency, 2 or 3
//      rc         :       Ras to Cas delay.
//      pm         :       page mode setting
//      ref        :       refresh period setting


task    config;

        input   [3 : 0]           bl;
        input   [1 : 0]           cl;
        input   [1 : 0]           rc;
        input                     pm;
        input   [15: 0]           ref;
        
        reg     [`ASIZE-1 : 0]    config_data;
        
        begin
                config_data <= 0;
                @(posedge clk);
                @(posedge clk);
                                                        
                @(posedge clk);
                if (bl == 1)
                        config_data[2:0] <= 3'b000;     // Set the Burst length portion of the mode data
                else if (bl == 2)
                        config_data[2:0] <= 3'b001;
                else if (bl == 4)
                        config_data[2:0] <= 3'b010;
                else if (bl == 8)
                        config_data[2:0] <= 3'b011;
                else if (bl == 0)
                        config_data[2:0] <= 3'b111;    // full page burst configuration value for bl
                        
                config_data[6:4] <= cl;
        
                                                         // issue precharge before issuing load_mode
                @(posedge clk);
                cmd <= 3'b100;                         
                @(cmdack == 1)                           // Wait for the controller to ack the command   
                #2000;
                cmd <= 3'b000;                           // Clear the command by issuing a NOP

                @(posedge clk);
                #2000;
        
                                                        // load mode register
                cmd <= 3'b101;
                addr[15:0] <= config_data;
                @(cmdack == 1)                          // Wait for the controller to ack the command
                cmd <= 3'b000;                          // Clear the command by issuing a NOP
        
        
                config_data <= 0;
                config_data[15:0] <= ref;
                @(posedge clk);
                                                         // load refresh counter
                @(posedge clk);
                addr[15:0] <= config_data;
                cmd  <= 3'b111;
                @(cmdack == 1 );                         // Wait for the controller to ack the command
                #2000;                          
                cmd  <= 3'b000;                          // Clear the command by issuing a NOP
                addr <= 0;
                config_data <= 0;               
                
                config_data[1:0] <= cl;                  // load contorller reg1
                config_data[3:2] <= rc;
                config_data[8] <= pm;
                config_data[12:9] <= bl;
                @(posedge clk);
                #2000;
                addr[15:0] <= config_data;
                cmd  <= 3'b110;
                @(cmdack == 1)                           // Wait for the controller to ack the command
                #2000;
                cmd  <= 3'b000;                          // Clear the command by issuing a NOP
                addr <= 0;
                config_data <= 0;
        
               
                
        end
endtask

initial begin
        cmd = 0;
        addr = 0;
        ref_ack = 0;
        dm <= 0;

        #3000000; 


  $display("Testing page burst accesses");
  config(0,3,3,1,1526);
  #1000000;

  $display("Writing a ramp value from 0-29 out to sdram at address 0x0");
  page_write_burst(0, 0, 4'h0, 3, 30);
  #1000000;

 $display("Reading the ramp value from sdram at address 0x0");
  page_read_burst(0,0,3,3,30);
 #1000000;


  $display("Testing data mask inputs");
  config(8,3,3,0,1526);
  #1000000;
  
  $display("writing pattern 0,1,2,3,4,5,6,7 to sdram at address 0x0");
  burst_write(0, 0, 4'b0, 3, 8);
  
  $display("Reading and verifing the pattern 0,1,2,3,4,5,6,7 at sdram address 0x0");
  burst_read(0, 0, 3, 3, 8);
  
  $display("Writing pattern 0xfffffff0, 0xfffffff1, 0xfffffff2, 0xfffffff3, 0xfffffff4, 0xfffffff5, 0xfffffff6, 0xfffffff7");
  $display("with DM set to 0xf");
  burst_write(0, 32'hfffffff0, 4'b1111, 3, 8);
  
  $display("Reading and verifing that the pattern at sdram address 0x0 is");
  $display("still 0,1,2,3,4,5,6,7");
  burst_read(0, 0, 3, 3, 8);
  
  $display("End of data mask test");
  
  
  
  bl = 1;
  for (x = 1; x <=4; x = x + 1)
  begin
    for (y = 3; y <= 3; y = y + 1)              // at 133mhz cl must be 3,  if 100mhz cl can be 2
    begin 
      for (z = 3; z <=3; z = z + 1)             //at 133mhz rc must be 3, if 100mhz rc can be 2
      begin
         $display("configuring for bl = %d   cl = %d   rc = %d",bl,y,z);
         config(bl, y, z, 0, 1526);
                

// perform 1024 burst writes to the first chip select, writing a ramp pattern
        $display("Peforming burst write to first sdram bank");
        test_data <= 0;
        test_addr <= 0;
        @(posedge clk);
        @(posedge clk);
        for (j = 0; j < `LOOP_LENGTH; j = j + 1)
        begin
                burst_write(test_addr, test_data, 4'h0, z, bl);
                test_data <= test_data + bl;
                test_addr <= test_addr + bl;
                #50000;
        end
        

// perform 1024 burst reads to the first chip select, verifing the ramp pattern
        $display("Performing burst read, verify ramp values in first sdram bank");
        test_data <= 0;
        test_addr <= 0;
        @(posedge clk);
        @(posedge clk);
        for (j = 0; j < `LOOP_LENGTH; j = j + 1)
        begin
                burst_read(test_addr, test_data, y, z, bl);
                test_data <= test_data + bl;
                test_addr <= test_addr + bl;
        end
        
        #500000;

// perform 1024 burst writes to the second chip select, writing a ramp pattern
        $display("Peforming burst write to second sdram bank");
        test_data <= 24'h400000;
        test_addr <= 24'h400000;
        @(posedge clk);
        @(posedge clk);
        for (j = 0; j < `LOOP_LENGTH; j = j + 1)
        begin
                burst_write(test_addr, test_data, 4'h0, z, bl);
                test_data <= test_data + bl;
                test_addr <= test_addr + bl;
                @(posedge clk);
        end
        
// perform 1024 burst reads to the second chip select, verifing the ramp pattern
        $display("Performing burst read, verify ramp values in second sdram bank");
        test_data <= 24'h400000;
        test_addr <= 24'h400000;
        @(posedge clk);
        @(posedge clk);
        for (j = 0; j < `LOOP_LENGTH; j = j + 1)
        begin
                burst_read(test_addr, test_data, y, z, bl);
                test_data <= test_data + bl;
                test_addr <= test_addr + bl;
        end
        
        #500000;

        $display("Test complete");
      end
    end
    bl = bl * 2;

  end
$stop;
end

endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品情趣| 国产欧美日韩中文久久| 欧美午夜一区二区| 91美女蜜桃在线| 91美女精品福利| 在线看国产日韩| 欧美日韩亚洲国产综合| 在线播放/欧美激情| 91精品国产综合久久精品麻豆| 欧美欧美午夜aⅴ在线观看| 欧美乱妇20p| 精品日韩欧美一区二区| 久久综合色天天久久综合图片| 久久久午夜精品理论片中文字幕| 亚洲精品在线观看网站| 国产日产欧美一区| 亚洲色图视频网| 亚洲一区二区美女| 丝袜美腿亚洲一区二区图片| 免费在线看成人av| 国产成人一区在线| 色综合久久88色综合天天 | 欧美日韩一区二区电影| 欧美美女直播网站| 精品美女在线观看| 国产精品不卡在线| 亚洲精品国产视频| 日韩精品乱码av一区二区| 精品制服美女丁香| 青青草原综合久久大伊人精品优势 | 国产日韩欧美综合在线| 久久夜色精品国产欧美乱极品| 久久久亚洲综合| 亚洲免费观看在线视频| 亚洲成a人片综合在线| 精品在线播放午夜| 色综合 综合色| 91精品国产色综合久久不卡蜜臀 | 蜜桃精品视频在线观看| 国产一区二区在线观看免费| 成人av网站免费观看| 欧美三级三级三级爽爽爽| 精品sm在线观看| 亚洲久本草在线中文字幕| 日韩黄色在线观看| 99久久99久久精品国产片果冻| 欧美日韩一区不卡| 日本一区二区成人在线| 亚洲福利一区二区三区| 国产成人免费在线观看| 欧美最猛黑人xxxxx猛交| 久久久久久97三级| 五月婷婷欧美视频| 成人激情免费电影网址| 欧美一区中文字幕| 亚洲欧美另类在线| 麻豆成人91精品二区三区| 一本久久精品一区二区| www久久久久| 视频一区视频二区在线观看| 成人性视频免费网站| 欧美精品一卡两卡| 亚洲免费伊人电影| 国产伦精品一区二区三区视频青涩| 欧美丝袜自拍制服另类| 国产欧美一区二区精品忘忧草 | 日本成人中文字幕| 91麻豆成人久久精品二区三区| 精品三级av在线| 亚洲大片免费看| 成人精品免费网站| 久久久国产一区二区三区四区小说| 天天综合日日夜夜精品| 色婷婷综合中文久久一本| 欧美激情在线免费观看| 国产在线不卡视频| 欧美精品一二三| 亚洲午夜一区二区三区| 成人av免费在线观看| 精品99一区二区| 麻豆成人91精品二区三区| 欧美三级视频在线观看| 一二三区精品福利视频| 99久久精品久久久久久清纯| 国产欧美一区二区三区沐欲| 国产一区二区在线影院| 精品久久久久久久久久久久包黑料 | 亚洲韩国一区二区三区| 色综合中文综合网| 国产99精品视频| 精品国产伦一区二区三区观看方式 | 精品国产a毛片| 日日噜噜夜夜狠狠视频欧美人| 欧美色网一区二区| 亚洲欧洲精品天堂一级| 成人91在线观看| 国产精品久久久久久久久久久免费看| 国内偷窥港台综合视频在线播放| 日韩一区二区三区免费观看| 日韩福利视频导航| 欧美一区二区三区成人| 五月天亚洲婷婷| 欧美日韩一区二区三区不卡| 亚洲成av人影院在线观看网| 欧美三级视频在线播放| 亚洲国产va精品久久久不卡综合| 欧洲精品一区二区三区在线观看| 亚洲黄色免费网站| 欧美色图在线观看| 视频一区二区三区在线| 7777精品伊人久久久大香线蕉完整版| 日韩制服丝袜av| 日韩欧美一区二区视频| 久久66热re国产| 国产日韩精品视频一区| 成人看片黄a免费看在线| 国产精品欧美综合在线| 一本到不卡精品视频在线观看| 亚洲一区二区三区小说| 在线免费观看日本一区| 伊人开心综合网| 欧美乱妇20p| 另类综合日韩欧美亚洲| 国产色产综合产在线视频| heyzo一本久久综合| 亚洲欧洲日韩女同| 欧美亚洲国产bt| 日本欧美在线看| 久久久综合视频| 色综合天天综合| 午夜精品久久久久久久| 欧美成人精品福利| 成人网在线播放| 一级精品视频在线观看宜春院| 欧美一级久久久久久久大片| 国产精品亚洲专一区二区三区 | 国产尤物一区二区在线| 久久久91精品国产一区二区精品| 91在线看国产| 久热成人在线视频| 国产三级三级三级精品8ⅰ区| 在线观看日韩国产| 久久99精品国产麻豆婷婷| 欧美激情在线一区二区三区| 欧美午夜精品一区二区三区| 国产综合成人久久大片91| 综合自拍亚洲综合图不卡区| 欧美狂野另类xxxxoooo| 国产suv精品一区二区6| 亚瑟在线精品视频| 久久青草欧美一区二区三区| 欧美视频一区在线| 国产福利一区二区三区视频| 亚洲一级在线观看| 国产亚洲短视频| 在线播放欧美女士性生活| 国产精品一区二区在线观看不卡 | 色香蕉成人二区免费| 亚洲va欧美va人人爽| 欧美激情综合五月色丁香小说| 欧美伊人久久久久久久久影院| 国模一区二区三区白浆| 亚洲国产一区在线观看| 欧美国产禁国产网站cc| 欧美精品自拍偷拍动漫精品| www.av亚洲| 性做久久久久久久久| 久久在线观看免费| 制服丝袜日韩国产| 日本丶国产丶欧美色综合| 久久av资源网| 午夜欧美2019年伦理| 亚洲国产激情av| 91麻豆精品国产无毒不卡在线观看| 成人av电影在线播放| 久久91精品国产91久久小草| 亚洲一区二区偷拍精品| ●精品国产综合乱码久久久久| 久久综合999| 欧美一级爆毛片| 91久久一区二区| caoporm超碰国产精品| 极品少妇一区二区| 日韩黄色小视频| 亚洲国产日韩综合久久精品| 亚洲日本一区二区| 欧美激情一区二区三区在线| 欧美成人艳星乳罩| 7777精品久久久大香线蕉| 欧洲色大大久久| 色综合天天性综合| 丁香五精品蜜臀久久久久99网站 | 精品久久久网站| 日韩一区二区三区视频| 欧美裸体bbwbbwbbw| 91国产成人在线| 91亚洲精品久久久蜜桃| 成人a级免费电影| 成人午夜av在线| 成人免费视频一区|