![零点起飞学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=1738845153-YXSnhagyKK10P3VUf9FByAQ6wjUl4bSA-0-eb85ea975665d79068cee1b54e996969)
图3-28 选择Design Properties命令
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P58_40527.jpg?sign=1738845153-7xpTJUL5pOTDAoon3SOFBeMFu3JrJiu5-0-b077c869b99c5a57ba45bf6ed47568d4)
图3-29 仿真器设置界面
(2)接下来写测试脚本文件,单击Project→New Source命令,如图3-30所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P59_40534.jpg?sign=1738845153-whGyqc38dv6COdlZs29ZmdxVqhzOdEnM-0-6e8559e6bd1436efe9fdb59ee2c63d94)
图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=1738845153-tFBXNZiX8BGZYNbOLk1RUT0vFHUba4kZ-0-3df92d7944c96d8412f47db1a806e674)
图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=1738845153-IJhP1ZLhsoRpSB0fwJrzspdRK7gidcri-0-ff3a43f62f7ec7ef52619b967be4ffdb)
图3-32 关联设置
(5)单击Finish按钮完成设置,如图3-33所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P60_40548.jpg?sign=1738845153-Ho49ywam1X0xoeGlBMuL6ObfNa99MI2R-0-2ddb9884395a1a4a3afe8c9f077a9f98)
图3-33 工程概要
(6)这里的测试脚本只是一个基本的模板,以流水灯为例,它把设计文件led_test的接口在这个模块里面例化声明了。我们还需要自己动手添加复位和时钟的激励设置,完成后的脚本文件如下。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P60_79490.jpg?sign=1738845153-mLx9P2ahNH8yRLqhKXtwfPBDxHF1bRu1-0-741f8cbe5743b53c9ed8e3229cd54791)
(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=1738845153-wT0SCBA5rFodMSVpYtNu9UtXplkU4svW-0-647a5337a55e8a3ed3bfcd8d7dc75a66)
图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=1738845153-zvod6yZ2zxuswLnwGeTMCKCrUXko3Lma-0-d7230871315356a2edc7e038586efb54)
图3-35 仿真器设置
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P62_40730.jpg?sign=1738845153-29jzgoPYUWLWrCzmy95HT1reMuqQWaTf-0-2f92e7b69cfb421bef5d7d6e2e01ff87)
图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=1738845153-xyCz6Sh37ugEfHW0EU2fY1qYwbul09MY-0-6d3f905d7fca332e30d10a07cb3ccf9c)
图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=1738845153-NRfJHnS9XNtdWWK1KC72fB6kWKpYdlTk-0-73f9b086ed52880ae2b71160c177490c)
图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=1738845153-5GO2ZxxDyBPZhIA9ZFbyJDYFsLhJUmOt-0-cc970e3b1b7840f5a3a8635d3df33e4b)
图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=1738845153-mG6KTGhOR5QRHnHVVuhTJacAr4tY1PDE-0-fb208167f13ce15268a5dac0d680df44)
图3-40 运行界面
(10)在Wave格可以看到timer寄存器在复位信号rst_n变高后开始计数,如图3-41所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P65_40763.jpg?sign=1738845153-AMoQmiATMavwVXzblr3bcxVqLteLC22C-0-6ab9cbcc2dbd562ced738bc3af7d1300)
图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=1738845153-JXDlFYIRZ31UDD37Xy9NXbqVWHFAbSj5-0-58f6aa98ccdbdeb7030a35ffa13aae74)
图3-42 屏蔽语句
(12)重新打开ModelSim软件,单击按钮和
按钮,ModelSim开始运行程序,多次单击
按钮,可以看到led的信号会逐个变0,说明LED灯会逐个点亮,如图3-43所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P66_40784.jpg?sign=1738845153-BagoSI4HDV3NHeYbsK1OxaPMLKdiakf5-0-041d33989e7e0a06ddc35e40176d4c3d)
图3-43 运行计数