FPGA编程中"打拍"的目的

————————————————
版权声明:本文为CSDN博主「qq_33586509」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33586509/article/details/80861816

一直说要自己写个博客,把自己一路来的学习经验记录下来。与别人分享交流!同时也相当于记了笔记,以后需要的时候,能够及时拿出来温故知新。但!!!一直拖着快一年了。。。今天,给自己下个决心。行动!

  关于FPGA中“打一拍”的含义,我们可以理解为把某个信号延迟了一个时钟周期,推而广之:“打两拍”就是延迟两个时钟周期,“打n拍”就是延迟n个时钟周期。

 “打一拍”的目的很简单,就是为了FPGA中时序的正确性!!!!(了保证FPGA输入输出接口的时序,一般会要求将输入管脚首先打一拍再使用,输出接口也要打一拍再输出FPGA。将信号打一拍的方法是将信号通过一次寄存器,而且必须在IOB里面的寄存器中打一拍。因为,从FPGA的PAD到IOB里面的寄存器是有专用布线资源的,而到内部其他寄存器没有专用的布线资源。使用IOB里面的寄存器可以保证每次实现的结果都一样,使用内部其他寄存器就无法保证每次用的都是同一个寄存器且采用同样的布线。同时,为了使用输入输出延迟功能(Input / Output delay),也必须要求信号使用IOB里面的寄存器。)

    “打一拍”具体是怎么通过FPGA实现的呢?如下

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

end

end

当然,打一拍也是有一定原则的,不是想打就打的

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

  • 8
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Verilog,"打拍"是指将输入信号通过寄存器延迟一个时钟周期。这个操作通常用于保证FPGA的时序正确性。在FPGA设计,为了保证输入输出接口的时序,一般会要求将输入信号先打一再使用,输出接口也要打一再输出。这样做的目的是为了确保每次实现的结果都一样。在Verilog,可以通过使用寄存器来实现打拍操作。具体的代码实现可以参考以下示例: always @(posedge Clk) begin inputs_reg <= inputs; if (inputs_reg == 1'b0 && inputs == 1'b1) begin // 打拍后的操作 end end 这段代码,inputs_reg是一个寄存器,用于存储输入信号inputs的值。在时钟上升沿到来时,inputs_reg会被更新为inputs的值。然后可以通过判断inputs_reg和inputs的值来进行相应的操作。这样就实现了打拍的功能。 #### 引用[.reference_title] - *1* *3* [FPGA编程"打拍"的目的](https://blog.csdn.net/whik1194/article/details/100559072)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [FPGA “打一”含义](https://blog.csdn.net/kebu12345678/article/details/80669549)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值