0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Xilinx FPGA的复位信号处理

454398 来源:csdn 作者:NingHeChuan 2020-12-25 12:08 次阅读

作者:NingHeChuan

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

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

One of the commandments of digital design states,"Thou shalt have a master reset for all flip-flops so that the test engineer will love you, and your simulations will not remain undefined for time eternal."

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

全局复位并不是好的处理方式
我们习惯上通常使用的复位有三种,

硬件开关:复位信号接一个拨码开关。

电源芯片:上电时候电源芯片产生,可以长时间维持,直到稳定。

控制芯片:控制芯片产生复位脉冲。

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

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

Fan-out即扇出,模块直接调用的下级模块的个数,如果这个数值过大的话,在FPGA直接表现为net delay较大,不利于时序收敛。因此,在写代码时应尽量避免高扇出的情况。

o4YBAF9uHs6AahZPAACQLpLP5B4391.png

如图,全局复位的释放需要传输到不同的触发器。每一个触发器需要被释放复位,但是随着时钟频率的提高,加上复位路径网络的延迟,而且全局复位还是一个高扇出的网络,所以这对系统的时序是一个大挑战。

pIYBAF9uHtCAVVkSAABsVYI7OAc112.png

通常情况下,复位信号的异步释放,没有办法保证所有的触发器都能在同一时间内释放。触发器在A时刻接收到复位信号释放是最稳定的,在下一个时钟沿来临被激活,但是如果在C时刻接收到复位信号释放无法被激活,在B时刻收到复位信号释放,则会引起亚稳态。

o4YBAF9uHtGALPeWAABLbZOjaLA239.png

随着系统时钟频率的提高,并不是所有的触发器都能在同一个时刻从复位状态被释放。

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

pIYBAF9uHtKAUEP3AAAyIyDDKXk798.png

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

但是有一些情况下,复位的释放后是很重要的。

pIYBAF9uHtSASvUJAABCFCV0ow8779.png

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

解决99.99%的情况

pIYBAF9uHtWAdB6oAABXpcuKfDY636.png

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

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

解决0.01%的方法
当然,白皮书也给出了处理复位的建议和方法。

o4YBAF9uHtaAOxOSAABTjgt_6zA048.png

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

复位的消耗的资源比你想象的要多
复位网络占用大量布线资源。
提高了布局布线时间。
使用器件的逻辑资源。
会使你的设计变得更大。
占用更多的逻辑资源肯定会影响你的性能。
具体请参阅白皮书。

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

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

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

https://www.eetimes.com/document.asp?doc_id=1278998

http://xilinx.eetrend.com/d6-xilinx/article/2013-07/4343.html

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

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

o4YBAF9uHtiAWahlAABTjgt_6zA083.png

module Sys_Rst(
input clk,
input rst,
output sys_rst

);

reg rst_r0;
reg rst_r1;

always @(posedge clk or posedge rst)begin
if(rst)begin
rst_r0 rst_r1 end
else begin
rst_r0 rst_r1 end
end

assign sys_rst = rst_r1;

endmodule

编辑:hfy


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1631

    文章

    21806

    浏览量

    606690
  • 寄存器
    +关注

    关注

    31

    文章

    5377

    浏览量

    121394
  • Xilinx
    +关注

    关注

    71

    文章

    2172

    浏览量

    122346
  • 状态机
    +关注

    关注

    2

    文章

    492

    浏览量

    27690
