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

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

?? tb_ethernet.v

?? 使用方法: 以太網編程,拷貝到硬盤
?? V
?? 第 1 頁 / 共 5 頁
字號:
            i2 = i2 + 1;
            #Tp;
          end
        end
      join
      if((clk_div[7:0] == 0) || (clk_div[7:0] == 1) || (clk_div[7:0] == 2) || (clk_div[7:0] == 3))
      begin
        if((i1 == i2) && (i1 == 2))
        begin
        end
        else
        begin
          fail = fail + 1;
          test_fail("Clock divider of MII module did'nt divide frequency corectly (it should divide by 2)");
        end
      end
      else
      begin
        if((i1 == i2) && (i1 == {clk_div[7:1], 1'b0}))
        begin
        end
        else
        begin
          fail = fail + 1;
          test_fail("Clock divider of MII module did'nt divide frequency corectly");
        end
      end
    end
    if(fail == 0)
      test_ok;
    else
      fail = 0;
  end
  
  
  ////////////////////////////////////////////////////////////////////
  ////                                                            ////
  ////  Test various readings from 'real' phy registers.          ////
  ////                                                            ////
  ////////////////////////////////////////////////////////////////////
  if (test_num == 1) // Test various readings from 'real' phy registers.
  begin
    // TEST 1: VARIOUS READINGS FROM 'REAL' PHY REGISTERS
    test_name   = "TEST 1: VARIOUS READINGS FROM 'REAL' PHY REGISTERS";
    `TIME; $display("  TEST 1: VARIOUS READINGS FROM 'REAL' PHY REGISTERS");
  
    // set the fastest possible MII
    clk_div = 0;
    mii_set_clk_div(clk_div[7:0]);
    // set address
    reg_addr = 5'h1F;
    phy_addr = 5'h1;
    while(reg_addr >= 5'h4)
    begin
      // read request
      #Tp mii_read_req(phy_addr, reg_addr);
      check_mii_busy; // wait for read to finish
      // read data
      wbm_read(`ETH_MIIRX_DATA, phy_data, 4'hF, 1, wbm_init_waits, wbm_subseq_waits);
      if (phy_data !== 16'hDEAD)
      begin
        test_fail("Wrong data was read from PHY from 'not used' address space");
        fail = fail + 1;
      end
      if (reg_addr == 5'h4) // go out of for loop
        reg_addr = 5'h3;
      else
        reg_addr = reg_addr - 5'h9;
    end
  
    // set address
    reg_addr = 5'h3;
    // read request
    #Tp mii_read_req(phy_addr, reg_addr);
    check_mii_busy; // wait for read to finish
    // read data
    wbm_read(`ETH_MIIRX_DATA, phy_data, 4'hF, 1, wbm_init_waits, wbm_subseq_waits);
    if (phy_data !== {`PHY_ID2, `MAN_MODEL_NUM, `MAN_REVISION_NUM})
    begin
      test_fail("Wrong data was read from PHY from ID register 2");
      fail = fail + 1;
    end
    if(fail == 0)
      test_ok;
    else
      fail = 0;
  end


  ////////////////////////////////////////////////////////////////////
  ////                                                            ////
  ////  Test various writings to 'real' phy registers (control    ////
  ////  and non writable registers)                               ////
  ////                                                            ////
  ////////////////////////////////////////////////////////////////////
  if (test_num == 2) // 
  begin
    // TEST 2: VARIOUS WRITINGS TO 'REAL' PHY REGISTERS ( CONTROL AND NON WRITABLE REGISTERS )
    test_name   = "TEST 2: VARIOUS WRITINGS TO 'REAL' PHY REGISTERS ( CONTROL AND NON WRITABLE REGISTERS )";
    `TIME; $display("  TEST 2: VARIOUS WRITINGS TO 'REAL' PHY REGISTERS ( CONTROL AND NON WRITABLE REGISTERS )");
  
    // negate data and try to write into unwritable register
    tmp_data = ~phy_data;
    // write request
    #Tp mii_write_req(phy_addr, reg_addr, tmp_data);
    check_mii_busy; // wait for write to finish
    // read request
    #Tp mii_read_req(phy_addr, reg_addr);
    check_mii_busy; // wait for read to finish
    // read data
    wbm_read(`ETH_MIIRX_DATA, tmp_data, 4'hF, 1, wbm_init_waits, wbm_subseq_waits);
    if (tmp_data !== phy_data)
    begin
      test_fail("Data was written into unwritable PHY register - ID register 2");
      fail = fail + 1;
    end
  
    // set address
    reg_addr = 5'h0; // control register
    // read request
    #Tp mii_read_req(phy_addr, reg_addr);
    check_mii_busy; // wait for read to finish
    // read data
    wbm_read(`ETH_MIIRX_DATA, tmp_data, 4'hF, 1, wbm_init_waits, wbm_subseq_waits);
    // write request
    phy_data = 16'h7DFF; // bit 15 (RESET bit) and bit 9 are self clearing bits
    #Tp mii_write_req(phy_addr, reg_addr, phy_data);
    check_mii_busy; // wait for write to finish
    // read request
    #Tp mii_read_req(phy_addr, reg_addr);
    check_mii_busy; // wait for read to finish
    // read data
    wbm_read(`ETH_MIIRX_DATA, phy_data, 4'hF, 1, wbm_init_waits, wbm_subseq_waits);
    if (phy_data !== 16'h7DFF)
    begin
      test_fail("Data was not correctly written into OR read from writable PHY register - control register");
      fail = fail + 1;
    end
    // write request
    #Tp mii_write_req(phy_addr, reg_addr, tmp_data);
    check_mii_busy; // wait for write to finish
    // read request
    #Tp mii_read_req(phy_addr, reg_addr);
    check_mii_busy; // wait for read to finish
    // read data
    wbm_read(`ETH_MIIRX_DATA, phy_data, 4'hF, 1, wbm_init_waits, wbm_subseq_waits);
    if (phy_data !== tmp_data)
    begin
      test_fail("Data was not correctly written into OR read from writable PHY register - control register");
      fail = fail + 1;
    end
    if(fail == 0)
      test_ok;
    else
      fail = 0;
  end


  ////////////////////////////////////////////////////////////////////
  ////                                                            ////
  ////  Test reset phy through mii management module              ////
  ////                                                            ////
  ////////////////////////////////////////////////////////////////////
  if (test_num == 3) // 
  begin
    // TEST 3: RESET PHY THROUGH MII MANAGEMENT MODULE
    test_name   = "TEST 3: RESET PHY THROUGH MII MANAGEMENT MODULE";
    `TIME; $display("  TEST 3: RESET PHY THROUGH MII MANAGEMENT MODULE");
  
    // set address
    reg_addr = 5'h0; // control register
    // write request
    phy_data = 16'h7DFF; // bit 15 (RESET bit) and bit 9 are self clearing bits
    #Tp mii_write_req(phy_addr, reg_addr, phy_data);
    check_mii_busy; // wait for write to finish
    // read request
    #Tp mii_read_req(phy_addr, reg_addr);
    check_mii_busy; // wait for read to finish
    // read data
    wbm_read(`ETH_MIIRX_DATA, tmp_data, 4'hF, 1, wbm_init_waits, wbm_subseq_waits);
    if (phy_data !== tmp_data)
    begin
      test_fail("Data was not correctly written into OR read from writable PHY register - control register");
      fail = fail + 1;
    end
    // set reset bit - selfclearing bit in PHY
    phy_data = phy_data | 16'h8000;
    // write request
    #Tp mii_write_req(phy_addr, reg_addr, phy_data);
    check_mii_busy; // wait for write to finish
    // read request
    #Tp mii_read_req(phy_addr, reg_addr);
    check_mii_busy; // wait for read to finish
    // read data
    wbm_read(`ETH_MIIRX_DATA, tmp_data, 4'hF, 1, wbm_init_waits, wbm_subseq_waits);
    // check self clearing of reset bit
    if (tmp_data[15] !== 1'b0)
    begin
      test_fail("Reset bit should be self cleared - control register");
      fail = fail + 1;
    end
    // check reset value of control register
    if (tmp_data !== {2'h0, (`LED_CFG1 || `LED_CFG2), `LED_CFG1, 3'h0, `LED_CFG3, 8'h0})
    begin
      test_fail("PHY was not reset correctly AND/OR reset bit not self cleared");
      fail = fail + 1;
    end
    if(fail == 0)
      test_ok;
    else
      fail = 0;
  end


  ////////////////////////////////////////////////////////////////////
  ////                                                            ////
  ////  Test 'walking one' across phy address (with and without   ////
  ////  preamble)                                                 ////
  ////                                                            ////
  ////////////////////////////////////////////////////////////////////
  if (test_num == 4) // 
  begin
    // TEST 4: 'WALKING ONE' ACROSS PHY ADDRESS ( WITH AND WITHOUT PREAMBLE )
    test_name   = "TEST 4: 'WALKING ONE' ACROSS PHY ADDRESS ( WITH AND WITHOUT PREAMBLE )";
    `TIME; $display("  TEST 4: 'WALKING ONE' ACROSS PHY ADDRESS ( WITH AND WITHOUT PREAMBLE )");
  
    // set PHY to test mode
    #Tp eth_phy.test_regs(1); // set test registers (wholy writable registers) and respond to all PHY addresses
    for (i = 0; i <= 1; i = i + 1)
    begin
      #Tp eth_phy.preamble_suppresed(i); 
      #Tp eth_phy.clear_test_regs;
      // MII mode register
      wbm_write(`ETH_MIIMODER, (`ETH_MIIMODER_NOPRE & {23'h0, i, 8'h0}), 4'hF, 1, wbm_init_waits, 
                wbm_subseq_waits);
      // walk one across phy address
      for (phy_addr = 5'h1; phy_addr > 5'h0; phy_addr = phy_addr << 1)
      begin
        reg_addr = $random;
        tmp_data = $random;
        // write request
        #Tp mii_write_req(phy_addr, reg_addr, tmp_data);
        check_mii_busy; // wait for write to finish
        // read request
        #Tp mii_read_req(phy_addr, reg_addr);
        check_mii_busy; // wait for read to finish
        // read data
        wbm_read(`ETH_MIIRX_DATA, phy_data, 4'hF, 1, wbm_init_waits, wbm_subseq_waits);
        #Tp;
        if (phy_data !== tmp_data)
        begin
          if (i)
            test_fail("Data was not correctly written into OR read from test registers (without preamble)");
          else
            test_fail("Data was not correctly written into OR read from test registers (with preamble)");
          fail = fail + 1;
        end
        @(posedge wb_clk);
        #Tp;
      end
    end
    // set PHY to normal mode
    #Tp eth_phy.test_regs(0);
    #Tp eth_phy.preamble_suppresed(0);
    // MII mode register
    wbm_write(`ETH_MIIMODER, 32'h0, 4'hF, 1, wbm_init_waits, wbm_subseq_waits);
    if(fail == 0)
      test_ok;
    else
      fail = 0;
  end


  ////////////////////////////////////////////////////////////////////
  ////                                                            ////
  ////  Test 'walking one' across phy's register address (with    ////
  ////  and without preamble)                                     ////
  ////                                                            ////
  ////////////////////////////////////////////////////////////////////
  if (test_num == 5) // 
  begin
    // TEST 5: 'WALKING ONE' ACROSS PHY'S REGISTER ADDRESS ( WITH AND WITHOUT PREAMBLE )
    test_name   = "TEST 5: 'WALKING ONE' ACROSS PHY'S REGISTER ADDRESS ( WITH AND WITHOUT PREAMBLE )";
    `TIME; $display("  TEST 5: 'WALKING ONE' ACROSS PHY'S REGISTER ADDRESS ( WITH AND WITHOUT PREAMBLE )");
  
    // set PHY to test mode
    #Tp eth_phy.test_regs(1); // set test registers (wholy writable registers) and respond to all PHY addresses
    for (i = 0; i <= 1; i = i + 1)
    begin
      #Tp eth_phy.preamble_suppresed(i);
      #Tp eth_phy.clear_test_regs;
      // MII mode register
      wbm_write(`ETH_MIIMODER, (`ETH_MIIMODER_NOPRE & {23'h0, i, 8'h0}), 4'hF, 1, wbm_init_waits, 
                wbm_subseq_waits);
      // walk one across reg address
      for (reg_addr = 5'h1; reg_addr > 5'h0; reg_addr = reg_addr << 1)
      begin
        phy_addr = $random;
        tmp_data = $random;
        // write request
        #Tp mii_write_req(phy_addr, reg_addr, tmp_data);
        check_mii_busy; // wait for write to finish
        // read request
        #Tp mii_read_req(phy_addr, reg_addr);
        check_mii_busy; // wait for read to finish
        // read data
        wbm_read(`ETH_MIIRX_DATA, phy_data, 4'hF, 1, wbm_init_waits, wbm_subseq_waits);
        #Tp;
        if (phy_data !== tmp_data)
        begin
          if (i)
            test_fail("Data was not correctly written into OR read from test registers (without preamble)");
          else
            test_fail("Data was not correctly written into OR read from test registers (with preamble)");
          fail = fail + 1;
        end
        @(posedge wb_clk);
        #Tp;
      end
    end
    // set PHY to normal mode
    #Tp eth_phy.test_regs(0);
    #Tp eth_phy.preamble_suppresed(0);
    // MII mode register
    wbm_write(`ETH_MIIMODER, 32'h0, 4'hF, 1, wbm_init_waits, wbm_subseq_waits);
    if(fail == 0)
      test_ok;
    else
      fail = 0;
  end


  ////////////////////////////////////////////////////////////////////
  ////                                                            ////
  ////  Test 'walking one' across phy's data (with and without    ////
  ////  preamble)                                                 ////
  ////                                                            ////
  ////////////////////////////////////////////////////////////////////
  if (test_num == 6) // 
  begin
    // TEST 6: 'WALKING ONE' ACROSS PHY'S DATA ( WITH AND WITHOUT PREAMBLE )
    test_name   = "TEST 6: 'WALKING ONE' ACROSS PHY'S DATA ( WITH AND WITHOUT PREAMBLE )";
    `TIME; $display("  TEST 6: 'WALKING ONE' ACROSS PHY'S DATA ( WITH AND WITHOUT PREAMBLE )");
  
    // set PHY to test mode
    #Tp e

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区欧美久久| 国产盗摄一区二区三区| 精品一区二区三区免费播放| av在线不卡网| 精品对白一区国产伦| 亚洲综合色婷婷| 成人avav在线| 久久久久国产精品免费免费搜索| 一区二区三区美女| 成人成人成人在线视频| 久久综合精品国产一区二区三区| 亚洲电影在线播放| 91啪九色porn原创视频在线观看| 久久久综合精品| 久久成人免费网| 91精品久久久久久蜜臀| 亚洲香肠在线观看| 色婷婷国产精品久久包臀| 亚洲国产精华液网站w| 伦理电影国产精品| 欧美另类久久久品| 亚洲国产综合色| 欧美私人免费视频| 亚洲精选视频在线| av一区二区不卡| 国产精品美女久久久久aⅴ国产馆| 国产资源在线一区| 久久亚洲春色中文字幕久久久| 天天影视网天天综合色在线播放| 色哟哟精品一区| 亚洲美女少妇撒尿| 色婷婷av一区二区三区大白胸| 精品福利在线导航| 国内精品视频666| 久久这里只精品最新地址| 久久国产视频网| 久久久久国产成人精品亚洲午夜| 精品一区二区三区免费观看| 久久人人97超碰com| 国产制服丝袜一区| 欧美国产精品v| 99re在线视频这里只有精品| 亚洲乱码国产乱码精品精的特点| 91偷拍与自偷拍精品| 亚洲精品亚洲人成人网| 欧美在线观看视频一区二区三区| 香蕉影视欧美成人| 欧美一区二区人人喊爽| 精品一区二区在线播放| 欧美国产乱子伦| 一本久久精品一区二区| 天天射综合影视| 欧美电影免费观看高清完整版在线观看 | 日韩欧美国产综合| 黄色资源网久久资源365| 国产亚洲精品精华液| 色网站国产精品| 同产精品九九九| 欧美精品一区二| 99精品国产一区二区三区不卡| 性感美女极品91精品| 国产欧美日韩中文久久| 色狠狠桃花综合| 毛片av中文字幕一区二区| 国产欧美日韩在线| 欧美日韩国产中文| 国产伦精品一区二区三区视频青涩 | 国产欧美一二三区| 欧美日韩亚州综合| 国产在线播放一区三区四| 亚洲四区在线观看| 日韩精品一区国产麻豆| 91亚洲精华国产精华精华液| 美女诱惑一区二区| 亚洲欧美日韩久久| 精品久久国产97色综合| 在线观看成人小视频| 国产精品99精品久久免费| 亚洲一区二区三区四区不卡| 久久婷婷久久一区二区三区| 欧美日免费三级在线| 成人性生交大片免费看中文| 天堂成人国产精品一区| 1区2区3区欧美| 久久综合九色综合久久久精品综合 | 高清不卡一区二区在线| 午夜伦欧美伦电影理论片| 国产精品全国免费观看高清| 日韩手机在线导航| 欧美系列一区二区| 99精品热视频| 国产精品中文字幕一区二区三区| 亚洲成人一区二区在线观看| 欧美国产精品劲爆| 久久综合九色综合97婷婷| 91精品午夜视频| 在线亚洲高清视频| 97精品久久久午夜一区二区三区| 精品一区二区三区久久| 天堂精品中文字幕在线| 亚洲bt欧美bt精品| 亚洲一区在线观看免费| 国产精品久久99| 国产欧美精品一区二区色综合| 欧美一级二级三级乱码| 在线中文字幕不卡| 91啪九色porn原创视频在线观看| 粉嫩13p一区二区三区| 国产一区二区三区免费在线观看| 琪琪久久久久日韩精品| 婷婷夜色潮精品综合在线| 亚洲电影视频在线| 日韩和的一区二区| 亚洲成年人网站在线观看| 午夜免费久久看| 欧美aaaaaa午夜精品| 青草av.久久免费一区| 蜜臀av一区二区在线免费观看| 日本成人中文字幕在线视频| 免费人成网站在线观看欧美高清| 亚洲一线二线三线视频| 丝袜美腿亚洲一区二区图片| 午夜精品久久久久久久| 午夜精品久久久| 人人超碰91尤物精品国产| 美日韩黄色大片| 国产成人激情av| 91在线免费视频观看| 在线亚洲精品福利网址导航| 欧美丰满少妇xxxbbb| 日韩欧美国产三级电影视频| 久久精品亚洲乱码伦伦中文 | 欧美偷拍一区二区| 欧美一区二区三区四区视频| 日韩精品一区二区三区四区视频| 欧美精品一区二区三区在线| 国产欧美精品一区二区色综合| 亚洲视频一二三| 丝袜国产日韩另类美女| 国产一区二三区好的| a美女胸又www黄视频久久| 欧美在线一区二区三区| 日韩一区和二区| 久久一夜天堂av一区二区三区| 国产精品网站在线观看| 一区二区三区精品久久久| 天天影视涩香欲综合网| 大尺度一区二区| 欧美性大战久久| 精品99一区二区| 亚洲精品乱码久久久久久黑人| 青青草伊人久久| 成人在线综合网| 欧美精选午夜久久久乱码6080| 精品粉嫩aⅴ一区二区三区四区| 国产精品对白交换视频| 麻豆成人综合网| 一本大道综合伊人精品热热| 日韩一级精品视频在线观看| 国产欧美一区视频| 午夜久久久久久久久久一区二区| 久久精品国产久精国产爱| 色综合久久久久久久久久久| 这里只有精品电影| 亚洲欧洲国产日本综合| 美女网站色91| 欧美性videosxxxxx| 国产精品伦理一区二区| 蜜桃免费网站一区二区三区| av激情亚洲男人天堂| 日韩三区在线观看| 亚洲v精品v日韩v欧美v专区 | 久99久精品视频免费观看| 91久久久免费一区二区| 久久精品一区四区| 亚洲gay无套男同| 一本久久a久久免费精品不卡| 国产日本欧美一区二区| 免费看日韩精品| 精品视频免费在线| 综合色中文字幕| 国产91富婆露脸刺激对白| 欧美一二三区精品| 丝瓜av网站精品一区二区| 日本高清免费不卡视频| 亚洲欧洲国产日本综合| 成年人网站91| 国产精品欧美一级免费| 国产福利一区在线观看| 欧美精品一区在线观看| 免费在线观看精品| 日韩欧美国产一区二区三区| 日日摸夜夜添夜夜添精品视频| 欧美做爰猛烈大尺度电影无法无天| 国产精品婷婷午夜在线观看| 成人综合在线视频| 中文字幕欧美国产| 国产成人综合亚洲91猫咪| 国产调教视频一区| 国产寡妇亲子伦一区二区|