【FPGA】时序逻辑计数器——仿真验证

1.新建文件

先新建test bench文件,led_twinkle_tb,将需要仿真的模块添加到test bench中,也就是例化

2.搭建框架

写好基本框架

3.端口定义

在test bench中添加针对输入端口的激励信号的定义以及针对输出端口的观测信号的定义

4.进行连线

定义完成后将其和被测试模块连接到一起,进行连线

5.产生激励信号

产生时钟信号

  • 20ns的周期对应10ns高电平,10ns低电平
  • 先进行初始化
  • always后没有其他内容,无条件的执行后面的内容,延时10ns后Clk取反,~代表按位取反

产生复位信号

  • 先通过复位将D触发器的输出值设置为零,然后触发器从0开始,每个时钟周期加一
  • 在仿真时间线上往后推移201ns,再将Reset_n信号拉高,这样系统就从复位状态恢复出来,开始正常计数
  • #201:时钟每10ns翻转一次,10个时钟周期刚好200ns,即仿真的第200nsCLK信号刚好出现上升沿,如果此时Reset_n刚好从0到1,容易引起波形阅读的误会,影响对波形的分析,所以这里特意多等1ns
  • #2000_000_000是2s
  • $stop停止

6.进行仿真

通过图示选项进行仿真

Vivado中的默认停止时间是1000ns,所以会在1000ns的时候停止,这是需要手动点击Run All让仿真继续运行

对于时序逻辑的仿真,在分析波形的时候需要看时间是否精准

仿真软件有测量光标

Previous Transition:前一个变化的位置

Add Marker:添加光标

选中第一个蓝色标记线,会出现两个标记线之间的时间间隔

通过转换可得是500ms20ns,比预期的500ms多了20ns,刚好是一个CLK时钟周期的时间

计数器从最大值变为0也需要消耗一个时钟周期

解决上述问题,只需要将原本设计好的计时最大值减1即可

点击该图标,重新开始加载仿真

删除光标(右击光标就会出现)

Delete All Marker:删除所有光标

然后重新添加光标,重新吸附,可以看到时是500ns

initial reset信号在201ns之后才关断,所以实际计数信号是201纳秒才开始的。这个无所谓,电路一般都有个初始化过程。

相关推荐
Terasic友晶科技2 小时前
答疑解惑|Agilex 3 FPGA QSPI时钟设置注意事项
fpga开发·de23-lite·terasic·qspi flash
国科安芯10 小时前
卫星星务计算机数据管理中SEU容错机制的技术实现研究——以AS32S601存储器ECC架构为例
网络·单片机·算法·fpga开发·架构·云计算·risc-v
国科安芯11 小时前
卫星电推进系统阀门驱动控制中的宽温域高可靠MCU应用研究——基于AS32S601电气特性与辐照试验数据的工程分析
单片机·嵌入式硬件·fpga开发·云计算·信息与通信·卫星·抗辐射芯片
郝旭帅电子设计团队1 天前
图像处理是什么
图像处理·fpga开发·郝旭帅电子设计团队·郝旭帅
ARM|X86+FPGA工业主板厂家1 天前
基于ARM+FPGA平台在精密测控领域的应用:8路同步IEPE振动采集系统
arm开发·fpga开发
weixin_452600691 天前
D2632大电流低差压可调线性稳压器介绍,D2632可替换MIC29302
fpga开发·机器人·无人机·电动工具·车载摄像头
ARM|X86+FPGA工业主板厂家1 天前
基于ARM+FPGA平台在精密测控领域的应用:ZYNQ千兆以太网高速数据记录仪
arm开发·fpga开发
cmc10281 天前
275.需要双边沿触发时,直接对时钟取反会不会出问题
fpga开发
ARM|X86+FPGA工业主板厂家2 天前
基于ARM+FPGA平台在精密测控领域的应用:ZYNQ FPGA图像预处理加速系统
arm开发·fpga开发
LCMICRO-133108477462 天前
国产长芯微LPS7118完全pin-pin替代ADP7118,是一款采用 CMOS 技术设计的低噪声、高 PSRR、快速瞬态响应、低压差线性稳压器
arm开发·单片机·嵌入式硬件·fpga开发·硬件工程·线性稳压器·adp7118