手动仿真只需要Modelsim软件,而不需要quartus软件
打开之前建立的流水灯文件夹,打开里面的sim文件夹
右击新建文件夹,命名为tb
将上之前生成的激励文件复制到此处
将其重命名为flow_led_tb.v,后缀也改为.v。(不修改激励文件也是可以的)
功能仿真
打开modelsim软件,下图是modelsim手动打开的界面
在modelsim下创建一个工程File -->New -->Projiect
设置好工程名和保存路径后,点击ok
因为我们已经 有存在的文件,所以点击第二个Add Existing File
找到存在的tb文件,点击ok
然后添加流水灯代码,同样点击Add Existing File,找到对应的代码文件,双击
点击ok
两个文件的Status都是?状态,因为不知道这两个文件是否有错误,我们来编译一下
Comple --> Comple All
或右击上面两个文件中的一个,右击 Comple -->Comple All
若需要修改代码,右击文件 Edit。
修改模块名,使之与文件名一致
手动仿真和联合仿真的一个区别是,联合仿真会自动执行,需要加停止条件,二手动仿真不会主动执行,所以可以将停止条件去掉。
保存改动代码,重新编译。右击该文件,Comple–>Comple Selected接下来对代码进行仿真,Simulate -->Start Simulation
只需要选中work下面的flow_led_tb文件,并且取消左下角的使能优化(Enable optimization),点击ok
添加一些待观察的信号
右击左边的i1 Add Wave
打开生成的波形界面,Format–>Toggle Leaf Names,隐层信号路径,更改运行时间为2us,点击run图标来运行
点击Zoom Full显示所有波形
系统时钟50兆赫兹,一个周期20ns,1us就是50个时钟周期
修改源代码,可以用notepad++编辑器打开代码文件更改。
在modelsim中重新编译此代码
重新进行仿真,另一种方法,在左下角输入restart -f,敲回车
重复以上操作,时间间隔与预算时间一样
restart -f 方法,适用于不增加和减少代码变量
也可以如下图左下角所示,输入运时间,运行。(与在波形图界面修改运行时间在运行一样)
时序仿真
将在quartus下生成的两个文件,放到建立的sim文件中,如下图所示
还需要复制仿真库,仿真库位于下图位置
将其复制到sim文件夹下
拷贝完网表文件。延时文件和库文件后,返回到Modelsim,右击下图文件
Add to Project -->Existing File,将网表文件添加(.vo文件)
编译添加的网表文件
编译后
开始进行仿真
Simulate -->Start Simulation,选中work下面的tb文件
然后添加上面所述的两个库文件
点击ok
同样右击i1 -->Add Wave
出现波形图界面
可以看到,信号特别多,我们将波形图界面关掉,选择我们需要看到的信号,右击 Add–>Wave
也把计数器添加到波形
在左下角输入 run 5us ,敲回车
可以看到出现了时间延迟