常见的FPGA复位设计

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

在FPGA设计中,当复位整个系统或功能模块时,需要将先关寄存器被清零或者赋初值,以保证整个系统或功能运行正常。在大部分的设计中,我们经常用“同步复位”或“异步复位”直接将所有的寄存器全部复位,这部分可能大家都习以为常。但实际上,是否需要每个寄存器都进行复位呢?这是一个值得探讨的问题。

常见的FPGA复位设计

一、为什么需要进行复位?

在FPGA设计中,复位是一个基本操作。复位的目的是将FPGA的寄存器清零或赋初值,以确保仿真或正常上板运行时正常,以防止出现不确定的运行状态。

需要注意的是,FPGA中可编程逻辑块和寄存器,可能运行在不同的时钟和状态下,在某些功能突然停止运行时,可能处于未知状态,如果不按照预期的方式进行复位操作,FPGA可能无法正常工作。

如果需要了解同步复位与异步复位,请看这篇文章:FPGA中的异步复位、同步复位与异步复位同步释放。

二、常见的复位设计

根据复位方式的不同,FPGA复位信号可以分为外部复位和内部复位两种,复位信号也要分为高电平复位有效或低电平复位有效。

1、外部复位

外部复位是指由硬件按键或芯片产生的复位信号,也可由软件产生,但这些信号往往与FPGA内部各个时钟信号异步。

2、内部复位

内部复位是由FPGA内部逻辑产生的复位信号,例如在上电后自动复位或识别到某种内部命令后自发产生复位信号。这些复位信号相对于某一时钟域往往是同步的,但如果存在多个时钟域,也可能会存在异步复位信号的情况。

对于一个正常的FPGA系统来说,上电自动复位和手动按键复位都是必须的,二者相辅相成。除此之外,我们还需要根据实际情况确定是否需要对每个寄存器进行复位操作,以及选择适当的复位方式和控制复位操作的时机。在进行FPGA复位设计时,还需要注意复位电路的功耗,以减少不必要的功耗损失。

注意:软复位逻辑需要注意复位信号持续时间,比如一般fifo复位至少需要保持8个周期以上。

3、复位信号特点

(1)复位网络需要占用布线资源,会使得剩余的布线资源变少,对于布线设计带来挑战。
(2)复位信号的引入可能会对其信号的布线自由度造成限制,这意味着布线可能需要更多的代价才能成功完成。
(3)复位网络占用大量的布局网络资源,会导致Place & Route的时间大大增加。
(4)复位信号需要占用额外的逻辑资源,可能会影响整个FPGA芯片设计的资源消耗。
(5)需要使用触发器的专用复位管脚才能实现复位信号的输入,这也会占用有限的管脚资源。
(6)可操作的复位信号往往需要在D触发器输入前增加额外的门操作或专用的复位信号输入,可能会降低系统性能。

(7)大量的使用全局复位,复位信号将变成一个高扇出的信号,这对时序收敛无疑是一个巨大的挑战

4、寄存器复位与赋初值

FPGA的内部资源(触发器和RAM)等都会在上电后默认赋初值,一般是0,也可以在定义寄存器时赋初值,如:

reg [1:0] test = 'd2; //定义时赋初值

以上这个赋初值操作实际意义不大,但只在系统上电后有效,当FPGA中系统运行起来后,这个变量的值处于变化的状态,还是需要通过复位信号或者使能信号来控制将信号复位。

三、是否需要对每个寄存器都进行复位?

FPGA复位需要消耗FPGA内部资源,也会影响FPGA布线和时序收敛,所以对于每个寄存器都进行复位并不是最优方案,比如寄存器变量延迟几拍、有使能信号或有效信号控制的信号变量等情况都可以不做复位处理,如下所示:

Module test( input clk, input rst, input data_valid_i, input data_i, output reg data0_valid_o, output reg data0_o, output reg data1_valid_o, output reg data1_o, output reg data2_valid_o, output reg data2_o);reg d_r0, d_r1;always @(posedge clk) begin d_r0 <= data_i; d_r1 <= d_r0;​endalways @(posedge clk) begin data0_valid_o <= data_valid_i; if(data_valid_i) begin data0_o <= data_i; end else begin data0_o <= 'b0; endendalways @(posedge clk) begin if(rst) begin data1_valid_o <= 'b0; data1_o <= 'b0; end else begin data1_valid_o <= data_valid_i; if(data_valid_i) begin data1_o <= data_i; end else begin data1_o <= 'b0; end endendalways @(posedge clk or posedge rst) begin if(rst) begin data2_valid_o <= 'b0; data2_o <= 'b0; end else begin data2_valid_o <= data_valid_i; if(data_valid_i) begin data2_o <= data_i; end else begin data2_o <= 'b0; end endendendModule

vivado综合后电路如下:无复位信号同步复位异步复位

以上图中可以看出,没有复位信号的模块中,FDRE型触发器的复位输入接入了地,节省了复位信号的扇出。

猜您喜欢

保险丝作为汽车电路保护的重要元件,其性能和规格也越来越受到车主和维修人员的关注。瑶合乐作为国内知名的汽车保险丝品牌,高品质的产品和多样的规格赢得了市场的认可。本...
2020-06-14 03:26:30

聚丙烯薄膜电容是应用于电子设备的元件。的优点有很多,像是高稳定性和长寿命。人们常常好奇,聚丙烯薄膜电容含有什么金属。下面我们来详细看一下。铝聚丙烯薄膜电容常常含...
2025-03-28 07:30:02

电阻作为基础且关键的电子元件,种类繁多,品牌各异。在众多电阻品牌中,Murata(村田)作为全球知名的电子元器件制造商,其铝壳电阻受到关注。那么,Murata(...
2015-08-10 22:18:57

RF调制器和解调器是无线通信系统中非常重要的组件,其规格尺寸直接影响系统的性能和适用性。RF调制器的尺寸通常在10厘米到30厘米之间,具体取决于其频率范围、输出...
2009-08-28 00:00:00

合金电阻作为电子元器件中的重要组成部分,应用于各种电子设备中。三环集团(CCTC)作为国内知名的电子元件制造商,其合金电阻产品以高品质和稳定性能赢得了市场的认可...
2019-07-01 21:38:30

贴片电阻上的数字和字母可不是随便印的,它们代表着电阻的阻值。解读这些符号的关键在于理解标识方法,主要分为三位数标识和四位数标识两种。三位数标识法,前两位数字表示...
2024-11-26 11:29:33

索尼半导体制造公司近日传来喜讯,其索尼图像传感器的出货量已经成功突破了200亿个大关。自1983年起,索尼便开始了CCD图像传感器的生产之旅,凭借其卓越的技术...
2024-12-19 13:34:00

当你做错事时,承认错误并不是一件容易的事,但是犯错是任何学习过程中的一部分,无论是学习走路,还是学习一种新的编程语言都是这样,比如学习 Python。为了让初...
2018-03-21 11:46:00

温度保险丝作为重要的安全保护元件,有着着不可替代的作用。伊莱科(ELECALL)作为知名的温度保险丝品牌,很好的品质和技术优势,赢得了众多客户的信赖和好评。本文...
2024-06-03 03:35:30

电感变压器是应用于电力系统和电子设备中的关键元件,其性能的优劣直接影响到设备的效率和稳定性。而在电感变压器的应用中,附件的选择与配置同样非常重要。绝缘材料是电感...
2013-08-26 00:00:00