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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tb_eth_top.v

?? 使用方法: 以太網(wǎng)編程,拷貝到硬盤
?? V
?? 第 1 頁 / 共 4 頁
字號(hào):
  input         ControlFrame;
  reg           Wrap;
  reg [31:0]    TempAddr;
  reg [31:0]    TempData;
  reg [31:0]    kk;
  
  begin
//    if(TxBDIndex == 6)    // Only 3 buffer descriptors are used 
//      Wrap = 1'b1;
//    else
      Wrap = 1'b0;    // At the moment no wrap bit is set


    // Writing data to buffer
    for(kk=0; kk<Length; kk=kk+4)
    begin
      TempAddr = `TX_BUF_BASE + TxBDIndex * 32'h600 + kk;
      TempData = {kk[7:0], kk[7:0]+2'h1, kk[7:0]+2'h2, kk[7:0]+2'h3};
      WishboneWriteData(TempAddr, TempData, 4'hf); // Writing Data to buffer that is pointed by the BD
    end
    

    // Writing buffer pointer
    TempAddr = {22'h01, ((TxBDIndex*2'h2 + 1'b1)<<2)};
    TempData = `TX_BUF_BASE + TxBDIndex * 32'h600; // 1536 bytes is reserved for one frame
    WishboneWrite(TempData, TempAddr); // Writing Tx pointer

    TempAddr = {22'h01, ((TxBDIndex*2'h2)<<2)};
    TempData = {Length[15:0], 1'b1, 1'b0, Wrap, 3'h0, ControlFrame, 1'b0, TxBDIndex[7:0]};  // Ready and Wrap = 1

    #1;
//    if(TxBDIndex == 6)    // Only 4 buffer descriptors are used
//      TxBDIndex = 0;
//    else
      TxBDIndex = TxBDIndex + 1;

    WishboneWrite(TempData, TempAddr); // Writing status to TxBD
  end
endtask



task SendPacketX;
  input [15:0]  Length;
  input         ControlFrame;
  input  [1:0]  AddrOffset;
  reg           Wrap;
  reg [31:0]    TempAddr;
  reg [31:0]    TempData;
  reg [31:0]    kk;
  reg  [3:0]    Select;
  
  begin
    Wrap = 1'b0;

    case(AddrOffset)
      2'h0 : Select = 4'hf;
      2'h1 : Select = 4'h7;
      2'h2 : Select = 4'h3;
      2'h3 : Select = 4'h1;
    endcase

    // Writing data to buffer
    for(kk=0; kk<Length+4; kk=kk+4)   // Length+4 is because we might start up to 3 bytes later
    begin
      if(kk>0)
        Select = 4'hf;
      TempAddr = `TX_BUF_BASE + TxBDIndex * 32'h600 + kk;
      TempData = {kk[7:0]+3'h1, kk[7:0]+3'h2, kk[7:0]+3'h3, kk[7:0]+3'h4};
      WishboneWriteData(TempAddr, TempData, Select); // Writing Data to buffer that is pointed by the BD
    end
    

    // Writing buffer pointer
    TempAddr = {22'h01, ((TxBDIndex*2'h2 + 1'b1)<<2)};
    TempData = `TX_BUF_BASE + TxBDIndex * 32'h600 + AddrOffset; // 1536 bytes is reserved for one frame
    WishboneWrite(TempData, TempAddr); // Writing Tx pointer

    TempAddr = {22'h01, ((TxBDIndex*2'h2)<<2)};
    TempData = {Length[15:0], 1'b1, 1'b1, Wrap, 3'h0, ControlFrame, 1'b0, TxBDIndex[7:0]};  // Ready, interrupt and Wrap = 1

    #1;
    if(Wrap)
      TxBDIndex = 0;
    else
      TxBDIndex = TxBDIndex + 1;

    WishboneWrite(TempData, TempAddr); // Writing status to TxBD
  end
endtask


