您的位置 首页 IOT

FPGA规划中对输入信号的处理

FPGA设计中对输入信号的处理-一般来说,在全同步设计中,如果信号来自同一时钟域,各模块的输入不需要寄存。只要满足建立时间,保持时间的约束,可以保证在时钟上升沿到来时,输入信号已经稳定,可以采样得到正

1.输入信号为什么要存放

一般来说,在全同步规划中,假如信号来自同一时钟域,各模块的输入不需求存放。只需满意树立时刻,坚持时刻的束缚,能够确保在时钟上升沿到来时,输入信号现已安稳,能够采样得到正确的值。可是假如模块需求运用输入信号的跳变沿(比方帧同步信号),千万不要直接这样哦。

always @ (posedge inputs)
begin

end

2.一切信号都需求存放两拍吗

假如这个输入信号来自异步时钟域(比方FPGA芯片外部的输入),有必要存放两拍。榜首拍将输入信号同步化,同步化后的输出或许带来树立/坚持时刻的抵触,发生亚稳态。需求再存放一拍,削减(留意是削减)亚稳态带来的影响。

假如这个输入信号来自于同一时钟域且需求用到跳变沿,需求存放一拍。不然时序陈述八成会报clock skew > data delay,形成树立/坚持时刻的抵触。

总而言之,五条准则:

1.大局时钟的跳变沿最牢靠。
2.来自异步时钟域的输入需求存放一次以同步化,再存放一次以削减亚稳态带来的影响。
3.不需求用到跳变沿的来自同一时钟域的输入,没有必要对信号进行存放。
4.需求用到跳变沿的来自同一时钟域的输入,存放一次即可。
5.需求用到跳变沿的来自不同时钟域的输入,需求用到3个触发器,前两个用以同步,第3个触发器的输出和第2个的输出通过逻辑门来判别跳变沿。

给出一个verilog模板:

always @ (posedge Clk) //不对输入信号进行存放
begin
if (inputs)
begin

end

end

always @ (posedge Clk) //对输入信号存放一拍
begin
inputs_reg = inputs;
if (inputs_reg == 1b0 inputs == 1b1)
begin

end

end

always @ (posedge Clk) //对输入信号存放三拍
begin
inputs_reg1 = inputs;
inputs_reg2 = inputs_reg1;
inputs_reg3 = inputs_reg2;
if (inputs_reg2 == 1b1 inputs_reg3 == 1b0)
begin

end

end

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/iot/179512.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部