收藏 人收藏

    评论

    相关推荐

    FPGA 实时信号处理应用 FPGA在图像处理中的优势

    现场可编程门阵列(FPGA)是一种高度灵活的硬件平台,它允许开发者根据特定应用需求定制硬件逻辑。在实时信号处理和图像处理领域,FPGA因其独
    的头像 发表于 12-02 10:01 943次阅读

    FPGA复位的8种技巧

    FPGA 设计中,复位起到的是同步信号的作用,能够将所有的存储元件设置成已知状态。在数字电路设计中,设计人员一般把全局复位作为一个外部引脚来实现,在加电的时候初始化设计。全局
    的头像 发表于 11-16 10:18 469次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>复位</b>的8种技巧

    采用Xilinx FPGA的AFE79xx SPI启动指南

    电子发烧友网站提供《采用Xilinx FPGA的AFE79xx SPI启动指南.pdf》资料免费下载
    发表于 11-15 15:28 0次下载
    采用<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>的AFE79xx SPI启动指南

    复位电路的设计问题

    前言 最近看advanced fpga 以及fpga设计实战演练中有讲到复位电路的设计,才知道复位电路有这么多的门道,而不是简单的外界信号
    的头像 发表于 11-15 11:13 235次阅读
    <b class='flag-5'>复位</b>电路的设计问题

    基于DSP TMS320C6678+FPGA XC7V690T的6U VPX信号处理

    本板卡基于标准6U VPX 架构,为通用高性能信号处理平台,系我公司自主研发。板卡采用一片TI DSP TMS320C6678和一片Xilinx公司Virtex 7系列的FPGA
    的头像 发表于 11-08 16:38 503次阅读
    基于DSP TMS320C6678+<b class='flag-5'>FPGA</b> XC7V690T的6U VPX<b class='flag-5'>信号</b><b class='flag-5'>处理</b>卡

    Xilinx 7系列FPGA PCIe Gen3的应用接口及特性

    Xilinx7系列FPGA集成了新一代PCI Express集成块,支持8.0Gb/s数据速率的PCI Express 3.0。本文介绍了7系列FPGA PCIe Gen3的应用接口及一些特性。
    的头像 发表于 11-05 15:45 1489次阅读
    <b class='flag-5'>Xilinx</b> 7系列<b class='flag-5'>FPGA</b> PCIe Gen3的应用接口及特性

    FPGA同步复位和异步复位

    FPGA(Field-Programmable Gate Array,现场可编程门阵列)中的复位操作是设计过程中不可或缺的一环,它负责将电路恢复到初始状态,以确保系统的正确启动和稳定运行。在FPGA设计中,
    的头像 发表于 07-17 11:12 1809次阅读

    FPGA异步信号处理方法

    FPGA(现场可编程门阵列)在处理异步信号时,需要特别关注信号的同步化、稳定性以及潜在的亚稳态问题。由于异步信号可能来自不同的时钟域或外部设
    的头像 发表于 07-17 11:10 1315次阅读

    FPGA | Xilinx ISE14.7 LVDS应用

    今天给大侠带来 Xilinx ISE14.7 LVDS应用,话不多说,上货。 最近项目需要用到差分信号传输,于是看了一下FPGA上差分信号的使用。
    发表于 06-13 16:28

    示波器测量复位信号的原理和方法

    在电子工程领域,复位信号是确保系统稳定、可靠运行的关键因素之一。复位信号通常用于在系统出现故障或异常时,将系统恢复到初始状态,以便重新开始工作。因此,准确测量和分析
    的头像 发表于 05-17 17:14 1662次阅读

    Xilinx ISE14.7 LVDS的应用

    最近项目需要用到差分信号传输,于是看了一下FPGA上差分信号的使用。Xilinx FPGA中,主要通过原语实现差分
    的头像 发表于 05-07 17:17 1187次阅读
    <b class='flag-5'>Xilinx</b> ISE14.7 LVDS的应用

    FPGA设计添加复位功能的注意事项

    本文将回顾使用重置输入对给定功能进行编码的一些基本注意事项。设计者可能会忽视使用复位输入的后果,但不正确的复位策略很容易造成严重处罚。复位功能会对 FPGA 设计的速度、面积和功耗产生
    发表于 05-03 09:49 259次阅读
    向<b class='flag-5'>FPGA</b>设计添加<b class='flag-5'>复位</b>功能的注意事项

    Xilinx 7系列FPGA功能特性介绍

    Xilinx7系列FPGA由四个FPGA系列组成,可满足一系列系统需求,从低成本、小尺寸、成本敏感的大容量应用到最苛刻的高性能应用的超高端连接带宽、逻辑容量和信号
    发表于 04-22 10:49 5875次阅读
    <b class='flag-5'>Xilinx</b> 7系列<b class='flag-5'>FPGA</b>功能特性介绍

    Xilinx fpga芯片系列有哪些

    Xilinx FPGA芯片拥有多个系列和型号,以满足不同应用领域的需求。以下是一些主要的Xilinx FPGA芯片系列及其特点。
    的头像 发表于 03-14 16:24 3586次阅读

    AMD Xilinx 7系列FPGA的Multiboot多bit配置

    Multiboot是一种在AMD Xilinx 7系列FPGA上实现双镜像(或多镜像)切换的方案。它允许在FPGA中加载两个不同的配置镜像,并在需要时切换。
    的头像 发表于 02-25 10:54 1408次阅读
    AMD <b class='flag-5'>Xilinx</b> 7系列<b class='flag-5'>FPGA</b>的Multiboot多bit配置