0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA仿真方法及仿真程序的編寫介紹

電子設(shè)計 ? 來源:郭婷 ? 作者:電子設(shè)計 ? 2019-04-25 08:00 ? 次閱讀

一、概述

FPGA仿真方法:

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

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

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

1 仿真的三個階段

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

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

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

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

(1)被測實體的引入。

(2)被測實體仿真信號的輸入。

(3)被測實體工作狀態(tài)的激活。

(4)被測實體信號的輸出

(5)被測實體功能仿真的結(jié)果比較,并給出辨別信息

(6)被測實體的仿真波形比較處理

3 仿真要注意的地方

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

(2)仿真程序中可以簡化實體描述,省略有關(guān)端口的描述。仿真程序?qū)嶓w描述的簡化形式為:

ENTITY 測試平臺名 IS

END 測試平臺名;

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

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

CONFIGURATION 測試平臺名 OF 被測實體名 IS

FOR 被測實體的A的結(jié)構(gòu)體名

END FOR;

END 測試平臺名;

同樣,若選用結(jié)構(gòu)體B,則配置語句可寫為:

CONFIGURATION 測試平臺名 OF 被測實體名 IS

FOR 被測實體的B的結(jié)構(gòu)體名

END FOR;

END 測試平臺名;

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

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

(1)產(chǎn)生時鐘信號

FPGA仿真方法及仿真程序的編寫介紹

(2)提供仿真信號

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

絕對時間仿真:

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;

相對時間仿真:

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 簡單的仿真程序

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建立測試程序

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

