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

📄 opb_hc164_busif.v

📁 xilinx ISE 实例代码。可用ISE直接打开
💻 V
字号:
module opb_hc164_busif(  iCLK,  iRST_N,  iOPB_ABUS,  iOPB_DBUS,  iOPB_BE,  iOPB_RNW,  iOPB_SELECT,  iOPB_SEQADDR,                oHC_errAck,   oHC_toutSup,  oHC_retry,      oHC_DBUS,  oHC_XFERACK,  oLED_VAL,  oSEG_VAL,  oSEG_DOT);parameter C_BASEADDR = 32'h8000_0000;input         iCLK     ;  // OPB Bus clockinput         iRST_N   ;  // System RST High Activeinput [31: 0] iOPB_ABUS;  // Address Bus 32 bitsinput [31: 0] iOPB_DBUS;  // Data Bus input 32 bitsinput [ 3: 0] iOPB_BE  ;  // Byte Enable Singal => Ingoreinput         iOPB_RNW ;  // Read and Write Signalinput         iOPB_SELECT;// Module Select Signal input         iOPB_SEQADDR;  output[31: 0] oHC_DBUS   ;// Data Bus output 32bitsoutput        oHC_XFERACK;// Bus Acknowledge Signaloutput        oHC_errAck ;// Don't Use. Connect to GND  output        oHC_toutSup;// Don't Use. Connect to GND output        oHC_retry  ;// Don't Use. Connect to GND   output[ 3: 0] oLED_VAL;output[15: 0] oSEG_VAL;output[ 3: 0] oSEG_DOT;reg [23: 0] sr_data; // sr_data : [23:20] => oLED_VAL [19: 4] => oSEG_VAL [ 3: 0] => oSEG_DOTreg         sr_ack;reg         sr_ms;reg         sr_ms_ff;wire s_ADDRMATCH;wire s_WR;wire s_RD;assign oLED_VAL [ 3 : 0 ] = sr_data [ 23 : 20 ];assign oSEG_VAL [15 : 0 ] = sr_data [ 19 :  4 ];assign oSEG_DOT [ 3 : 0 ] = sr_data [  3 :  0 ];assign oHC_errAck  = 1'b0; assign oHC_toutSup = 1'b0;assign oHC_retry   = 1'b0; assign s_ADDRMATCH = (iOPB_SELECT && iOPB_ABUS == C_BASEADDR )? 1'b1:1'b0;assign s_WR = (s_ADDRMATCH && !iOPB_RNW ) ? 1'b1: 1'b0;assign s_RD = (s_ADDRMATCH &&  iOPB_RNW ) ? 1'b1: 1'b0;assign oHC_DBUS = ( s_RD ) ? { 8'h0, sr_data } : 32'h0;assign oHC_XFERACK = sr_ack ;// register sr_ackalways @ ( posedge iCLK or negedge iRST_N ) begin  if ( !iRST_N ) begin    sr_ack <= 1'b0;	  end  else begin    sr_ack <= sr_ms & ~sr_ms_ff;   endend// register sr_ms  always @ ( posedge iCLK or negedge iRST_N  ) begin  if ( !iRST_N ) begin    sr_ms <= 1'b0;	  end  else begin    sr_ms <= s_ADDRMATCH;  endend// register sr_ms_ffalways @ ( posedge iCLK or negedge iRST_N  ) begin  if ( !iRST_N ) begin    sr_ms_ff <= 1'b0;	  end  else begin    sr_ms_ff <= sr_ms;  endendalways @ ( posedge iCLK or negedge iRST_N  ) begin  if ( !iRST_N ) begin    sr_data <= 24'hA12343;	  end  else begin    if ( s_WR && sr_ms & ~sr_ms_ff ) begin      sr_data <= iOPB_DBUS[23: 0];	    end    else begin      sr_data <= sr_data;	    end  endendendmodule

⌨️ 快捷键说明

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