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

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

?? uart_int_tb.vhd

?? UART參考設計
?? VHD
?? 第 1 頁 / 共 3 頁
字號:
    -- Wait for INTR high
    i := 1;
    loop
      if (i < WAIT_TIMEOUT) then
        wait for CLK_PERIOD;
        exit when INTR = '1';
        i := i + 1;
      else
        assert (false) report"Interrupt Generation Failed"
        severity failure;
      end if;
    end loop;

    -- Check if INTR is pending due to MODEM Status change
    read_reg (IIR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    intLevel <= conv_integer(regData_readBack(2 downto 1));
    assert regData_readBack = "00000000"
      report"Invalid IIR"
      severity failure;

    -- Read MSR to reset the MODEM Status Interrupt
    read_reg (MSR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    assert regData_readBack = "00010001"
      report"Invalid MSR"
      severity failure;

    -- Read MSR and check
    read_reg (MSR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    assert regData_readBack = "00010000"
      report"Invalid MSR"
      severity failure;

    -- Check if INTR is reset to no interrupt pending
    read_reg (IIR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    intLevel <= conv_integer(regData_readBack(2 downto 1));
    assert regData_readBack = "00000001"
      report"Invalid IIR"
      severity failure;

    CTSn <= '1'; -- MODEM signal changed again

    -- Wait for INTR high
    i := 1;
    loop
      if (i < WAIT_TIMEOUT) then
        wait for CLK_PERIOD;
        exit when INTR = '1';
        i := i + 1;
      else
        assert (false) report"Interrupt Generation Failed"
        severity failure;
      end if;
    end loop;

    -- Check if INTR is pending due to MODEM Status change
    read_reg (IIR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    intLevel <= conv_integer(regData_readBack(2 downto 1));
    assert regData_readBack = "00000000"
      report"Invalid IIR"
      severity failure;

    -- Read MSR to reset the MODEM Status Interrupt
    read_reg (MSR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    assert regData_readBack = "00000001"
      report"Invalid MSR"
      severity failure;

    -- Read MSR and check
    read_reg (MSR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    assert regData_readBack = "00000000"
      report"Invalid MSR"
      severity failure;

    -- Check if INTR is reset to no interrupt pending
    read_reg (IIR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    intLevel <= conv_integer(regData_readBack(2 downto 1));
    assert regData_readBack = "00000001"
      report"Invalid IIR"
      severity failure;


    -- Test 5 ----------------------------------------------------
    --   Mixed level 1,2 interrupt test
    if not EOT then
       wait until EOT;
    end if;
    TestID <= 5;
    
    -- IER Intialization
    --   bit 3 : 0, disable modem status interrupt
    --   bit 2 : 1, enable receiver line status interrupt
    --   bit 1 : 0, disable tranmitter holding register empty interrupt
    --   bit 0 : 1, enable received data available interrupt
    write_reg (IER,"00000101",CS,ADSn,WRn,A,DIN);

    -- LCR Intialization
    --   bit 6 : 0, do not set break
    --   bit 5 : 0, not stick parity
    --   bit 4 : 1, even parity selected
    --   bit 3 : 1, parity enabled
    --   bit 2 : 0, 1 stop bit
    --   bit 1 : 1, 8 data bit (bit[1-0]="11")
    --   bit 0 : 1, 8 data bit (bit[1-0]="11")
    write_reg (LCR,"00011011",CS,ADSn,WRn,A,DIN);

    -- trigger okToReceiveSIN to get character from SIN
    okToReceiveSIN <= '1',
                      '0' after 1 ns;

    -- Wait for INTR high
    i := 1;
    loop
      if (i < WAIT_TIMEOUT) then
        wait for CLK_PERIOD;
        exit when INTR = '1';
        i := i + 1;
      else
        assert (false) report"Interrupt Generation Failed"
        severity failure;
      end if;
    end loop;

    -- Check if INTR is pending due to Receiver Data Available
    read_reg (IIR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    intLevel <= conv_integer(regData_readBack(2 downto 1));
    assert regData_readBack = "00000100"
      report"Invalid IIR"
      severity failure;

    -- Read and Check LSR (check if "Data Ready" flag at bit 0 is set)
    read_reg (LSR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    assert regData_readBack(0) = '1'
      report"Receiver Data Ready bit in LSR is not set"
      severity failure;

    -- Read and check RBR
    read_reg (RBR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    assert regData_readBack = "10010010"
      report"Invalid RBR"
      severity failure;

    -- Read and check LSR (check if "Data Ready" flag at bit 0 is cleared)
    read_reg (LSR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    assert regData_readBack = "01100000"
      report"Invalid LSR"
      severity failure;

    -- Wait for INTR high
    i := 1;
    loop
      if (i < WAIT_TIMEOUT) then
        wait for CLK_PERIOD;
        exit when INTR = '1';
        i := i + 1;
      else
        assert (false) report"Interrupt Generation Failed"
        severity failure;
      end if;
    end loop;

    -- Check if INTR is pending due to Parity Error
    read_reg (IIR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    intLevel <= conv_integer(regData_readBack(2 downto 1));
    assert regData_readBack = "00000110"
      report"Invalid IIR"
      severity failure;

    -- Read and check RBR
    -- A RBR read clears this RxRDY flag in LSR bit 1.  Because of this, a
    -- Receiver Data Available interrupt will not be generated right after 
    -- the Parity Error interrupt is cleared by LSR read.
    read_reg (RBR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    assert regData_readBack = "10010010"
      report"Invalid RBR"
      severity failure;

    -- Read and check LSR (check if "Parity Error" flag at bit 2 is set)
    read_reg (LSR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    assert regData_readBack = "01100100"
      report"Invalid LSR"
      severity failure;

    -- Read and check LSR (read again to see if it's changed by LSR read)
    read_reg (LSR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    assert regData_readBack = "01100000"
      report"Invalid LSR"
      severity failure;


    -- Test 6 ----------------------------------------------------
    --   Mixed level 1,2,3 interrupt test
    if not EOT then
       wait until EOT;
    end if;
    TestID <= 6;
    
    -- IER Intialization
    --   bit 3 : 0, disable modem status interrupt
    --   bit 2 : 1, enable receiver line status interrupt
    --   bit 1 : 1, enable tranmitter holding register empty interrupt
    --   bit 0 : 1, enable received data available interrupt
    write_reg (IER,"00000111",CS,ADSn,WRn,A,DIN);

    -- LCR Intialization
    --   bit 6 : 0, do not set break
    --   bit 5 : 0, not stick parity
    --   bit 4 : 0, odd parity selected
    --   bit 3 : 1, parity enabled
    --   bit 2 : 0, 1 stop bit
    --   bit 1 : 1, 8 data bit (bit[1-0]="11")
    --   bit 0 : 1, 8 data bit (bit[1-0]="11")
    write_reg (LCR,"00001011",CS,ADSn,WRn,A,DIN);

    -- trigger okToReceiveSIN to get character from SIN
    okToReceiveSIN <= '1',
                      '0' after 1 ns;

    -- Wait for INTR high
    i := 1;
    loop
      if (i < WAIT_TIMEOUT) then
        wait for CLK_PERIOD;
        exit when INTR = '1';
        i := i + 1;
      else
        assert (false) report"Interrupt Generation Failed"
        severity failure;
      end if;
    end loop;

    -- Check if INTR is pending due to THR empty
    read_reg (IIR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    intLevel <= conv_integer(regData_readBack(2 downto 1));
    assert regData_readBack = "00000010"
      report"Invalid IIR"
      severity failure;

    -- Write data into THR, 1st time
    write_reg (THR,"00001011",CS,ADSn,WRn,A,DIN);

    -- Wait for INTR high
    i := 1;
    loop
      if (i < WAIT_TIMEOUT) then
        wait for CLK_PERIOD;
        exit when INTR = '1';
        i := i + 1;
      else
        assert (false) report"Interrupt Generation Failed"
        severity failure;
      end if;
    end loop;

    -- Check if 2nd INTR is pending due to THR empty
    read_reg (IIR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    intLevel <= conv_integer(regData_readBack(2 downto 1));
    assert regData_readBack = "00000010"
      report"Invalid IIR"
      severity failure;

    -- Write data into THR, 2nd time
    write_reg (THR,"00011011",CS,ADSn,WRn,A,DIN);
    
    -- Wait for INTR high
    i := 1;
    loop
      if (i < WAIT_TIMEOUT) then
        wait for CLK_PERIOD;
        exit when INTR = '1';
        i := i + 1;
      else
        assert (false) report"Interrupt Generation Failed"
        severity failure;
      end if;
    end loop;

    -- Check if 3rd INTR is pending due to Receiver Data Available
    read_reg (IIR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    intLevel <= conv_integer(regData_readBack(2 downto 1));
    assert regData_readBack = "00000100"
      report"Invalid IIR"
      severity failure;

    -- Wait until THR empty
    i := 1;
    loop
      if (i < WAIT_TIMEOUT) then
        wait for CLK_PERIOD;
        -- Read LSR (check if "THRE" flag at bit 5 is set)
        read_reg (LSR,regData_readBack,CS,ADSn,RDn,A,DOUT);
        exit when regData_readBack(5) = '1';
        i := i + 1;
      else
        assert (false) report"Data Transmission Failed"
        severity failure;
      end if;
    end loop;

    -- Read and check RBR
    read_reg (RBR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    assert regData_readBack = "10010010"
      report"Invalid RBR"
      severity failure;

    -- Check if IIR is reset due to THR empty
    read_reg (IIR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    intLevel <= conv_integer(regData_readBack(2 downto 1));
    assert regData_readBack = "00000010"
      report"Invalid IIR"
      severity failure;

    -- Write data into THR, 3rd time
    write_reg (THR,"00101011",CS,ADSn,WRn,A,DIN);

    -- Wait for INTR high
    i := 1;
    loop
      if (i < WAIT_TIMEOUT) then
        wait for CLK_PERIOD;
        exit when INTR = '1';
        i := i + 1;
      else
        assert (false) report"Interrupt Generation Failed"
        severity failure;
      end if;
    end loop;

    -- Check if 3rd INTR is pending due to Parity Error
    read_reg (IIR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    intLevel <= conv_integer(regData_readBack(2 downto 1));
    assert regData_readBack = "00000110"
      report"Invalid IIR"
      severity failure;

    -- Read and check RBR
    -- A RBR read clears this RxRDY flag in LSR bit 1.  Because of this, a
    -- Receiver Data Available interrupt will not be generated right after 
    -- the Parity Error interrupt is cleared by LSR read.
    read_reg (RBR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    assert regData_readBack = "10010010"
      report"Invalid RBR"
      severity failure;

    -- Read and check LSR (check if "Parity Error" flag at bit 2 is set)
    read_reg (LSR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    assert regData_readBack(2) = '1'
      report"Invalid LSR"
      severity failure;

    -- Check if IIR is reset due to LSR read
    read_reg (IIR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    intLevel <= conv_integer(regData_readBack(2 downto 1));
    assert regData_readBack /= "00000110"
      report"Invalid IIR"
      severity failure;

    -- Read and check LSR (check if "Parity Error" flag is cleared by LSR read)
    read_reg (LSR,regData_readBack,CS,ADSn,RDn,A,DOUT);
    assert regData_readBack(2) = '0'
      report"Invalid LSR"
      severity failure;

    -- Clear IER
    write_reg (IER,"00000000",CS,ADSn,WRn,A,DIN);


    -- end of tests ----------------------------------------------
    assert (false)
      report"End of UART Interrupt Tests ....."
      severity failure;

   end process UART_Stim_Proc;


-- *** end of test bench ***

end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产一二三| 欧美三级欧美一级| 性久久久久久久久久久久| 日韩免费电影一区| 91麻豆产精品久久久久久| 美女网站色91| 亚洲午夜精品17c| 国产精品视频观看| 欧美一区二区精品在线| 91视频观看免费| 国产九九视频一区二区三区| 亚洲第一精品在线| 亚洲美女电影在线| 国产日韩欧美电影| 欧美mv和日韩mv的网站| 欧洲av在线精品| 成人av免费观看| 国产在线观看免费一区| 日韩精品一卡二卡三卡四卡无卡| 最新不卡av在线| 久久久国产综合精品女国产盗摄| 欧美一卡2卡3卡4卡| 在线免费亚洲电影| 97久久人人超碰| av在线播放一区二区三区| 国产精品一区一区三区| 国产在线精品一区二区不卡了 | 久久免费午夜影院| 欧美丰满高潮xxxx喷水动漫| 欧美午夜精品久久久久久孕妇 | 午夜精品一区二区三区电影天堂 | 亚洲成人资源网| 一区二区在线免费观看| 中文字幕一区日韩精品欧美| 日本一二三四高清不卡| 国产丝袜欧美中文另类| 综合欧美亚洲日本| 亚洲欧美综合另类在线卡通| 国产精品午夜久久| 国产精品激情偷乱一区二区∴| 国产嫩草影院久久久久| 中文字幕免费一区| 国产精品久久久久精k8 | 亚洲综合小说图片| 亚洲少妇最新在线视频| 亚洲男人天堂av网| 一区二区久久久| 亚洲成人第一页| 捆绑调教美女网站视频一区| 久久草av在线| 国产精品1区二区.| 成人性色生活片| 91麻豆免费看片| 欧美精品成人一区二区三区四区| 欧美一区二区网站| 精品国产乱码久久久久久牛牛 | 午夜一区二区三区在线观看| 午夜精品视频一区| 麻豆成人免费电影| 国产盗摄视频一区二区三区| 成人一区二区三区视频在线观看| 99久久国产综合精品女不卡| 欧美伊人精品成人久久综合97| 欧美日韩电影一区| 欧美大片一区二区| 亚洲国产精品v| 一二三区精品视频| 欧美a级理论片| 懂色中文一区二区在线播放| 色又黄又爽网站www久久| 在线成人午夜影院| 精品电影一区二区| 亚洲桃色在线一区| 美女视频黄 久久| 成人激情小说网站| 欧美日韩一区国产| 久久综合五月天婷婷伊人| 国产精品麻豆99久久久久久| 一区二区高清在线| 麻豆视频一区二区| 99精品热视频| 日韩亚洲国产中文字幕欧美| 欧美国产精品一区| 视频一区中文字幕| 成人夜色视频网站在线观看| 欧美日韩在线播放三区| 久久久99精品免费观看不卡| 亚洲综合区在线| 国产二区国产一区在线观看| 欧美手机在线视频| 欧美极品aⅴ影院| 午夜激情综合网| 播五月开心婷婷综合| 在线播放91灌醉迷j高跟美女 | 99久久精品久久久久久清纯| 欧美一区二区不卡视频| 中文字幕一区二区三区不卡在线 | 国产精品久久久久精k8| 日韩在线一二三区| 色综合久久久网| 国产欧美一区视频| 久久国产婷婷国产香蕉| 欧美色图天堂网| 中文字幕制服丝袜成人av | 国产成人一区二区精品非洲| 欧美男男青年gay1069videost| 国产精品欧美极品| 久久99九九99精品| 欧美绝品在线观看成人午夜影视| 亚洲欧美在线aaa| 国产精品资源在线看| 欧美一区二区三区在线电影| 亚洲综合一二三区| 91美女在线看| 亚洲丝袜美腿综合| 不卡的av在线播放| 中文欧美字幕免费| 国产精品一区二区三区99| 日韩你懂的在线播放| 亚洲成人在线观看视频| 欧美最新大片在线看| 最新不卡av在线| av在线这里只有精品| 国产精品三级在线观看| 国产在线精品国自产拍免费| 日韩欧美国产成人一区二区| 免费欧美日韩国产三级电影| 欧美日韩国产一级二级| 亚洲一区中文日韩| 欧美伊人精品成人久久综合97| 一区二区三区在线观看国产| 99re8在线精品视频免费播放| 国产精品国产成人国产三级| 99麻豆久久久国产精品免费优播| 中文字幕av一区二区三区免费看 | 国产亚洲福利社区一区| 久久99蜜桃精品| 精品日本一线二线三线不卡| 久久不见久久见中文字幕免费| 日韩欧美国产1| 狠狠v欧美v日韩v亚洲ⅴ| 欧美不卡一区二区三区四区| 另类小说视频一区二区| 欧美mv和日韩mv的网站| 国产一区二区免费在线| 国产欧美一区二区三区网站| 成人激情免费网站| 亚洲欧洲99久久| 色菇凉天天综合网| 亚洲国产精品一区二区久久 | 国产精品久久久一本精品| 不卡视频一二三四| 亚洲综合一区二区| 日韩欧美一区在线观看| 国产一区二区导航在线播放| 国产欧美日韩视频一区二区| 91污在线观看| 亚洲国产aⅴ成人精品无吗| 日韩三级电影网址| 国产69精品久久久久毛片| 亚洲视频免费观看| 欧美日韩国产免费| 久久66热re国产| 国产精品蜜臀在线观看| 欧美性色黄大片| 国产一区激情在线| 亚洲视频资源在线| 欧美卡1卡2卡| 高清国产午夜精品久久久久久| 亚洲男人的天堂在线观看| 欧美理论在线播放| 国产伦精一区二区三区| 亚洲视频香蕉人妖| 欧美一区二区三区公司| 成人精品gif动图一区| 亚洲电影第三页| 国产日韩在线不卡| 欧美性大战久久久久久久| 韩国v欧美v亚洲v日本v| 亚洲激情在线播放| 久久综合九色综合97婷婷| 91麻豆福利精品推荐| 韩国三级在线一区| 亚洲自拍偷拍综合| 久久久99免费| 欧美日韩高清在线| 成人av先锋影音| 久久国产精品露脸对白| 亚洲精品视频免费观看| 日韩女优毛片在线| 在线看不卡av| 国产成人自拍网| 免费观看日韩av| 亚洲一区二区三区自拍| 国产午夜精品久久久久久免费视| 欧美视频一区在线观看| av在线播放一区二区三区| 六月丁香婷婷久久| 视频在线观看一区二区三区| 亚洲天堂免费在线观看视频|