在我的前一篇文章(传送门:https://blog.hdussta.cn/fpga/quartus-ii%e8%bd%af%e4%bb%b6%e5%ae%89%e8%a3%85%e4%b8%8e%e5%88%9b%e5%bb%ba%e5%b7%a5%e7%a8%8b.html )中,我们已经安装好了Quartus II和Modelsim也创建好了工程文件,现在想要在QuartusII上进行仿真,还需要一些配置工作了。

首先在Quartus上创建一个工程,我这里图简单就直接调了一个PLL的IP核,1000分频,50M晶振输入,50K频率输出。

首先我们进行编译库,TOOLS -> Launch Simulation Library Compiler.打开后选择好自己的编译库的存放路径Output directory,最好就直接甩进工程文件就行,省的到时候找不到,然后选择你要编译的器件库,因为我最近只用Cyclone IV的片子,所以我只编译了对应的库。Verilog和VHDL可以都编译一遍,因为我一般只用Verilog所以也懒得编VHDL了。都设置好之后直接Start Compilation。编译可能需要几分钟,出去撒泡尿的功夫,就编译好了。

然后我们开始编译Test bench。 先对自己的工程进行一遍Compilation,也就撒泡尿的功夫(在编译这件事情上Quartus比Vivado友好太多了,Vivado编译比较慢,因为综合了很多东西,你可能要多撒几泡尿)。然后Assignment -> Setting -> Simulation->Compile test bench。点击New。Name选择直接填写我们工程的顶层文件模块名就可以了。Top level module那里会自动填充。然后File name 边上…选择我们之前编译好的Test bench路径,一般是在我们的工程文件夹,simulation->modelsim里面,选择那个.vt文件,然后点击ADD后,就完成了。

完成了基本的联合仿真配置之后,我们来进行一次简单的仿真,首先我们在工程中添加一个.vwf文件。点击左上方的Edit -> Insert -> Insert Node or Bus将我们前面创建的工程文件中的要进行仿真的管脚添加进来。Node Fineder -> List。然后把我们要的管脚添加到右边。

点击OK后,我们可以看到我们的管脚已经被添加到.vwf文件中了。然后我们对输入信号进行幅值。一开始,所有的信号默认为高阻态。这里我们讲一下.vwf里面的一些设置。首先是Edit中。Grid Size表示的是每列代表的宽度。一般不能超过10us。Set End Time表示仿真时间,最大不能超过100us

然后我们按顺序讲下工具栏中的几个设置,第一个 ,表示将信号状态设置为高阻态。第二个 表示低电平,就是数字电路中的0。第三个 表示高电平,数字电路中的1。还有· 这两个玩意儿我不太清楚具体是啥百度也没告诉我答案。那个有个C的符号,表示Count Value,表示按照时间自动步进,可以设置起始位然后根据时间自动步进,达到最大值又自动重新装载,类似计数器。中间有个闹钟的,就是把信号当做时钟来设置。

我们这里的话把输入的时钟信号用Clock设置,频率设置为50MHz(这是大部分FPGA芯片的时钟频率)。然后直接点击 进行仿真就行。一个是功能仿真,一个是时序仿真。然后就可以得到仿真波形了。有一点要注意,输出信号的仿真存在一个大约50ns的延时。因为它是根据实际情况来的,你实际情况下的输出信号有输出本身就和输入信号有一个时间差。

如果你的仿真不能跑的话,点击Simulation -> Simulation Setting -> Restore Defaults。就可以顺利解决了。如有更好的方法,或者我有说错的地方,欢迎大家批评指正。

       Writen By Mystic

2019年7月21日

发表评论