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

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

?? eth_transmitcontrol.v

?? 人民郵電出版社出版的《FPGA硬件接口設計實踐》一書的代碼
?? V
字號:



`include "timescale.v"


module eth_transmitcontrol (MTxClk, TxReset, TxUsedDataIn, TxUsedDataOut, TxDoneIn, TxAbortIn, 
                            TxStartFrmIn, TPauseRq, TxUsedDataOutDetected, TxFlow, DlyCrcEn, 
                            TxPauseTV, MAC, TxCtrlStartFrm, TxCtrlEndFrm, SendingCtrlFrm, CtrlMux, 
                            ControlData, WillSendControlFrame, BlockTxDone
                           );

parameter Tp = 1;


input         MTxClk;
input         TxReset;
input         TxUsedDataIn;
input         TxUsedDataOut;
input         TxDoneIn;
input         TxAbortIn;
input         TxStartFrmIn;
input         TPauseRq;
input         TxUsedDataOutDetected;
input         TxFlow;
input         DlyCrcEn;
input  [15:0] TxPauseTV;
input  [47:0] MAC;

output        TxCtrlStartFrm;
output        TxCtrlEndFrm;
output        SendingCtrlFrm;
output        CtrlMux;
output [7:0]  ControlData;
output        WillSendControlFrame;
output        BlockTxDone;

reg           SendingCtrlFrm;
reg           CtrlMux;
reg           WillSendControlFrame;
reg    [3:0]  DlyCrcCnt;
reg    [5:0]  ByteCnt;
reg           ControlEnd_q;
reg    [7:0]  MuxedCtrlData;
reg           TxCtrlStartFrm;
reg           TxCtrlStartFrm_q;
reg           TxCtrlEndFrm;
reg    [7:0]  ControlData;
reg           TxUsedDataIn_q;
reg           BlockTxDone;

wire          IncrementDlyCrcCnt;
wire          ResetByteCnt;
wire          IncrementByteCnt;
wire          ControlEnd;
wire          IncrementByteCntBy2;
wire          EnableCnt;


// A command for Sending the control frame is active (latched)
always @ (posedge MTxClk or posedge TxReset)
begin
  if(TxReset)
    WillSendControlFrame <= #Tp 1'b0;
  else
  if(TxCtrlEndFrm & CtrlMux)
    WillSendControlFrame <= #Tp 1'b0;
  else
  if(TPauseRq & TxFlow)
    WillSendControlFrame <= #Tp 1'b1;
end


// Generation of the transmit control packet start frame
always @ (posedge MTxClk or posedge TxReset)
begin
  if(TxReset)
    TxCtrlStartFrm <= #Tp 1'b0;
  else
  if(TxUsedDataIn_q & CtrlMux)
    TxCtrlStartFrm <= #Tp 1'b0;
  else
  if(WillSendControlFrame & ~TxUsedDataOut & (TxDoneIn | TxAbortIn | TxStartFrmIn | (~TxUsedDataOutDetected)))
    TxCtrlStartFrm <= #Tp 1'b1;
end



// Generation of the transmit control packet end frame
always @ (posedge MTxClk or posedge TxReset)
begin
  if(TxReset)
    TxCtrlEndFrm <= #Tp 1'b0;
  else
  if(ControlEnd | ControlEnd_q)
    TxCtrlEndFrm <= #Tp 1'b1;
  else
    TxCtrlEndFrm <= #Tp 1'b0;
end


// Generation of the multiplexer signal (controls muxes for switching between
// normal and control packets)
always @ (posedge MTxClk or posedge TxReset)
begin
  if(TxReset)
    CtrlMux <= #Tp 1'b0;
  else
  if(WillSendControlFrame & ~TxUsedDataOut)
    CtrlMux <= #Tp 1'b1;
  else
  if(TxDoneIn)
    CtrlMux <= #Tp 1'b0;
end



// Generation of the Sending Control Frame signal (enables padding and CRC)
always @ (posedge MTxClk or posedge TxReset)
begin
  if(TxReset)
    SendingCtrlFrm <= #Tp 1'b0;
  else
  if(WillSendControlFrame & TxCtrlStartFrm)
    SendingCtrlFrm <= #Tp 1'b1;
  else
  if(TxDoneIn)
    SendingCtrlFrm <= #Tp 1'b0;
end


always @ (posedge MTxClk or posedge TxReset)
begin
  if(TxReset)
    TxUsedDataIn_q <= #Tp 1'b0;
  else
    TxUsedDataIn_q <= #Tp TxUsedDataIn;
end



// Generation of the signal that will block sending the Done signal to the eth_wishbone module
// While sending the control frame
always @ (posedge MTxClk or posedge TxReset)
begin
  if(TxReset)
    BlockTxDone <= #Tp 1'b0;
  else
  if(TxCtrlStartFrm)
    BlockTxDone <= #Tp 1'b1;
  else
  if(TxStartFrmIn)
    BlockTxDone <= #Tp 1'b0;
end


always @ (posedge MTxClk)
begin
  ControlEnd_q     <= #Tp ControlEnd;
  TxCtrlStartFrm_q <= #Tp TxCtrlStartFrm;
end


assign IncrementDlyCrcCnt = CtrlMux & TxUsedDataIn &  ~DlyCrcCnt[2];


// Delayed CRC counter
always @ (posedge MTxClk or posedge TxReset)
begin
  if(TxReset)
    DlyCrcCnt <= #Tp 4'h0;
  else
  if(ResetByteCnt)
    DlyCrcCnt <= #Tp 4'h0;
  else
  if(IncrementDlyCrcCnt)
    DlyCrcCnt <= #Tp DlyCrcCnt + 1'b1;
end

             
assign ResetByteCnt = TxReset | (~TxCtrlStartFrm & (TxDoneIn | TxAbortIn));
assign IncrementByteCnt = CtrlMux & (TxCtrlStartFrm & ~TxCtrlStartFrm_q & ~TxUsedDataIn | TxUsedDataIn & ~ControlEnd);
assign IncrementByteCntBy2 = CtrlMux & TxCtrlStartFrm & (~TxCtrlStartFrm_q) & TxUsedDataIn;     // When TxUsedDataIn and CtrlMux are set at the same time

assign EnableCnt = (~DlyCrcEn | DlyCrcEn & (&DlyCrcCnt[1:0]));
// Byte counter
always @ (posedge MTxClk or posedge TxReset)
begin
  if(TxReset)
    ByteCnt <= #Tp 6'h0;
  else
  if(ResetByteCnt)
    ByteCnt <= #Tp 6'h0;
  else
  if(IncrementByteCntBy2 & EnableCnt)
    ByteCnt <= #Tp (ByteCnt[5:0] ) + 2'h2;
  else
  if(IncrementByteCnt & EnableCnt)
    ByteCnt <= #Tp (ByteCnt[5:0] ) + 1'b1;
end


assign ControlEnd = ByteCnt[5:0] == 6'h22;


// Control data generation (goes to the TxEthMAC module)
always @ (ByteCnt or DlyCrcEn or MAC or TxPauseTV or DlyCrcCnt)
begin
  case(ByteCnt)
    6'h0:    if(~DlyCrcEn | DlyCrcEn & (&DlyCrcCnt[1:0]))
               MuxedCtrlData[7:0] = 8'h01;                   // Reserved Multicast Address
             else
						 	 MuxedCtrlData[7:0] = 8'h0;
    6'h2:      MuxedCtrlData[7:0] = 8'h80;
    6'h4:      MuxedCtrlData[7:0] = 8'hC2;
    6'h6:      MuxedCtrlData[7:0] = 8'h00;
    6'h8:      MuxedCtrlData[7:0] = 8'h00;
    6'hA:      MuxedCtrlData[7:0] = 8'h01;
    6'hC:      MuxedCtrlData[7:0] = MAC[47:40];
    6'hE:      MuxedCtrlData[7:0] = MAC[39:32];
    6'h10:     MuxedCtrlData[7:0] = MAC[31:24];
    6'h12:     MuxedCtrlData[7:0] = MAC[23:16];
    6'h14:     MuxedCtrlData[7:0] = MAC[15:8];
    6'h16:     MuxedCtrlData[7:0] = MAC[7:0];
    6'h18:     MuxedCtrlData[7:0] = 8'h88;                   // Type/Length
    6'h1A:     MuxedCtrlData[7:0] = 8'h08;
    6'h1C:     MuxedCtrlData[7:0] = 8'h00;                   // Opcode
    6'h1E:     MuxedCtrlData[7:0] = 8'h01;
    6'h20:     MuxedCtrlData[7:0] = TxPauseTV[15:8];         // Pause timer value
    6'h22:     MuxedCtrlData[7:0] = TxPauseTV[7:0];
    default:   MuxedCtrlData[7:0] = 8'h0;
  endcase
end


// Latched Control data
always @ (posedge MTxClk or posedge TxReset)
begin
  if(TxReset)
    ControlData[7:0] <= #Tp 8'h0;
  else
  if(~ByteCnt[0])
    ControlData[7:0] <= #Tp MuxedCtrlData[7:0];
end



endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲免费伊人电影| 日本一区中文字幕| 亚洲一区免费观看| 久久aⅴ国产欧美74aaa| 成人精品视频网站| 欧美精品电影在线播放| 久久精品夜夜夜夜久久| 一区二区三区在线免费视频| 久久精品国产99国产精品| 一本大道久久a久久综合| 日韩三区在线观看| 亚洲欧美国产高清| 国产中文字幕精品| 欧洲一区二区av| 中文字幕欧美日韩一区| 日韩电影一区二区三区| 91蝌蚪国产九色| 久久九九全国免费| 免费欧美日韩国产三级电影| 色悠久久久久综合欧美99| 国产亚洲一本大道中文在线| 日韩国产一区二| 欧美亚洲自拍偷拍| 亚洲欧洲在线观看av| 香蕉加勒比综合久久| 国产99久久久国产精品| 欧美三级资源在线| 国产区在线观看成人精品| 有坂深雪av一区二区精品| 亚洲第一二三四区| 国产成人精品免费看| 97se亚洲国产综合自在线不卡| 欧美日本精品一区二区三区| 久久这里只精品最新地址| 亚洲女爱视频在线| 久久99最新地址| 色视频欧美一区二区三区| 欧美一区二区视频免费观看| 亚洲图片欧美激情| 激情五月播播久久久精品| 99re66热这里只有精品3直播 | 国产欧美一区二区三区鸳鸯浴| 亚洲精品国产高清久久伦理二区| 久久99久久99| 欧美日韩一本到| 亚洲私人影院在线观看| 国产麻豆成人传媒免费观看| 欧美日韩一区国产| 亚洲免费视频中文字幕| 东方aⅴ免费观看久久av| 日韩欧美国产综合| 亚洲国产精品一区二区www | 一区二区三区在线不卡| 狠狠久久亚洲欧美| 欧美一区二区三区白人| 亚洲成a天堂v人片| 91福利在线导航| 亚洲日本中文字幕区| 成人综合婷婷国产精品久久| 日韩欧美亚洲国产精品字幕久久久| 一区二区激情小说| 在线免费观看日本一区| 国产精品国产成人国产三级| 国产成人精品免费视频网站| 久久久久久久久久久久电影| 国产麻豆精品在线观看| 久久亚洲捆绑美女| 国产伦精品一区二区三区在线观看 | 欧美亚洲高清一区| 一区二区三区四区五区视频在线观看| 成人免费视频国产在线观看| 中文欧美字幕免费| 成人美女在线视频| 亚洲视频小说图片| 成人福利视频网站| 亚洲品质自拍视频网站| 国内欧美视频一区二区| 欧美一级搡bbbb搡bbbb| 福利一区福利二区| 自拍偷拍欧美激情| 欧美一区二区三区男人的天堂| 久久精品99国产精品日本| 精品伦理精品一区| 成人伦理片在线| 一区二区三区四区不卡在线| 欧美日韩精品专区| 日韩福利电影在线观看| 精品国产百合女同互慰| 国产高清精品在线| 亚洲视频在线一区观看| 欧美日韩夫妻久久| 日韩电影在线看| 久久精品夜色噜噜亚洲a∨| 91美女福利视频| 日韩精品电影在线| 久久精品网站免费观看| 色综合色综合色综合| 亚洲一级片在线观看| 日韩美女一区二区三区四区| 国产成人午夜精品影院观看视频| 亚洲人成小说网站色在线 | 一区二区三区欧美亚洲| 欧美一级精品在线| 成人夜色视频网站在线观看| 亚洲最大的成人av| 欧美va在线播放| 91亚洲男人天堂| 麻豆91免费看| 国产精品素人视频| 欧美人xxxx| 92国产精品观看| 日本不卡一区二区三区| 中文字幕一区二区在线观看| 欧美一区二区免费视频| 91亚洲精品久久久蜜桃| 精品亚洲国产成人av制服丝袜| 国内精品免费在线观看| 亚洲男人天堂av| 国产精品久久三区| 久久九九久久九九| 欧美性猛片aaaaaaa做受| 免费的国产精品| 肉色丝袜一区二区| 一区二区中文字幕在线| 欧美va亚洲va香蕉在线| 色八戒一区二区三区| 国产乱淫av一区二区三区| 午夜影院久久久| 中文字幕亚洲一区二区va在线| 精品少妇一区二区三区在线播放| 色久优优欧美色久优优| 国产精品亚洲人在线观看| 亚洲国产日产av| 日韩片之四级片| 日韩欧美电影一二三| 精品视频1区2区| 色猫猫国产区一区二在线视频| 高清国产午夜精品久久久久久| 麻豆国产精品视频| 视频一区视频二区中文字幕| 亚洲激情校园春色| 国产精品久久午夜夜伦鲁鲁| 久久精品视频免费| 久久久夜色精品亚洲| 欧美va日韩va| 91精品国产色综合久久不卡电影| 欧美日韩高清一区二区| 91麻豆精品国产综合久久久久久| 欧美视频一区二区三区四区 | 日韩一级片网站| 欧美日韩一区二区在线观看 | 黑人巨大精品欧美一区| 狠狠狠色丁香婷婷综合激情 | 一区二区欧美在线观看| 一区二区三区不卡视频| 亚洲精品国产无天堂网2021 | 91老师片黄在线观看| 色狠狠色噜噜噜综合网| 欧美亚洲综合久久| 欧美日韩视频在线第一区 | 麻豆视频观看网址久久| 亚洲在线中文字幕| 亚洲国产精品一区二区www在线 | 色综合天天在线| 欧美系列一区二区| 欧美老肥妇做.爰bbww| 日韩欧美国产精品| 久久婷婷国产综合精品青草| 国产精品午夜久久| 一区二区三区日本| 一区二区三区四区国产精品| 亚洲成人精品在线观看| 美女视频黄 久久| 国产成人在线看| 91一区一区三区| 91麻豆精品国产91久久久资源速度| 欧美v国产在线一区二区三区| 亚洲国产成人私人影院tom| 亚洲精品视频免费看| 日韩黄色小视频| 国产高清精品网站| 92国产精品观看| 日韩视频123| 国产精品美女视频| 香蕉久久夜色精品国产使用方法 | 日本一区二区电影| 亚洲国产色一区| 国产伦精一区二区三区| 91蝌蚪porny| 欧美熟乱第一页| 国产精品久久久久久久久免费樱桃| 亚洲成av人片| 国产91丝袜在线18| 欧美日韩一区精品| 国产日韩综合av| 日韩国产一区二| 91在线免费看| 久久先锋影音av鲁色资源| 亚洲国产精品久久一线不卡| 成人免费看视频|