FPGA基础 时序相关概念

1.亚稳态

a.产生亚稳态的原因:

        在FPGA系统中,如果数据传输过程中,不满足触发器的建立时间 Tsu 和保持时间 Th ,或复位过程中复位信号的释放相对于有效时钟沿的恢复时间recovery time不满足,就可能产生亚稳态。

        只要系统中有异步元件,亚稳态就是无法避免的,亚稳态主要发生在异步信号检测、跨时钟域信号传输以及复位电路等常用设计中。

b.亚稳态的危害及消除亚稳态:

        由于产生亚稳态后,寄存器Q端输出在稳定下来之前可能是毛刺、振荡、固定的某一电压值。在信号传输中产生亚稳态就会导致与其相连其他数字部件将其作出不同的判断,有的判断到“1”有的判断到“0”,有的也进入了亚稳态,数字部件就会逻辑混乱。

        在复位电路中产生亚稳态可能会导致复位失败。怎么降低亚稳态发生的概率或者消除亚稳态成了FPGA设计需要重视的一个注意事项。

        常用对亚稳态消除有三种方式:

                (1) 对异步信号进行同步处理;

                (2) 采用FIFO对跨时钟域数据通信进行缓冲设计;

                (3) 对复位电路采用异步复位、同步释放方式处理。


对异步信号进行同步提取边沿:在异步通信或者跨时钟域通信过程中,最常用的就是对异步信号进行同步提取边沿处理。对一个异步信号进行提取上升沿通常采用程序清单 :双极寄存器提取边沿。

input      sig_nsyn;
wire        sig_nsyn_p;
reg[1:0]   sig_nsyn_r;
always @(posedge clk or negedge rst_n)
begin
       if(!rst_n) sig_nsyn_r <= 2’d0;
       else         sig_nsyn_r <= { sig_nsyn_r [0], sig_nsyn };
end
assign     sig_nsyn_p = sig_nsyn_r[0] & ~sig_nsyn_r[1];

        这种边沿提取方式对于一个稳定的系统是不合适的,例如:当第一级寄存器采集到亚稳态,那势必造成sig_nsyn_p输出亚稳态,这样就会对采用sig_nsyn_p的信号进行判断的电路造成影响,甚至判断出错误的值。

        如果在100M时钟下那第一级寄存器产生亚稳态的概率约为10%,随着系统采集频率升高,那产生亚稳态的概率也会随之上升。因此,在进行异步信号跨频提取边沿时候,一般采用多进行一级寄存器消除亚稳态,可能在系统稳定性要求高的情况下,采用更多级寄存器来消除亚稳态。

方式2 多级寄存器提取边沿信号

input      sig_nsyn;
wire        sig_nsyn_p;
reg[3:0]   sig_nsyn_r;
always @(posedge clk or negedge rst_n)
begin
       if(!rst_n) sig_nsyn_r <= 2’d0;
       else         sig_nsyn_r <= { sig_nsyn_r [2::0], sig_nsyn };
end
 
assign     sig_nsyn_p = sig_nsyn_r[2] & ~sig_nsyn_r[3];

 
FIFO进行异步跨频数据处理:当数据流从一个时钟域到另一个时钟域的时候,绝大多数情况下都采用FIFO来作为中间缓冲,采用双时钟对数据缓冲,就可以避免亚稳态的发生。


异步复位,同步释放:对于复位情况下的亚稳态,常常是由于恢复时间和移除时间不满足造成的,因此,最常用的处理方式是采用异步复位、同步释放。采用第二级寄存器输出作为全局复位信号输出。

异步复位处理

wire        sys_rst_n;
reg [1:0]  rst_r;
always @(posedge clk or negedge rst_n)
begin
       if(!rst_n) rst_r <= 2’d0;
       else         rst_r <= {rst_r[0], 1’b1};
end
assign     sys_rst_n = rst_r[1];

通过上面三种方式处理异步信号、异步数据、以及异步复位可有效的提高系统的稳定性,减少亚稳态的产生。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值