task send_packet;
  input [47:0] dest_addr;
  input [15:0] length;

  reg [31:0] BD, ptr;
  reg [31:0] i;
  reg [2:0]  increment;

  reg [31:0]    TempAddr;
  reg [31:0]    TempData;
  reg [15:0]    kk;
  reg  [3:0]    Select;
  
  begin
    bd_status_addr = `TX_BD_BASE + g_last_txbd * 8;

    mama
    WishboneRead(bd_status_addr, BD);           // Read BD
    WishboneRead(bd_status_addr+4, ptr);        // Read buffer pointer

    case(ptr[1:0])
      2'h0 : begin Select = 4'hf; increment = 3'h4 end
      2'h1 : begin Select = 4'h7; increment = 3'h3 end
      2'h2 : begin Select = 4'h3; increment = 3'h2 end
      2'h3 : begin Select = 4'h1; increment = 3'h1 end
    endcase

    // Writing data to buffer
    for(i=ptr; i<(length+ptr); i=i+increment)   // (i=0; i<length; i=i+increment)
    begin
      if(i>ptr)   // After first write all accesses are word accesses
        begin Select = 4'hf; increment=3'h4; end

      TempAddr = `TX_BUF_BASE + TxBDIndex * 32'h600 + kk;
      TempData = {i[7:0]+3'h1, i[7:0]+3'h2, i[7:0]+3'h3, i[7:0]+3'h4};
mama                 
      WishboneWriteData(TempAddr, TempData, Select); // Writing Data to buffer that is pointed by the BD
    end
    

    // Writing buffer pointer
    TempAddr = {22'h01, ((TxBDIndex*2'h2 + 1'b1)<<2)};
    TempData = `TX_BUF_BASE + TxBDIndex * 32'h600 + AddrOffset; // 1536 bytes is reserved for one frame
    WishboneWrite(TempData, TempAddr); // Writing Tx pointer

    TempAddr = {22'h01, ((TxBDIndex*2'h2)<<2)};
    TempData = {length[15:0], 1'b1, 1'b1, Wrap, 3'h0, ControlFrame, 1'b0, TxBDIndex[7:0]};  // Ready, interrupt and Wrap = 1

    #1;
    if(Wrap)
      TxBDIndex = 0;
    else
      TxBDIndex = TxBDIndex + 1;

    WishboneWrite(TempData, TempAddr); // Writing status to TxBD

    if(BD & 32'h2000)     // Wrap bit set ?
      g_last_txbd = 0;
    else
      g_last_txbd = g_last_txbd+1;

  end
endtask // send_packet


task ReceivePacket;    // Initializes RxBD and then generates traffic on the MRxD[3:0] signals.
  input [15:0] LengthRx;
  input        RxControlFrame;
  input [31:0] TransferType;  //Broadcast,Unicast,Multicast
  reg        WrapRx;
  reg [31:0] TempRxAddr;
//  reg [31:0] TempRxData;
  integer TempRxData;
  reg abc;
  begin
//    if(RxBDIndex == 6)    // Only 3 buffer descriptors are used
//      WrapRx = 1'b1;
//    else
      WrapRx = 1'b0;

    TempRxAddr = {22'h01, ((tb_eth_top.ethtop.r_TxBDNum + RxBDIndex*2'h2 + 1'b1)<<2)};
    TempRxData = `RX_BUF_BASE + RxBDIndex * 32'h600; // 1536 bytes is reserved for one frame
    WishboneWrite(TempRxData, TempRxAddr); // Writing Rx pointer

    TempRxAddr = {22'h01, ((tb_eth_top.ethtop.r_TxBDNum + RxBDIndex*2'h2)<<2)};
    TempRxData = {16'h0, 1'b1, 1'b0, WrapRx, 5'h0, RxBDIndex[7:0]};  // Ready and WrapRx = 1 or 0

    #1;
//    if(RxBDIndex == 6)    // Only 4 buffer descriptors are used
//      RxBDIndex = 0;
//    else
      RxBDIndex = RxBDIndex + 1;

    abc=1;
    WishboneWrite(TempRxData, TempRxAddr); // Writing status to RxBD
    abc=0;

      begin
        #200;
        if(RxControlFrame)
          GetControlDataOnMRxD(LengthRx); // LengthRx = PAUSE timer value.
        else
          GetDataOnMRxD(LengthRx, TransferType); // LengthRx bytes is comming on MRxD[3:0] signals
      end

  end
