在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 說(shuō)說(shuō)FPGA系統(tǒng)的仿真和測(cè)試

            說(shuō)說(shuō)FPGA系統(tǒng)的仿真和測(cè)試

            作者: 時(shí)間:2017-02-27 來(lái)源:網(wǎng)絡(luò) 收藏

            一、概述

            FPGA仿真方法:

            (1)交互式仿真方法:利用EDA工具的仿真器進(jìn)行仿真,使用方便,但輸入輸出不便于記錄規(guī)檔,當(dāng)輸入量較多時(shí)不便于觀(guān)察和比較。

            (2)測(cè)試平臺(tái)法:為設(shè)計(jì)模塊專(zhuān)門(mén)設(shè)計(jì)的仿真程序,可以實(shí)現(xiàn)對(duì)被測(cè)模塊自動(dòng)輸入測(cè)試矢量,并通過(guò)波形輸出文件記錄輸出,便于將仿真結(jié)果記錄歸檔和比較。

            本文引用地址:http://www.biyoush.com/article/201702/338767.htm

            二、仿真程序的設(shè)計(jì)方法

            1 仿真的三個(gè)階段

            (1)行為仿真:目的是驗(yàn)證系統(tǒng)的數(shù)學(xué)模型和行為是否正確,對(duì)系統(tǒng)的描述的抽象程度較高。在行為仿真時(shí),VHDL的語(yǔ)法語(yǔ)句都可以執(zhí)行。

            (2)RTL仿真:目的是使被仿真模塊符合邏輯綜合工具的要求,使其能生成門(mén)級(jí)邏輯電路。在RTL仿真時(shí),不能使用VHDL中一些不可綜合和難以綜合的語(yǔ)句和數(shù)據(jù)類(lèi)型。該級(jí)仿真不考慮慣性延時(shí),但要仿真?zhèn)鬏斞訒r(shí)。

            (3)門(mén)級(jí)仿真:門(mén)級(jí)電路的仿真主要是驗(yàn)證系統(tǒng)的工作速度,慣性延時(shí)僅僅是仿真的時(shí)候有用在綜合的時(shí)候?qū)⒈缓雎浴?/p>

            2 仿真程序的內(nèi)容

            (1)被測(cè)實(shí)體的引入。
            (2)被測(cè)實(shí)體仿真信號(hào)的輸入。
            (3)被測(cè)實(shí)體工作狀態(tài)的激活。
            (4)被測(cè)實(shí)體信號(hào)的輸出
            (5)被測(cè)實(shí)體功能仿真的結(jié)果比較,并給出辨別信息
            (6)被測(cè)實(shí)體的仿真波形比較處理

            3 仿真要注意的地方

            (1)仿真信號(hào)可以由程序直接產(chǎn)生,也可以用TEXTIO文件產(chǎn)生后讀入。

            (2)仿真程序中可以簡(jiǎn)化實(shí)體描述,省略有關(guān)端口的描述。仿真程序?qū)嶓w描述的簡(jiǎn)化形式為:
            ENTITY 測(cè)試平臺(tái)名 IS
            END 測(cè)試平臺(tái)名;

            (3)對(duì)于功能仿真結(jié)果的判斷,可以用斷言語(yǔ)句(ASSORT)描述。

            (4)為了比較和分析電子系統(tǒng)的功能,尋求實(shí)現(xiàn)指標(biāo)的最佳結(jié)構(gòu),往往利用一個(gè)測(cè)試平臺(tái)對(duì)實(shí)體的不同結(jié)構(gòu)進(jìn)行仿真,一般是應(yīng)用配置語(yǔ)句為同一被測(cè)實(shí)體選用多個(gè)結(jié)構(gòu)體。

            CONFIGURATION 測(cè)試平臺(tái)名 OF 被測(cè)實(shí)體名 IS
            FOR 被測(cè)實(shí)體的A的結(jié)構(gòu)體名
            END FOR;
            END 測(cè)試平臺(tái)名;
            同樣,若選用結(jié)構(gòu)體B,則配置語(yǔ)句可寫(xiě)為:

            CONFIGURATION 測(cè)試平臺(tái)名 OF 被測(cè)實(shí)體名 IS
            FOR 被測(cè)實(shí)體的B的結(jié)構(gòu)體名
            END FOR;

            END 測(cè)試平臺(tái)名;

            4 VHDL仿真程序結(jié)構(gòu)

            測(cè)試平臺(tái)僅僅是用于仿真,因此可以利用所有的行為描述語(yǔ)言進(jìn)行描述,下表表示了一個(gè)測(cè)試平臺(tái)所包含的部分,典型的測(cè)試平臺(tái)將包括測(cè)試結(jié)果和錯(cuò)誤報(bào)告結(jié)果。

            (1)產(chǎn)生時(shí)鐘信號(hào)

            -- Declare a clock period constant.
            Constant ClockPeriod : TIME := 10 ns;
            -- Clock Generation method 1:
            Clock <= not Clock after ClockPeriod / 2;
            -- Clock Generation method 2:
            GENERATE CLOCK: process
            begin
            wait for (ClockPeriod / 2)
            Clock <= ’1’;
            wait for (ClockPeriod / 2)
            Clock <= ’0’;
            end process;

            (2)提供仿真信號(hào)

            提供仿真信號(hào)可以有兩種方法:絕對(duì)時(shí)間仿真和相對(duì)時(shí)間仿真。在絕對(duì)時(shí)間仿真方法中,仿真時(shí)間只是相對(duì)于零時(shí)刻的仿真時(shí)間。在相對(duì)時(shí)間仿真方法中,仿真的時(shí)間首先提供一個(gè)初值,在后繼的時(shí)間設(shè)置中相對(duì)于該初始時(shí)間進(jìn)行事件動(dòng)作。

            絕對(duì)時(shí)間仿真:

            MainStimulus: process begin
            Reset <= ’1’;
            Load <= ’0’;
            Count_UpDn <= ’0’;
            wait for 100 ns;
            Reset <= ’0’;
            wait for 20 ns;
            Load <= ’1’;
            wait for 20 ns;
            Count_UpDn <= ’1’;
            end process;

            相對(duì)時(shí)間仿真:

            Process (Clock)
            Begin
            If rising_edge(Clock) then
            TB_Count <= TB_Count + 1;
            end if;
            end process;
            SecondStimulus: process begin
            if (TB_Count <= 5) then
            Reset <= ’1’;
            Load <= ’0’;
            Count_UpDn <= ’0’;
            Else
            Reset <= ’0’;
            Load <= ‘1’;
            Count_UpDn <= ‘1’;
            end process;

            FinalStimulus: process begin
            if (Count = "1100") then
            Count_UpDn <= ’0’;
            report "Terminal Count
            Reached, now counting down."
            end if;

            end process;

            (3)顯示結(jié)果
            VHDL提供標(biāo)準(zhǔn)的std_textio函數(shù)包把輸入輸出結(jié)果顯示在終端上。

            5 簡(jiǎn)單的仿真程序

            library IEEE;

            use IEEE.std_logic_1164.all;
            entity testbench is
            end entity testbench;
            architecture test_reg of testbench
            component shift_reg is
            port (clock : in std_logic;
            reset : in std_logic;
            load : in std_logic;
            sel : in std_logic_vector(1 downto 0);
            data : in std_logic_vector(4 downto 0);
            shiftreg : out std_logic_vector(4 downto 0));
            end component;
            signal clock, reset, load: std_logic;
            signal shiftreg, data: std_logic_vector(4 downto 0);
            signal sel: std_logic_vector(1 downto 0);
            constant ClockPeriod : TIME := 50 ns;
            begin
            UUT : shift_reg port map (clock => clock, reset => reset,
            load => load, data => data,
            shiftreg => shiftreg);
            process begin
            clock <= not clock after (ClockPeriod / 2);
            end process;
            process begin
            reset <= ’1’;
            data <= "00000";
            load <= ’0’;

            set <= "00";

            wait for 200 ns;

            reset <= ’0’;

            load <= ’1’;

            wait for 200 ns;

            data <= "00001";

            wait for 100 ns;

            sel <= "01";

            load <= ’0’;

            wait for 200 ns;

            sel <= "10";

            wait for 1000 ns;

            end process;

            end architecture test_reg;

            6 TEXTIO建立測(cè)試程序

            在由仿真程序直接產(chǎn)生輸入信號(hào)的方法中,測(cè)試矢量是仿真程序的一個(gè)部分,如果系統(tǒng)比較復(fù)雜,測(cè)試矢量的數(shù)目非常大,修改測(cè)試矢量時(shí)就必須修改程序,重新編譯和仿真。工作量大。因此,在測(cè)試矢量非常大的時(shí)候可以用TEXTIO的方法來(lái)進(jìn)行仿真。

            TEXTIO仿真方法:測(cè)試矢量從仿真程序中分離出來(lái),單獨(dú)存于一個(gè)文件中(即TEXTIO文件),在仿真時(shí),根據(jù)定時(shí)要求按行讀出,并賦予相應(yīng)的輸入信號(hào)。這種方法允許采用同一個(gè)測(cè)試平臺(tái),通過(guò)不同的測(cè)試矢量文件進(jìn)行不同的仿真。值得注意的是,測(cè)試矢量文件的讀取,需要利用TEXTIO程序包的功能。在TEXTIO程序包中,包含有對(duì)文本文件進(jìn)行讀寫(xiě)的過(guò)程和函數(shù)。

            LIBRARY IEEE;
            USE IEEE.std_logic_1164.all;
            LIBRARY ieee;
            USE IEEE.STD_LOGIC_TEXTIO.ALL;
            USE STD.TEXTIO.ALL;
            ENTITY testbench IS
            END testbench;
            ARCHITECTURE testbench_arch OF testbench IS
            COMPONENT stopwatch



            關(guān)鍵詞: 仿真驗(yàn)證模型FPGA系

            評(píng)論


            技術(shù)專(zhuān)區(qū)

            關(guān)閉