同步复位和异步复位的区别
- 格式:pdf
- 大小:83.62 KB
- 文档页数:6
针对数字系统的设计,我们经常会遇到复位电路的设计,对初学者来说不知道同步复位与异步复位的区别与联系,今天我对这个问题简要的阐述下,希望对初学者有一定的参考意义,若有不正确的地方愿大家明示。
同步复位原理:同步复位只有在时钟沿到来时复位信号才起作用,则复位信号持续的时间应该超过一个时钟周期才能保证系统复位。
异步复位原理:异步复位只要有复位信号系统马上复位,因此异步复位抗干扰能力差,有些噪声也能使系统复位,因此有时候显得不够稳定,要想设计一个好的复位最好使用异步复位同步释放。
同步复位与异步复位的优劣:异步复位消耗的PFGA逻辑资源相对来说要少些,因此触发器自身带有清零端口不需要额外的门电路,这是其自身的优势,通常在要求不高的情况下直接使用异步复位就OK。
下面我用verilog来演示下同步复位与异步复位。
同步复位的verilog程序如下:module D_FF(//Input portsSYSCLK,RST_B,A,//Output portsB);//========================================= //Input and output declaration//========================================= input SYSCLK;input RST_B;input A;output B;//========================================= //Wire and reg declaration//=========================================wire SYSCLK;wire RST_B;wire A;reg B;//========================================= //Logic//========================================= always@(posedge SYSCLK)beginif(!RST_B)B<=1'b0;elseB<=A;endendmodule综合后的RTL级电路图如下:异步复位的verilog程序如下:module D_FF(//Input portsSYSCLK,RST_B,A,//Output portsB);//========================================= //Input and output declaration//========================================= input SYSCLK;input RST_B;input A;output B;//========================================= //Wire and reg declaration//=========================================wire SYSCLK;wire RST_B;wire A;reg B;//========================================= //Logic//========================================= always@(posedge SYSCLK or negedge RST_B)beginif(!RST_B)B<=1'b0;elseB<=A;endendmodule综合后的RTL级电路图如下:通过比较显然异步复位消耗的逻辑资源要少些,因此通常的设计中都采用异步复位的方式,需要进一步的学习的话,可以再研究下其它的资料。
IC设计中同步复位与异步复位的区别异步复位是不受时钟影响的,在一个芯片系统初始化(或者说上电)的时候需要这么一个全局的信号来对整个芯片进行整体的复位,到一个初始的确定状态。
而同步复位需要在时钟沿来临的时候才会对整个系统进行复位。
请注意,如果芯片是有多个时钟的系统,那么如何保证不同时钟域的电路能够“同时”复位将会是一个重要的问题,此外,如果你的时钟是一个低频时钟,那么在这个系统(包括其他芯片)上电时如何保证能和其他芯片同时复位?硬件全局异步复位是必要的,请注意这里加上了“全局”,这是因为异步复位既然要对整个芯片“同时”复位,那么布线延时绝不能不考虑,使用FPGA设计时芯片的异步复位必须要走全局网络。
再提醒一点,芯片中最好不要出现多个异步复位。
一个关键原因是对于FPGA而言,多个异步复位信号难以实现前面要求的“全局网络”。
异步复位最大的优点是, 数据通路就可以不依赖于时钟而确保清洁可控。
然而, 异步复位也有其固有的缺陷。
异步复位设计的DFT (可测性设计) 与STA (静态时序分析) 的复杂性要高于同步复位设计; 但异步复位中最严重的问题是, 如果异步复位信号在触发器时钟有效沿附近“释放”(复位信号从有效变为无效) 的话, 可能会导致触发器输出的亚稳态。
同步复位和异步复位的比较(转载)无论同步还是异步复位,在对触发器时序进行分析的时候,都要考虑复位端与时钟的相位关系。
对于同步复位,复位信号可以理解为一个普通的数据信号,它只有在时钟的跳变沿才会其作用,一般只要复位信号持续时间大于一个时钟周期,就可以保证正确复位。
对于异步复位,复位可以在任何时候发生,表面上看跟时钟没有关系,但真实情况是异步复位也需考虑时钟跳变沿,因为时钟沿变化和异步复位都可以引起Q端数据变化,如果异步复位信号跟时钟在一定时间间隔内发生变化,Q值将无法确定,即亚稳态现象。
这个时候既是异步复位信号持续时间再长都没有办法,因为不定态已经传递下去。
Verilog 复位赋值详解
Verilog是一种硬件描述语言,用于描述数字电路和系统。
在Verilog中,复位是一个重要的概念,它用于将电路或模块的状态初始化为特定的值。
复位通常在系统启动时或出现异常情况时使用。
在Verilog中,有两种常见的复位方式:异步复位和同步复位。
1.异步复位
异步复位是一种立即生效的复位方式,它不需要时钟信号的配合。
当异步复位信号为高电平时,电路或模块的状态将被立即清零或置为特定的初始值。
异步复位通常用于一些不需要时钟的简单电路或模块。
例如,以下代码实现了一个简单的异步复位逻辑:
在这个例子中,reset是异步复位信号,当它为高电平时,counter_reg将被清零。
2.同步复位
同步复位是一种需要时钟信号配合的复位方式。
当同步复位信号为高电平时,电路或模块的状态将被清零或置为特定的初始值。
只有在时钟信号的上升沿到来时,同步复位才会生效。
同步复位通常用于一些需要时钟的复杂电路或模块。
例如,以下代码实现了一个简单的同步复位逻辑:
在这个例子中,reset是同步复位信号,当它为高电平时,count将被清零。
只有在时钟信号的上升沿到来时,count才会被清零。
需要注意的是,在实现复位逻辑时,应该考虑一些特殊情况,例如异步复位的延迟和同步复位的时序要求。
此外,还应该注意复位的稳定性和可靠性,以确保系统能够正常工作。
硬件工程师笔试题一、电路分析:1、竞争与冒险在组合逻辑中,在输入端的不同通道数字信号中经过了不同的延时,导致到达该门的时间不一致叫竞争。
因此在输出端可能产生短时脉冲(尖峰脉冲)的现象叫冒险。
常用的消除竞争冒险的方法有:输入端加滤波电容、选通脉冲、修改逻辑设计等。
2、同步与异步同步逻辑是时钟之间有固定的因果关系。
异步逻辑是各时钟之间没有固定的因果关系。
同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。
异步电路:电路没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,只有这些触发器的状态变化与时钟脉冲同步,而其它的触发器的状态变化不与时钟脉冲同步。
异步电路不使用时钟脉冲做同步,其子系统是使用特殊的“开始”和“完成”信号使之同步同步就是双方有一个共同的时钟,当发送时,接收方同时准备接收。
异步双方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始位,结束时有停止位3、仿真软件:Proteus4、Setup 和Hold timeSetup/hold time 是测试芯片对输入信号和时钟信号之间的时间要求。
建立时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。
输入信号应提前时钟上升沿(如上升沿有效)T时间到达芯片,这个T就是建立时间-Setup time.如不满足setup time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器。
保持时间是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。
如果hold time不够,数据同样不能被打入触发器。
5、IC设计中同步复位与异步复位的区别同步复位在时钟沿采集复位信号,完成复位动作。
异步复位不管时钟,只要复位信号满足条件,就完成复位动作。
异步复位对复位信号要求比较高,不能有毛刺,如果其与时钟关系不确定,也可能出现亚稳态。
异步复位与同步释放很多时候,我们都希望系统一上电以及在仿真开始的时候所有寄存器都有一个已知的状态。
复位有两种方式,即同步复位和异步复位。
同步复位:“同步”的意思是和工作时钟同步。
也就是说当时钟的上升沿(下降沿)来到时检测到按键的复位操作才有效,否则无效。
如下图所示为同步低复位波形。
异步复位:“异步”的意思是和工作时钟不同步。
也就是说寄存器的复位不关心时钟的上升沿(下降沿)是否到来,只要有检测到按键被按下,就立刻执行复位操作。
如下图所示为同步低复位波形。
同步复位还是异步复位我们以D触发器为例来说明Inter(Altera)的器件是用同步复位好还是异步复位好。
先来看一下同步复位D触发器的RTL代码,如下所示://---------------------------------01module test(02 input wire sclk ,03 input wire rst_syncn ,04 input wire d ,0506 outputreg q07);0809always@(posedge sclk)10 if(rst_sync_n ==1'b0)11 q <=1'b0;12 else13 q <= d;1415endmodule//--------------------------------在Quartus工具中编写完RTL后点击“Start Analysis & Synthesis”图标进行分析和综合。
然后双击“Netlist Viewers”下的“RTL Viewer”查看RTL视图。
如下图所示,可以看到一个 D触发器的结构,也可以称为寄存器,但是还附加了一个选择器,用于同步复位的控制。
点击“Start Compilation”图标全编译进行布局布线,完成后我们可以看到“Flow Summary”资源使用量,如下图所示,可以看到使用了LE中的一个组合逻辑资源和一个时序逻辑资源。
这两种复位方式的区别主要看是否需要时钟的参与:异步复位不需要时钟的参与,只要复位信号一有效就立即执行复位操作;同步信号需要时钟参与,只有当时钟有效沿来时,复位信号才有效。
同步复位的最大好处是有效防止复位信号的毛刺引起的误复位操作,只要毛刺不在时钟有效沿附近出现,就不会影响电路正常工作;而若是异步复位,其复位信号的毛刺会立即引起电路复位。
异步复位可以在没有时钟的情况下完成复位,所以可以使电路在上电的时候完成对系统的复位,而且异步复位所消耗的资源比同步复位少。
一般的,只要能保证复位信号的稳定,我们建议使用异步复位。
我们看一下同步和异步复位在VHDL和Verilog下的实现细节:VHDL:PROCESS(clk,reset)—同步复位BEGINIf(rising_edge(clk)) thenIf(reset=’1’) then—复位信号在时钟有效沿下进行判断--执行复位操作End if;End if;ENDPROCESS(clk,reset)—异步复位BEGINIf(reset=’1’) then—复位信号在不需要在时钟有效沿下进行判断--执行复位操作elsif(rising_edge(clk)) then……….End if;ENDVerilog:always @ (posedge clk or posedge reset)//异步复位,在敏感信号里加复位信号if(reset)begin//执行复位操作endelsebegin……endalways @ (posedge clk)//同步复位,在敏感信号不用加复位信号if(reset)begin//执行复位操作endelse begin ……end。
ASIC 设计中的同步复位与异步复位Synchronous Reset and Asynchronous Reset in ASIC Design盛 娜3 刘志军SHENG Na LIU Zhi 2jun摘 要 复位问题是ASIC 设计中的一个关键问题,其处理得当与否将直接影响整个电路的性能,在此本文从多个角度对同步复位和异步复位进行了讨论和分析,并且比较了各自的优缺点,重点针对异步复位过程中存在的亚稳态问题采用两级复位同步和复位分配缓冲树的方法进行了相应的解决。
关键词 同步复位 异步复位 亚稳态 ASIC Abstract Reset is one of the key problems in ASIC design ,it will directly in fluence the performance of the whole design if it is done properly or not.This paper discussed and analyzed the synchronous reset and the asynchronous reset from several different perspectives.A C omparis on between them in the advantages and the disadvantages was conducted.The metastability problem ,exiting in the process of asynchronous reset ,was res olved by adding the tw o 2level reset syn 2chronizer logic and using reset distribution bu ffer tree.K eyw ords Synchronous reset Asynchronous reset Metastability ASIC3山东大学信息科学与工程学院 济南 2501001 引言复位问题是ASIC 设计中一个基本而又重要的问题。
在FPGA(现场可编程门阵列)设计中,上电复位(POR,Power-On Reset)是一种将寄存器重置为初始状态的操作。
对于上电复位初始值的约束,通常需要考虑以下几点:1. 同步复位与异步复位:上电复位可以是同步的或异步的。
同步复位在时钟边缘发生,而异步复位则不依赖于时钟。
在大多数情况下,使用异步复位是更可靠的选择,因为它不依赖于时钟频率或稳定性。
2. 初始值:你需要明确每个寄存器在上电复位后的初始值。
这通常取决于你的设计需求。
例如,你可能希望某些寄存器在上电后立即开始接收数据,而其他寄存器则需要保持为某个默认值。
3. 复位信号的持续时间:确保复位信号的持续时间足够长,以确保FPGA设备能够正确检测到复位信号并相应地重置其内部状态。
4. 寄存器初始化:在某些情况下,你可能需要使用特定的初始值对寄存器进行编程。
这通常在硬件描述语言(如VHDL或Verilog)中进行。
5. 复位去抖动:在某些应用中,可能需要对复位信号进行去抖动处理,以确保FPGA设备在电源噪声或其他干扰下不会误触发复位。
6. 考虑设计的稳定性:上电复位的实现方式可能会影响设计的稳定性。
确保你的复位设计不会引发任何潜在的问题,例如冒险状态或竞争条件。
7. 硬件仿真与测试:在实施上电复位约束后,建议进行硬件仿真和测试以确保设计的正确性和稳定性。
8. 文档记录:清楚地记录你的上电复位设计和约束,以便后续维护和理解。
9. 电源管理:考虑电源规划并确保在上电过程中有适当的电源管理策略,特别是在FPGA设计中有大量逻辑单元和资源的情况下。
在设计FPGA时,考虑到上述约束和注意事项将有助于确保设计的可靠性和稳定性。
异步复位时序约束-概述说明以及解释1.引言概述部分的内容可以如下编写:1.1 概述异步复位是数字电路设计中的一种重要功能,它用于将电路恢复到初始状态,以确保系统在启动时处于可控状态。
与同步复位相比,异步复位不依赖于时钟信号,可以在任何时刻激活。
本文将讨论异步复位的概念、原理和实践中的时序约束。
在日常的电路设计中,了解异步复位的重要性以及如何正确应用时序约束是至关重要的。
在接下来的章节中,我们将首先介绍异步复位的概念,讨论其作用以及与同步复位的区别。
然后,我们将深入探讨异步复位的原理,包括它是如何实现电路的复位功能的。
最后,我们将探讨异步复位的重要性,并详细讨论在实践中如何设计和应用异步复位时序约束。
通过阅读本文,读者将能够全面了解异步复位的概念和原理,并学会正确地设计和应用异步复位时序约束。
这将帮助读者在数字电路设计中更好地应用异步复位,并提高系统的稳定性和可靠性。
文章结构部分的内容如下:1.2 文章结构本文主要分为三个部分,分别为引言、正文和结论。
引言部分将首先给出异步复位的概述,介绍其基本概念和作用。
随后,将阐明文章的结构和目的,以便读者能够更好地理解和掌握异步复位时序约束的相关知识。
正文部分将详细探讨异步复位的原理,包括其工作原理、触发条件以及相应的电路设计。
通过分析实际案例和例子,将说明异步复位的一些关键问题和挑战,以及如何解决这些问题。
同时,还将介绍一些常见的异步复位电路设计方案和技巧,以提高系统的可靠性和稳定性。
结论部分将总结整篇文章的核心内容,并强调异步复位的重要性。
结合实践经验,将探讨异步复位时序约束的实践方法和技巧,以帮助读者更好地应用异步复位时序约束在实际项目中的设计和实现。
此外,还将展望异步复位技术的未来发展方向,并指出可能的应用领域和研究方向。
通过以上三个部分的内容,本文将全面介绍异步复位时序约束的相关知识和技术,帮助读者理解和运用异步复位时序约束来提升系统性能和可靠性。
2024年招聘集成电路设计岗位笔试题及解答(某大型国企)(答案在后面)一、单项选择题(本大题有10小题,每小题2分,共20分)1、集成电路设计的主要目的是实现以下哪种功能?A、数据存储B、数据传输C、信号放大D、逻辑运算2、在CMOS工艺中,以下哪一项不是晶体管的工作状态?A、线性放大区B、饱和区C、截止区D、存储区3、在CMOS逻辑电路中,当输入信号从低电平变为高电平时,NMOS晶体管的工作状态会如何变化?A. 从导通变为截止B. 保持导通C. 从截止变为导通D. 保持截止4、在数字集成电路中,同步复位与异步复位的主要区别在于:A. 同步复位只在时钟边沿有效,而异步复位则与时钟无关。
B. 异步复位比同步复位更节省电力。
C. 同步复位需要额外的外部信号来触发。
D. 异步复位可以实现更快的数据处理速度。
5、集成电路设计中,以下哪种类型的逻辑门在数字电路中应用最为广泛?A. OR门B. AND门C. NOT门D. XOR门6、在集成电路设计中,以下哪个术语用于描述在模拟电路中,由于温度、电源电压等因素变化而导致的电路性能变化?A. 时钟抖动B. 静态功耗C. 温度系数D. 信号完整性7、在CMOS工艺中,哪种场效应管使用最为广泛?A、NMOS管B、PMOS管C、NMOS2管D、CMOS管8、在高速运算电路中,如何减小延迟时间?A、增加晶体管尺寸B、降低电源电压C、优化布局布线D、提高环境温度9、题目:下面哪个选项描述的是集成电路设计中常见的半导体材料?A. 硅和锗B. 钨和钼C. 氮气和氢气D. 金和银 10、题目:在集成电路设计中,下面哪个术语描述的是电路中模拟信号转换为数字信号的过程?A. 编译器B. 读取操作C. 模数转换(A/D转换)D. 命令二、多项选择题(本大题有10小题,每小题4分,共40分)1、关于CMOS逻辑门电路的描述,哪些是正确的?(多选)A. CMOS逻辑门在静态情况下几乎不消耗电流。
同步复位与异步复位的区别
假设电路都是低电平复位
1、同步复位:
复位的有效条件与clk的上升沿有关,当clk的上升沿采到rst_n为低的时候可复位。
代码如下图所⽰:
仿真波形如下图所⽰:
解释:复位信号拉低后,当时钟信号上升沿到来时,输出信号才复位。
2、异步复位
复位的触发条件不仅与clk的上升沿有关,还与rst_n的下降沿有关,当clk上升沿采到rst_n为低时可复位,同时当遇到rst_n下降沿时也进⾏复位。
代码如下图所⽰:
仿真波形如下图所⽰:
解释:当clk上升沿采到rst_n为低时可复位,同时当遇到rst_n下降沿时也可进⾏复位。
3、补充:
always敏感列表中的 or 可以改成半⾓逗号(,)。
异步复位时,若使⽤复位的下降沿,则第⼀个if条件必须写成复位为0,若使⽤复位的上升沿,则第⼀个 if条件必须写成复位为1。
IC设计中同步复位与异步复位的区别
异步复位是不受时钟影响的,在一个芯片系统初始化(或者说上电)的时候需要这么一个全局的信号来对整个芯片进行整体的复位,到一个初始的确定状态。
而同步复位需要在时钟沿来临的时候才会对整个系统进行复位。
请注意,如果芯片是有多个时钟的系统,那么如何保证不同时钟域的电路能够“同时”复位将会是一个重要的问题,此外,如果你的时钟是一个低频时钟,那么在这个系统(包括其他芯片)上电时如何保证能和其他芯片同时复位?硬件全局异步复位是必要的,请注意这里加上了“全局”,这是因为异步复位既然要对整个芯片“同时”复位,那么布线延时绝不能不考虑,使用FPGA设计时芯片的异步复位必须要走全局网络。
再提醒一点,芯片中最好不要出现多个异步复位。
一个关键原因是对于FPGA而言,多个异步复位信号难以实现前面要求的“全局网络”。
异步复位最大的优点是, 数据通路就可以不依赖于时钟而确保清洁可控。
然而, 异步复位也有其固有的缺陷。
异步复位设计的DFT (可测性设计) 与STA (静态时序分析) 的复杂性要高于同步复位设计; 但异步复位中最严重的问题是, 如果异步复位信号在触发器时钟有效沿附近“释放”(复位信号从有效变为无效) 的话, 可能会导致触发器输出的亚稳态。
硬件工程师笔试题一、电路分析:1、竞争与冒险在组合逻辑中,在输入端的不同通道数字信号中经过了不同的延时,导致到达该门的时间不一致叫竞争。
因此在输出端可能产生短时脉冲(尖峰脉冲)的现象叫冒险.常用的消除竞争冒险的方法有:输入端加滤波电容、选通脉冲、修改逻辑设计等。
2、同步与异步同步逻辑是时钟之间有固定的因果关系。
异步逻辑是各时钟之间没有固定的因果关系。
同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步.异步电路:电路没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,只有这些触发器的状态变化与时钟脉冲同步,而其它的触发器的状态变化不与时钟脉冲同步。
异步电路不使用时钟脉冲做同步,其子系统是使用特殊的“开始"和“完成”信号使之同步同步就是双方有一个共同的时钟,当发送时,接收方同时准备接收.异步双方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始位,结束时有停止位3、仿真软件:Proteus4、Setup 和Hold timeSetup/hold time 是测试芯片对输入信号和时钟信号之间的时间要求。
建立时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。
输入信号应提前时钟上升沿(如上升沿有效)T时间到达芯片,这个T就是建立时间-Setup time.如不满足setup time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器.保持时间是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。
如果hold time不够,数据同样不能被打入触发器。
5、IC设计中同步复位与异步复位的区别同步复位在时钟沿采集复位信号,完成复位动作。
异步复位不管时钟,只要复位信号满足条件,就完成复位动作。
异步复位对复位信号要求比较高,不能有毛刺,如果其与时钟关系不确定,也可能出现亚稳态。
fpga中同步复位和异步复位的区别下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!FPGA中同步复位和异步复位的区别在FPGA设计中,复位是一个至关重要的概念,它确保了系统在启动时处于可控状态。
同步和异步复位1、一谈到复位操作,我们几乎再熟悉不过了。
但令人烦心的是,异常的复位操作却时而发生。
对于单独的asic设计来说,reset信号主要目的是为了在仿真过程中强制使整个asic设计进入一个已知的工作状态。
对于大多数asic设计来说,对数据的处理都是遵循同一个规则即:先同步,再处理,最后输出。
如果同步信号丢失,那么asic将会重新进行再获取同步的操作。
如果这类asic 的设计完全正确,那么所有未使用的状态都将会指向“开始获得同步信号”状态。
这类系统能够在没有reset信号情况下正确运行。
如果一个asic设计中其状态机在综合阶段采用了“don’t care”逻辑状态的话,那么这个系统就需要reset复位信号。
笔者认为,通常情况下asic设计中每个触发器都应当有复位端口,不管这个系统是否需要。
但有些状况例外,比如在高速应用的场合,一些跟随触发器(follower ff用作简单的移位寄存器)为了达到更高的性能而不需要reset端。
另外,我们还需要考虑不同的复位策略,即如果系统需要,那么到底是使用同步还是异步复位。
首先我们来研究一下同步复位。
2、触发器通常的编码风格同步复位触发器与无reset的跟随触发器图1 编码风格1中两个ff,一个带同步复位,一个不带图1中的第一个触发器带同步reset,由它采样的数据q1传递给第二个触发器;第二个触发器不带reset,它的作用就是简单数据移位。
正确的代码风格1如下:注意如果采用下面编码风格2会出现什么问题?此代码综合出的逻辑如图2所示。
图2 编码风格2第二个触发器产生了一个不需要的加载使能信号由于代码中把一级触发器和二级触发器放在了一个进程块中处理,所以一级触发器的同步reset信号rst_n将作为二级触发器的加载使能信号,而这属于多余的逻辑,我们并不需要!造成以上编码风格1和2产生的不同逻辑的原因在于使用了同步reset,如果采用异步reset策略,那么两种编码风格所生成的逻辑是完全相同的,不会产生多余的逻辑。
针对数字系统的设计,我们经常会遇到复位电路的设计,对初学者来说不知道同步复位与异步复位的区别与联系,今天我对这个问题简要的阐述下,希望对初学者有一定的参考意义,若有不正确的地方愿大家明示。
同步复位原理:同步复位只有在时钟沿到来时复位信号才起作用,则复位信号持续的时间应该超过一个时钟周期才能保证系统复位。
异步复位原理:异步复位只要有复位信号系统马上复位,因此异步复位抗干扰能力差,有些噪声也能使系统复位,因此有时候显得不够稳定,要想设计一个好的复位最好使用异步复位同步释放。
同步复位与异步复位的优劣:异步复位消耗的PFGA逻辑资源相对来说要少些,因此触发器自身带有清零端口不需要额外的门电路,这是其自身的优势,通常在要求不高的情况下直接使用异步复位就OK。
下面我用verilog来演示下同步复位与异步复位。
同步复位的verilog程序如下:
module D_FF
(
//Input ports
SYSCLK,
RST_B,
A,
//Output ports
B
);
//========================================= //Input and output declaration
//========================================= input SYSCLK;
input RST_B;
input A;
output B;
//========================================= //Wire and reg declaration
//=========================================
wire SYSCLK;
wire RST_B;
wire A;
reg B;
//========================================= //Logic
//========================================= always@(posedge SYSCLK)
begin
if(!RST_B)
B<=1'b0;
else
B<=A;
end
endmodule
综合后的RTL级电路图如下:
异步复位的verilog程序如下:
module D_FF
(
//Input ports
SYSCLK,
RST_B,
A,
//Output ports
B
);
//========================================= //Input and output declaration
//========================================= input SYSCLK;
input RST_B;
input A;
output B;
//========================================= //Wire and reg declaration
//=========================================
wire SYSCLK;
wire RST_B;
wire A;
reg B;
//========================================= //Logic
//========================================= always@(posedge SYSCLK or negedge RST_B)
begin
if(!RST_B)
B<=1'b0;
else
B<=A;
end
endmodule
综合后的RTL级电路图如下:
通过比较显然异步复位消耗的逻辑资源要少些,因此通常的设计中都采用异步复位的方式,需要进一步的学习的话,可以再研究下其它的资料。