Xilinx FPGA复位逻辑处理小结

1. 为什么要复位呢?

(1)FPGA上电的时候对设计进行初始化;

(2)使用一个外部管脚来实现全局复位,复位作为一个同步信号将所有存储单元设置为一个已知的状态,这个全局复位管脚与任何其他的输入管脚没有什么差别,经常以异步的方式作用于FPGA。因此,设计人员可以在FPGA内部采用异步或者同步的方式来复位他们的设计。 (always@(posedge clk or posedge rst) )

2. 复位是针对存储单元--触发器,首先有必要了解一下触发器(flip-flops)

Xilinx7系列架构的FPGA每一个slice里面包含8个寄存器,并且所有的这些寄存器都是D触发器,这些触发器共享控制集。控制集包括输入时钟信号(clk),高电平有效使能信号(ce)和高电平有效清零(SR)。SR在触发器里用作同步置位/复位或者异步预复位/清零。

同步复位与异步复位:

当复位信号出现在敏感信号列表中时,触发器将采用异步复位的方式。触发器的SR端口被配置为预置位/清零端口,用FDCE/FDPE触发器来表示。一旦RST= ‘1’条件满足,触发器将立即输出SRVAl属性。

在同步复位的情形,触发器的SR端口被配置为置位/复位端口,用FDSE/FDRE触发器来表示。一旦RST=‘1’条件满足,

触发器将在下一个时钟上升沿时输出SRVAl属性。

INIT 与SRVAL属性

INIT属性用来初始化触发器,INIT属性的值将在配置过程中加载到触发器。

XilinxFPGA 的触发器可以支持同步或者异步复位、置位控制,但是关联的触发器一次只能实现one set / reset / preset /clear中的一个。RTL代码中使用了set / reset / preset /clear 里不止一种时,将导致一些条件下使用触发器的SR端口,而另一些条件下使用fabric logic,则将消耗了更多FPGA资源。一般来说,最好避免使用超过一种set/reset/preset/clearcondition。

3. 除了考虑复位类型,还需要考虑复位信号与时钟是否同步的问题

只要全局复位脉冲信号持续的时间够长,FPGA所有的触发器都将进入复位状态。然而,复位信号的解除必须满足触发器的时序要求,以确保触发器能够正确的从复位状态恢复到正常状态。不满足这些时序要求,将导致触发器进入亚稳态。

并且,为确保子系统(如状态机、计数器)正常工作,所有的触发器必须在相同的时钟沿跳出复位状态。

如果同一状态机的不同的bit在不同的时钟沿跳出复位状态,则状态机将转移的一个非法的状态,这就说明了解除复位信号时与时钟同步必要性。

4. 两种复位机制

同步复位机制:

可以使用一种标准的亚稳态消除电路(两个触发器背靠背相连)来将全局复位同步到特定的时钟域。同步化的复位信号可以使用同步SR端口来初始化所有的存储单元。由于同步器和触发器在同一时钟域里被复位,标准的时钟周期约束包括了它们之间的路径的时间。在FPGA中每一个时钟域需要使用单独的同步器来为对应的时钟域产生同步化的全局复位信号。

Tip 1: When driving the synchronous SR port of flip-flops, every clock domain requires its own localized version of the global reset, synchronized to that domain
异步复位机制:

设计中的存储单元可能需要使用触发器的异步SR port 来异步复位初始化。尽管这些存储单元使用了异步的SR端口,复位信号的解除必须与时钟信号同步。这与触发器的复位恢复时序要求有关,类似于异步SR解除信号边沿对时钟上升沿要满足建立时间的要求。不能满足这些时序要求时将导致触发器进入一个亚稳态,同步的子系统进入异常的状态。

--复位桥电路复位桥电路提供了异步复位声明、同步复位解除的机制。在这个电路中,假定两个触发器的SR port 有一个异步设置的值,SRVAL= 1:

复位桥电路提供了同步的解除异步复位的安全机制。每一个时钟域需要使用复位桥电路来产生它自己的本地化(localized)的全局复位信号。FPGA的每一个时钟域需要一个单独的、同步化的全局复位信号。它可以由单独的复位桥电路来产生。

