fpga初始化错误_FPGA复位设计常见问题及处理方法

一开始接触到FPGA,肯定都知道”复位“,即简单又复杂。简单是因为初学时,只需要按照固定的套路——按键开关复位,见寄存器就先低电平复位一次,这样一般情况可以解决99%的问题,甚至简单的设计,就不可能有问题。复杂是因为复位本身是对大规模的硬件单元进行一种操作,必须要结核底层的设计来考虑问题。

1. 常见问题

自己在学习实践过程中,以及看到网友询问的,有关FPGA复位设计大概有以下几类问题:

我板子上没有设计按键复位怎么办?

怎么设计上电复位?不可能上电都要去按键吧

同步复位还是异步复位?各自优势是啥?

高电平复位还是低电平复位?

……

归根结底,就是怎样设计复位,我可能给不出完美的答案,但查阅了一些资料,总结了一些设计中考虑的因素,在加上参考文献,应该能解决99.9%的疑惑。

2. 常见的复位方式

我们习惯上通常使用的复位有三种方式:

硬件开关:复位信号接一个拨码开关或按键,或者RC电路

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

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

没有专门的电源或控制芯片,甚至连按键都忘记设计的情况下,有人提出可不可以拿内部计数器做一个所谓的上电“软”复位,如下代码所示,当cnt计数到一定的值时,产生一个复位脉冲信号。

always@(posedge clk or negedge rst_n)

begin

if(!rst_n)

cnt else

begin

