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

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

?? tb_eth_top.v

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








Please use tb_ethernet.v for testbench. Testbench will soon be 
updated.













//////////////////////////////////////////////////////////////////////




`include "tb_eth_defines.v"
`include "eth_defines.v"
`include "timescale.v"

module tb_eth_top();


parameter Tp = 1;


reg           WB_CLK_I;
reg           WB_RST_I;
reg   [31:0]  WB_DAT_I;

reg   [31:0]  WB_ADR_I;
reg    [3:0]  WB_SEL_I;
reg           WB_WE_I;
reg           WB_CYC_I;
reg           WB_STB_I;

wire  [31:0]  WB_DAT_O;
wire          WB_ACK_O;
wire          WB_ERR_O;
reg    [1:0]  WB_ACK_I;

// WISHBONE master
wire    [31:0]    m_wb_adr_o;
wire     [3:0]    m_wb_sel_o;
wire              m_wb_we_o;
reg     [31:0]    m_wb_dat_i;
wire    [31:0]    m_wb_dat_o;
wire              m_wb_cyc_o;
wire              m_wb_stb_o;
reg               m_wb_ack_i;
reg               m_wb_err_i;

reg           MTxClk;
wire   [3:0]  MTxD;
wire          MTxEn;
wire          MTxErr;

reg           MRxClk;
reg    [3:0]  MRxD;
reg           MRxDV;
reg           MRxErr;
reg           MColl;
reg           MCrs;

reg           Mdi_I;
wire          Mdo_O;
wire          Mdo_OE;
wire          Mdc_O;


reg [7:0] memory0 [0:65535];
reg [7:0] memory1 [0:65535];
reg [7:0] memory2 [0:65535];
reg [7:0] memory3 [0:65535];

reg WishboneBusy;
reg StartTB;
reg [9:0] TxBDIndex;
reg [9:0] RxBDIndex;

reg LogEnable;

  integer mcd1;
  integer mcd2;

reg [5:0] g_last_txbd;

// Connecting Ethernet top module

eth_top ethtop
(
  // WISHBONE common
  .wb_clk_i(WB_CLK_I), .wb_rst_i(WB_RST_I), .wb_dat_i(WB_DAT_I), .wb_dat_o(WB_DAT_O), 

  // WISHBONE slave
 	.wb_adr_i(WB_ADR_I[11:2]), .wb_sel_i(WB_SEL_I), .wb_we_i(WB_WE_I),   .wb_cyc_i(WB_CYC_I), 
 	.wb_stb_i(WB_STB_I),       .wb_ack_o(WB_ACK_O), .wb_err_o(WB_ERR_O), 
 	
// WISHBONE master
  .m_wb_adr_o(m_wb_adr_o), .m_wb_sel_o(m_wb_sel_o), .m_wb_we_o(m_wb_we_o), .m_wb_dat_i(m_wb_dat_i), 
  .m_wb_dat_o(m_wb_dat_o), .m_wb_cyc_o(m_wb_cyc_o), .m_wb_stb_o(m_wb_stb_o), .m_wb_ack_i(m_wb_ack_i), 
  .m_wb_err_i(m_wb_err_i), 

  //TX
  .mtx_clk_pad_i(MTxClk), .mtxd_pad_o(MTxD), .mtxen_pad_o(MTxEn), .mtxerr_pad_o(MTxErr),

  //RX
  .mrx_clk_pad_i(MRxClk), .mrxd_pad_i(MRxD), .mrxdv_pad_i(MRxDV), .mrxerr_pad_i(MRxErr), 
  .mcoll_pad_i(MColl),    .mcrs_pad_i(MCrs), 
  
  // MIIM
  .mdc_pad_o(Mdc_O), .md_pad_i(Mdi_I), .md_pad_o(Mdo_O), .md_padoe_o(Mdo_OE),
  
  .int_o()
);


bench_cop i_bench_cop
(
  // WISHBONE common
  .wb_clk_i(WB_CLK_I), .wb_rst_i(WB_RST_I), .wb_dat_i(WB_DAT_I), .wb_dat_o(WB_DAT_O), 

  // WISHBONE slave
 	.wb_adr_i(WB_ADR_I[11:2]), .wb_sel_i(WB_SEL_I), .wb_we_i(WB_WE_I),   .wb_cyc_i(WB_CYC_I), 
 	.wb_stb_i(WB_STB_I),       .wb_ack_o(WB_ACK_O), .wb_err_o(WB_ERR_O), 
 	
// WISHBONE master
  .m_wb_adr_o(m_wb_adr_o), .m_wb_sel_o(m_wb_sel_o), .m_wb_we_o(m_wb_we_o), .m_wb_dat_i(m_wb_dat_i), 
  .m_wb_dat_o(m_wb_dat_o), .m_wb_cyc_o(m_wb_cyc_o), .m_wb_stb_o(m_wb_stb_o), .m_wb_ack_i(m_wb_ack_i), 
  .m_wb_err_i(m_wb_err_i), 

  //TX
  .mtx_clk_pad_i(MTxClk), .mtxd_pad_o(MTxD), .mtxen_pad_o(MTxEn), .mtxerr_pad_o(MTxErr),

  //RX
  .mrx_clk_pad_i(MRxClk), .mrxd_pad_i(MRxD), .mrxdv_pad_i(MRxDV), .mrxerr_pad_i(MRxErr), 
  .mcoll_pad_i(MColl),    .mcrs_pad_i(MCrs), 
  
  // MIIM
  .mdc_pad_o(Mdc_O), .md_pad_i(Mdi_I), .md_pad_o(Mdo_O), .md_padoe_o(Mdo_OE),
  
  .int_o()
);







initial
begin
  WB_CLK_I  =  1'b0;
  WB_DAT_I  = 32'h0;
  WB_ADR_I  = 32'h0;
  WB_SEL_I  =  4'h0;
  WB_WE_I   =  1'b0;
  WB_CYC_I  =  1'b0;
  WB_STB_I  =  1'b0;

  m_wb_ack_i = 0;
  m_wb_err_i = 0;
  MTxClk    =  1'b0;
  MRxClk    =  1'b0;
  MRxD      =  4'h0;
  MRxDV     =  1'b0;
  MRxErr    =  1'b0;
  MColl     =  1'b0;
  MCrs      =  1'b0;
  Mdi_I     =  1'b0;

  WishboneBusy = 1'b0;
  TxBDIndex = 10'h0;
  RxBDIndex = 10'h0;
  LogEnable = 1'b1;
  g_last_txbd = 6'h0;
end


// Reset pulse
initial
begin
  mcd1 = $fopen("ethernet_tx.log");
  mcd2 = $fopen("ethernet_rx.log");
  WB_RST_I =  1'b1;
  #100 WB_RST_I =  1'b0;
  #100 StartTB  =  1'b1;
end



// Generating WB_CLK_I clock
always
begin
//  forever #2.5 WB_CLK_I = ~WB_CLK_I;  // 2*2.5 ns -> 200.0 MHz    
//  forever #5 WB_CLK_I = ~WB_CLK_I;  // 2*5 ns -> 100.0 MHz    
//  forever #10 WB_CLK_I = ~WB_CLK_I;  // 2*10 ns -> 50.0 MHz    
  forever #12.5 WB_CLK_I = ~WB_CLK_I;  // 2*12.5 ns -> 40 MHz    
//  forever #15 WB_CLK_I = ~WB_CLK_I;  // 2*10 ns -> 33.3 MHz    
//  forever #20 WB_CLK_I = ~WB_CLK_I;  // 2*20 ns -> 25 MHz    
//  forever #25 WB_CLK_I = ~WB_CLK_I;  // 2*25 ns -> 20.0 MHz
//  forever #31.25 WB_CLK_I = ~WB_CLK_I;  // 2*31.25 ns -> 16.0 MHz    
//  forever #50 WB_CLK_I = ~WB_CLK_I;  // 2*50 ns -> 10.0 MHz
//  forever #55 WB_CLK_I = ~WB_CLK_I;  // 2*55 ns ->  9.1 MHz    
end

// Generating MTxClk clock
always
begin
//  #3 forever #20 MTxClk = ~MTxClk;   // 2*20 ns -> 25 MHz
  #3 forever #200 MTxClk = ~MTxClk;   // 2*200 ns -> 2.5 MHz
end

// Generating MRxClk clock
always
begin
//  #16 forever #20 MRxClk = ~MRxClk;   // 2*20 ns -> 25 MHz
  #16 forever #200 MRxClk = ~MRxClk;   // 2*200 ns -> 2.5 MHz
//  #16 forever #62.5 MRxClk = ~MRxClk;   // 2*62.5 ns -> 8 MHz       // just for testing purposes
end


initial
begin
  wait(StartTB);  // Start of testbench
  
  // Reset eth MAC core
  WishboneWrite(32'h00000800, {26'h0, `ETH_MODER_ADR<<2});     // r_Rst = 1
  WishboneWrite(32'h00000000, {26'h0, `ETH_MODER_ADR<<2});     // r_Rst = 0

  InitializeMemory;

// Select which test you want to run:
  //  TestTxAndRx;
    TestFullDuplex;
  //  TestUnicast;
  //  TestBroadcast;
  //  TestMulticast;
end
  
task TestTxAndRx;

 integer ii, jj;
 integer data_in, bd, pointer;

 begin
  WishboneWrite(32'h00000800, {26'h0, `ETH_MODER_ADR<<2});     // r_Rst = 1
  WishboneWrite(32'h00000000, {26'h0, `ETH_MODER_ADR<<2});     // r_Rst = 0
  WishboneWrite(32'h00000080, {26'h0, `ETH_TX_BD_NUM_ADR<<2}); // r_RxBDAddress = 0x80

