首页 > 技术 > 内容

你真的会Xilinx FPGA的复位吗?

时间:2025-12-01  作者:Diven  阅读:0

Get Smart About Reset: Think Local, Not Global

对于复位信号的处理,为了方便我们习惯上采用全局复位,博主在很长一段时间内都是将复位信号作为一个I/O口,通过拨码开关硬件复位。后来也看了一些书籍,采用异步复位同步释放,对自己设计的改进。

不过自从我研读了Xilinx的White Paper后,让我对复位有了更新的认识。

使用全局复位有利于我们仿真,所有的寄存器都是有初始值的,也可以在任意时刻让你的寄存器恢复初值,所以验证工程师很喜欢这样的设计,但是Xilinx建议的是尽量避免使用全局复位,这是为什么呢。

全局复位并不是好的处理方式

我们习惯上通常使用的复位有三种,

  • 硬件开关:复位信号接一个拨码开关
  • 电源芯片:上电时候电源芯片产生,可以长时间维持,直到稳定。
  • 控制芯片:控制芯片产生复位脉冲。

这些复位信号和FPGA内部信号的变化比起来是比较慢的。复位按钮最快也会到达毫秒级别,而FPGA内部信号都是纳秒级别的变化。全局复位的周期远大于系统时钟的周期,是完全可以保证所有的触发器被成功复位的。

但随着系统的频率越来越快,全局复位信号的释放形成一个高扇出的网络。

Fan-out即扇出,模块直接调用的下级模块的个数,如果这个数值过大的话,在FPGA直接表现为net delay较大,不利于时序收敛。在写代码时应尽量避免高扇出的情况。如图,全局复位的释放需要传输到不同的触发器。每一个触发器需要被释放复位,但是随着时钟频率的提高,加上复位路径网络的延迟,而且全局复位还是一个高扇出的网络,所以这对系统的时序是一个大挑战。通常情况下,复位信号的异步释放,没有办法保证所有的触发器都能在同一时间内释放。触发器在A时刻接收到复位信号释放是最稳定的,在下一个时钟沿来临被激活,但是如果在C时刻接收到复位信号释放无法被激活,在B时刻收到复位信号释放,则会引起亚稳态。随着系统时钟频率的提高,并不是所有的触发器都能在同一个时刻从复位状态被释放。

复位真的有那么重要吗?

白皮书上又说了,好的消息是99.9%的情况下,全局复位的异步释放并不会出现问题。所以大多数电路都可以正常工作。但是,如果你有了第一次就不能工作的电路,那你就是遇到那0.01%的情况,很不幸你的复位信号被在错误的时刻重置。(哈哈,皮)。

在一些情况下,复位释放的时间并不重要。当你的数据采用流水线操作的时候,复位释放的时间并不重要,因为不管你流水线后面的触发器复位释放后是否出错,只需要一些周期后,整个流水线就又会正常工作了。白皮书上还说,这样的复位也是没有意义的。

但是有一些情况下,复位的释放后是很重要的。比如独热码状态机。如果表示独热码状态的第一个触发器比第二个触发器早释放了一个时钟周期,那状态机的状态机会跳转到一个无效的状态。如果所有的表示独热码的寄存器无法在同一个周期内被释放,那状态机肯定会跳转到一个无效的状态。还有一些例子,请读者自己看白皮书。

解决99.99%的情况

其实当Xilinx FPGA配置或重新配置时,所有的单元都会被初始化。白皮书称为master reset,因为这可比你复位一些D触发器要强得多,甚至初始化了片内RAM

Xilinx的器件也有嵌入处理的系列,软核或硬核。在程序执行第一条指令前,程序和数据区域已经定义好了。有了上电复位,还用专门消耗逻辑资源去复位触发器是没有意义的。

解决0.01%的方法