图中电路假定:复位桥电路和相关的逻辑的时钟源clk_a是稳定的、无错的。在FPGA中,时钟可以来自芯片外的时钟源(最好通过一个clock-capable管脚),或者采用MMCM或者PLL内部产生。任何用于产生时钟信号的MMCM or PLL在复位后需要校准。因此,你可能需要在全局复位路径插入一些额外的逻辑来稳定时钟信号。

Tip 2: A reset bridgecircuit provides a safe mechanism to deassert an asynchronous resetsynchronously.Every clock domainrequires its own localized version of the global reset with the use of a resetbridge circuit.

Tip 3: Ensure that theclock the MMCM or PLL has generated is stable and locked before deasserting theglobal reset to the FPGA

FPGA内实现异步复位逻辑的典型框图

5. 为什么复位信号一般都使用高点平有效呢?

Xilinx 寄存器的SR控制端是高电平有效的。如果RTL代码采用了低电平有效的复位模式,综合器将在复位信号驱动寄存器SR控制端之前的插入一个反相器(interver)。你必须使用一个查找表(look up table)来实现反向器,以利用LUT的输入端口。低电平有效的控制信号带来的额外的逻辑可能拉长了执行时间(runtime),将导致更低的FPGA资源利用率,也将影响时序和功耗。

到底我想说点什么呢?尽可能的在HDL代码或者实例化的模块中使用高电平有效的控制信号。如果在设计中,你不能够改变这些控制信号的极性,你需要在代码的顶层文件反转这些控制信号。采用这种方式描述电路的话,这些反向器将被吸收到I/O逻辑中,而不需要使用额外的FPGA逻辑、路径。
Tip 4: Active-high resets enable better device utilization and improveperformance.

6.到底如何用呢?

应用场合:多个时钟域的情况下的复位,针对每一个时钟域都得有对应的复位逻辑。

参见tri_mode_mac 参考例子中的实现方法。

7. 复位桥电路到底怎么实现呢?

