亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲第一搞黄网站| 国产精品网友自拍| 蜜臀精品一区二区三区在线观看| 色综合咪咪久久| 亚洲精品日日夜夜| 欧美日韩大陆一区二区| 日韩高清欧美激情| 精品对白一区国产伦| 国产a视频精品免费观看| 国产精品美女视频| 欧美在线色视频| 日本在线不卡视频| 久久这里只有精品视频网| 国产v日产∨综合v精品视频| 亚洲精品videosex极品| 欧美顶级少妇做爰| 国产一区二区三区精品视频| 成人欧美一区二区三区| 在线播放视频一区| 国产成人精品免费视频网站| 亚洲免费在线播放| 日韩欧美在线网站| 成人app软件下载大全免费| 一区二区三区在线视频免费| 91精品国产入口| kk眼镜猥琐国模调教系列一区二区| 成人免费小视频| 欧美一区二区三区成人| 粉嫩av一区二区三区| 亚洲h精品动漫在线观看| 久久久久久99精品| 在线免费亚洲电影| 久久99精品国产.久久久久 | 日韩av一区二区三区四区| 亚洲精品在线观看网站| 欧美性生活大片视频| 久久爱另类一区二区小说| 伊人夜夜躁av伊人久久| 精品福利一区二区三区| 欧美亚洲国产一区二区三区 | 国产日韩欧美精品一区| 欧美在线观看视频一区二区三区| 激情小说亚洲一区| 亚洲黄一区二区三区| 久久久精品国产免费观看同学| 欧美无砖砖区免费| 成人性生交大合| 精品亚洲国内自在自线福利| 一区二区三区四区不卡视频| 久久精子c满五个校花| 欧美日韩视频一区二区| 99久久精品久久久久久清纯| 激情综合五月婷婷| 天天亚洲美女在线视频| 亚洲女女做受ⅹxx高潮| 久久久电影一区二区三区| 91精品欧美久久久久久动漫| 色婷婷av一区二区三区软件 | 国产成人精品1024| 久久精品国产久精国产爱| 亚洲国产乱码最新视频| 亚洲视频小说图片| 国产精品美女久久久久久| 久久久不卡影院| 久久免费视频色| 欧美精品一区二区三区久久久| 日韩一区二区在线看| 7777精品伊人久久久大香线蕉最新版| 91丨porny丨在线| www.亚洲在线| aaa亚洲精品一二三区| 成人性生交大合| 成人av午夜影院| k8久久久一区二区三区| 国产91对白在线观看九色| 国产精品一区二区在线播放 | 136国产福利精品导航| 亚洲国产精华液网站w| 国产精品天天看| 国产精品亲子伦对白| 国产精品私人自拍| 亚洲天堂中文字幕| 亚洲激情av在线| 亚洲福利视频三区| 美女任你摸久久| 韩国午夜理伦三级不卡影院| 久久国产剧场电影| 国产成a人亚洲精品| 成年人国产精品| 色网站国产精品| 欧美日韩精品欧美日韩精品一 | 91在线无精精品入口| 色综合中文综合网| 欧美一区二区在线看| 日韩精品资源二区在线| 久久久久久久久久美女| 中文字幕国产一区二区| 亚洲人一二三区| 亚洲电影在线播放| 麻豆91精品视频| 懂色av中文一区二区三区| 99精品久久久久久| 欧美三级资源在线| 精品久久久久久亚洲综合网| 国产欧美日韩久久| 一区二区三区欧美激情| 蜜桃免费网站一区二区三区| 福利一区二区在线| 欧美三级欧美一级| 日韩视频中午一区| 国产精品久久久久久久第一福利 | 亚洲美女淫视频| 首页国产丝袜综合| 粉嫩av一区二区三区在线播放| 色狠狠桃花综合| 欧美tk—视频vk| 中文字幕综合网| 喷水一区二区三区| 99久久免费精品| 欧美一级午夜免费电影| 中文字幕在线一区二区三区| 日韩黄色小视频| 成人午夜看片网址| 欧美一区二区久久| 国产精品久久久久久久岛一牛影视 | 亚洲欧美激情一区二区| 免费看欧美女人艹b| av中文字幕在线不卡| 91精品一区二区三区在线观看| 亚洲国产精品精华液2区45| 秋霞电影网一区二区| 91丨porny丨最新| 久久久久久免费| 午夜精品在线看| 色婷婷香蕉在线一区二区| 久久久噜噜噜久久中文字幕色伊伊| 夜夜精品浪潮av一区二区三区| 国产一区欧美一区| 日韩一区二区三免费高清| 亚洲综合视频在线观看| 成人免费视频caoporn| 日韩亚洲欧美成人一区| 亚洲主播在线观看| 99久久99久久综合| 国产欧美中文在线| 久久66热re国产| 欧美一三区三区四区免费在线看| 一级特黄大欧美久久久| 波多野结衣精品在线| 26uuu国产一区二区三区| 日本不卡一二三| 欧美色综合网站| 悠悠色在线精品| av在线一区二区| 国产精品美女一区二区三区| 国产精华液一区二区三区| 精品人伦一区二区色婷婷| 爽好久久久欧美精品| 欧美男男青年gay1069videost| 一区二区三区在线视频观看| 99re这里都是精品| 亚洲视频免费在线| 99久久免费国产| 最新国产成人在线观看| www.一区二区| 综合中文字幕亚洲| 91蜜桃婷婷狠狠久久综合9色| 亚洲国产成人自拍| 99久久99久久精品免费看蜜桃| 中文字幕一区二区视频| a亚洲天堂av| 最新热久久免费视频| 91视视频在线直接观看在线看网页在线看| 国产午夜精品久久久久久久| 国产成人av一区二区三区在线观看| 久久综合九色综合97婷婷女人| 国产一区二区不卡老阿姨| 国产午夜亚洲精品午夜鲁丝片| 韩国理伦片一区二区三区在线播放| 精品国产一区二区国模嫣然| 国产麻豆91精品| 中文字幕中文字幕在线一区| 日本久久电影网| 午夜国产不卡在线观看视频| 在线播放国产精品二区一二区四区| 日韩精品成人一区二区三区 | 欧美伊人久久久久久久久影院 | 亚洲欧美aⅴ...| 在线电影欧美成精品| 国内成+人亚洲+欧美+综合在线| 久久久久久久久免费| 91丨porny丨户外露出| 五月天激情综合网| 精品乱人伦小说| 不卡视频在线看| 亚洲一区二区三区四区五区中文| 777精品伊人久久久久大香线蕉| 国产乱码精品一区二区三 | 亚洲一区二区三区四区在线免费观看 | 欧美视频你懂的|