Xilinx FPGA复位浅析

 Xilinx FPGA复位浅析

1. 普通逻辑的复位
对于xilinx 7系列的FPGA而言,flip-flop支持高有效的异步复/置位和同步复位/置位。对普通逻辑设计,同步复位和异步复位没有区别,当然由于器件内部信号均为高有效,因此推荐使用高有效的控制信号,最好使用高有效的同步复位。输入复位信号的低有效在顶层放置反相器可以被吸收到IOB中。

下面细说原因
先比较一下同步复位和异步复位的区别:
首先是同步复位,同步的控制信号包括同步置位/复位和使能,可以被吸收到LUT中,目的是为了防止控制集不同的LUT不能被综合到同一个slice中,这样虽然提高了了LUT的使用率,却降低了slice的使用率,得不偿失。

控制信号扇出不大于16的情况都可以尽可能的被吸收到同一个slice的LUT中去,在vivado中可以使用control_set_opt_threshold进行设置。

同步复位
always @(posedge I_sys_clk)
begin
if(I_rst)
begin
OUT1 <= 0;
end
else
begin
OUT1 <= &{a1,a2,a3,a4,a5,a6};
end
end

 Xilinx FPGA复位浅析

控制集优化为2时,可以看出复位信号中插入了LUT,但是由于在同一个slice中,使用造成的延时并不显著。注意对于扇出大的信号比如全局复位来说,这种控制集优化是不起作用的。

 Xilinx FPGA复位浅析

控制集合优化为0时,可以看出不会使用多于的LUT逻辑。

异步复位
always @(posedge I_sys_clk or posedge I_rst)
begin
if(I_rst)
begin
OUT1 <= 0;
end
else
begin
OUT1 <= &{a1,a2,a3,a4,a5,a6};
end
end

 Xilinx FPGA复位浅析


异步复位跟没有使用控制集综合出的结果相同,可以看出不会使用额外的LUT逻辑。

分析Recovery/Removal

异步复位有Recover time 和Remove time 的风险,也就是说recovery time和removal time都是检查异步信号(reset或preset或set)的释放沿,释放沿必须在时钟沿前面提前recovery time释放,或者在时钟沿后removal time之后释放。

 Xilinx FPGA复位浅析

顺便简单分析一下setup/hold,对于同一个时钟,肯定满足data_path>clk_path,而hold的要求很小,所以肯定满足。当data_path过长时,setup可能不满足。

 Xilinx FPGA复位浅析

假如不作同步的复位信号,那么recovery/removal都有可能不满足。

再考虑被本地时钟同步后的recovery/removal,同理复位信号对removal的时间要求很小,同步后的复位信号的延迟就能满足removal。由于设计中的全局复位信号一般有很大的扇出,布线的延时会很严重,因此recovery的要求变得严格。最好采用全局布线资源如BUFG,尽量用局部复位或者避免使用复位。

因此不管是同步复位还是异步复位,都要使用同步后的复位信号。复位信号进来后先用本地时钟打两拍。在多个时钟域的时候注意是本地时钟,不是全局时钟。并在rtl中注明是异步寄存器,使得综合工具把简单同步器综合在同一个slice中以减少延时,提高MTBF。
(* ASYNC_REG = "TRUE" *) (* keep = "true" *)reg system_reset_r;
(* ASYNC_REG = "TRUE" *) (* keep = "true" *)reg system_reset_r2;

综合的结果如图,同步化的异步复位。

 Xilinx FPGA复位浅析

2. 特殊资源的复位

使用xilinx 原语SRL16、SRL32、LUTRAM

由于是利用LUT完成的上述功能,没有复位接口。只能依靠 GSR方法来完成,不能使用复位。因此,在为以上这些资源编写代码时,应注意避免在编码中使用复位,以此来保证综合工具综合出相应的电路。

使用复位信号

没有使用复位信号,可以看出综合工具自动把输入和输出寄存化,以满足更好的时序。

 Xilinx FPGA复位浅析

使用DSP48E1或BRAM

使用同步复位可以允许综合工具使用 DSP48E1或BRAM等专用资源内部的寄存器。这样能够改善设计中相应部分的器件总体使用率和性能,同时降低总体功耗。

下面以18X18的乘法器为例

同步复位
module multi_18x18(
input I_rst ,
input I_sys_clk ,
input [17:0]I_data1 ,
input [17:0]I_data2 ,
output reg [35:0] O_data
);

用户喜欢...

使用Xilinx系统生成器实现简单的DDS

在本文中,我们将讨论使用Xilinx System Generator实现简单的直接数字频率合成器(DDS)。 System Generator是一个功能强大的工具,它将Xilinx FPGA设计过程与MATLAB的Simulink集成,后者使用高级描述轻松实...


汽车行业 FPGA桥接解决方案能够解决许多问题