TEXTIO仿真方法:測試矢量從仿真程序中分離出來,單獨(dú)存于一個文件中(即TEXTIO文件),在仿真時,根據(jù)定時要求按行讀出,并賦予相應(yīng)的輸入信號。這種方法允許采用同一個測試平臺,通過不同的測試矢量文件進(jìn)行不同的仿真。值得注意的是,測試矢量文件的讀取,需要利用TEXTIO程序包的功能。在TEXTIO程序包中,包含有對文本文件進(jìn)行讀寫的過程和函數(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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21744

    瀏覽量

    603655
  • 仿真
    +關(guān)注

    關(guān)注

    50

    文章

    4087

    瀏覽量

    133648
  • eda
    eda
    +關(guān)注

    關(guān)注

    71

    文章

    2759

    瀏覽量

    173319
收藏 人收藏

    評論

    相關(guān)推薦

    基于Altera FPGA的軟硬件協(xié)同仿真方法介紹

    摘要:簡要介紹了軟硬件協(xié)同仿真技術(shù),指出了在大規(guī)模FPGA開發(fā)中軟硬件協(xié)同仿真的重要性和必要性,給出基于Altera FPGA的門級軟硬件協(xié)
    發(fā)表于 07-04 06:49

    FPGA仿真有什么方法?其仿真程序該怎么設(shè)計?

    FPGA仿真有什么方法?(1)交互式仿真方法:利用EDA工具的仿真器進(jìn)行
    發(fā)表于 08-30 07:13

    FPGA仿真程序的設(shè)計方法,有什么注意事項?

    FPGA仿真方法有哪幾種FPGA仿真程序的設(shè)計方法
    發(fā)表于 04-29 06:15

    LED控制VHDL程序仿真

    LED控制VHDL程序仿真分別介紹采用FPGA對LED進(jìn)行靜態(tài)和動態(tài)顯示的數(shù)字時鐘控制程序。1. 例1:
    發(fā)表于 06-27 11:20 ?1517次閱讀

    基于Xilinx FPGA和VHDL的數(shù)字秒表設(shè)計與仿真實現(xiàn)

    文中著重介紹了一種基于FPGA利用VHDL硬件描述語言的數(shù)字秒表設(shè)計方法,在設(shè)計過程中使用基于VHDL的EDA工具M(jìn)odelSim對各個模塊仿真驗證,并給出了完整的源
    發(fā)表于 12-25 11:19 ?6608次閱讀

    如何使用QuartusⅡ軟件來編寫FPGA?

    本文主要詳細(xì)介紹了使用QuartusⅡ軟件來編寫FPGA方法及步驟,另外還介紹了Quartus II仿
    的頭像 發(fā)表于 05-18 10:11 ?1.5w次閱讀

    使用51單片機(jī)進(jìn)行流水燈閃爍使用proteus仿真和keil編寫程序資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)進(jìn)行流水燈閃爍使用proteus仿真和keil編寫程序資料說明。
    發(fā)表于 05-07 08:00 ?20次下載
    使用51單片機(jī)進(jìn)行流水燈閃爍使用proteus<b class='flag-5'>仿真</b>和keil<b class='flag-5'>編寫程序</b>資料說明

    FPGA仿真的學(xué)習(xí)課件和工程文件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA仿真的學(xué)習(xí)課件和工程文件免費(fèi)下載包括了:1、testbench編寫,2、仿真工具使用,2、
    發(fā)表于 12-10 15:28 ?30次下載

    使用FPGA實現(xiàn)自動售貨機(jī)的VHDL程序仿真資料

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用FPGA實現(xiàn)自動售貨機(jī)的VHDL程序仿真資料。
    發(fā)表于 12-21 17:10 ?24次下載
    使用<b class='flag-5'>FPGA</b>實現(xiàn)自動售貨機(jī)的VHDL<b class='flag-5'>程序</b>與<b class='flag-5'>仿真</b>資料

    使用FPGA實現(xiàn)電子琴設(shè)計的程序仿真資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用FPGA實現(xiàn)電子琴程序設(shè)計的程序仿真資料免費(fèi)下載。
    發(fā)表于 01-18 17:17 ?39次下載
    使用<b class='flag-5'>FPGA</b>實現(xiàn)電子琴設(shè)計的<b class='flag-5'>程序</b>與<b class='flag-5'>仿真</b>資料免費(fèi)下載

    使用FPGA實現(xiàn)LCD控制的VHDL程序仿真資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用FPGA實現(xiàn)LCD控制的VHDL程序仿真資料免費(fèi)下載。
    發(fā)表于 01-18 17:19 ?10次下載
    使用<b class='flag-5'>FPGA</b>實現(xiàn)LCD控制的VHDL<b class='flag-5'>程序</b>與<b class='flag-5'>仿真</b>資料免費(fèi)下載

    使用FPGA實現(xiàn)LED控制的VHDL程序仿真資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用FPGA實現(xiàn)LED控制的VHDL程序仿真資料免費(fèi)下載。
    發(fā)表于 01-18 17:32 ?12次下載
    使用<b class='flag-5'>FPGA</b>實現(xiàn)LED控制的VHDL<b class='flag-5'>程序</b>與<b class='flag-5'>仿真</b>資料免費(fèi)下載

    【玩轉(zhuǎn)多核異構(gòu)】M核程序的啟動、編寫仿真——飛凌嵌入式

    基于OKMX8MP-C開發(fā)板的M核程序的啟動、編寫仿真的使用方法
    的頭像 發(fā)表于 02-10 17:54 ?794次閱讀
    【玩轉(zhuǎn)多核異構(gòu)】M核<b class='flag-5'>程序</b>的啟動、<b class='flag-5'>編寫</b>和<b class='flag-5'>仿真</b>——飛凌嵌入式

    【玩轉(zhuǎn)多核異構(gòu)】飛凌嵌入式AM6254核心板M核程序的啟動、編寫仿真

    通過飛凌嵌入式FET6254-C核心板來詳細(xì)介紹AM6254處理器M核程序的啟動配置、程序編寫和實時仿真等使用
    的頭像 發(fā)表于 03-31 14:27 ?1702次閱讀
    【玩轉(zhuǎn)多核異構(gòu)】飛凌嵌入式AM6254核心板M核<b class='flag-5'>程序</b>的啟動、<b class='flag-5'>編寫</b>和<b class='flag-5'>仿真</b>

    FPGA入門必備:Testbench仿真文件編寫實例詳解

    編寫完HDL代碼后,往往需要通過仿真軟件Modelsim或者Vivadao自帶的仿真功能對HDL代碼功能進(jìn)行驗證,此時我們需要編寫Testbench文件對HDL功能進(jìn)行測試驗證。
    發(fā)表于 04-29 10:43 ?2079次閱讀