FPGA RTL

RTL在电子科学中指的是寄存器转换级电路(Register Transfer Level)的缩写,也叫暂存器转移层次。FPGA设计可以包括为RTC模块设计与组合模块设计,RTL模块又是FPGA设计中的主要难题。分享一下在学习过程中的心得体会。

我学了有一段时间的FPGA,刚开始我只知道RTL模块是与时间有关,表面理解为里面的赋值符号要用(<=),而组合逻辑里面的赋值符号要用(=),这是我对FPGA这两大模块的初步影响,并不理解这是什么意思(更不理解教科书上的什么阻塞,很让人头痛),后来随着学习的深入,要真正理解FPGA,还是要从电路上去理解,电路是每时每刻都在通电,那么RTL模块中的(<=),是同时执行的如下:

上段代码的意思是A,B,C在检测到高电平clk时,分别同时赋值给lcd_data、lcd_data1、lcd_data2,这就是所谓的非阻塞,意识就是同时执行;

通过这个我们可以去了解同步复位,异步释放:

同步复位的缺点是在没在时钟上升沿的时候不能成功复位,而异步复位的缺点是假如持续时间比较短,会产生亚稳态(与D触发器的性质有关,D触发器需满足复位时间才能正常复位。)(说实话,我在没学数字电路之前,完全不能理解同步复位,异步释放)。

而同步复位,异步释放是什么意思呢?异步复位信号在触发的时候,不是立即复位而是等待时钟信号,在下一个下降沿的时候再释放(这样就可以延长持续时间,减少亚稳态的产生)。

所谓的亚稳态:我们大部分芯片在初始化的过程中,都需要一个setup time+hold time的响应去激发它去正常工作,假如我们没有响应那么长时间,那么它就会不知所措,不知道该发送什么数据、还是不发送数据,这就它的亚稳态。我们的D触发器也一样,我们在发送复位信号的时候,假如复位信号响应时间不够长。那么也会不知所措。

上段代码同步复位,异步释放,是兼顾异步复位与同步复位的优点,在非总线的时序设计中常常被使用。

通过这段代码来进一步去了解非阻塞语言:在检测到低电平复位信号的时候,rst_r1与rst_r2分别同时赋值为1'b0、1'b0;在检测到高电平时钟信号的时候rst_r1与rst_r2分别同时赋值为1'b1、rst_r1;

那这段代码为什么可以实现同步复位,异步释放呢?

这是根据异步复位、同步释放这段代码所得的时序图;我们不难发现在dff(D触发器)2,在复位信号出现的时候立即复位(即异步复位)、但是延时了两个时钟周期,dff2才释放(即同步释放)。然后dff2作为新的复位信号,增长了复位信号的时间,减小了复位信号在由于复位时间短可能产生的亚稳态出现的概率。

### FPGA RTL 设计中的时序违例原因与解决办法 #### 一、时序违例的主要原因 在FPGA设计中,时序违例通常由以下几个方面引起: 1. **不合理的约束设置** 如果未正确配置时钟周期、输入/输出延迟或其他时序约束,则可能导致工具无法满足预期的时序目标[^2]。例如,在多时钟域的情况下,如果异步时钟组没有被适当地约束,可能会引发较大的时钟偏移。 2. **过高的频率需求** 当设计的目标工作频率超过FPGA器件的实际能力时,布局布线阶段可能无法完成所需的路径延迟能力,从而导致时序违例[^1]。 3. **复杂的组合逻辑路径** 长而复杂的组合逻辑会增加信号传播的时间,使得关键路径上的延时超出允许范围。这种情况下,即使单个寄存器到寄存器之间的延时可以接受,整个路径也可能违反时序要求[^4]。 4. **资源竞争和拥塞** 在高密度设计中,多个模块争夺有限的物理资源(如LUTs、FFs),这会导致某些区域内的布线变得非常拥挤,进而影响整体时序性能[^3]。 5. **不良的设计实践** 不良编码习惯或者缺乏优化意识也会间接造成时序问题。比如使用过多的全局信号广播、嵌套循环结构等都会显著延长数据传输时间。 --- #### 二、检测与时序分析方法 为了有效识别并定位时序违例的具体位置及其根本原因,可采用如下手段: 1. 使用Vivado内置的功能查看详细的时序报告。通过`open_report_timing_summary`命令加载相关窗口,并仔细审查其中列出的各项指标是否达标。 2. 调用`report_qor_suggestions`脚本来自动生成针对当前项目状况的一系列改进建议列表;这些提议往往以XDC/TCL形式呈现出来供开发者参考实施。 --- #### 三、具体的解决方案 以下是几种常用的缓解措施来应对不同类型的时序违规情况: 1. **调整综合参数** 修改默认选项以便更好地平衡速度与面积利用率的关系。例如启用更激进的技术节点映射策略或将部分算术运算展开成更低层次的操作单元。 2. **重新规划架构** 对于那些存在瓶颈效应的关键计算链路考虑重构其算法表达式使其更加适合流水化处理模式,这样既能减少每次迭代所需耗费的时间又能充分利用闲置硬件资源。 3. **加强同步机制** 增加额外的锁存级数用来隔离敏感边界条件下的不确定性干扰因素,同时确保所有跨时钟域的数据交换都经过严格验证过的握手协议保护。 4. **精细化控制约束定义** 明确指定每一个端口对应的外部接口特性以及内部互联线路的行为特征,避免因模糊不清而导致不必要的余量损失。 5. **利用专用IP核或硬宏组件替代通用软逻辑实现特定功能模块** 这样不仅可以获得更高的运行效率而且还能简化后续维护工作的复杂度。 ```python # 示例:TCL脚本自动应用QoR建议 set suggestions [report_qor_suggestions -file qor_suggestions.rpt] foreach suggestion $suggestions { eval $suggestion } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值