endtask


task ReceivePacketX;    // Initializes RxBD and then generates traffic on the MRxD[3:0] signals.
  input [15:0] LengthRx;
  input        RxControlFrame;
  input [31:0] TransferType;  //Broadcast,Unicast,Multicast
  input  [1:0]  AddrOffset;
  reg        WrapRx;
  reg [31:0] TempRxAddr;
  integer TempRxData;
  reg abc;
  begin
    WrapRx = 1'b0;

    TempRxAddr = {22'h01, ((tb_eth_top.ethtop.r_TxBDNum + RxBDIndex*2'h2 + 1'b1)<<2)};
    TempRxData = `RX_BUF_BASE + RxBDIndex * 32'h600 + AddrOffset; // 1536 bytes is reserved for one frame
    WishboneWrite(TempRxData, TempRxAddr); // Writing Rx pointer

    TempRxAddr = {22'h01, ((tb_eth_top.ethtop.r_TxBDNum + RxBDIndex*2'h2)<<2)};
    TempRxData = {16'h0, 1'b1, 1'b1, WrapRx, 5'h0, RxBDIndex[7:0]};  // Ready, interrupt and WrapRx = 1 or 0

    #1;
      RxBDIndex = RxBDIndex + 1;

    abc=1;
    WishboneWrite(TempRxData, TempRxAddr); // Writing status to RxBD
    abc=0;

      begin
        #200;
        if(RxControlFrame)
          GetControlDataOnMRxD(LengthRx); // LengthRx = PAUSE timer value.
        else
          GetDataOnMRxD(LengthRx, TransferType); // LengthRx bytes is comming on MRxD[3:0] signals
      end

  end
endtask


task GetDataOnMRxD;
  input [15:0] Len;
  input [31:0] TransferType;
  integer tt;

  begin
    @ (posedge MRxClk);
    MRxDV=1'b1;
    
    for(tt=0; tt<15; tt=tt+1)
    begin
      MRxD=4'h5;              // preamble
      @ (posedge MRxClk);
    end
    MRxD=4'hd;                // SFD
    
  for(tt=1; tt<(Len+1); tt=tt+1)
     
    begin
	
      @ (posedge MRxClk);
	  if(TransferType == `UNICAST_XFR && tt == 1)
	   MRxD= 4'h0;   // Unicast transfer
	  else if(TransferType == `BROADCAST_XFR && tt < 7)
	   MRxD = 4'hf;
	  else
       MRxD=tt[3:0]; // Multicast transfer

    @ (posedge MRxClk);
	  
	   if(TransferType == `BROADCAST_XFR && tt < 7)
	    MRxD = 4'hf;
	  else
        MRxD=tt[7:4];
    end

    @ (posedge MRxClk);
    MRxDV=1'b0;
  end
endtask


task GetControlDataOnMRxD;
  input [15:0] Timer;
  reg [127:0] Packet;
  reg [127:0] Data;
  reg [31:0] Crc;
  integer tt;

  begin
  Packet = 128'h10082C000010_deadbeef0013_8880_0010; // 0180c2000001 + 8808 + 0001
  Crc = 32'h6014fe08; // not a correct value
  
    @ (posedge MRxClk);
    MRxDV=1'b1;
    
    for(tt=0; tt<15; tt=tt+1)
    begin
      MRxD=4'h5;              // preamble
      @ (posedge MRxClk);
    end
    MRxD=4'hd;                // SFD
    
    for(tt=0; tt<32; tt=tt+1)
    begin
      Data = Packet << (tt*4);
      @ (posedge MRxClk);
      MRxD=Data[127:124];
    end
    
    for(tt=0; tt<2; tt=tt+1)    // timer
    begin
      Data[15:0] = Timer << (tt*8);
      @ (posedge MRxClk);
      MRxD=Data[11:8];
      @ (posedge MRxClk);
      MRxD=Data[15:12];
    end
    
    for(tt=0; tt<42; tt=tt+1)   // padding
    begin
      Data[7:0] = 8'h0;
      @ (posedge MRxClk);
      MRxD=Data[3:0];
      @ (posedge MRxClk);
      MRxD=Data[3:0];
    end
    
    for(tt=0; tt<4; tt=tt+1)    // crc
    begin
      Data[31:0] = Crc << (tt*8);
      @ (posedge MRxClk);
      MRxD=Data[27:24];
      @ (posedge MRxClk);
      MRxD=Data[31:28];
    end
    
    
    
    @ (posedge MRxClk);
    MRxDV=1'b0;
  end
