初级会员
- 积分
- 95
- 金钱
- 95
- 注册时间
- 2020-12-19
- 在线时间
- 18 小时
|
今天学习led_key一章,自己改了一下代码内容,更容易仿真。
晶振=50M,时钟周期=20ns
首先看.v文件
第一个always中,
else if(cnt < 28'd1)
cnt <= cnt + 1'd1;
这里值得注意就是这条语句是要执行两个的,首先cnt = 0,然后cnt = 1,
总共执行这两次如此循环,这在后面的分析很重要。
假设一开始cnt=0,第一个时钟上升沿来到cnt=1,第二个上升沿来到cnt=0,走完这两次再循环......
所以走这两次的总时间为40ns!!!!!!
然后看.vt文件
首先sys_rst_n拉低20ns在拉高;
再延时10ns才开始按下按键。
(注:这里为什么延时10ns,是因为这个sys_rst_n拉高后,cnt要等到时钟上升沿才开始计数1次,
我之前是没有#10的,仿真发现按键按下要经过一段时间led才亮,这段时间就是10ns)
这次我是用自动仿真的,(联合仿真)
总结:
(1)配置仿真环境
Setting - EDA Tool Seetings - Simulation
在添加testbench文件,也就是.vt文件时,那个Test bench name一定要和你.vt文件里面的模块名称一致!
比如这里就是tb_key_led!
(2)仿真使用技巧
Tool - Run Simulation Tool - RTL Simulation
ModelSim会自动打开,我们在波形图可以先点击Stop
然后修改仿真时间,
然后点击Restart - OK
然后点击Zoom Full,
就能快速得到波形了。
(3)
仿真时间不宜过长!我这里就是极大缩短了仿真时间,不然仿真会很久很久!
正点原子例程感觉仿真太久了。
(4)
关于那个.vt文件里面的书写格式,我觉得我自己修改的那个更容易理解!
key[0] <= 0; #160
显然就是key0按下160ns的意思,例程里面感觉写的不好。
(5)
在ModelSim中
Simulate - Start Simulation
选中work中的.vt文件,同时还要记住
取消勾选 Enable optimization !!!!!!
再在左边那蓝色的正方形那一栏啥啥啥 右键Add wave。
而如果是在Quartus中进行RTL仿真的话就不用 上述(5)的所有步骤。
然后再进行(2)即可快速得到波形!
还有我想问原子哥哥
.vt文件里面keyvalue咋显示的?看例程好像只是对它定义了也没操作啊?
|
|