![零点起飞学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=1738882434-ELbXiBUfvpDH9lYOwycBQsA4pBauaiEr-0-c01af4eec7a3bdce8092129e7495728a)
图3-28 选择Design Properties命令
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P58_40527.jpg?sign=1738882434-WWFhC3oRxqzkIQ8ZDeZETs711iI6wfxB-0-e15b484f3ee0bf1edccabe19b037780b)
图3-29 仿真器设置界面
(2)接下来写测试脚本文件,单击Project→New Source命令,如图3-30所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P59_40534.jpg?sign=1738882434-BbNaytVaG4euLOI2nrGEjvMTHtJnsnRW-0-f14ff457c78098e0fd99fd155ee8a65a)
图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=1738882434-giNAzTbTGnlOAXSbZDiN5yKTQc69geAF-0-086ca5d762d2a696335b1e8d4480ffd9)
图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=1738882434-nOoHRRtJUmAOH3GFu58bm01mqsGU4Guo-0-d7844c053edb728e92114f95b7311aa9)
图3-32 关联设置
(5)单击Finish按钮完成设置,如图3-33所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P60_40548.jpg?sign=1738882434-VEicfBmqWilFjjJT5ZABk6RP9aGSYFCL-0-9718738998485699821d64e4fe26ef97)
图3-33 工程概要
(6)这里的测试脚本只是一个基本的模板,以流水灯为例,它把设计文件led_test的接口在这个模块里面例化声明了。我们还需要自己动手添加复位和时钟的激励设置,完成后的脚本文件如下。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P60_79490.jpg?sign=1738882434-ebTUmd05ly899zSgLQ9UdttlJopGhNuB-0-b94e4c23c799a1d944c6079eb70cf45d)
(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=1738882434-1d8AkrHbUbPOYBQv8indnQeCGbZuqwVt-0-29fe2ee808ed70db746853b3feb688ee)
图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=1738882434-pZnItEDRckeu5lf4pQgRkop2cZBx8c7K-0-3e0fd4c7179c4b51bb0d037c10c209f2)
图3-35 仿真器设置
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P62_40730.jpg?sign=1738882434-EY3huUEC7v7BeQ1XiBgIw3pyeLglHdfG-0-43c5400ac8beb06b7d63011e64403a24)
图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=1738882434-dS6YEUonQT6qdgS7wrdRa2DMVRw12H1O-0-f8846ced5a7c54e3986c290cbfc95a69)
图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=1738882434-e5319ZRcnbDfhmW52y6F6ZJ1a9YLctJg-0-f7e71b3610ef2320c7d099b758f75279)
图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=1738882434-ipwesINDJHGDu8K2AN9agumMs53hMXn0-0-17ce9dfa115a8450d578debfa404d2b6)
图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=1738882434-Y298Xgo0aC3MZXQB1dabkGpp8gNjssZj-0-66d6a95d070c3b7caf2aef15d277264d)
图3-40 运行界面
(10)在Wave格可以看到timer寄存器在复位信号rst_n变高后开始计数,如图3-41所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P65_40763.jpg?sign=1738882434-5CRlcaTJmfTEXL6tghjbVMvijinyWuFR-0-88b7d1c931215302c725a1ae5401e123)
图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=1738882434-Uy3MsxnPKnCItmvyevQqsT5EvdxDfL41-0-55e328ee0fc514b003d58e7ce780d14f)
图3-42 屏蔽语句
(12)重新打开ModelSim软件,单击按钮和
按钮,ModelSim开始运行程序,多次单击
按钮,可以看到led的信号会逐个变0,说明LED灯会逐个点亮,如图3-43所示。
![](https://epubservercos.yuewen.com/B73CF9/17214368205514206/epubprivate/OEBPS/Images/Figure-P66_40784.jpg?sign=1738882434-8RIEblJu7g26iqotmP0SkAwymsRRPLwe-0-0487dcedbfc1c24467b3d87882bffa7e)
图3-43 运行计数