endtask

task InitializeMemory;
  reg [9:0] mem_addr;
  
  begin
    LogEnable = 1'b0;
    $display("\n\n(%0t) Initializing Memory...", $time);
    for(mem_addr=0; mem_addr<=10'h0ff; mem_addr=mem_addr+1'b1)
      WishboneWrite(32'h0, {22'h01, mem_addr<<2}); // Writing status to RxBD
    LogEnable = 1'b1;
  end
endtask




endmodule

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人妖精视频yjsp地址| 日韩av在线播放中文字幕| 国产剧情一区二区| 久久先锋影音av鲁色资源网| 国产麻豆欧美日韩一区| 国产色一区二区| 国产不卡视频在线播放| 欧美国产日韩a欧美在线观看| 丁香激情综合国产| 亚洲欧美国产毛片在线| 一本色道a无线码一区v| 婷婷六月综合网| 欧美本精品男人aⅴ天堂| 国内成人精品2018免费看| 久久精品无码一区二区三区| 成人午夜视频在线| 一区二区视频免费在线观看| 91精品国产综合久久精品性色| 蜜臂av日日欢夜夜爽一区| 国产日产欧产精品推荐色| 色综合久久久久综合99| 日韩av午夜在线观看| 久久久国产一区二区三区四区小说| 不卡av在线免费观看| 五月激情综合婷婷| 久久久高清一区二区三区| 91啦中文在线观看| 日韩av电影免费观看高清完整版在线观看 | 51精品国自产在线| 国产一区美女在线| 亚洲国产精品久久久久婷婷884| 日韩一区二区三区在线观看| 丁香六月综合激情| 日韩在线一二三区| 中文字幕一区二区三区四区| 欧美日韩国产美女| 国产成人午夜高潮毛片| 亚洲高清免费在线| 国产精品久久久一本精品 | 久久久久高清精品| 欧美日韩一级二级| 成人听书哪个软件好| 日韩和欧美一区二区| 日韩成人免费在线| 国产精品人人做人人爽人人添| 欧洲视频一区二区| 盗摄精品av一区二区三区| 青青草国产精品97视觉盛宴| 国产精品国产三级国产普通话蜜臀| 91精品国产综合久久精品图片 | 一本色道久久综合狠狠躁的推荐| 免费观看一级特黄欧美大片| 亚洲欧美色综合| 久久精品免视看| 日韩欧美专区在线| 欧美视频在线播放| 91麻豆免费在线观看| 成人免费视频视频在线观看免费 | 免费一级片91| 亚洲成av人片一区二区梦乃| 国产精品久久久久久亚洲毛片| 日韩亚洲欧美综合| 欧美日韩精品三区| 欧美视频在线观看一区二区| 97se亚洲国产综合自在线不卡| 国产一区二区三区在线看麻豆| 婷婷久久综合九色综合绿巨人| 亚洲免费在线看| 亚洲欧洲美洲综合色网| 国产日韩欧美在线一区| 国产三级精品在线| 国产香蕉久久精品综合网| 精品国产一区二区在线观看| 欧美一区二区三区啪啪| 91精品国产色综合久久不卡蜜臀| 欧美三区免费完整视频在线观看| 91久久国产综合久久| 91丝袜美腿高跟国产极品老师 | 亚洲免费观看高清| 专区另类欧美日韩| 亚洲欧洲制服丝袜| 一区二区久久久久| 亚洲愉拍自拍另类高清精品| 亚洲黄色av一区| 亚洲国产乱码最新视频| 午夜亚洲国产au精品一区二区| 亚洲午夜久久久久中文字幕久| 亚洲综合视频在线观看| 亚洲国产精品综合小说图片区| 亚洲综合激情网| 偷拍日韩校园综合在线| 麻豆免费看一区二区三区| 国产专区欧美精品| 成人综合日日夜夜| aaa欧美日韩| 欧美亚洲日本一区| 欧美剧情电影在线观看完整版免费励志电影| 精品视频一区 二区 三区| 91精品国产福利在线观看| 2017欧美狠狠色| 国产精品视频第一区| 亚洲欧美日韩在线| 婷婷开心激情综合| 国产麻豆视频精品| 色狠狠桃花综合| 91精品午夜视频| 日本一区二区三区免费乱视频| 国产精品国产三级国产普通话99 | 日韩精品中文字幕一区二区三区 | 欧美精品一区二区三区一线天视频 | 久久久久久亚洲综合| 中文字幕一区二区不卡| 天天综合色天天综合| 国产一区二区美女诱惑| 色婷婷亚洲婷婷| 日韩一区二区在线观看视频| 国产精品人人做人人爽人人添| 亚洲午夜激情网页| 国产一区啦啦啦在线观看| 色婷婷国产精品| 精品国产乱码久久久久久1区2区 | 亚洲欧美成人一区二区三区| 热久久国产精品| hitomi一区二区三区精品| 91精品国产色综合久久不卡蜜臀| 国产欧美日韩在线看| 肉色丝袜一区二区| 高清国产一区二区| 这里只有精品免费| 1024国产精品| 狠狠色综合日日| 欧美性猛片aaaaaaa做受| www亚洲一区| 日韩精品欧美成人高清一区二区| 床上的激情91.| 91精品国产综合久久蜜臀| 亚洲免费三区一区二区| 国产在线精品一区二区不卡了 | 午夜久久久久久电影| 成人永久免费视频| 日韩免费福利电影在线观看| 亚洲激情综合网| 国产夫妻精品视频| 欧美一区二区三区在线观看 | 亚洲成人综合视频| 91色.com| 国产精品欧美久久久久无广告| 精品一区二区三区免费毛片爱 | 99久久er热在这里只有精品15| 日韩精品中文字幕在线不卡尤物| 亚洲国产裸拍裸体视频在线观看乱了| 成人精品一区二区三区中文字幕| 欧美mv日韩mv国产网站| 日韩av一级电影| 欧美日韩精品免费观看视频| 亚洲蜜桃精久久久久久久| 粉嫩13p一区二区三区| 久久精品免费在线观看| 国精品**一区二区三区在线蜜桃| 欧美一区二区视频在线观看| 亚洲成人激情社区| 欧美主播一区二区三区| 有码一区二区三区| 一本大道久久a久久综合| 中文字幕永久在线不卡| 成人一区二区三区视频| 中文字幕精品一区二区精品绿巨人| 国产美女主播视频一区| 亚洲精品一区二区精华| 久久99国产精品成人| 26uuu久久天堂性欧美| 精品中文字幕一区二区小辣椒 | 国产黄色精品视频| 久久亚洲一区二区三区明星换脸| 久草中文综合在线| 欧美v亚洲v综合ⅴ国产v| 久久国产综合精品| 久久毛片高清国产| 不卡在线观看av| 亚洲欧美日韩国产中文在线| 色国产精品一区在线观看| 亚洲成人av中文| 日韩一区二区三区av| 国产精品一二三四区| 亚洲欧洲日韩一区二区三区| 91国偷自产一区二区三区成为亚洲经典| 亚洲主播在线观看| 日韩欧美国产麻豆| 国产精品888| 亚洲黄色片在线观看| 在线播放欧美女士性生活| 国产资源在线一区| 中文字幕一区二区三区精华液| 日本韩国精品在线| 午夜天堂影视香蕉久久| 久久蜜桃一区二区| 色狠狠色噜噜噜综合网| 男男视频亚洲欧美| 国产精品久久久久久久久免费桃花| 日本韩国精品在线|