在过去十年里,随着智能手机及其应用生态体系的不断发展,汽车电子领域中移动相关应用的创新技术也深受其影响。汽车制造商已经开始将用于智能手机的相同处理器平台应用到新一代汽车中...


QDR SRAM接口FPGA 详细Verilog代码

QDR SRAM介绍 QDR 具有独立的读、写数据通路,均使用DDR,在每个时钟周期内会传输四个总线宽度的数据 (两个读和两个写),这就是QDR四倍数据速率的由来。 这里用到的是典型2字突发的QDR,...


3D成像: 嵌入式FPGA处理引擎实现3D web检测

Steven Gloffen 奥地利自动化解决方案提供商digMAR公司为德国地毯和纺织品切割机供应商KURIS公司开发了一套3D图像处理系统。这套多相机机器视觉系统设计用于扫描纺织材料,可以自动计算基于...


Aldec的边缘计算示例: Zynq SoC 的 FPGA架构将嵌入式视觉/ ADAS性能提升了10倍

Aldec的一个应用工程师 Farhad Fallah 在 New Electronics 网站上发表的一篇题​​为生活在边缘的文章最近引起了我的注意,因为它简洁地描述了为什么 FPGA 对于许多高性能的边缘计算应用如此有用...


恒扬数据携手OpenPOWER多家成员共同推进基于CAPI SNAP框架的FPGA加速应用开发

日前,以“智慧链接新智能 创新加速助中国” 为主题2017年OpenPOWER 中国高峰论坛在京隆重召开,包括IBM、赛灵思、英伟达、浪潮、中太服务器、恒扬数据等在内的联盟成员出席了此次盛会并...


LVDS高速ADC接口, Xilinx FPGA实现

LVDS 即Low-Voltage Differential Signaling。FPGA的selecteIO非常强大,支持各种IO接口标准,电压电流都可以配置。其接口速率可以达到几百M甚至上千M。使用lvds来接收高速ADC产生的数据会很方便。像IS...


Xilinx开发板Si570频率配置方法详解

Xilinx大部分的开发板上都集成了Si570时钟芯片,该时钟的性能指标比较好,可以满足大部分高速串行接口应用对于参考时钟的要求。同时该时钟还可以通过I2C接口配置其输出频率。 该专题详细...


通俗讲解单片机、ARM、MCU、DSP、FPGA、嵌入式错综复杂的关系!

首先,“嵌入式”这是个概念,准确的定义没有,各个书上都有各自的定义。但是主要思想是一样的,就是相比较PC机这种通用系统来说,嵌入式系统是个专用系统,结构精简,在硬件和软件...


在机器学习的应用上,软件工程师和FPGA真的有着难以逾越的鸿沟吗?

人工智能和机器学习正在渗透所有的行业。随着人工智能算法的成熟,支持这些算法的硬件平台也日趋成熟。目前,这些硬件平台包括 ASIC,CPU,GPU以及 FPGA 。在 Plunify,尽管我们的强项是F...


NI推出基于Xilinx Kintex UltraScale 技术的全新PXI FlexRIO架构

全新的PXI FlexRIO示波器与PXI FlexRIO协处理器模块相结合,无需通过自定义设计, 即可提供自定义硬件解决方案。 NI(美国国家仪器公司,National Instruments,简称NI) 作为致力于为工程师和科学家提...


FPGA竟然使Apple II个人电脑做回了自己!

背景: 微处理器软核代码开放,那么将源代码用工具例化到FPGA里面是不是就能实现其逻辑功能,当年流行的微处理器成就的一些产品是不是可以再拿出来回味回味呢?答案是肯定的, Micro...


Atlas助力华为云FPGA加速云服务器首秀北美市场

近日,华为技术有限公司(Huawei Technologies Co., Ltd.)与All Programmable技术和器件的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX))在美国科罗拉多丹佛举行的2017 年超级计算大会上联合宣布,基...


Xilinx FPGA在基因组测序中大显身手!

作者:sleibso ,编译:蒙面侠客 引言: PrecisionFDA平台是基因组信息学社区和共享数据平台,这是一个为研究人员准备的开源、基于云的工具,它将为下一代测序诊断提供依据,并且为所有开...


深度解析FPGA四大设计要点

FPGA的用处比我们平时想象的用处更广泛,原因在于其中集成的模块种类更多,而不仅仅是原来的简单逻辑单元(LE)。早期的FPGA相对比较简单,所有的功能单元仅仅由管脚、内部buffer、LE、RAM构...


FPGA上电后IO的默认状态

概述 在进行FPGA硬件设计时,引脚分配是非常重要的一个环节,特别是在硬件电路上需要与其他芯片通行的引脚。Xilinx FPGA从上电之后到正常工作整个过程中各个阶段引脚的状态,会对硬件设...