//  WishboneWrite(32'h0000a06b, {26'h0, `ETH_MODER_ADR<<2});     // RxEn, Txen, CrcEn, Pad en, half duplex, 
  WishboneWrite(32'h0000a46b, {26'h0, `ETH_MODER_ADR<<2});     // RxEn, Txen, CrcEn, Pad en, full duplex, 
//  WishboneWrite(32'h0001a06b, {26'h0, `ETH_MODER_ADR<<2});     // r_RecSmall, RxEn, Txen, CrcEn, Pad en, half duplex, 
                                                               // r_IPG, promisc On, reject broadcast 

  WishboneWrite(32'h00000004, {26'h0, `ETH_CTRLMODER_ADR<<2}); //r_TxFlow = 1

  WishboneWrite(32'h00000002, {26'h0, `ETH_MAC_ADDR1_ADR<<2}); // MAC = 000203040506
  WishboneWrite(32'h03040506, {26'h0, `ETH_MAC_ADDR0_ADR<<2});

/*
// Just few reads
  WishboneRead({26'h0, `ETH_MODER_ADR<<2}, data_in);       // Read from ETH_MODER register
  WishboneRead({26'h0, `ETH_TX_BD_NUM_ADR<<2}, data_in);       // Read from ETH_TX_BD_NUM_ADR register
  WishboneRead({26'h0, `ETH_MAC_ADDR1_ADR<<2}, data_in);       // Read from ETH_MAC_ADDR1_ADR register
  WishboneRead({26'h0, `ETH_MAC_ADDR0_ADR<<2}, data_in);       // Read from ETH_MAC_ADDR0_ADR register
*/




    for(jj=0; jj<8; jj=jj+4)
    begin
      WishboneWriteData(`TX_BUF_BASE + jj, 32'h11111111, 4'hf); // Initializing data to ff
    end

    for(jj=0; jj<8; jj=jj+4)
    begin
      WishboneWriteData(`RX_BUF_BASE + jj, 32'h11111111, 4'hf); // Initializing data to ff
    end

//  SendPacketX(16'h0064, 1'b0, 2'h3);
//  SendPacketX(16'h0064, 1'b0, 2'h2);
//  SendPacketX(16'h0064, 1'b0, 2'h1);
//  SendPacketX(16'h0064, 1'b0, 2'h0);
//  SendPacket(16'h0064, 1'b0);
//  SendPacket(16'h0011, 1'b0);
//  SendPacket(16'h0012, 1'b0);

fork
  begin
/*
  SendPacketX(16'h0064, 1'b0, 2'h1);
  SendPacketX(16'h0064, 1'b0, 2'h2);
  SendPacketX(16'h0064, 1'b0, 2'h3);
  SendPacketX(16'h0064, 1'b0, 2'h0);
*/
//    SendPacketX(16'h264, 1'b0, 2'h3);
//    SendPacketX(16'h64, 1'b0, 2'h3);
//    SendPacketX(16'h104, 1'b0, 2'h3);
  end
  
  begin
    ReceivePacketX(16'h0040, 1'b0, `UNICAST_XFR, 2'h0);    // Initializes RxBD and then generates traffic on the MRxD[3:0] signals.
    ReceivePacketX(16'h0041, 1'b0, `UNICAST_XFR, 2'h0);    // Initializes RxBD and then generates traffic on the MRxD[3:0] signals.
    ReceivePacketX(16'h0042, 1'b0, `UNICAST_XFR, 2'h0);    // Initializes RxBD and then generates traffic on the MRxD[3:0] signals.
    ReceivePacketX(16'h0043, 1'b0, `UNICAST_XFR, 2'h0);    // Initializes RxBD and then generates traffic on the MRxD[3:0] signals.
    ReceivePacketX(16'h0044, 1'b0, `UNICAST_XFR, 2'h0);    // Initializes RxBD and then generates traffic on the MRxD[3:0] signals.
  end

//  begin
//    for(ii=0; ii<10000; ii=ii+1)
//      begin
//        WishboneRead({22'h01, 10'b0}, data_in);  // read back
//        #100;
//      end
//  end
//join

//fork
/*
  begin
    repeat(4)
      begin
        wait(tb_eth_top.ethtop.wishbone.TxStatusWrite);   // wait until tx status is written
        @ (posedge WB_CLK_I)
        #1;
      end
  end
*/  
  begin
    wait(tb_eth_top.ethtop.wishbone.RxStatusWrite);   // wait until rx status is written
  end

join


/*
  SendPacket(16'h0013, 1'b0);
  SendPacket(16'h0014, 1'b0);

  SendPacket(16'h0030, 1'b0);
  SendPacket(16'h0031, 1'b0);
  SendPacket(16'h0032, 1'b0);
  SendPacket(16'h0033, 1'b0);
  SendPacket(16'h0025, 1'b0);
  SendPacket(16'h0045, 1'b0); 
  SendPacket(16'h0025, 1'b0);
  SendPacket(16'h0017, 1'b0);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区精品性| 久久国产精品99精品国产 | 免费成人av资源网| 国产成人欧美日韩在线电影| 91福利小视频| 欧美激情综合网| 久久66热偷产精品| 欧美吻胸吃奶大尺度电影| 国产精品久久看| 国产电影精品久久禁18| 日韩午夜激情视频| 亚洲宅男天堂在线观看无病毒 | 三级不卡在线观看| aa级大片欧美| 久久久久久久综合日本| 日韩和欧美的一区| 欧美午夜精品一区二区三区| 亚洲欧洲日韩在线| 国产成人丝袜美腿| 精品国产伦一区二区三区观看体验| 亚洲欧美另类综合偷拍| 99热这里都是精品| 国产精品天美传媒沈樵| 丰满少妇在线播放bd日韩电影| 日韩手机在线导航| 免费成人在线观看视频| 91精品国产综合久久久蜜臀粉嫩| 亚洲一区二区三区三| 色综合久久久久综合体桃花网| 国产精品萝li| 91理论电影在线观看| 亚洲视频在线观看三级| 午夜激情一区二区| 偷拍一区二区三区| 亚洲香蕉伊在人在线观| 国产精品一区专区| 麻豆久久久久久| 欧美影院午夜播放| 亚洲男人的天堂av| 色拍拍在线精品视频8848| 亚洲午夜三级在线| 欧美在线视频全部完| 亚洲一区在线视频观看| 欧美精品99久久久**| 日本91福利区| 国产亚洲欧美在线| av电影在线观看完整版一区二区| 亚洲精品一二三| 91福利在线播放| 日韩精品电影在线| 久久先锋影音av鲁色资源网| 国产一区二区三区四区在线观看| 日本成人在线看| 91极品视觉盛宴| 艳妇臀荡乳欲伦亚洲一区| 欧美性生交片4| 毛片av一区二区三区| 中文字幕精品—区二区四季| 99久免费精品视频在线观看 | 91麻豆视频网站| 亚洲第一主播视频| 亚洲精品在线免费播放| 成人性生交大片免费看中文| 亚洲免费观看高清完整版在线观看| 欧洲人成人精品| 激情综合五月婷婷| 亚洲欧洲日韩在线| 日韩欧美久久一区| 色综合久久综合| 国产真实乱对白精彩久久| 综合久久久久久久| 欧美zozozo| 欧美午夜精品理论片a级按摩| 久久99精品久久久久久动态图 | 奇米一区二区三区| 国产精品美女久久久久高潮| 欧美午夜精品理论片a级按摩| 狠狠色丁香久久婷婷综合_中| 亚洲婷婷国产精品电影人久久| 91精品国产一区二区三区香蕉| 成人丝袜高跟foot| 蜜桃视频在线观看一区| 亚洲精品国产无套在线观| 久久久久久久国产精品影院| 欧美午夜精品免费| 成人动漫视频在线| 国产一区免费电影| 日日摸夜夜添夜夜添国产精品| 亚洲国产精品v| 欧美videos中文字幕| 欧美中文字幕一二三区视频| 成人av先锋影音| 美女视频一区在线观看| 亚洲大型综合色站| 亚洲色图一区二区| 国产精品久久久久久亚洲伦| 欧美不卡在线视频| 日韩一级高清毛片| 欧美视频中文一区二区三区在线观看| 成人美女在线视频| 国产夫妻精品视频| 韩国毛片一区二区三区| 免费在线视频一区| 日韩在线a电影| 性做久久久久久久免费看| 成人免费在线视频观看| 国产精品日韩成人| 国产欧美日韩卡一| 久久众筹精品私拍模特| 26uuu国产电影一区二区| 日韩午夜电影av| 日韩女优av电影在线观看| 欧美一级在线免费| 日韩视频123| 精品黑人一区二区三区久久| 欧美xingq一区二区| 亚洲精品一区二区三区在线观看 | 亚洲人精品午夜| 中国色在线观看另类| 国产色91在线| 国产精品麻豆一区二区| 亚洲视频在线观看一区| 亚洲蜜臀av乱码久久精品 | 欧美性色综合网| 欧美怡红院视频| 欧美精品18+| 欧美成人video| 欧美激情资源网| 一区二区三区四区蜜桃| 亚洲电影视频在线| 久久99精品久久久久婷婷| 国产福利不卡视频| 91视视频在线直接观看在线看网页在线看 | 国产精品超碰97尤物18| 亚洲精品国产品国语在线app| 亚洲午夜电影在线观看| 日本欧洲一区二区| 国产高清久久久久| 在线中文字幕不卡| 日韩欧美一级二级| 中文字幕在线不卡一区二区三区| 国产精品久久免费看| 亚洲一区二区三区四区在线免费观看| 日韩成人一级大片| 国产高清精品在线| 欧美日韩午夜在线| 2024国产精品视频| 亚洲欧美另类久久久精品 | 日韩精品一区国产麻豆| 国产精品美女一区二区在线观看| 亚洲美腿欧美偷拍| 韩国av一区二区三区在线观看| 粉嫩av一区二区三区在线播放| 一本大道综合伊人精品热热| 日韩情涩欧美日韩视频| 亚洲视频免费在线观看| 蜜臀av一区二区三区| 色综合天天狠狠| 精品国产91久久久久久久妲己 | 亚洲女人小视频在线观看| 日韩avvvv在线播放| 99免费精品视频| 欧美tk—视频vk| 亚洲一区二区在线视频| 国产成人av福利| 欧美日韩高清在线播放| 中文字幕av在线一区二区三区| 日本欧美肥老太交大片| 91视频在线看| 国产偷国产偷亚洲高清人白洁| 亚瑟在线精品视频| 91浏览器在线视频| 国产欧美精品在线观看| 狂野欧美性猛交blacked| 色欧美片视频在线观看| 国产精品人人做人人爽人人添| 婷婷国产v国产偷v亚洲高清| 91同城在线观看| 国产精品久久夜| 国产电影精品久久禁18| 日韩美女视频一区二区在线观看| 亚洲成人av资源| 欧日韩精品视频| 亚洲欧洲无码一区二区三区| 国产成人精品一区二区三区四区 | 国产一区亚洲一区| 日韩欧美黄色影院| 秋霞午夜av一区二区三区| 欧美日韩二区三区| 一区二区三区中文免费| 成人福利电影精品一区二区在线观看| 久久久美女艺术照精彩视频福利播放| 视频一区在线播放| 欧美日韩激情在线| 亚洲国产日韩一级| 欧美精品乱码久久久久久按摩| 亚洲国产视频a| 欧美日韩一区视频| 午夜久久久久久久久久一区二区| 在线免费av一区|