常见的FPGA复位设计_第1页
常见的FPGA复位设计_第2页
常见的FPGA复位设计_第3页
常见的FPGA复位设计_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

常见的FPGA复位设计在FPGA设计中,当复位整个系统或功能模块时,需要将先关寄存器被清零或者赋初值,以保证整个系统或功能运行正常。在大部分的设计中,我们经常用“同步复位”或“异步复位”直接将所有的寄存器全部复位,这部分可能大家都习以为常。但实际上,是否需要每个寄存器都进行复位呢?这是一个值得探讨的问题。一、为什么需要进行复位?在FPGA设计中,复位是一个基本操作。复位的目的是将FPGA的寄存器清零或赋初值,以确保仿真或正常上板运行时正常,以防止出现不确定的运行状态。需要注意的是,FPGA中可编程逻辑块和寄存器,可能运行在不同的时钟和状态下,在某些功能突然停止运行时,可能处于未知状态,如果不按照预期的方式进行复位操作,FPGA可能无法正常工作。如果需要了解同步复位与异步复位,请看这篇文章:FPGA中的异步复位、同步复位与异步复位同步释放。二、常见的复位设计根据复位方式的不同,FPGA复位信号可以分为外部复位和内部复位两种,复位信号也要分为高电平复位有效或低电平复位有效。1、外部复位外部复位是指由硬件按键或芯片产生的复位信号,也可由软件产生,但这些信号往往与FPGA内部各个时钟信号异步。2、内部复位内部复位是由FPGA内部逻辑产生的复位信号,例如在上电后自动复位或识别到某种内部命令后自发产生复位信号。这些复位信号相对于某一时钟域往往是同步的,但如果存在多个时钟域,也可能会存在异步复位信号的情况。对于一个正常的FPGA系统来说,上电自动复位和手动按键复位都是必须的,二者相辅相成。除此之外,我们还需要根据实际情况确定是否需要对每个寄存器进行复位操作,以及选择适当的复位方式和控制复位操作的时机。在进行FPGA复位设计时,还需要注意复位电路的功耗,以减少不必要的功耗损失。注意:软复位逻辑需要注意复位信号持续时间,比如一般fifo复位至少需要保持8个周期以上。3、复位信号特点(1)复位网络需要占用布线资源,会使得剩余的布线资源变少,对于布线设计带来挑战。

(2)复位信号的引入可能会对其他信号的布线自由度造成限制,这意味着布线可能需要更多的代价才能成功完成。

(3)复位网络占用大量的布局网络资源,会导致Place&Route的时间大大增加。

(4)复位信号需要占用额外的逻辑资源,可能会影响整个FPGA芯片设计的资源消耗。

(5)需要使用触发器的专用复位管脚才能实现复位信号的输入,这也会占用有限的管脚资源。

(6)可操作的复位信号往往需要在D触发器输入前增加额外的门操作或专用的复位信号输入,可能会降低系统性能。(7)大量的使用全局复位,复位信号将变成一个高扇出的信号,这对时序收敛无疑是一个巨大的挑战4、寄存器复位与赋初值FPGA的内部资源(触发器和RAM)等都会在上电后默认赋初值,一般是0,也可以在定义寄存器时赋初值,如:reg[1:0]test='d2;//定义时赋初值以上这个赋初值操作实际意义不大,但只在系统上电后有效,当FPGA中系统运行起来后,这个变量的值处于变化的状态,还是需要通过复位信号或者使能信号来控制将信号复位。三、是否需要对每个寄存器都进行复位?FPGA复位需要消耗FPGA内部资源,也会影响FPGA布线和时序收敛,所以对于每个寄存器都进行复位并不是最优方案,比如寄存器变量延迟几拍、有使能信号或有效信号控制的信号变量等情况都可以不做复位处理,如下所示:moduletest(inputclk,inputrst,inputdata_valid_i,inputdata_i,outputregdata0_valid_o,outputregdata0_o,outputregdata1_valid_o,outputregdata1_o,outputregdata2_valid_o,outputregdata2_o);regd_r0,d_r1;always@(posedgeclk)begind_r0<=data_i;d_r1<=d_r0;​endalways@(posedgeclk)begindata0_valid_o<=data_valid_i;if(data_valid_i)begindata0_o<=data_i;endelsebegindata0_o<='b0;endendalways@(posedgeclk)beginif(rst)begindata1_valid_o<='b0;data1_o<='b0;endelsebegindata1_valid_o<=data_valid_i;if(data_valid_i)begindata1_o<=data_i;endelsebegindata1_o<='b0;endendendalways@(posedgeclkorposedgerst)beginif(rst)begindata2_valid_o<='b0;data2_o<='b0;endelsebegindata2_valid_o<=data_valid_i;if(data_valid_i)begindata2_o<=data_i;endelsebegin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论