`timescale 1ps/1ps
module tri_mode_mac_reset_sync #(
parameter INITIALISE = 'b11
)
(
input reset_in,
input clk,
input enable,
output reset_out
); wire reset_stage1;
wire reset_stage2; (* ASYNC_REG = "TRUE", RLOC = "X0Y0", SHREG_EXTRACT = "NO", INIT = "" *)
FDPE #(
.INIT (INITIALISE[])
) reset_sync1 (
.C (clk),
.CE (enable),
.PRE(reset_in),
.D ('b0),
.Q (reset_stage1)
); (* ASYNC_REG = "TRUE", RLOC = "X0Y0", SHREG_EXTRACT = "NO", INIT = "" *)
FDPE #(
.INIT (INITIALISE[])
) reset_sync2 (
.C (clk),
.CE (enable),
.PRE(reset_in),
.D (reset_stage1),
.Q (reset_stage2)
); assign reset_out = reset_stage2;
endmodule

参考文档:how do i reset FPGA

Srikanth Erusalagandi, Xilinx
---------------------
作者:shanekong
来源:CSDN
原文:https://blog.csdn.net/shanekong/article/details/44834381?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!

7series 逻辑单元

Xilinx FPGA复位逻辑处理小结(转)的更多相关文章

  1. 你真的会Xilinx FPGA的复位吗?

    Get Smart About Reset: Think Local, Not Global. 对于复位信号的处理,为了方便我们习惯上采用全局复位,博主在很长一段时间内都是将复位信号作为一个I/O口, ...

  2. Xilinx FPGA结构

    FPGA是什么?FPGA是现场可编程逻辑阵列,由可编程逻辑资源(LUT和 REG),可编程连线,可编程I/O构成.Xilinx的FPGA的基本结构是一样的,但随着半导体工艺的发展,FPGA的逻辑容量越 ...

  3. Xilinx FPGA LVDS应用

    最近项目需要用到差分信号传输,于是看了一下FPGA上差分信号的使用.Xilinx FPGA中,主要通过原语实现差分信号的收发:OBUFDS(差分输出BUF),IBUFDS(差分输入BUF). 注意在分 ...

  4. FPGA复位的可靠性(转)

    FPGA复位的可靠性(同步复位和异步复位)  reference:http://www.eetop.cn/blog/html/17/743817-24442.html 一.特点: 同步复位:顾名思义, ...

  5. xilinx FPGA全局时钟资源的使用

    1.什么是xilinx fpga全局时钟资源 时钟对于一个系统的作用不言而喻,就像人体的心脏一样,如果系统时钟的抖动.延迟.偏移过大,会导致系统的工作频率降低,严重时甚至会导致系统的时序错乱,实现不了 ...

  6. 2-基于6U VPX的双TMS320C6678+Xilinx FPGA K7 XC7K420T的图像信号处理板

    基于6U VPX的双TMS320C6678+Xilinx FPGA K7 XC7K420T的图像信号处理板 综合图像处理硬件平台包括图像信号处理板2块,视频处理板1块,主控板1块,电源板1块,VPX背 ...

  7. Xilinx FPGA控制器的Everspin STT-DDR4设计指南

    自旋转移扭矩磁阻随机存取存储器(STT-MRAM)是一种持久性存储技术,可利用各种工业标准接口提供性能,持久性和耐用性. Everspin推出了STT-MRAM产品,该产品利用称为JE-DDR4的JE ...

  8. 基于Xilinx FPGA的视频图像采集系统

    本篇要分享的是基于Xilinx FPGA的视频图像采集系统,使用摄像头采集图像数据,并没有用到SDRAM/DDR.这个工程使用的是OV7670 30w像素摄像头,用双口RAM做存储,显示窗口为320x ...

  9. Xilinx FPGA引脚txt文件导入excel中

    需求 为了把xilinx FPGA的官方引脚文件txt转成excel文件(实际官网中有对应的csv文件就是excel文件了...) xilinx FPGA引脚地址:https://china.xili ...

随机推荐

  1. DELPHI各种颜色表达式

    颜色样本   十六进制  名称与注释  #ffb3a7 粉红:即浅红色.别称:妃色 杨妃色 湘妃色 妃红色.  #ed5736 妃色:妃红色.古同“绯”,粉红色.杨妃色.湘妃色.粉红皆同义.  #f0 ...

  2. @suppresswarnings(unchecked)的作用

    @suppresswarnings(unchecked)的作用 一般在项目中会出现红色的报错,这个是影响项目运行的,无法启动,会停在那里,而warning警告,黄色的虽然不是会让项目停止,但是却是不规 ...

  3. CF1107E Vasya and Binary String

    比赛的时候又被垃圾题艹翻了啊. 这个题显然是区间dp 考虑怎么转移. 类似消除方块和ZYB玩字符串那样的一个DP. 可以从左到右依次考虑消除. dp[l][r][k][flag]表示区间l,r左边粘着 ...

  4. python 构造函数作用

    1. 构造函数的作用        构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作, 当创建对象时, 对象会自动调用它的构造函数.一般来说, 构造函数有以下三个方面的作用:        ...

  5. 树莓派 CSI摄像头 No data received from sensor. Check all connections, including the Sunny one on the camera board

    不知道为什么摄像头在包里放了两天旧坏了,中间完全没用过摄像头的功能,查了资料,原因大概有两种 1)sunny烧了 2)试摄像头传感器坏了 这两天没有插拔过摄像头,可能是树莓派漏电了,也可能是它被压坏了 ...

  6. Wannafly挑战赛23B游戏

    https://www.nowcoder.com/acm/contest/161/B 题意:两个人van游戏,n堆石子,每次只能取这堆石子数目的因子个数,没得取的人输,问第一个人的必胜策略有多少种 题 ...

  7. win10更新后,可以远程桌面ping也没问题,但是无法访问共享文件夹的解决方法

    计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters 1.在键盘输入WIN+R键, ...

  8. hive的jdbc使用

    ①新建maven项目,加载依赖包  在pom.xml中添加 <dependency> <groupId>jdk.tools</groupId> <artifa ...

  9. java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2).

    java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2). java. ...

  10. django学习之——创建项目

    创建项目让我迷茫了会: 直接cmd 执行django-admin.py startproject  pro_name 肯定是不行的 必须cd到 D:\Program Files\Python3.3.5 ...