当然,白皮书也给出了处理复位的建议和方法。Think Local, Not Global。异步复位,同步释放的方法。用内部定义复位信号的方法来复位触发器,而不是全都直接使用全局复位信号。当进行复位操作时,所有的触发器被预设为1。如上图,移位寄存器的最后一个触发器去操作模块内部定义的复位网络。当复位信号释放时,移位寄存器经过移位,当最后一个触发器由高电平变为低电平时,对本地的复位网络进行复位操作。也就是异步复位,同步释放。

复位的消耗的资源比你想象的要多

复位网络占用大量布线资源。

提高了布局布线时间。

使用器件的逻辑资源。

会使你的设计变得更大。

占用更多的逻辑资源肯定会影响你的性能。

具体请参阅白皮书。

并不是所有部分的设计都需要复位,所以设计者在设计过程中应该准确判断需要被复位的部分,从而采用异步复位、同步释放的方法进行对复位的严格处理。

当我们在设计每一个部分的时候,都要内心问问自己,这个bit需要被复位吗?

那么怎样处理Xilinx FPGA中的复位呢?Xilinx的工程师也给出了解释和方法。

Xilinx的FPGA 应该尽量避免全局复位,有些部分的设计都可以不用复位,必需要复位的设计而采用 同步 高复位。

代码如下。设计中需要复位的部分,使用产生的sys_rst信号进行同步复位,而且是同步 高复位。再次贴出下图。1 Module Sys_Rst(

2 input clk,

3 input rst,

4 output sys_rst

5

6 );

7

8 reg rst_r0;

9 reg rst_r1;

10

11 always @(posedge clk or posedge rst)begin

12 if(rst)begin

13 rst_r0 <= 1'b1;

14 rst_r1 <= 1'b1;

15 end

16 else begin

17 rst_r0 <= 1'b0;

18 rst_r1 <= rst_r0;

19 end

20 end

21

22 assign sys_rst = rst_r1;

23

24 endModule

猜您喜欢


液体胶是常见的粘合剂,应用于家庭、办公和工业等多个领域。主要作用是快速、牢固地粘合各种材料,如纸张、木材、塑料、金属等。液体胶的优势在于其使用方便,通常只需将胶...
2011-12-14 00:00:00
肖特基二极管(Schottky Diode)是具有低正向压降和快速开关特性的半导体器件,应用于电源转换、整流和信号处理等领域。相较于传统的PN结二极管,肖特基二...
2025-04-06 11:30:03
和单片机一样,FPGA开发板上也都会配有晶振用来生成板载时钟。前一篇我们提到了小脚丫的固定板载时钟频率为12MHz,这个频率实际上就是作为我们的时间参考基准。正...
2023-06-20 17:02:00
合金电阻因其稳定的性能和优良的耐高温特性,应用于各种电子设备中。TA-I(大毅)合金电阻作为行业内知名的电阻型号,受到了众多工程师和制造商的青睐。本文将围绕“T...
2016-01-16 00:36:30
塑料封条是应用于物流、仓储和安全领域的重要工具,根据不同的用途和特性,可以分为多种类型。按结构分类,塑料封条主要有一次性封条和可重复使用封条。一次性封条适用于需...
2012-02-02 00:00:00
现代建筑与设施管理中,应急照明系统是保障人员安全的重要组成部分。了解集中和非集中电源之间的区别,对于正确选用应急照明系统很重要。本文将为您解析这两种电源方案的特...
2024-10-25 00:00:00
灭火毯是重要的消防安全工具,具有多重作用。可以迅速扑灭初起火灾,尤其是油火和电器火灾。当火焰小且处于可控范围内时,覆盖灭火毯可以有效隔绝氧气,从而熄灭火焰,防止...
2009-04-26 00:00:00
采样电阻作为测量电流的重要元件,是非常重要的配件。合美电机(HERMEI)作为国内知名的电机及相关配件制造企业,其采样电阻产品因品质优良、性能稳定而受到关注。本...
2015-08-08 22:16:55
贴片电阻的阻值误差超出标称范围,可能是多种因素共同作用的结果。生产过程中,原材料的纯度和均匀性直接影响电阻的最终阻值。此外,生产设备的精度和稳定性,例如印刷、烧...
2024-11-29 10:26:01