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

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

?? ddr_cntl_a_controller_0.v

?? arm控制FPGA的DDR測試代碼
?? V
?? 第 1 頁 / 共 4 頁
字號:

assign PRECHARGE_CMD     = (command_register == 3'b001 && accept_cmd_in == 1'b1);
assign initialize_memory = (command_register == 3'b010);
assign write_cmd_in      = (command_register == 3'b100 && accept_cmd_in == 1'b1);
assign ld_mode           = (command_register == 3'b101 && accept_cmd_in == 1'b1);
assign read_cmd          = (command_register == 3'b110 && accept_cmd_in == 1'b1);


//**************************************************************************
// write_cmd is used to determine when there is a new write request
//**************************************************************************

// register write_cmd until WRITE command needs to be issued

  always @ (negedge clk)       //(posedge clk180)
  begin
     if (rst180_r == 1'b1)
      begin
       write_cmd1  <= 1'b0;
       write_cmd2  <= 1'b0;
       write_cmd3  <= 1'b0;
       write_cmd4  <= 1'b0;
       write_cmd5  <= 1'b0;
       write_cmd6  <= 1'b0;
       write_cmd7  <= 1'b0;
       write_cmd8  <= 1'b0;
       write_cmd   <= 1'b0;
      end
     else
      begin
	  if (accept_cmd_in)
           write_cmd1 <= write_cmd_in;
       write_cmd2 <= write_cmd1;
       write_cmd3 <= write_cmd2;
       write_cmd4 <= write_cmd3;
       write_cmd5 <= write_cmd4; 
       write_cmd6 <= write_cmd5; 
       write_cmd7 <= write_cmd6; 
       write_cmd8  <= write_cmd7;   
       write_cmd  <= write_cmd6;
      end               
  end
  
//************************************************************************
// register read cmd until READ command needs to be issued 
//************************************************************************

  always @ (negedge clk)       //(posedge clk180)
  begin
     if (rst180_r == 1'b1)
      begin
       read_cmd1      <= 1'b0;
       read_cmd2      <= 1'b0;
       read_cmd3      <= 1'b0;
       read_cmd4      <= 1'b0;
       read_cmd5      <= 1'b0;
       read_cmd6      <= 1'b0;
       read_cmd7      <= 1'b0;
       read_cmd8      <= 1'b0;
       read_cmd_reg   <= 1'b0;
       read_rcd_end   <= 1'b0;
      end
     else
      begin
	  if (accept_cmd_in)
       read_cmd1       <= read_cmd;
       read_cmd2       <= read_cmd1;
       read_cmd3       <= read_cmd2;
       read_cmd4       <= read_cmd3;
       read_cmd5       <= read_cmd4; 
       read_cmd6       <= read_cmd5;  
       read_cmd7       <= read_cmd6;
       read_cmd_reg    <= read_cmd7; 
       read_cmd8       <= read_cmd7; 
       read_rcd_end    <= read_cmd8;
      end
  end
  
//********************************************************************************************                
// MRD Counter
// an executable command can be issued only after Tmrd(2 cycles) after a LMR command is issued
//********************************************************************************************
assign MRD_COUNT_value = (ldMdReg_flag) ? 2'b11 :
                            (mrdCnt0 != 1'b1) ? (MRD_COUNT - 1'b1) :
                           2'b00;
                          
//********************************************************************************************                
// RFC Counter
// an executable command can be issued only after Trfc(60 ns => 60/5 = 12 cycles) 
//                                after a AUTOREFRESH command is issued
//********************************************************************************************

assign RFC_COUNT_value = (aref_flag) ?  (RFC_COUNTER_value):
			  (RFC_COUNT != 5'b00000) ?  (RFC_COUNT - 1'b1):
			   5'b00000;

//********************************************************************************************                
// RP Counter
// an executable command can be issued only after Trp(20 ns for a -5 device => 4 cycles) 
//                        after a PRECHARGE command is issued
//********************************************************************************************
assign rp_cnt_value = (precharge_flag) ? 3'b100 :                  
					(rpCnt0 != 1'b1) ? (RP_COUNT - 1'b1) :  3'b000;
                       
//********************************************************************************************                
// RRD Counter
// minimum interval between successive ACTIVE commands to different banks - Trrd
// 2 clock cycles
//********************************************************************************************
assign RRD_COUNT_value = (next_state1 == ACTIVE) ? 2'b10 :
                          (RRD_COUNT != 2'b00) ? (RRD_COUNT - 1'b1) :
                           2'b00;
                           
//*********************************************************************************************
// ACTIVE to READ/WRITE counter
// RCDr counter
// ACTIVE to READ delay - (-5) device requires 20 ns of delay => 4 clock cycles
//
// RCDW counter
// ACTIVE to WRITE delay - (-5) device requires 10 ns of delay => 2 clock cycles
//
//*********************************************************************************************


assign RCDR_COUNT_value =  (next_state1 == ACTIVE) ? 3'b100 :
                           (rcdrCnt0 != 1'b1) ? (RCDR_COUNT - 1'b1) :
                            3'b000;

assign RCDW_COUNT_value = (next_state1 == ACTIVE) ? 2'b11 :                        
                          (rcdwCnt0 != 1'b1) ? (RCDW_COUNT - 1'b1) :
                           2'b00;  
                           
//*********************************************************************************************
// ACTIVE to PRECHARGE counter
// RAS counter
// ACTIVE to PRECHARGE delay -
// the memory device require 40 ns (8 clock cycles)after issuing an ACTIVE command before issuing a
// PRECHARGE command
//
//*********************************************************************************************
assign ras_count_value = (next_state1 == ACTIVE) ? 4'b1000 :
                          (RAS_COUNT != 4'b0000) ? (RAS_COUNT - 1'b1) :
                          4'b0000;

//**********************************************************************************************
// RC counter
// an ACTIVE command to a different row can be issued only after the previous row has been 
// precharged & after Trc is met 
// Trc = 60 ns = 12 clock cycles
//**********************************************************************************************
assign RC_COUNT_value = (next_state1 == ACTIVE) ? 4'b1100 :
                         (rcCnt0 != 1'b1) ? (RC_COUNT - 1'b1) :
                         4'b0000;


//********************************************************************************************                
// WR Counter
// a PRECHARGE command can be applied only after 2 cycles after a WRITE command has finished 
// executing
//********************************************************************************************
assign WR_COUNT_value = (next_state1 == PRECHARGE_AFTER_WRITE) ? 2'b11 :
                         (WR_COUNT != 2'b00) ? (WR_COUNT - 1'b1) :
                         2'b00;

//********************************************************************************************************
// Auto refresh counter - the design uses AUTO REFRESH
// 
// the DDR SDRAM requires AUTO REFRESH cycles at an average interval of 7.8 us
// Hence, a counter value to obtain a 7.8.6 us clock for Auto Refresh
// Refresh Request is raised for every 7.7 us
// Hence for 200MHz frequency,The Refresh_count_value = freq * refresh_time_period = 200*7.7 = 1540 
//**********************************************************************************************************


assign AUTOREF_value   = (AUTOREF_COUNT == max_ref_cnt)  ? 1'b1 : 1'b0;               


assign AUTOREF_CNT_val = ((AUTOREF_value) || !INIT_DONE )? 11'b0 : //sarala, 22nd june
                          AUTOREF_COUNT + 1'b1;



always @ (negedge clk)       //(posedge clk180)   
begin
  if (rst180_r == 1'b1)
  begin
     AUTOREF_COUNT     <= 11'b00000000000;
     RFC_COUNTER_value <= `rfc_count_value;
     max_ref_cnt       <=  `max_ref_cnt;
  end 
  else
     begin
     AUTOREF_COUNT     <= AUTOREF_CNT_val;
     RFC_COUNTER_value <= `rfc_count_value;
     max_ref_cnt       <= `max_ref_cnt;
     end 
end

always @ (negedge clk)       //(posedge clk180)
begin
  if (rst180_r == 1'b1)
    begin
      AUTO_REF_pulse_end <= 1'b0;
      AUTO_REF_detect1   <= 1'b0;
      AUTO_REF_detect    <= 1'b0; 
    end
  else
    begin
      AUTO_REF_detect1   <= AUTOREF_value;
      AUTO_REF_detect    <= AUTO_REF_detect1;
      AUTO_REF_pulse_end <= AUTO_REF_detect;
    end
end
    


assign auto_ref1 = ((AUTO_REF_detect == 1'b1) && (AUTO_REF_pulse_end != 1'b1)) ; // Sarala, June 22

assign AR_done_p = (AR_Done_reg == 1'b1); // Sarala June 22 
   
           
always @ (negedge clk)       //(posedge clk180)
begin
  if (rst180_r == 1'b1)
    begin
     auto_ref_wait <= 1'b0;
     ar_done  <= 1'b0;
     Auto_Ref_issued <= 1'b0;
    end
  else
    begin
     if (auto_ref1 && !auto_ref_wait) 
        auto_ref_wait <= 1'b1;
     else if (Auto_Ref_issued) 
        auto_ref_wait <= 1'b0;
     else  
        auto_ref_wait <= auto_ref_wait;
        
     ar_done         <= AR_done_p;
     Auto_Ref_issued <= Auto_Ref_issued_p;

    end
end      

always @ (negedge clk)       //(posedge clk180)
begin
  if (rst180_r == 1'b1)
  begin
     auto_ref_wait1 <= 1'b0;
     auto_ref_wait2 <= 1'b0;
     auto_ref       <= 1'b0;
  end
  else
  begin
     if (Auto_Ref_issued)
     begin
        auto_ref_wait1 <= 1'b0;
        auto_ref_wait2 <= 1'b0;
        auto_ref       <= 1'b0;
     end
     else
     begin
        auto_ref_wait1  <= auto_ref_wait;
        auto_ref_wait2  <= auto_ref_wait1;
        auto_ref        <= auto_ref_wait2;
     end
  end
end      



assign Auto_Ref_issued_p = (next_state1 == AUTO_REFRESH || aref_flag); 

//**********************************************************************************************
// Burst count value counter when there are cosecutive READs or WRITEs
// While doing consecutive READs or WRITEs, the Burst_count value determines when the next 
// READ or WRITE command should be issued. The burst length is determined while loading the 
// Load Mode Register
// burst_cnt_max shows the number of clock cycles for each burst
// burst_cnt_max = 1 for a burst length of 2, since it is ddr
//**********************************************************************************************
assign burst_cnt_max = (burst_length == 3'b001) ? 3'b001 :
                       (burst_length == 3'b010) ? 3'b010 :
                       (burst_length == 3'b011) ? 3'b100 :
                       (burst_length == 3'b111) ? 3'b100 :
                       3'b000;

//********************************************************************************************
// CAS latency counter
// CAS latencies of 2,3,4 can be set using Mode register bits M(6:4)
//
//      M6  M5  M4   CAS latency
//      0    1   0 -    2
//      0    1   1 -    3
//      1    0   0 -    4
//      others     -   reserved
// This design uses a CAS latency of 3 for a clock rate of 200 MHz
//
//********************************************************************************************
  assign cas_count_value = (next_state1 == BURST_READ) ? burst_cnt_max :  //Modified by Abhishake for BL=8
                         (CAS_COUNT != 3'b000) ? (CAS_COUNT - 1'b1) :
                         CAS_COUNT;



assign rdburst_end_cnt_value = (CAS_COUNT == 3'b001) ? burst_cnt_max :  //Modified by Abhishake for BL=8
                               (RDBURST_END_CNT != 3'b000) ? (RDBURST_END_CNT - 1'b1) :
                               3'b000;


assign wrburst_end_cnt_value = ((next_state1 == FIRST_WRITE) || (next_state1 == BURST_WRITE)) ? burst_cnt_max :
                               (wrburst_end_cnt != 3'b000) ? (wrburst_end_cnt - 1'b1) :
                               3'b000;


assign wrburst_chk = ((next_state1 == BURST_WRITE) || (next_state1 == WRITE_WAIT)) ? 1'b1 : 1'b0;
                      
assign rdburst_chk  = ((next_state1 == BURST_READ) || (next_state1 == READ_WAIT)) ? 1'b1 : 1'b0;

always @ (negedge clk)       //(posedge clk180)
begin
  if (rst180_r == 1'b1)
    begin
      rdburst_end_1 <= 1'b0;
      rdburst_end_2 <= 1'b0;
      rdburst_end_3 <= 1'b0;
      rdburst_end_4 <= 1'b0;
      rdburst_end_5 <= 1'b0; 
    end
  else
    begin
      rdburst_end_2 <= rdburst_end_1;
      rdburst_end_3 <= rdburst_end_2;
      rdburst_end_4 <= rdburst_end_3;
      rdburst_end_5 <= rdburst_end_4;
      rdburst_end_6 <= rdburst_end_5;
      rdburst_end_7 <= rdburst_end_6;
      rdburst_end_8 <= rdburst_end_7;
      if (burst_done == 1'b1) //BL=8
        rdburst_end_1 <= 1'b1;
      else
        rdburst_end_1 <= 1'b0;
    end
end

assign rdburst_end_r = rdburst_end_3 || rdburst_end_4 || rdburst_end_5 || rdburst_end_6 || rdburst_end_7 || rdburst_end_8;
assign rdburst_end = rdburst_end_1 || rdburst_end_2 ;

always @ (negedge clk)       //(posedge clk180)
begin
  if (rst180_r == 1'b1)
    begin
     wrburst_end_1 <= 1'b0;
     wrburst_end_2 <= 1'b0;
     wrburst_end_3 <= 1'b0;
     wrburst_end_4 <= 1'b0;
     wrburst_end_5 <= 1'b0;
     wrburst_end_6 <= 1'b0;
     wrburst_end_7 <= 1'b0;
     wrburst_end_8 <= 1'b0;
     wrburst_end_9 <= 1'b0;
    end
  else
    begin
     wrburst_end_2  <= wrburst_end_1;  
     wrburst_end_3  <= wrburst_end_2;
     wrburst_end_4  <= wrburst_end_3; 
     wrburst_end_5  <= wrburst_end_4; 
     wrburst_end_6  <= wrburst_end_5; 
     wrburst_end_7  <= wrburst_end_6; 
     wrburst_end_8  <= wrburst_end_7; 
     if  (burst_done == 1'b1)   //BL =8
         wrburst_end_1 <= 1'b1;
     else 
         wrburst_end_1 <= 1'b0;
    end
end




assign wrburst_end = wrburst_end_1 || wrburst_end_2 || wrburst_end_3;



//**********************************************************************************************
// to generate the Data Strobe enable and reset signal
// The DQS signal needs to be generated center aligned with the data. 
// The controller generates the DQS enable signal when the state machine is in the FIRST_WRITE
// state,to take care of the write preamble
//**********************************************************************************************

assign DQS_enable_out = ((next_state1 == FIRST_WRITE) || (next_state1 == BURST_WRITE)  || (wrburst_end_cnt != 3'b000)) ? 1'b1 : 1'b0;

assign DQS_reset_out  = (next_state1 == FIRST_WRITE) ? 1'b1 : 1'b0;


  assign dqs_enable = DQS_enable2;
  assign dqs_reset  = DQS_reset2_clk0; 

  

always @ (negedge clk)       //(posedge clk180)
begin
  if (rst180_r == 1'b1)
    begin
      DQS_enable_int <= 1'b0;
      DQS_reset_int  <= 1'b0;
    end
  else
    begin
      DQS_enable_int <= DQS_enable_out;
      DQS_reset_int  <= DQS_reset_out;
    end
end

always @ (posedge clk)
begin
 if (rst0_r == 1'b1)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级精品在线| 91免费国产在线观看| 韩国三级电影一区二区| 国产.精品.日韩.另类.中文.在线.播放| 色婷婷狠狠综合| 精品久久久久av影院| 亚洲免费色视频| 国产一区二区美女诱惑| 欧美日韩第一区日日骚| 国产精品午夜在线观看| 精品一二线国产| 精品视频在线免费观看| 国产精品传媒视频| 国产福利一区二区三区视频在线 | 狠狠色丁香久久婷婷综| 日本道色综合久久| 国产精品福利一区| 国产麻豆午夜三级精品| 日韩免费观看高清完整版| 亚洲一区二区三区视频在线播放| 成人精品国产免费网站| 精品剧情v国产在线观看在线| 日韩中文字幕麻豆| 欧美日韩欧美一区二区| 久久不见久久见中文字幕免费| 成人激情黄色小说| 国产一区二区三区精品视频| 精品在线一区二区| 欧美二区三区91| 亚洲在线中文字幕| 在线免费不卡电影| 亚洲一区二三区| 欧美日韩一区在线观看| 亚洲一区二区三区四区的| 91国产精品成人| 亚洲制服欧美中文字幕中文字幕| 一本色道久久综合亚洲aⅴ蜜桃| 国产精品久久久久毛片软件| 成+人+亚洲+综合天堂| 中文字幕中文字幕在线一区 | 中文字幕中文乱码欧美一区二区| 国产精品综合视频| 日韩欧美一区在线| 日本一区二区三区国色天香 | 午夜精品aaa| 欧美日韩色一区| 舔着乳尖日韩一区| 精品久久人人做人人爱| 国产乱码精品一区二区三区av| 国产网红主播福利一区二区| 成人高清免费在线播放| 亚洲精品亚洲人成人网在线播放| 一本到高清视频免费精品| 日韩影院免费视频| 久久综合九色综合97婷婷| 粉嫩嫩av羞羞动漫久久久| 亚洲欧美欧美一区二区三区| 欧美日韩精品一区二区三区| 国产乱妇无码大片在线观看| 日韩午夜激情电影| 国产高清不卡一区| 一区二区三区视频在线观看| 91精品国产色综合久久不卡电影 | 国产欧美精品一区二区三区四区 | 一本一本久久a久久精品综合麻豆| 亚洲综合色自拍一区| 日韩欧美一区二区视频| 国产精品综合一区二区三区| 亚洲精品国产无天堂网2021 | 亚洲日本中文字幕区| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲va韩国va欧美va| 精品国产91久久久久久久妲己 | 精品少妇一区二区三区在线播放 | 首页国产丝袜综合| 香蕉久久一区二区不卡无毒影院 | 99精品视频一区| 日本网站在线观看一区二区三区| 午夜精品成人在线| 欧美激情资源网| 7777女厕盗摄久久久| av电影一区二区| 久久草av在线| 亚洲国产日韩在线一区模特| 国产欧美精品在线观看| 欧美一级二级三级乱码| 99精品视频一区| 国产精品一区三区| 视频在线观看国产精品| 自拍偷在线精品自拍偷无码专区| 欧美va亚洲va在线观看蝴蝶网| 欧美色图激情小说| av一区二区三区黑人| 精品一区二区三区香蕉蜜桃| 一二三区精品视频| 亚洲欧美在线视频| 国产无人区一区二区三区| 日韩三区在线观看| 这里只有精品电影| 91官网在线观看| 99久久精品免费看| 国产91精品精华液一区二区三区 | 亚洲精品一线二线三线| 91精品国产一区二区三区香蕉| 91猫先生在线| 成人18视频在线播放| 国产激情偷乱视频一区二区三区 | 久久九九久精品国产免费直播| 欧美一区二区三区公司| 欧美三电影在线| 91福利视频网站| 91成人看片片| 欧美视频在线一区| 欧美伊人久久久久久久久影院 | 91麻豆福利精品推荐| 粉嫩绯色av一区二区在线观看| 精品一区中文字幕| 久久精品国产成人一区二区三区| 蜜桃视频在线观看一区| 色狠狠av一区二区三区| 视频一区免费在线观看| 亚洲一二三四区| 亚洲国产日韩a在线播放性色| 一区二区三区四区不卡视频 | 成人网页在线观看| hitomi一区二区三区精品| 成人av在线电影| 972aa.com艺术欧美| 在线看国产日韩| 日韩一区二区免费在线观看| 精品国产91洋老外米糕| 国产精品天美传媒| 亚洲激情在线激情| 日本不卡一二三区黄网| 精品亚洲国内自在自线福利| 国产成人综合自拍| 91视频.com| 日韩一级免费一区| 久久精品亚洲乱码伦伦中文| 亚洲欧洲精品成人久久奇米网| 一区二区三区国产精品| 日韩avvvv在线播放| 丁香一区二区三区| 色婷婷久久99综合精品jk白丝| 欧美老肥妇做.爰bbww| 亚洲精品一区二区三区精华液| 欧美国产一区二区在线观看| 亚洲影院在线观看| 国产一区美女在线| 91欧美激情一区二区三区成人| 91精品午夜视频| 国产精品久线在线观看| 青青草国产精品亚洲专区无| 国产成人av电影免费在线观看| 在线日韩av片| 久久网站热最新地址| 综合久久久久久| 久久国产精品一区二区| 97精品国产97久久久久久久久久久久| 欧美男人的天堂一二区| 中文字幕av不卡| 日日夜夜精品视频天天综合网| 成人小视频免费在线观看| 欧美精品欧美精品系列| 中文字幕一区二区三中文字幕| 日韩不卡手机在线v区| 99精品视频在线观看免费| xvideos.蜜桃一区二区| 一区二区三区久久久| 国产很黄免费观看久久| 日韩免费福利电影在线观看| 亚洲欧美电影一区二区| 国产河南妇女毛片精品久久久| 91精品久久久久久久久99蜜臂| 亚洲欧美日韩电影| 成人网页在线观看| 久久久久久久久久久久久久久99| 日韩成人一区二区三区在线观看| 91蜜桃网址入口| 中文字幕免费不卡在线| 国产自产高清不卡| 欧美一级片在线看| 午夜精品福利一区二区三区蜜桃| 91麻豆免费看| 国产精品久久久久久久久动漫| 国产揄拍国内精品对白| 日韩一区二区免费视频| 天天综合网天天综合色| 欧美视频一区在线观看| 亚洲激情在线播放| 国产日韩欧美高清| 国内久久婷婷综合| 2020国产精品| 国产精品亚洲第一| 日本一区二区高清| 风间由美一区二区三区在线观看 | 夜夜嗨av一区二区三区四季av| 色综合夜色一区| 懂色av噜噜一区二区三区av| 久久久久久一级片|