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

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

?? eth_wishbone.v

?? 以太網控制器MAC的verilog代碼
?? V
?? 第 1 頁 / 共 5 頁
字號:
// Reading of the next receive buffer descriptor starts after reception status is// written to the previous one.// Latching READY status of the Rx buffer descriptoralways @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    RxBDReady <=#Tp 1'b0;  else  if(RxPointerRead)    RxBDReady <=#Tp 1'b0;  else  if(RxEn & RxEn_q & RxBDRead)    RxBDReady <=#Tp ram_do[15]; // RxBDReady is sampled only once at the beginningend// Latching Rx buffer descriptor status// Data is avaliable one cycle after the access is started (at that time signal RxEn is not active)always @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    RxStatus <=#Tp 2'h0;  else  if(RxEn & RxEn_q & RxBDRead)    RxStatus <=#Tp ram_do[14:13];end// RxReady generationalways @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    RxReady <=#Tp 1'b0;  else  if(ShiftEnded | RxAbortSync2 & ~RxAbortSync3 | ~r_RxEn & r_RxEn_q)    RxReady <=#Tp 1'b0;  else  if(RxEn & RxEn_q & RxPointerRead)    RxReady <=#Tp 1'b1;end// Reading Rx BD pointerassign StartRxPointerRead = RxBDRead & RxBDReady;// Reading Tx BD Pointeralways @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    RxPointerRead <=#Tp 1'b0;  else  if(StartRxPointerRead)    RxPointerRead <=#Tp 1'b1;  else  if(RxEn & RxEn_q)    RxPointerRead <=#Tp 1'b0;end//Latching Rx buffer pointer from buffer descriptor;always @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    RxPointerMSB <=#Tp 30'h0;  else  if(RxEn & RxEn_q & RxPointerRead)    RxPointerMSB <=#Tp ram_do[31:2];  else  if(MasterWbRX & m_wb_ack_i)      RxPointerMSB <=#Tp RxPointerMSB + 1'b1; // Word access  (always word access. m_wb_sel_o are used for selecting bytes)end//Latching last addresses from buffer descriptor (used as byte-half-word indicator);always @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    RxPointerLSB_rst[1:0] <=#Tp 0;  else  if(MasterWbRX & m_wb_ack_i)                 // After first write all RxByteSel are active    RxPointerLSB_rst[1:0] <=#Tp 0;  else  if(RxEn & RxEn_q & RxPointerRead)    RxPointerLSB_rst[1:0] <=#Tp ram_do[1:0];endalways @ (RxPointerLSB_rst)begin  case(RxPointerLSB_rst[1:0])  // synopsys parallel_case    2'h0 : RxByteSel[3:0] = 4'hf;    2'h1 : RxByteSel[3:0] = 4'h7;    2'h2 : RxByteSel[3:0] = 4'h3;    2'h3 : RxByteSel[3:0] = 4'h1;  endcaseendalways @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    RxEn_needed <=#Tp 1'b0;  else  if(~RxReady & r_RxEn & WbEn & ~WbEn_q)    RxEn_needed <=#Tp 1'b1;  else  if(RxPointerRead & RxEn & RxEn_q)    RxEn_needed <=#Tp 1'b0;end// Reception status is written back to the buffer descriptor after the end of frame is detected.assign RxStatusWrite = ShiftEnded & RxEn & RxEn_q;reg RxEnableWindow;// Indicating that last byte is being reveivedalways @ (posedge MRxClk or posedge Reset)begin  if(Reset)    LastByteIn <=#Tp 1'b0;  else  if(ShiftWillEnd & (&RxByteCnt) | RxAbort)    LastByteIn <=#Tp 1'b0;  else  if(RxValid & RxReady & RxEndFrm & ~(&RxByteCnt) & RxEnableWindow)    LastByteIn <=#Tp 1'b1;endreg ShiftEnded_rck;reg ShiftEndedSync1;reg ShiftEndedSync2;reg ShiftEndedSync3;reg ShiftEndedSync_c1;reg ShiftEndedSync_c2;wire StartShiftWillEnd;assign StartShiftWillEnd = LastByteIn  | RxValid & RxEndFrm & (&RxByteCnt) & RxEnableWindow;// Indicating that data reception will endalways @ (posedge MRxClk or posedge Reset)begin  if(Reset)    ShiftWillEnd <=#Tp 1'b0;  else  if(ShiftEnded_rck | RxAbort)    ShiftWillEnd <=#Tp 1'b0;  else  if(StartShiftWillEnd)    ShiftWillEnd <=#Tp 1'b1;end// Receive byte counteralways @ (posedge MRxClk or posedge Reset)begin  if(Reset)    RxByteCnt <=#Tp 2'h0;  else  if(ShiftEnded_rck | RxAbort)    RxByteCnt <=#Tp 2'h0;  else  if(RxValid & RxStartFrm & RxReady)    case(RxPointerLSB_rst)  // synopsys parallel_case      2'h0 : RxByteCnt <=#Tp 2'h1;      2'h1 : RxByteCnt <=#Tp 2'h2;      2'h2 : RxByteCnt <=#Tp 2'h3;      2'h3 : RxByteCnt <=#Tp 2'h0;    endcase  else  if(RxValid & RxEnableWindow & RxReady | LastByteIn)    RxByteCnt <=#Tp RxByteCnt + 1'b1;end// Indicates how many bytes are valid within the last wordalways @ (posedge MRxClk or posedge Reset)begin  if(Reset)    RxValidBytes <=#Tp 2'h1;  else  if(RxValid & RxStartFrm)    case(RxPointerLSB_rst)  // synopsys parallel_case      2'h0 : RxValidBytes <=#Tp 2'h1;      2'h1 : RxValidBytes <=#Tp 2'h2;      2'h2 : RxValidBytes <=#Tp 2'h3;      2'h3 : RxValidBytes <=#Tp 2'h0;    endcase  else  if(RxValid & ~LastByteIn & ~RxStartFrm & RxEnableWindow)    RxValidBytes <=#Tp RxValidBytes + 1'b1;endalways @ (posedge MRxClk or posedge Reset)begin  if(Reset)    RxDataLatched1       <=#Tp 24'h0;  else  if(RxValid & RxReady & ~LastByteIn)    if(RxStartFrm)    begin      case(RxPointerLSB_rst)     // synopsys parallel_case        2'h0:        RxDataLatched1[31:24] <=#Tp RxData;            // Big Endian Byte Ordering        2'h1:        RxDataLatched1[23:16] <=#Tp RxData;        2'h2:        RxDataLatched1[15:8]  <=#Tp RxData;        2'h3:        RxDataLatched1        <=#Tp RxDataLatched1;      endcase    end    else if (RxEnableWindow)    begin      case(RxByteCnt)     // synopsys parallel_case        2'h0:        RxDataLatched1[31:24] <=#Tp RxData;            // Big Endian Byte Ordering        2'h1:        RxDataLatched1[23:16] <=#Tp RxData;        2'h2:        RxDataLatched1[15:8]  <=#Tp RxData;        2'h3:        RxDataLatched1        <=#Tp RxDataLatched1;      endcase    endendwire SetWriteRxDataToFifo;// Assembling data that will be written to the rx_fifoalways @ (posedge MRxClk or posedge Reset)begin  if(Reset)    RxDataLatched2 <=#Tp 32'h0;  else  if(SetWriteRxDataToFifo & ~ShiftWillEnd)    RxDataLatched2 <=#Tp {RxDataLatched1[31:8], RxData};              // Big Endian Byte Ordering  else  if(SetWriteRxDataToFifo & ShiftWillEnd)    case(RxValidBytes)  // synopsys parallel_case      0 : RxDataLatched2 <=#Tp {RxDataLatched1[31:8],  RxData};       // Big Endian Byte Ordering      1 : RxDataLatched2 <=#Tp {RxDataLatched1[31:24], 24'h0};      2 : RxDataLatched2 <=#Tp {RxDataLatched1[31:16], 16'h0};      3 : RxDataLatched2 <=#Tp {RxDataLatched1[31:8],   8'h0};    endcaseendreg WriteRxDataToFifoSync1;reg WriteRxDataToFifoSync2;reg WriteRxDataToFifoSync3;// Indicating start of the reception processassign SetWriteRxDataToFifo = (RxValid & RxReady & ~RxStartFrm & RxEnableWindow & (&RxByteCnt)) |                               (RxValid & RxReady &  RxStartFrm & (&RxPointerLSB_rst))           |                               (ShiftWillEnd & LastByteIn & (&RxByteCnt));always @ (posedge MRxClk or posedge Reset)begin  if(Reset)    WriteRxDataToFifo <=#Tp 1'b0;  else  if(SetWriteRxDataToFifo & ~RxAbort)    WriteRxDataToFifo <=#Tp 1'b1;  else  if(WriteRxDataToFifoSync2 | RxAbort)    WriteRxDataToFifo <=#Tp 1'b0;endalways @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    WriteRxDataToFifoSync1 <=#Tp 1'b0;  else  if(WriteRxDataToFifo)    WriteRxDataToFifoSync1 <=#Tp 1'b1;  else    WriteRxDataToFifoSync1 <=#Tp 1'b0;endalways @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    WriteRxDataToFifoSync2 <=#Tp 1'b0;  else    WriteRxDataToFifoSync2 <=#Tp WriteRxDataToFifoSync1;endalways @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    WriteRxDataToFifoSync3 <=#Tp 1'b0;  else    WriteRxDataToFifoSync3 <=#Tp WriteRxDataToFifoSync2;endwire WriteRxDataToFifo_wb;assign WriteRxDataToFifo_wb = WriteRxDataToFifoSync2 & ~WriteRxDataToFifoSync3;reg LatchedRxStartFrm;reg SyncRxStartFrm;reg SyncRxStartFrm_q;reg SyncRxStartFrm_q2;wire RxFifoReset;always @ (posedge MRxClk or posedge Reset)begin  if(Reset)    LatchedRxStartFrm <=#Tp 0;  else  if(RxStartFrm & ~SyncRxStartFrm_q)    LatchedRxStartFrm <=#Tp 1;  else  if(SyncRxStartFrm_q)    LatchedRxStartFrm <=#Tp 0;endalways @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    SyncRxStartFrm <=#Tp 0;  else  if(LatchedRxStartFrm)    SyncRxStartFrm <=#Tp 1;  else    SyncRxStartFrm <=#Tp 0;endalways @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    SyncRxStartFrm_q <=#Tp 0;  else    SyncRxStartFrm_q <=#Tp SyncRxStartFrm;endalways @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    SyncRxStartFrm_q2 <=#Tp 0;  else    SyncRxStartFrm_q2 <=#Tp SyncRxStartFrm_q;endassign RxFifoReset = SyncRxStartFrm_q & ~SyncRxStartFrm_q2;eth_fifo #(`ETH_RX_FIFO_DATA_WIDTH, `ETH_RX_FIFO_DEPTH, `ETH_RX_FIFO_CNT_WIDTH)rx_fifo (.data_in(RxDataLatched2),                      .data_out(m_wb_dat_o),          .clk(WB_CLK_I),                                .reset(Reset),          .write(WriteRxDataToFifo_wb & ~RxBufferFull),  .read(MasterWbRX & m_wb_ack_i),          .clear(RxFifoReset),                           .full(RxBufferFull),          .almost_full(),                                .almost_empty(RxBufferAlmostEmpty),          .empty(RxBufferEmpty),                         .cnt(rxfifo_cnt)        );assign enough_data_in_rxfifo_for_burst = rxfifo_cnt>=`ETH_BURST_LENGTH;assign enough_data_in_rxfifo_for_burst_plus1 = rxfifo_cnt>`ETH_BURST_LENGTH;assign WriteRxDataToMemory = ~RxBufferEmpty;assign rx_burst = rx_burst_en & WriteRxDataToMemory;// Generation of the end-of-frame signalalways @ (posedge MRxClk or posedge Reset)begin  if(Reset)    ShiftEnded_rck <=#Tp 1'b0;  else  if(~RxAbort & SetWriteRxDataToFifo & StartShiftWillEnd)    ShiftEnded_rck <=#Tp 1'b1;  else  if(RxAbort | ShiftEndedSync_c1 & ShiftEndedSync_c2)    ShiftEnded_rck <=#Tp 1'b0;endalways @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    ShiftEndedSync1 <=#Tp 1'b0;  else    ShiftEndedSync1 <=#Tp ShiftEnded_rck;endalways @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    ShiftEndedSync2 <=#Tp 1'b0;  else    ShiftEndedSync2 <=#Tp ShiftEndedSync1;endalways @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    ShiftEndedSync3 <=#Tp 1'b0;  else  if(ShiftEndedSync1 & ~ShiftEndedSync2)    ShiftEndedSync3 <=#Tp 1'b1;  else  if(ShiftEnded)    ShiftEndedSync3 <=#Tp 1'b0;end// Generation of the end-of-frame signalalways @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    ShiftEnded <=#Tp 1'b0;  else  if(ShiftEndedSync3 & MasterWbRX & m_wb_ack_i & RxBufferAlmostEmpty & ~ShiftEnded)    ShiftEnded <=#Tp 1'b1;  else  if(RxStatusWrite)    ShiftEnded <=#Tp 1'b0;endalways @ (posedge MRxClk or posedge Reset)begin  if(Reset)    ShiftEndedSync_c1 <=#Tp 1'b0;  else    ShiftEndedSync_c1 <=#Tp ShiftEndedSync2;endalways @ (posedge MRxClk or posedge Reset)begin  if(Reset)    ShiftEndedSync_c2 <=#Tp 1'b0;  else    ShiftEndedSync_c2 <=#Tp ShiftEndedSync_c1;end// Generation of the end-of-frame signalalways @ (posedge MRxClk or posedge Reset)begin  if(Reset)    RxEnableWindow <=#Tp 1'b0;  else  if(RxStartFrm)    RxEnableWindow <=#Tp 1'b1;  else  if(RxEndFrm | RxAbort)    RxEnableWindow <=#Tp 1'b0;endalways @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    RxAbortSync1 <=#Tp 1'b0;  else    RxAbortSync1 <=#Tp RxAbortLatched;endalways @ (posedge WB_CLK_I or posedge Reset)begin  if(Reset)    RxAbortSync2 <=#Tp 1'b0;  else    RxAbortSync2 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线免费观看视频一区| 911国产精品| 欧美人伦禁忌dvd放荡欲情| 久久美女高清视频| 夜夜揉揉日日人人青青一国产精品| 亚洲无人区一区| 国产美女精品一区二区三区| 欧美色图天堂网| 国产精品国产成人国产三级| 久久精品99国产精品日本| 欧美在线视频你懂得| 亚洲国产激情av| 国产综合久久久久影院| 制服.丝袜.亚洲.另类.中文| 亚洲免费大片在线观看| 高清成人在线观看| 日韩精品中文字幕在线不卡尤物| 一区二区三区在线不卡| www.视频一区| 中文字幕一区三区| www.亚洲色图.com| 国产精品久久久久久妇女6080| 久久99精品国产91久久来源| 777亚洲妇女| 午夜影院久久久| 欧美在线三级电影| 亚洲午夜在线电影| 欧美午夜一区二区三区| 亚洲国产美女搞黄色| 色拍拍在线精品视频8848| 成人免费在线播放视频| 本田岬高潮一区二区三区| 国产精品嫩草久久久久| av亚洲精华国产精华| 国产精品色哟哟| 不卡一区二区在线| 亚洲伦在线观看| 欧美色图12p| 石原莉奈在线亚洲三区| 日韩三级电影网址| 国模冰冰炮一区二区| 久久精品亚洲乱码伦伦中文 | 成人18视频日本| 久久日一线二线三线suv| 麻豆极品一区二区三区| xfplay精品久久| 国产精品456露脸| 国产精品国产成人国产三级| 欧美做爰猛烈大尺度电影无法无天| 亚洲三级理论片| 色激情天天射综合网| 午夜婷婷国产麻豆精品| 欧美成人性福生活免费看| 国产米奇在线777精品观看| 国产精品高潮久久久久无| 日本韩国精品在线| 免费观看久久久4p| 国产精品私房写真福利视频| 欧美亚日韩国产aⅴ精品中极品| 亚洲自拍欧美精品| 精品久久久久香蕉网| a级精品国产片在线观看| 一区二区在线观看视频| 日韩精品一区二区三区中文精品| 粉嫩蜜臀av国产精品网站| 亚洲自拍偷拍网站| 精品国产1区2区3区| 成a人片国产精品| 日韩综合小视频| 中文字幕一区在线观看视频| 777奇米成人网| 不卡的电视剧免费网站有什么| 亚洲一区在线观看免费 | 亚洲男同1069视频| 91精品国产高清一区二区三区| 国产在线播放一区二区三区| 一级精品视频在线观看宜春院 | 亚洲精品国产成人久久av盗摄| 日韩欧美在线观看一区二区三区| 成人av午夜电影| 免费观看在线综合| 亚洲日本va午夜在线影院| 久久婷婷综合激情| 538在线一区二区精品国产| 成人精品鲁一区一区二区| 日本不卡一区二区三区| 亚洲精品成人a在线观看| 国产人妖乱国产精品人妖| 欧美一区2区视频在线观看| 色偷偷一区二区三区| 国产成人av资源| 老汉av免费一区二区三区| 亚洲成av人片在线观看无码| 中文字幕五月欧美| 精品久久久久久久久久久院品网| 色视频成人在线观看免| 成人精品国产一区二区4080| 国产一区二区三区四| 日日噜噜夜夜狠狠视频欧美人| 国产精品国产三级国产普通话三级| 日韩你懂的在线观看| 欧美精品一二三区| 欧美日韩和欧美的一区二区| 色菇凉天天综合网| 波多野结衣欧美| 高清不卡在线观看| 成年人网站91| 91麻豆产精品久久久久久 | 久久久精品欧美丰满| 欧美一区在线视频| 91精品国产色综合久久ai换脸 | 在线欧美日韩精品| 91久久精品国产91性色tv | 日韩欧美另类在线| 欧美va亚洲va| 精品国产免费久久| 久久综合成人精品亚洲另类欧美| 日韩精品一区二区在线观看| 欧美va在线播放| 久久久久久久久久久久久夜| 国产情人综合久久777777| 国产精品日日摸夜夜摸av| 国产精品色眯眯| 亚洲美女精品一区| 视频一区二区三区中文字幕| 美女国产一区二区| 国产69精品久久久久毛片| 成人性生交大片免费看中文网站| 成人美女在线视频| 色999日韩国产欧美一区二区| 欧美综合久久久| 91精品欧美综合在线观看最新 | 国产一区二区三区不卡在线观看| 日本欧美加勒比视频| 久久www免费人成看片高清| 国产酒店精品激情| 成人深夜视频在线观看| 色8久久人人97超碰香蕉987| 欧美日韩精品二区第二页| 日韩美女在线视频| 日本一区二区三级电影在线观看| 亚洲四区在线观看| 日韩黄色在线观看| 国产美女精品在线| 欧美性大战xxxxx久久久| 欧美不卡视频一区| 成人欧美一区二区三区视频网页| 亚洲五码中文字幕| 国产福利精品一区| 欧美伊人久久久久久久久影院| 欧美日韩国产系列| 久久精品一区蜜桃臀影院| 亚洲一区二区视频在线| 国内精品久久久久影院一蜜桃| 成人免费三级在线| 欧美一区二区三区播放老司机| 久久色视频免费观看| 亚洲成a人片在线不卡一二三区| 激情小说亚洲一区| 在线观看日韩高清av| 日韩欧美精品在线视频| 又紧又大又爽精品一区二区| 精品一区二区三区免费视频| 色综合久久综合网欧美综合网| 91精品国产综合久久久久| 亚洲欧洲日韩在线| 久久国产剧场电影| 欧美视频一区二区三区四区 | 91久久精品一区二区三区| 亚洲精品久久久蜜桃| 国产精品99久久久久久久女警| 国产在线视频一区二区| 亚洲视频中文字幕| 日韩国产欧美在线视频| 欧美二区乱c少妇| 婷婷夜色潮精品综合在线| 欧美高清视频一二三区| 亚洲精品成人少妇| 欧美探花视频资源| 亚洲欧美aⅴ...| 欧美在线观看一二区| 日韩和欧美的一区| 日韩无一区二区| 国产成人精品免费在线| 亚洲色图一区二区三区| 欧美中文字幕不卡| 偷窥少妇高潮呻吟av久久免费| 在线不卡欧美精品一区二区三区| 免费高清在线视频一区·| 日韩欧美高清在线| 丁香啪啪综合成人亚洲小说 | 美女视频一区二区三区| 精品国产麻豆免费人成网站| 风流少妇一区二区| 亚洲一区二区三区视频在线 | 久久久久久久国产精品影院| 成人国产精品视频| 首页国产欧美久久| 国产日本欧美一区二区| 色婷婷国产精品|