OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5583|回复: 3

[ALTERA] 初学FPGA之新起点led_key学习总结

[复制链接]

14

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2020-12-19
在线时间
18 小时
发表于 2021-8-20 21:34:10 | 显示全部楼层 |阅读模式
今天学习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咋显示的?看例程好像只是对它定义了也没操作啊?
Wave.jpg
.vt文件.jpg
.v文件.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2020-12-19
在线时间
18 小时
 楼主| 发表于 2021-8-20 22:56:55 | 显示全部楼层
ModelSim 中 Wave
Format - Toggle Leaf Name隐藏变量前缀名
回复 支持 反对

使用道具 举报

14

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2020-12-19
在线时间
18 小时
 楼主| 发表于 2021-8-20 23:00:56 | 显示全部楼层
关于#10那里我还是没搞懂
回复 支持 反对

使用道具 举报

14

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2020-12-19
在线时间
18 小时
 楼主| 发表于 2021-8-21 18:08:50 | 显示全部楼层
1289251272 发表于 2021-8-20 23:00
关于#10那里我还是没搞懂

#10已解决!

可以先看波形图,
0.03us是sys_clk的上升沿,这时候posedge sys_clk条件成立才执行always里面的语句。

假设我没有在key[0] <= 0;之前加上这个#10,那么它对应的时刻为0.02us,是sys_clk的下降沿,不满足posedge sys_clk,也不会让led = 4'b0001,直到再延迟10ns到0.03us时候才让灯亮。

这里加#10只是因为我想 在波形上看上去key0 = 0就马上让灯亮, 看得波形更舒服一些,没有别得意思!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 21:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表