扩位到底什么意思?

        在学习FPGA初期,有一个很重要的概念——亚稳态,亚稳态的产生是因为信号在不同时钟域的传递时在时钟上升沿到来的时候信号正好发生了变化,寄存器的建立时间不满足要求,寄存器自然也不知道有没有正确的接收到信号,就产生了亚稳态。对于这个问题比较常见的处理方式是通过打拍处理,一般打两拍就可以阻断亚稳态的传递了。但是,这里有一个问题,这个打拍的方式只能适合慢时钟域传递到快时钟域,快时钟域一定能采样到慢时钟域的信号这是这种方式可行的条件之一。如果我们的需求是快时钟域传递到慢时钟域呢,慢时钟域并不一定能采集到快时钟域的突发信号,慢时钟域的上升沿可能还没有到来,快时钟域的信号可能已经都消失了。

        这时候有两种方式处理,一是通过握手进行处理,当快时钟域的突发信号出现时发送一个请求,没有应答一直保持,所以慢时钟域一定能够接收到请求信号的。但是这种方式写的时候太费劲,另外一种方式是扩位,刚学习的时候一直没明白什么意思,这里我给你们提供一段代码,大家一看就知道是怎么回事了。大家可以根据自己的需要自行更改。

module sign_process (
    input					fast_clk,
    input					slow_clk,
    input					sign_in,
    output	reg				sign_out
);

reg		[15:0]			sign_r;

always @(posedge fast_clk) begin
    sign_r <= {sign_r, sign_in};
end

always @(posedge slow_clk) begin
    if (sign_r) begin
        sign_out <= 1'b1;
    end
    else begin
        sign_out <= 1'b0;
    end
end




endmodule

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值