![零点起飞学Xilinx FPG](https://wfqqreader-1252317822.image.myqcloud.com/cover/469/31794469/b_31794469.jpg)
3.2 仿真验证
ISE中集成了测试激励生成器(HDL Bencher),在没有专业仿真工具的情况下,可以使用测试激励生成器产生激励信号,并调用ISE集成的仿真工具完成功能验证。此外,还可以联合ModelSim进行仿真验证。
3.2.1 在ISE中仿真验证
【例3-12】在ISE中进行仿真验证。
(1)在用ISE仿真前需要确认工程设置,单击菜单命令Project→Design Properties,如图3-28所示。确认Simulator的选择为ISim(VHDL/Verilog),这在新建工程时已经设定好了,为保万无一失,我们还是确认一下,如图3-29所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P58_40524.jpg?sign=1738873078-UM3UYpnUDg8CWJ0p7R9eLfRc3r5Rx8Un-0-dc6b2fce04cffab11b9170073daffab7)
图3-28 选择Design Properties命令
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P58_40527.jpg?sign=1738873078-Qxv6ntdiQUKICWe3xcr8m04tDyI79xHz-0-bad53596cbb0c2870d9a51c647aaaec0)
图3-29 仿真器设置界面
(2)接下来写测试脚本文件,单击Project→New Source命令,如图3-30所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P59_40534.jpg?sign=1738873078-gUEPMmRKnVu4Q4O3CTECzWN4FtgILpnB-0-56eaddd2ee53ed2b7a9369e0fc14c02d)
图3-30 新建脚本文件
(3)如图3-31所示,选择新建源文件类型为Verilog Test Fixture,再输入测试脚本文件的名字vtf_led_test和存放目录。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P59_40537.jpg?sign=1738873078-UeF3n5Cx0MKtbv6iZGkhK9AnUUOzopNZ-0-cdf95397fb08d2445d3edcda4bf89c99)
图3-31 定义文件名
(4)这里Associate Source界面用于选择测试脚本对应的设计源文件,由于只有一个设计源文件,因此选中led_test.v,然后单击Next按钮,如图3-32所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P60_40545.jpg?sign=1738873078-padIMMgCqMoT1i4P9q85wVyXXqiPsNZ9-0-e082169786ec76710212312bd0fb79b0)
图3-32 关联设置
(5)单击Finish按钮完成设置,如图3-33所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P60_40548.jpg?sign=1738873078-wKyERXSafIZerB2q7itzJzUgp3Brw0X4-0-b9db9f3b5d66ed614401bcd01a150d51)
图3-33 工程概要
(6)这里的测试脚本只是一个基本的模板,以流水灯为例,它把设计文件led_test的接口在这个模块里面例化声明了。我们还需要自己动手添加复位和时钟的激励设置,完成后的脚本文件如下。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P60_79490.jpg?sign=1738873078-YIu0FXOGqOPiUIFE2MMPEMxiW5OsmGZ8-0-9454c242d3f6dea29c29f27f18a36170)
(7)保存后vtf_led_test.v已经生成这个仿真Hierarchy的顶层了,下层是设计文件led_test.v。选中vtf_led_test.v文件,随后启动仿真,如图3-34所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P61_40717.jpg?sign=1738873078-IwW6x7DT1xxVCVHQ2fKd3qOJj9bbqP12-0-3c315dcbfcd66ed9c1da313bf7cf14fc)
图3-34 仿真图
3.2.2 在ISE中调用ModelSim
ModelSim是目前最流行的仿真工具,在ISE集成环境中有ModelSim的接口,可以调用ModelSim进行仿真。
【例3-13】在ISE中调用ModelSim。
(1)在用ISE仿真前需要确认项目设置,单击菜单命令Project→Design Properties,如图3-35所示。如图3-36所示,将Simulator的选择改为ModelSim-SE Mixed。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P62_40727.jpg?sign=1738873078-Uoi7KBhMevAwsKh68DLbBwSA85r2wJaX-0-068ffa53e3965a37f98a512727fb975a)
图3-35 仿真器设置
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P62_40730.jpg?sign=1738873078-du2OJxOCESlTBHZ2jGoG7KFNJa9bEn1u-0-4b6a47beccca2f70b99467c546d2f4e6)
图3-36 仿真器选择
(2)切换到Simulation模式,选中led_test.v文件,右击选择Simulate Behavioral Model后选择Process Properties,在对话框右边的Compiled Library Directory输入框填入之前编译库时设置的已编译库的路径C:\Xilinx\Xilinx_lib。其他选项使用默认设置即可,单击OK按钮完成设置,如图3-37所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P63_40739.jpg?sign=1738873078-UCT4GQo8kb67o6huWN7K2lJ4s8ZGEdSI-0-2bf3adbd327570bb38e5baba4bc130ca)
图3-37 路径设置
本节(3)~(6)步与3.2.1节(3)~(6)步骤相同,这里不再重复。
(7)保存后vtf_led_test.v成为这个仿真Hierarchy的顶层,它下面是设计文件led_test.v。选中vtf_led_test.v文件,随后启动仿真程序,如图3-38所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P63_40743.jpg?sign=1738873078-hFAiCqOl88itO304csoCmBaK5tYBNXwC-0-1eebd6540cfa12541e64405beec2cbc2)
图3-38 ModelSim界面
(8)弹出ModelSim窗口后,可以打开Wave窗格查看仿真结果。ModelSim的使用并不难,如何使用的资料网上也很多,大家要多动手,多尝试,相信很快就会上手。这里我们把led_test.v程序里的timer计数器放到Wave窗格中观察,如图3-39所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P64_40751.jpg?sign=1738873078-4GUlieC7Lw0qTtXzGlq97ZBAzXcHbNVz-0-76c21b177f99595e4f4bf5107d6e50be)
图3-39 添加波形
(9)将时间单位设置为1μs,单击Restart按钮复位,再多次单击Run按钮,ModelSim会运行到$stop行地方,如图3-40所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P64_40755.jpg?sign=1738873078-SNSBedTxQfq4DwvCKQSrvQkaVuMOYvcG-0-6c0158595e1c28593250ed37aaee2dfc)
图3-40 运行界面
(10)在Wave格可以看到timer寄存器在复位信号rst_n变高后开始计数,如图3-41所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P65_40763.jpg?sign=1738873078-MvkkkBINcB1c8Awm1n2qKXa1BNrGIsHJ-0-03db7656fa80d09594ee66d597a60216)
图3-41 计数波形
(11)因为在仿真程序vtf_led_test.v里设置的仿真时间比较短,所以可以屏蔽掉vtf_led_test.v程序中的$stop的语句,让程序一直运行。修改vtf_led_test.v文件后保存,如图3-42所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P65_40767.jpg?sign=1738873078-WU3HLicpD12xl2NLwXddLzXTEPwx5B4Z-0-125129decb07f9bd794dc16bdb3debee)
图3-42 屏蔽语句
(12)重新打开ModelSim软件,单击按钮和
按钮,ModelSim开始运行程序,多次单击
按钮,可以看到led的信号会逐个变0,说明LED灯会逐个点亮,如图3-43所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P66_40784.jpg?sign=1738873078-ZR7epUTjH4or40BGPlNLoEf34c9N7CKh-0-cc545038f8d67982776d367ecc9044d5)
图3-43 运行计数