FPGA试题练习--------异步输入同步输出电路分析

考虑以下电路,当触发器的D端数据输入相对于clk来说是异步的,再这种情况下,因为不知道什么时候会有异步输入的信号、输入信号什么时候撤销,这将导致在clk上升沿来临时建立和保持时间不满足,从而导致输出端Q的数据不稳定。
FPGA试题练习--------异步输入同步输出电路分析_第1张图片
对于该电路来说,D端信号和清零信号均是相对于clk来说是异步信号,因此两个信号均需要考虑,下面进行分析。
一.异步输入信号导致亚稳态分析
常见的同步电路如下,采用两级寄存器拍了拍,实现信号跨时钟域同步。
FPGA试题练习--------异步输入同步输出电路分析_第2张图片
但这样的电路只适用于异步输入的脉宽大于时钟周期的情况,当输入脉宽太窄时,clk可能出现采漏情况。
因此考虑以下电路同步,当输入窄脉冲时,该电路能正确采集并输出一个clk周期的高电平。
FPGA试题练习--------异步输入同步输出电路分析_第3张图片
当没有输入信号时,电路稳定的状态输出如下所示
FPGA试题练习--------异步输入同步输出电路分析_第4张图片
可见,该电路正常工作,等待异步输入的上升沿触发第一级DFF。当窄脉冲输入时,电路的状态如下
FPGA试题练习--------异步输入同步输出电路分析_第5张图片
由于输入脉宽窄,在跳高又跳低时clk时钟未到上升沿,所以该电路接下来等待时钟上升沿。
时钟上升沿到来是,电路状态如下
FPGA试题练习--------异步输入同步输出电路分析_第6张图片
由于第一级和第二级触发器之间时钟不同,因此有很大概率产生亚稳态;但第三级触发器是正常的所以输出为0,反馈的组合电路状态还是没改变。
当下一个时钟上升沿到来时,电路的状态如下
FPGA试题练习--------异步输入同步输出电路分析_第7张图片
第三级触发器可能输出1,也可能输出0,当输出为0时,组合电路状态未变,当输出为1时,电路改变如下
FPGA试题练习--------异步输入同步输出电路分析_第8张图片
由于同步输出为1,导致组合电路产生了清零信号,导致第一,二级触发器清零。但也正是由于清零信号的存在,导致同步输出只产生了一个clk周期宽度的高电平。因此该电路可以将异步输入的窄脉冲,拓宽为clk周期的信号。
再回头查看两级寄存器同步电路,如下所示
FPGA试题练习--------异步输入同步输出电路分析_第9张图片
当data_clka输入为一个clk_a周期脉宽时,clk_b可能未能正确采集到数据,因此需要对输入的脉宽进行延长。如下所示电路
FPGA试题练习--------异步输入同步输出电路分析_第10张图片
将data_clka一个周期的高电平时间延长为多个周期,以便于clk_b采集。
二.异步复位信号导致的亚稳态分析
电路图如下
FPGA试题练习--------异步输入同步输出电路分析_第11张图片
由于时钟和数据是在同一时钟域的,所以不用考虑由于数据输入产生的亚稳态。复位信号有效时输出为0,此时输出不会产生亚稳态,但当复位信号结束时,clk上升沿可能恰好有效,此时采集到rst的电平未知,从而产生出亚稳态。
因此为了防止复位信号产生的亚稳态,从而设计出以下电路
FPGA试题练习--------异步输入同步输出电路分析_第12张图片
当rst信号为高电平时,电路正常工作,电路的状态如下所示
FPGA试题练习--------异步输入同步输出电路分析_第13张图片
当rst信号有效时,电路进行复位,状态如下
FPGA试题练习--------异步输入同步输出电路分析_第14张图片
各级触发器复位,等待复位信号结束,当复位结束时,电路状态如下
FPGA试题练习--------异步输入同步输出电路分析_第15张图片
当rst信号复位结束时,clk时钟上升沿到来,由于rst信号在跳变建立时间不满足,采集到rst信号未知,从而导致第一级触发器输出值未知,即第一级触发器产生亚稳态。对于第二级触发器来说,由于在clk上升沿来之前其D端为0,Q端为0,当clk上升沿有效时,虽然对rst采样到未知电平,但此时触发器还是会输出0,因为没有让触发器跳1的条件。即采集到rst=0,触发器输出为0,采集到rst=1,输入D=0,所以触发器还是输出为0。这也就是异步复位、同步释放电路。
这点类似三目运算符,即表达式:assign out= sel?a:b;当a=4’b1010,b=4’b1001,sel=x时,输出out=4’b10xx。

你可能感兴趣的:(FPGA试题练习)