FPGA之xilinx系列复位

参考转载大佬:FPGA-xilinx系列芯片的复位,你真的明白吗?

1. 不同系列FPGA复位区别:

复位的目的是使得器件强制进入到可以稳定的工作的确定状态,这就避免了器件在上电后进入到随机状态导致进入到无法判断状态(也就是死机)。然不同系列的FPGA芯片复位方式会有差别。

1.1 lattice

       lattice系列的FPGA而言,低端器件(如iCE40):无专用全局复位网络,需手动同步处理。高端器件(如ECP5)支持GSR,但是需要PUR(上电复位)引脚或者内部逻辑触发,推荐使用低电平同步复位(因全局资源有效)。

1.2 Intel

        对于Intel的FPGA而言,因为里面的寄存器flip-flop只支持低电平有效的异步复位,所以推荐使用低有效的异步复位

1.3 Xilinx

       xilinx系列的FPGA而言,寄存器flip-flop支持高电平有效的异步复位/置位和同步复位/置位。由于器件内部信号均为高有效,因此推荐使用高电平有效的同步复位。如果外部输入复位为低电平有效的复位信号,那么在顶层做取反处理,反相器可以被吸收到IOB中。

2. xilinx为什么不推荐异步复位

2.1 产生亚稳态

异步复位信号的释放(从低到高跳变)若与时钟边沿(如上升沿)时间窗口重叠,会导致寄存器的建立时间(Setup Time)和保持时间(Hold Time)要求无法满足。此时,输入信号在时钟边沿的亚稳态窗口内变化,使寄存器输出处于不确定状态(介于高电平和低电平之间),直到额外时间后才能稳定到确定值。 ‌会导致部分寄存器产生亚稳态。

2.2 浪费布线资源

       器件无全局复位缓冲(如Lattice低端器件):异步复位如果没有被正确约束,工具可能无法将其映射到专用的全局复位网络(如GSR),而是使用大量的普通布线资源。

       高扇出:复位信号通常驱动大量寄存器,普通布线无法高效支持高扇出,就会导致占用大量布线资源(如LUT作为缓冲)。增加复位路径延迟,引发时序违例。

2.3 浪费Slice资源

        使用异步复位的寄存器和不使用异步复位的寄存器不能包装在一个Slice。

2.4 降低DSP和BRAM性能

xilinx内部的DSP和BRAM中,只有同步复位资源,异步复位的逻辑是无法包含到到BRAM/DSP内部的,工具会将异步复位先使用LUT资源同步化在输入到BRAM/DSP中,即增加了时序路径长度降低了性能

3. xilinx复位建议

3.1 高电平同步复位

xilinx底层寄存器flip-flop推荐使用高电平同步复位

3.2 避免复位

       寄存器其实很多情况不需要复位,特别是对于只进行赋值的寄存器,可以在寄存器初始化时候直接赋值:reg [3:0]  A = 4'h0;

3.3 模块化复位

        模块化复位可以降低扇出,保证电路的稳定性: 

reg m0_rst, m1_rst,m2_rst;

always @(clk) begin

      m0_rst <= sync_rst;

      m1_rst <= sync_rst;

      m2_rst <= sync_rst;

end

3.4 异步复位同步释放

      如模块中一定需要异步复位,就需要做异步复位同步释放的的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值