if(cnt cnt else

cnt end

end

always@(posedge clk or negedge rst_n)

begin

if(!rst_n)

begin

rst_nr0 rst_nr1 end

else if(cnt == 23‘d50_00000)

begin

rst_nr0 rst_nr1 end

else

begin

rst_nr0 rst_nr1 end

end

没有设计外部硬件复位的同学又会反驳,我rst_n都没有!去掉复位,默认上电cnt = 0,可不可以?既然默认cnt = 0了,那其他所有的寄存器不都默认为0了吗?接着往下分析。

3. 合理的复位设计

从参考文献中得出有关复位设计的几条重要结论,有助于我们明确复位设计的方向,如下:

1. 低电平复位并不是最合理的处理方式;

2. 建议采用异步复位同步化(异步复位同步释放处理);

3. 全局复位并不是最佳方式;

4. 并不是所有时序电路都要加复位;

对上述结论分析,见后续总结。

3.1 复位电平

有关复位电平,实际上是跟FPGA芯片内部的触发器结构有关,在之前的博文有提到过。作为xilinx 7系列触发器,其 R 端口既可用作同步置位/复位端口,也可用作异步预设/清除端口,但无论哪种方式,都是高电平有效。Altera的是低电平有效。

当在7系列芯片上采用低电平复位,会有什么问题呢?如下:

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

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

所以再次强调:复位电平的选择跟芯片结构有关!

3.2 异步复位同步化

异步复位同步化简单的说就是将异步复位信号在相关的时钟域模块中进行同步化处理。单纯的同步复位、异步复位以及其他的一些复位方式,都存在一些缺陷,比如抗噪声、存在亚稳态等问题,深入学习可以查阅相关文献。

异步复位同步化处理的结构代码及schemaTIc(xilinx 7系列)如下:

module rst_signal(

input clk,

input rst,

output sys_rst

);

reg r1_rst,r2_rst;

always@(posedge clk or negedge rst) begin

if(rst) begin

r1_rst r2_rst end else begin

r1_rst r2_rst end

end

assign sys_rst = r2_rst;

endmodule

可以看到,模块将系统输入的异步复位信号进行同步,产生了一个后续逻辑使用的同步化了的异步复位,随后即可将该复位信号sys_rst用于其他模块的复位。为了减少亚稳态对上述同步器中的两个寄存器的影响,这两个寄存器应该在FPGA中被放置的越靠近越好(相应的约束:set_property ASYNC_REG TRUE [get_cells [list r1_rst_reg r2_rst_reg]]),尽量减少布线延迟。

以上只是一个基本原理示意,在实际使用过程中还应注意以下两点:

外部输入异步复位信号应该增加滤波和去抖处理;

在复位之前,确保由 MMCM 或PLL 生成的时钟是稳定且被锁定的;

将异步复位信号分别引入不同的时钟域进行同步化

综上,复位处理的原理图如下所示:

3.3 恰到好处的复位

看似简单的复位,实际上不简单,来系数复位的N宗罪:

复位网络需要占用布线资源;

导致其余信号的布线信号受到影响,降低了它们布线的自由度;

增加的布线网络往往需要使用更高速率的芯片;

复位网络占用大量布线资源,使得Place&Route的时间大大增加;

复位信号需要占用大量的逻辑资源;

复位信号需要使用触发器的专用复位管脚;

可操作的复位信号往往导致D触发器的输入前增加额外的门操作或专用的复位信号输入;

增大整个设计 的尺寸;

额外的逻辑消耗降低了系统的性能;

阻止了使用高效特征,如Xilinx FPGA特有的SRL16E 移位寄存器。

简单的说,复位的存在会对FPGA的综合面积产生影响,主要体现在两个方面:第一、在编写代买的时候,习惯给所有时序电路都加上复位信号,这样往往会导致资源无形的浪费;第二,没有合理的设计复位电路会产生额外的资源消耗。

什么时候可以叫复位呢?一般判断原则是:

类似于移位寄存器这类直通型电路,只起到一个传输信号的作用,本身不会对信号产生任何影响。其传输信号正确与否,在于其输入端的信号是否正确。因此,此类电路自身无需加复位信号,而只需再起输入端口加复位信号(也就是数据来源处的电路),以控制输入数据。

4. 补充

4.1 所谓的上电初始化

当一个Xilinx的FPGA芯片被重新配置时,每一个单元都将被初始化。在某种意义上讲,这是一个上电之后的“终极的”全局复位操作,因为它不仅仅是对所有的触发器进行了复位操作,还初始化了所有的RAM单元。随着Xilinx FPGA芯片内部的嵌入式RAM资源越来越多,这种“终极的”全局复位操作越来越有意义。对所有的RAM单元进行预定义,在软件仿真和实际操作中都是非常有帮助的,因为这样避免了在上电时采用复杂的启动顺序来清除存储单元内容的操作。

所以在xilinx平台,开篇的“软”复位,实际上是没有多大意义的。

综上,采用以上总结的复位处理方法,应该能解决99.9%的问题了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

惠普台式计算机系列,惠普发布设计笔记本、设计台式电脑等Z系列产品

惠普发布新一代惠普Z系列产品,包含设计笔记本、设计台式电脑、显示器和VR等产品。惠普Z系列设计笔记本HP ZBook 14u G6配有4K显示屏,支持100% Adobe RGB色域显示,拥有600尼特亮度,满足创意族群对色彩的精确要求。HP ZBook 15u G6图…

计算机应用需要英语水平,英语对计算机专业的重要性及如何提高英语水平

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼计算机研发人员要掌握的专业英语要求教高,必须掌握大量的专业术语和缩略语; 熟练掌握语法和惯用法的表达方式和功能; 能阅读英文文档和技术资料,阅读熟读在100词/分钟以上; 能借助字典翻译专业技术图书; 能使…

python asyncio 并发编程_asyncio并发编程

一. 事件循环1.注:实现搭配:事件循环回调(驱动生成器【协程】)epoll(IO多路复用),asyncio是Python用于解决异步编程的一整套解决方案;基于asynico:tornado,gevent,twisted(Scrapy,dj…

ORM多表操作之多对多查询

创建多对多的关系 authormodels.ManyToManyFleld(" ")  (推荐) 书籍对象它的所有关联作者 book_obj.authors.all() 掌握:通过filter values(双下划线)进行多对多的关联查询(形式一对多) django是将python语句翻译成sql语句执行 聚…

计算机的iscsi配置,我们将了解如何设置自己的支持iscsi配置的存储节点

iSCSI代表Internet小型计算机系统接口。它用于使用块级数据传输通过TCP / IP访问网络上的存储。NFS与iSCSI之间通常存在比较。关键区别在于NFS是文件级实现,而iSCSI是块级实现。这适用于TCP / IP层,并允许通过局域网(LAN)发送SCSI命令。在诸如iSCSI和光纤…

介词for和with 和of的用法_英语中的for,to,at,of,in,on,with的用法

英语中的for,to,at,of,in,on,with的用法英语中的for,to,at,of,in,on,with的用法人气:594 ℃时间:2019-11-07 00:56:02优质解答一、介词按其构成可分为:1.简单介词 at,in,on,to,since,until 等.如:Hes worked there since 1998.2.复…

转帖:解决System.Data.OracleClient requires Oracle client software version 8.1.7 or greater

原帖:http://blog.csdn.net/killer000777/archive/2008/12/03/3438519.aspx 原来当Oracle 9.2运行在NTFS的分区上时,对于某些非administrator组的用户,ORACLE_HOME 目录是不可见的,而在windows server 2003下Asp.net应用使用的帐户…

超级计算机发展及现状论文,浅谈超级计算机发展的过程及研究现状

摘要:当前,多核技术的不断发展和日渐成熟,使得处理器的性能得到巨大提升.但是对于存储设备来说,无论是速度还是容量都无法跟上这种步伐.随着处理器和其它子系统发展差距的日益加大,超级计算机的效率问题逐渐成为人们讨论和研究的热点,大部分的实际应用在超级计算机上…

P1047 校门外的树 Noip2005普及组第二题

洛谷红题(咳咳)>>>>点击跳转 题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是11米。我们可以把马路看成一个数轴,马路的一端在数轴00的位置,另一端在LL的位置;数轴上…

裂变红包码的制作_红包墙裂变源码活码玩法 实现多次裂变传播

这是一个移动互联网迅速发展的时代,每个人都是一个自媒体,都有自己的朋友圈和社群。门店除了依靠自己雄厚的实力外,还应该充分用好每个店员的资源,让每个店员这个自媒体为门店所用,将能力发挥到极致。红包推出的超级红…

计算机基础知识复习资料,计算机基础知识复习资料

.Word 资料Ch1 计算机基础知识1.1 现代信息技术1.1.1、特征:●以数字技术和电子技术为基础;●以计算机及其软件为核心;●采用电子技术(包括激光技术)进行信息的收集、传递、加工、存储、显示与控制。1.1.2、数字技术一、二进位数字——比特(b…

linux上安装Docker

Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件 容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例,可以将其启动、开始、停止、删除、而这些容器都是相互隔离、互不可见…

python节日贺卡图片_节日贺卡图片制作手工

手工贺卡,相信你也对贺卡感到很大的兴趣的吧,手工贺卡。手工贺卡范文,欢迎阅读。所需材料:黑纸胶水压钱粉红色的纸具体步骤:1黑色和红色纸剪成宽度为5mm的长条的,画出你喜欢的花树轮廓,使用笔温柔的拉伸黑色…

幼儿园计算机教师论文,幼儿园中班教师论文

幼儿园中班教师论文导语:幼儿教育是什么?幼儿应如何正确接受教育?幼儿接受与不接受教育区别又如 何?这些看似简单的问题,其实不然。在当今科技发达的今天,幼儿的教育起着承前启后的重要阶段,不仅…

ASP.NET 5 入门 (2) – 自定义配置

原文:ASP.NET 5 入门 (2) – 自定义配置ASP.NET 5 入门 (2) – 自定义配置 ASP.NET 5 理解和入门 建立和开发ASP.NET 5 项目 初步理解ASP.NET5的配置 正如我的第一篇文章ASP.NET 5 (vNext) 理解和概述 所说,ASP.NET 5的具有全新的配置机制,我们可以通过以下几点来进行理解: 支持…

中有冒号 文件路径_用Matlab脚本文件实现Excel文件的合并

日常吐槽前段时间跟同事聊天,同事洗脑了一个新的(扎心的)世界观,“人生分三个阶段,20岁时承认父母很平庸,30岁时承认自己很平庸,40岁时承认孩子很平庸”。这是这位同事在孩子学而思考试后的心得…

2019计算机国二操作题,2019年3月计算机二级C++操作练习题及答案(十二)

一、程序改错题使用VC6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructor,i0,Destructor注意:错误的语句在//******error******…

最简单的一个 STL格式的网格文件

简介 最简单格式的一个STL格式的文件 文件内容 solid filenamestlfacet normal 1 1 1outer loopvertex 0 0 1vertex 0 1 0vertex 1 0 0endloopendfacet endsolid filenamestl 简单描述 solid filenamestlfacet normal 1 1 1//面的法向量outer loopvertex 0 0 1 // 顶点1vertex …

ntrip获取源列表_Ntrip协议简介(转)

1 什么是Ntrip?CORS(Continuously Operating Reference Stations)就是网络基准站,通过网络收发GPS差分数据。用户访问CORS后,不用单独架设GPS基准站,即可实现GPS流动站的差分定位。访问CORS系统,就需要网络通讯协议。N…

计算机数据与安全课件,计算机数据及软件的安全.ppt

计算机数据及软件的安全计算机数据及软件的安全一、计算机软件的安全问题 1、软件在计算机安全中的二重性 软件是计算机系统的重要组成部分。和硬件相比,软件是计算机系统的灵魂,用户通过软件才能使用计算机。 (1)计算机软件是系统安全保护的对象和安全控…