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

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

?? eth_transmitcontrol.v

?? 用Verilog實現的以太網接口
?? 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一区二区三区免费野_久草精品视频
一二三区精品视频| 亚洲视频你懂的| 欧美三级日本三级少妇99| 国产精品1区二区.| 国产不卡免费视频| 粗大黑人巨茎大战欧美成人| 精品系列免费在线观看| 黄色日韩网站视频| 国产中文字幕一区| 顶级嫩模精品视频在线看| 国产99久久精品| av激情亚洲男人天堂| 91丨porny丨首页| 欧美日韩午夜在线视频| 欧美日韩国产经典色站一区二区三区| 欧美亚洲综合色| 欧美一区二区国产| 久久一区二区三区国产精品| 久久久欧美精品sm网站| 国产精品免费aⅴ片在线观看| 国产欧美一区二区三区在线看蜜臀| 亚洲国产成人自拍| 一区二区三区日韩在线观看| 亚洲h在线观看| 韩国v欧美v亚洲v日本v| 99精品视频在线免费观看| 91久久奴性调教| 日韩欧美电影一区| 欧美国产一区在线| 亚洲成在人线在线播放| 国内精品久久久久影院薰衣草 | www.爱久久.com| av不卡一区二区三区| 欧美三级日韩三级国产三级| www国产成人| 亚洲激情第一区| 激情图区综合网| 91看片淫黄大片一级| 日韩视频一区在线观看| 亚洲国产高清aⅴ视频| 性做久久久久久免费观看| 国产一区在线视频| 欧美系列日韩一区| 久久久不卡网国产精品一区| 亚洲精品国产视频| 国产精品 欧美精品| 欧美日韩一二三区| 亚洲视频免费观看| 国产精品一区二区在线观看网站| 欧美主播一区二区三区美女| 久久久精品中文字幕麻豆发布| 一区二区免费在线| av成人老司机| 久久久精品黄色| 蜜臀久久99精品久久久久宅男| 一本色道亚洲精品aⅴ| 国产三级三级三级精品8ⅰ区| 亚洲国产成人高清精品| 99久久99精品久久久久久| 精品伦理精品一区| 免费欧美日韩国产三级电影| 91福利国产精品| 亚洲欧美综合网| 国产激情偷乱视频一区二区三区| 91麻豆精品国产91久久久更新时间| 亚洲特黄一级片| 风流少妇一区二区| 久久麻豆一区二区| 精品一区二区三区av| 91精品国产aⅴ一区二区| 亚洲h动漫在线| 欧美日韩在线三级| 亚洲高清不卡在线观看| 欧美性高清videossexo| 亚洲人成7777| 欧洲一区在线电影| 一区二区三区在线免费视频| 972aa.com艺术欧美| 国产精品久久久一区麻豆最新章节| 国产成人av电影在线| 国产欧美精品国产国产专区| 国产成人免费高清| 国产精品久久久久天堂| 不卡一卡二卡三乱码免费网站| 国产精品国产三级国产a| 成人小视频免费观看| 国产精品免费aⅴ片在线观看| www.欧美色图| 一区二区三区四区五区视频在线观看| 97精品超碰一区二区三区| 亚洲视频电影在线| 欧美日韩成人高清| 蜜臀a∨国产成人精品| 久久只精品国产| gogo大胆日本视频一区| 亚洲国产视频网站| 欧美一区二区福利视频| 黑人巨大精品欧美一区| 国产精品入口麻豆九色| 91在线精品一区二区三区| 一个色综合网站| 日韩欧美高清一区| av资源站一区| 亚洲国产中文字幕在线视频综合| 日韩一区二区三区在线观看| 国产一区二区按摩在线观看| 国产精品视频看| 欧美私模裸体表演在线观看| 久久精品99国产精品| 国产精品国产三级国产专播品爱网| 91久久线看在观草草青青| 全国精品久久少妇| 国产免费成人在线视频| 精品视频一区 二区 三区| 狠狠色丁香婷综合久久| 亚洲一区二区欧美| 欧美国产一区在线| 3d成人h动漫网站入口| 成人av午夜电影| 免费成人性网站| 《视频一区视频二区| 欧美变态凌虐bdsm| 在线观看亚洲a| 国产盗摄精品一区二区三区在线| 亚洲自拍偷拍麻豆| 国产女人水真多18毛片18精品视频| 欧美性感一类影片在线播放| 国产白丝精品91爽爽久久| 丝袜美腿高跟呻吟高潮一区| 日本一区二区三区四区| 日韩情涩欧美日韩视频| 91福利社在线观看| 成人黄色小视频| 韩国av一区二区| 天天影视色香欲综合网老头| 亚洲同性gay激情无套| 久久午夜国产精品| 欧美一级一级性生活免费录像| 99久久精品国产观看| 国产传媒欧美日韩成人| 奇米一区二区三区av| 亚洲国产精品一区二区www在线| 国产精品欧美一区喷水| 国产日韩欧美制服另类| 精品免费视频.| 日韩欧美国产精品一区| 欧美群妇大交群中文字幕| 欧美性受极品xxxx喷水| 91免费视频网址| 色悠悠亚洲一区二区| 91在线国产福利| 91蜜桃网址入口| 色综合天天综合在线视频| 成人动漫中文字幕| 成人精品视频一区| 波多野结衣精品在线| 成人18精品视频| 色哟哟精品一区| 色综合久久中文字幕| 在线免费亚洲电影| 日本二三区不卡| 欧美精品在线视频| 欧美一区二区美女| 亚洲精品在线三区| 国产婷婷一区二区| 国产精品视频你懂的| ㊣最新国产の精品bt伙计久久| 亚洲精品日日夜夜| 亚洲一区在线免费观看| 日韩高清不卡在线| 久久成人羞羞网站| 日本大香伊一区二区三区| 欧洲色大大久久| 91麻豆精品国产91久久久| 久久综合色婷婷| 国产一区二区三区久久久| 狠狠色丁香久久婷婷综合丁香| 丁香婷婷综合激情五月色| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美影院一区二区| 欧美大片日本大片免费观看| 中文字幕免费观看一区| 亚洲精品你懂的| 精品一区二区三区在线观看国产| 风间由美一区二区三区在线观看 | 精东粉嫩av免费一区二区三区| 国内一区二区视频| aa级大片欧美| 91精品国产综合久久久久久| 久久精品人人做人人爽97| 成人欧美一区二区三区1314| 五月婷婷综合网| 成人免费毛片aaaaa**| 欧美视频一区二区三区在线观看 | 91丨porny丨国产| 日韩欧美亚洲一区二区| 中文字幕一区三区| 久久精品国产秦先生| 99国产精品国产精品毛片| 欧美一级片在线看|