亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产电影精品久久禁18| 成人精品视频一区二区三区 | 亚洲午夜精品在线| 国产日韩欧美一区二区三区乱码 | 亚洲福利视频三区| 国产精品一区一区三区| 国产一区不卡在线| 国产美女主播视频一区| 欧美日韩在线播放| 欧美丝袜丝交足nylons图片| 欧美三区在线观看| 最新国产の精品合集bt伙计| 亚洲欧洲在线观看av| 亚洲欧美偷拍卡通变态| 亚洲成人免费视频| 伦理电影国产精品| 成人在线视频一区| 久久亚洲综合色| 欧美国产一区二区| 亚洲国产综合视频在线观看| 99久久精品一区| 欧美乱妇15p| 欧美精品一区二区精品网| 中文字幕欧美日本乱码一线二线| 免费成人结看片| 成人免费观看视频| 国产蜜臀av在线一区二区三区| 久久成人羞羞网站| 欧美va亚洲va| 亚洲色图第一区| jiyouzz国产精品久久| 欧美精品一卡两卡| 舔着乳尖日韩一区| 成人三级伦理片| 国产精品美女久久久久久久网站| 婷婷六月综合网| 6080午夜不卡| 亚洲欧美日韩国产综合| 日本韩国一区二区三区视频| 日韩午夜激情av| 国产精品系列在线| 99久久精品国产麻豆演员表| 中文字幕日韩精品一区 | 欧美亚日韩国产aⅴ精品中极品| 亚洲三级小视频| 在线一区二区三区| 肉丝袜脚交视频一区二区| 成人免费视频播放| 亚洲精品欧美激情| 国产不卡高清在线观看视频| 欧美三级乱人伦电影| 日韩av电影天堂| 日本韩国欧美在线| 天堂av在线一区| 国产亚洲成aⅴ人片在线观看| 国产一区二区中文字幕| 久久综合久久综合久久综合| 国产不卡视频在线观看| 一区二区日韩av| 成人国产视频在线观看| 精品少妇一区二区三区| 成人午夜在线视频| 亚洲一区二区三区激情| 99久久婷婷国产综合精品电影| 一区二区三区中文字幕精品精品| 欧美日韩精品是欧美日韩精品| 亚洲精品中文字幕乱码三区| 91精品国产综合久久精品性色| 久久99精品久久久久| 日韩亚洲欧美一区二区三区| 国产成人精品三级麻豆| 午夜视频在线观看一区二区三区| 亚洲精品在线电影| 91成人网在线| 国产精品一卡二卡| 天天色天天操综合| 国产精品久久毛片| 99久久精品免费看| 老司机精品视频一区二区三区| 国产精品全国免费观看高清| 884aa四虎影成人精品一区| 国产 日韩 欧美大片| 午夜欧美2019年伦理| 成人免费在线视频| 精品国产91洋老外米糕| 色女孩综合影院| 亚洲精品久久久蜜桃| 久久久精品2019中文字幕之3| 国产精品一区二区三区网站| 午夜欧美一区二区三区在线播放| 国产精品久久毛片| 久久久国产一区二区三区四区小说| 在线免费精品视频| 日韩成人午夜精品| 亚洲天堂网中文字| 欧美国产精品中文字幕| 精品国产伦一区二区三区免费| 欧美日韩免费视频| 一本久久a久久精品亚洲| 粉嫩av一区二区三区粉嫩| 美女久久久精品| 最新不卡av在线| 中文字幕精品一区二区三区精品| 欧美videos大乳护士334| 欧美日韩国产美女| 欧美三级韩国三级日本一级| 色综合色狠狠综合色| av电影在线不卡| 在线区一区二视频| 一本大道久久精品懂色aⅴ| 成人性生交大片免费看在线播放| 国产一区二区三区久久悠悠色av| 日韩av高清在线观看| 婷婷成人激情在线网| 亚洲超丰满肉感bbw| 亚洲mv在线观看| 午夜精品福利在线| 婷婷国产v国产偷v亚洲高清| 亚洲va在线va天堂| 婷婷激情综合网| 免费成人av在线| 精品一区二区三区久久| 极品少妇xxxx精品少妇偷拍| 国产一区二区中文字幕| 国产精品一区一区三区| 丰满亚洲少妇av| 色域天天综合网| 欧美日韩电影一区| 日韩三级视频在线看| 精品国产乱码久久久久久蜜臀| 精品成人a区在线观看| 亚洲国产成人在线| 亚洲乱码中文字幕| 日本成人超碰在线观看| 精品亚洲国内自在自线福利| 国产精品18久久久久久久网站| 国产99久久久国产精品潘金网站| 99久久免费精品高清特色大片| 欧美色视频在线观看| 亚洲男人的天堂av| 国产婷婷色一区二区三区四区 | 亚洲欧美日韩国产另类专区| 一区二区三区免费在线观看| 亚洲第一会所有码转帖| 久久疯狂做爰流白浆xx| 成人激情小说网站| 欧美日韩专区在线| 欧美精品一区在线观看| 亚洲日本在线天堂| 日韩成人dvd| 成人伦理片在线| 欧美日韩在线直播| 久久久久9999亚洲精品| 日本va欧美va瓶| 国产成人一级电影| 欧美在线不卡视频| 欧美成人伊人久久综合网| 国产精品久久看| 美女脱光内衣内裤视频久久网站 | 国产精品影音先锋| 欧美性videosxxxxx| 国产亚洲综合性久久久影院| 亚洲制服丝袜一区| 成人午夜视频网站| 欧美一级一区二区| 在线成人av影院| 国产精品三级av| 精品一区二区三区在线观看| 在线精品视频免费播放| 日本一区二区三区在线观看| 日本午夜精品一区二区三区电影 | 日韩制服丝袜先锋影音| 9人人澡人人爽人人精品| 精品日产卡一卡二卡麻豆| 夜夜爽夜夜爽精品视频| 丰满岳乱妇一区二区三区| 精品伦理精品一区| 五月激情综合网| 欧美亚洲国产bt| 一色桃子久久精品亚洲| 国精产品一区一区三区mba视频| 国产一区二区精品久久99| 777午夜精品视频在线播放| 亚洲激情自拍偷拍| 不卡的av电影| 中文字幕第一区第二区| 国产乱人伦精品一区二区在线观看| 欧美男男青年gay1069videost| 亚洲免费在线观看| 99精品久久免费看蜜臀剧情介绍| 久久精品一二三| 国产成人综合自拍| 2023国产精品视频| 精品中文字幕一区二区| 精品欧美一区二区在线观看| 蜜桃免费网站一区二区三区| 日韩一级欧美一级| 日韩av中文字幕一区二区三区| 欧美另类高清zo欧美| 日韩电影在线一区二区|