fpga初始化错误_FPGA调试过程中调到吐血的时序问题解决方案来了

本文介绍了FPGA调试中常见的时序问题,特别是双口RAM的读写冲突,强调了时序仿真的重要性。通过Quartus II建立工程并进行后仿真,详细阐述了如何配置和使用ModelSim进行后仿真,以验证设计功能并检测潜在的时序问题。此外,文章提供了解决RAM读写冲突的方法,并分享了一个实际案例来说明这个问题的严重性及其解决方案。
摘要由CSDN通过智能技术生成

FPGA调试本身就是挺辛苦的一件事情,尤其是在刚开始调试FPGA的时候,无论培训的时候如何强调一些注意事项,如跨时钟域问题,如接口问题,以及RAM读写冲突问题,但一旦做起项目来,每每还是有同学必须要亲自往这些坑里面跳一次才真正懂得这些BUG的含义。如双口RAM在功能仿真时没有出现问题,但上板调试过程中运行很久才偶尔出现一次BUG,这时就需要花费大量的时间去追溯问题的源头,最后花一周甚至更长的时间才能找到是双口RAM读写冲突的问题,时间早早的就浪费掉了。事实上,上面说跨时钟域或者双口RAM读写冲突的这些问题是可以通过时序仿真仿真出来的。

FPGA验证在芯片设计流程中具有重要的作用,有时候为了找到某些BUG,不得不对FPGA综合出来的网表进行后仿真。后仿真又叫时序仿真,跟课程前面介绍的对写出来的Verilog hdl设计代码和testbench代码建工程进行的功能仿真不同,时序仿真是把综合出来电路中的时延信息加入到仿真的过程中,模拟出跟更接近于在FPGA上真实运行的情况。本文以Quartus II软件为例进行介绍后仿真的步骤和流程。ISE或VIVADO流程类似或关联ModelSim后更自动化。

32ce9bedb2a32a10dff6d1e4bbe97d2e.png

什么是功能仿真?什么是时序仿真

仿真过程是正确实现设计的关键环节,用来验证设计者的设计思想是否正确,及在设计实现过程中各种分布参数引入后,其设计的功能是否依然正确无误。仿真主要分为功能仿真和时序仿真。功能仿真是在设计输入后进行; 时序仿真是在逻辑综合后或布局布线后进行。

1. 功能仿真 ( 前仿真 )

功能仿真是指在一个设计中, 在设计实现前对所创建的逻辑进行的验证其功能是否正确的过程。 布局布线以前的仿真都称作功能仿真, 它包括综合前仿真( Pre-Synthesis Simulation )和综合后仿真( Post-Synthesis Simulation )。 综合前仿真主要针对原理框图的设计 ; 综合后仿真既适合原理图设计 , 也适合基于 HDL 语言的设计。

2. 时序仿真(后仿真)

时序仿真使用布局布线后器件给出的模块和连线的延时信息, 在最坏的情况下对电路的行为作出实际地估价。 时序仿真使用的仿真器和功能仿真使用的仿真器是相同的, 所需的流程和激励也是相同的; 惟一的差别是为时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时, 并且在仿真结果波形图中,时序仿真后的信号加载了时延, 而功能仿真没有。

一、用Quartus II建立工程。

具体过程可参考如下链接:

https://jingyan.baidu.com/article/cbcede07ef59cf02f40b4ddb.html。建立工程后的文件如下图所示。我们以一个简单的8位计数器为例进行说明。

b2c7a10edacff923530160ac4728cf7c.png

建立工程的过程中可以配置好综合之后要产生用来做后仿真的网表文件,如果没有提前配置,也可以建好工程后再配置,具体如下图,点击右键,选择settings.

2b6662665063b572ed46eb673cae1f32.png

settings打开后出来如下窗口,在左侧选择Simulation,在右侧EDA Netlist Writer settings里面选择门级网表产生的语言以及路径,之后确定即可。

f17986ad80b39c00b56ec7965c6b9e00.png

如下图,点击编译按钮,开始进行综合。

85cef8f29a2af0e1ce0aac6607d1541e.png

综合后的界面如下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值