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

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

?? tb_ethernet_with_cop.v

?? FPGA數字電子系統設計與開發實例導航(源程序)
?? V
?? 第 1 頁 / 共 2 頁
字號:

  repeat (10000) @(posedge wb_clk_o);   // Waiting for TxEthMac to finish transmit

/*
  GetDataOnMRxD(113, `UNICAST_XFR); // LengthRx bytes is comming on MRxD[3:0] signals

  repeat (10000) @(posedge wb_clk_o);   // Waiting for TxEthMac to finish transmit

  GetDataOnMRxD(500, `BROADCAST_XFR); // LengthRx bytes is comming on MRxD[3:0] signals

  repeat (1000) @(posedge mrx_clk);   // Waiting for TxEthMac to finish transmit


  GetDataOnMRxD(1200, `BROADCAST_XFR); // LengthRx bytes is comming on MRxD[3:0] signals


  GetDataOnMRxD(1000, `UNICAST_XFR); // LengthRx bytes is comming on MRxD[3:0] signals

  repeat (10000) @(posedge wb_clk_o);   // Waiting for TxEthMac to finish transmit
  
*/
  // Reading and printing interrupts
  eth_host.wb_read(`ETH_INT, 4'hf, tmp);
  $display("Print irq = 0x%0x", tmp);
  
  //Clearing all interrupts
  eth_host.wb_write(`ETH_INT, 4'hf, 32'h60);

  // Reading and printing interrupts
  eth_host.wb_read(`ETH_INT, 4'hf, tmp);
  $display("Print irq = 0x%0x", tmp);

  $display("\n\n End of simulation");
  $stop;



end
  

`ifdef ETH_WISHBONE_B3

integer single_cnt_tx, burst_cnt_tx, burst_cnt;
integer single_cnt_rx, burst_cnt_rx;

initial
begin
single_cnt_tx=0; burst_cnt_tx=0; burst_cnt=0;
single_cnt_rx=0; burst_cnt_rx=0;
end

// Single and burst cycle watcher
always @ (posedge wb_clk_o)
begin
  if(eth_ma_wb_ack_i) begin
    if(eth_ma_wb_cyc_o & eth_ma_wb_we_o & eth_ma_wb_cti_o==3'b000) begin
      if(burst_cnt!==0)
        $display("(%0t)(%m) ERROR !!!  burst_cnt should be 0 because this is a single access", $time);
      else
        single_cnt_rx=single_cnt_rx+1;
    end
    else if(eth_ma_wb_cyc_o & !eth_ma_wb_we_o & eth_ma_wb_cti_o==3'b000) begin
      if(burst_cnt!==0)
        $display("(%0t)(%m) ERROR !!!  burst_cnt should be 0 because this is a single access", $time);
      else
        single_cnt_tx=single_cnt_tx+1;
    end
    else if(eth_ma_wb_cyc_o & eth_ma_wb_cti_o==3'b010) begin // burst in progress
      burst_cnt=burst_cnt+1;
    end
    else if(eth_ma_wb_cyc_o & eth_ma_wb_we_o & eth_ma_wb_cti_o==3'b111 & burst_cnt==(`ETH_BURST_LENGTH-1)) begin
      burst_cnt_rx=burst_cnt_rx+1;
      burst_cnt=0;
    end
    else if(eth_ma_wb_cyc_o & !eth_ma_wb_we_o & eth_ma_wb_cti_o==3'b111 & burst_cnt==(`ETH_BURST_LENGTH-1)) begin
      burst_cnt_tx=burst_cnt_tx+1;
      burst_cnt=0;
    end
    else
      $display("(%0t)(%m) ERROR !!!  Unknown cycle type or sequence", $time);
  end
end
`endif  // ETH_WISHBONE_B3



task initialize_txbd;
  input [6:0] txbd_num;
  
  integer i;
  integer bd_status_addr, buf_addr, bd_ptr_addr;
  
  for(i=0; i<txbd_num; i=i+1) begin
    buf_addr = `TX_BUF_BASE + i * 32'h600;
    bd_status_addr = `TX_BD_BASE + i * 8;
    bd_ptr_addr = bd_status_addr + 4; 
    
    // Initializing BD - status
    if(i==txbd_num-1)
      eth_host.wb_write(bd_status_addr, 4'hf, 32'h00007800);    // last BD: + WRAP
    else
      eth_host.wb_write(bd_status_addr, 4'hf, 32'h00005800);    // IRQ + PAD + CRC

    eth_host.wb_write(bd_ptr_addr, 4'hf, buf_addr);             // Initializing BD - pointer
  end
endtask // initialize_txbd


task initialize_rxbd;
  input [6:0] rxbd_num;
  
  integer i;
  integer bd_status_addr, buf_addr, bd_ptr_addr;
  
  for(i=0; i<rxbd_num; i=i+1) begin
    buf_addr = `RX_BUF_BASE + i * 32'h600;
    bd_status_addr = `RX_BD_BASE + i * 8;
    bd_ptr_addr = bd_status_addr + 4; 
    
    // Initializing BD - status
    if(i==rxbd_num-1)
      eth_host.wb_write(bd_status_addr, 4'hf, 32'h0000e000);    // last BD: + WRAP
    else
      eth_host.wb_write(bd_status_addr, 4'hf, 32'h0000c000);    // IRQ + PAD + CRC

    eth_host.wb_write(bd_ptr_addr, 4'hf, buf_addr);             // Initializing BD - pointer
  end
endtask // initialize_rxbd


task set_packet;
  input  [15:0] len;
  input   [7:0] start_data;

  integer i, sd;
  integer bd_status_addr, bd_ptr_addr, buffer, bd;
  
  begin
    sd = start_data;
    bd_status_addr = `TX_BD_BASE + packet_ready_cnt * 8;
    bd_ptr_addr = bd_status_addr + 4; 
    
    // Reading BD + buffer pointer
    eth_host.wb_read(bd_status_addr, 4'hf, bd);
    eth_host.wb_read(bd_ptr_addr, 4'hf, buffer);

    while(bd & `ETH_TX_BD_READY) begin  // Buffer is ready. Don't touch !!!
      repeat(100) @(posedge wb_clk_o);
      i=i+1;
      eth_host.wb_read(bd_status_addr, 4'hf, bd);
      if(i>1000)  begin
        $display("(%0t)(%m)Waiting for TxBD ready to clear timeout", $time);
        $stop;
      end
    end

    // First write might not be word allign.
    if(buffer[1:0]==1)  begin
      eth_host.wb_write(buffer-1, 4'h7, {8'h0, sd[7:0], sd[7:0]+3'h1, sd[7:0]+3'h2});
      sd=sd+3;
      i=3;
    end
    else if(buffer[1:0]==2)  begin
      eth_host.wb_write(buffer-2, 4'h3, {16'h0, sd[7:0], sd[7:0]+3'h1});
      sd=sd+2;
      i=2;
    end      
    else if(buffer[1:0]==3)  begin
      eth_host.wb_write(buffer-3, 4'h1, {24'h0, sd[7:0]});
      sd=sd+1;
      i=1;
    end
    else
      i=0;


    for(i=i; i<len-4; i=i+4) begin   // Last 0-3 bytes are not written
      eth_host.wb_write(buffer+i, 4'hf, {sd[7:0], sd[7:0]+3'h1, sd[7:0]+3'h2, sd[7:0]+3'h3});
      sd=sd+4;
    end
    
    
    // Last word
    if(len-i==3)
      eth_host.wb_write(buffer+i, 4'he, {sd[7:0], sd[7:0]+3'h1, sd[7:0]+3'h2, 8'h0});
    else if(len-i==2)
      eth_host.wb_write(buffer+i, 4'hc, {sd[7:0], sd[7:0]+3'h1, 16'h0});
    else if(len-i==1)
      eth_host.wb_write(buffer+i, 4'h8, {sd[7:0], 24'h0});
    else if(len-i==4)
      eth_host.wb_write(buffer+i, 4'hf, {sd[7:0], sd[7:0]+3'h1, sd[7:0]+3'h2, sd[7:0]+3'h3});
    else
      $display("(%0t)(%m) ERROR", $time);
    

    // Checking WRAP bit
    if(bd & `ETH_TX_BD_WRAP)
      packet_ready_cnt = 0;
    else
      packet_ready_cnt = packet_ready_cnt+1;

    // Writing len to bd
    bd = bd | (len<<16);
    eth_host.wb_write(bd_status_addr, 4'hf, bd);
    
  end
endtask // set_packet


task send_packet;

  integer bd_status_addr, bd_ptr_addr, buffer, bd;
  
  begin
    bd_status_addr = `TX_BD_BASE + send_packet_cnt * 8;
    bd_ptr_addr = bd_status_addr + 4; 
    
    // Reading BD + buffer pointer
    eth_host.wb_read(bd_status_addr, 4'hf, bd);
    eth_host.wb_read(bd_ptr_addr, 4'hf, buffer);

    if(bd & `ETH_TX_BD_WRAP)
      send_packet_cnt=0;
    else
      send_packet_cnt=send_packet_cnt+1;

    // Setting ETH_TX_BD_READY bit
    bd = bd | `ETH_TX_BD_READY;
    eth_host.wb_write(bd_status_addr, 4'hf, bd);
  end


endtask // send_packet


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

  begin
    @ (posedge mrx_clk);
    #1MRxDV=1'b1;
    
    for(tt=0; tt<15; tt=tt+1)
      begin
        MRxD=4'h5;              // preamble
        @ (posedge mrx_clk);
        #1;
      end

    MRxD=4'hd;                // SFD
    
    for(tt=1; tt<(Len+1); tt=tt+1)
      begin
        @ (posedge mrx_clk);
        #1;
  	    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 mrx_clk);
	      #1;
	      if(TransferType == `BROADCAST_XFR && tt < 7)
	        MRxD = 4'hf;
	      else
          MRxD=tt[7:4];
      end

    @ (posedge mrx_clk);
    #1;
    MRxDV=1'b0;
  end
endtask // GetDataOnMRxD


endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人动漫精品一区二区| 国产女人aaa级久久久级| 久久久久久久网| 亚洲精品日产精品乱码不卡| 狂野欧美性猛交blacked| 91香蕉视频污在线| 精品不卡在线视频| 日韩黄色免费电影| 日本高清不卡视频| 国产日产精品一区| 久久99在线观看| 欧美久久久一区| 亚洲日本在线视频观看| 国产一区在线不卡| 欧美大片日本大片免费观看| 亚洲综合色噜噜狠狠| 97精品国产露脸对白| 国产人久久人人人人爽| 日韩av电影免费观看高清完整版在线观看| av动漫一区二区| 中文无字幕一区二区三区| 久久精品72免费观看| 777xxx欧美| 亚洲国产视频一区二区| 色999日韩国产欧美一区二区| 国产精品素人一区二区| 国产精品综合二区| 久久久久久久久久久久久女国产乱| 午夜欧美一区二区三区在线播放| 色婷婷久久一区二区三区麻豆| 国产精品高潮久久久久无| 粉嫩aⅴ一区二区三区四区五区| 久久久久久久综合狠狠综合| 国产一区久久久| 久久久影视传媒| 国产传媒一区在线| 久久久久国产精品麻豆| 国产精品911| 国产精品久久久久久久久果冻传媒| 国产成人av电影在线观看| 亚洲国产精品激情在线观看| 成人一区在线观看| 国产精品毛片高清在线完整版| 成人国产在线观看| 亚洲男人的天堂在线aⅴ视频| 色偷偷久久一区二区三区| 亚洲欧美另类小说| 欧美日韩亚洲另类| 蜜桃91丨九色丨蝌蚪91桃色| 久久综合九色综合久久久精品综合| 精品亚洲成a人| 中文字幕精品在线不卡| 色婷婷综合久久久久中文| 亚洲线精品一区二区三区| 欧美日本在线一区| 国内成+人亚洲+欧美+综合在线| 国产丝袜在线精品| 欧美亚洲一区二区在线观看| 日韩精彩视频在线观看| 2020国产精品| 色综合久久久久综合体桃花网| 午夜影院久久久| 精品国偷自产国产一区| av一区二区三区黑人| 亚洲成年人影院| xnxx国产精品| 色婷婷av一区二区三区之一色屋| 无吗不卡中文字幕| 国产日韩欧美综合一区| 欧美色成人综合| 国产成人在线观看| 亚洲成a人片在线观看中文| 亚洲精品在线免费播放| 99re这里都是精品| 蜜桃视频在线一区| 亚洲女爱视频在线| 久久夜色精品国产噜噜av| 欧美性大战久久久久久久蜜臀| 国产一区二区中文字幕| 依依成人综合视频| 久久久夜色精品亚洲| 欧美老肥妇做.爰bbww视频| 高清beeg欧美| 乱中年女人伦av一区二区| 亚洲人成网站色在线观看| 欧美va日韩va| 欧美色综合天天久久综合精品| 粉嫩嫩av羞羞动漫久久久| 免费精品视频在线| 亚洲成人777| 亚洲欧美经典视频| 国产精品久久久久久久午夜片| 日韩视频不卡中文| 色婷婷精品久久二区二区蜜臂av| 激情综合一区二区三区| 午夜电影久久久| 亚洲美女屁股眼交| 国产精品午夜免费| 久久久久久麻豆| 精品国产乱码久久久久久老虎| 欧美日韩一区二区不卡| 色综合久久久网| 97se亚洲国产综合自在线不卡| 国产精品77777| 国内成人自拍视频| 国内外精品视频| 国内外成人在线| 狠狠色综合日日| 精品一二三四在线| 美美哒免费高清在线观看视频一区二区| 亚洲精品国产无天堂网2021| 最新日韩av在线| 国产欧美一区二区在线观看| 久久综合网色—综合色88| 日韩视频免费观看高清完整版| 91精品在线观看入口| 欧美精品少妇一区二区三区| 欧美猛男男办公室激情| 欧美日韩亚洲不卡| 欧美一区午夜视频在线观看| 制服.丝袜.亚洲.另类.中文| 5月丁香婷婷综合| 精品少妇一区二区| 精品国产伦一区二区三区观看体验| 日韩一区二区免费在线观看| 欧美大片在线观看| 久久久精品国产免费观看同学| 久久精品亚洲精品国产欧美kt∨| 国产性做久久久久久| 国产欧美视频一区二区三区| 亚洲国产精品av| **欧美大码日韩| 亚洲已满18点击进入久久| 三级不卡在线观看| 国内外成人在线| av电影在线观看完整版一区二区| 色香蕉成人二区免费| 在线不卡免费av| 久久综合色之久久综合| 国产欧美日韩三级| 亚洲自拍与偷拍| 免费久久99精品国产| 国产成人av影院| 91国产免费看| 精品国产伦一区二区三区观看体验 | 国产精品18久久久久久vr| 成人精品免费网站| 欧美视频完全免费看| 欧美精品一区二区三区在线| 中文字幕不卡在线播放| 午夜天堂影视香蕉久久| 狠狠网亚洲精品| 在线亚洲免费视频| 欧美一级生活片| 中文字幕的久久| 午夜精品福利久久久| 国产成人av影院| 欧美日韩在线亚洲一区蜜芽| 欧美精品一区二区在线播放| 一区二区在线观看视频| 久久99精品国产91久久来源| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 日本久久电影网| 精品免费国产一区二区三区四区| 国产精品成人免费精品自在线观看| 午夜伊人狠狠久久| 成人激情文学综合网| 精品剧情v国产在线观看在线| 亚洲欧美日韩国产手机在线| 国产一区二区导航在线播放| 欧洲在线/亚洲| 国产精品亲子伦对白| 国产不卡在线一区| 日本韩国欧美一区| 中文字幕国产一区二区| 日韩av一区二区在线影视| 99re66热这里只有精品3直播| 久久中文娱乐网| 日韩黄色免费网站| 欧美视频在线观看一区| 亚洲视频一区二区免费在线观看| 久久99九九99精品| 4hu四虎永久在线影院成人| 国产精品久久毛片| 国产一区二区不卡| 欧美成人综合网站| 日韩av一区二区三区四区| 色视频一区二区| 国产精品国产自产拍高清av| 国产电影一区二区三区| 久久精品人人做人人综合| 美日韩黄色大片| 日韩一区二区三| 日韩电影在线一区二区三区| 欧美卡1卡2卡| 日韩国产高清在线| 欧美精品123区| 日本女人一区二区三区| 91精品视频网| 美女网站色91|