FPGA中数据延迟方案汇总

这篇具有很好参考价值的文章主要介绍了FPGA中数据延迟方案汇总。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.非阻塞赋值延时打拍

always @ (posedge clk) begin
     d1 <= d;
     d2 <= d1;
     .......
     dout <= dn;
end

         本质上就是对数据进行多级寄存器缓存,延迟时间以clk的一个周期为单位,消耗的就是寄存器。比较适合延迟固定周期以及延迟周期比较短的情况。

        缺点:延迟时间不方便控制,不适合延迟时间比较长的情况。

二、移位寄存器延时

reg     [data_width*delay_width-1:00]            
data_r=0;
always @ (posedge clk)
begin

    data_r <= {data_r[data_width*(delay_width-1)-1:0],data_in};
end


 assign data_out=data_r[camera_trig_delay_time];

        这种方法利用的是移位寄存器的方法,用的是SLICEM资源。SLICEM可以在不使用触发器的条件下配置为32位移位寄存器(注意:只能左移)。这样,每个LUT可以将串行数据延迟1到32个时钟周期。移位输入D(LUT DI1脚)和移位输出Q31(LUT MC31脚)可以进行级联,以形成更大的移位寄存器,达到更大的延迟效果。这种方法延迟的时间可配置性也比较高。

   缺点:占用的资源比较多。尤其当延迟的数量级较大时,拼接的位移寄器是有个数限制的,如下图则是当延迟时间设置比较久的时候vivado报错的截图。FPGA中数据延迟方案汇总

三、计数器实现任意周期延时

        这种资源消耗率较低,延迟周期也比较灵活。

parameter delay_per = 8'h4;//延时周期数
reg flag;
reg [7:0] delay_count;
 
always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        flag <= 0;
        end
    else if(in1)begin
        flag <= 1;
        end
    else if(delay_count == delay_per)begin
        flag <= 0;
        end
end
 
always @(posedge clk or negedge rst_n) begin
    if(!rst_n)begin
        delay_count <= 0;
        out1 <= 0;
        end
    else if(delay_count == delay_per && flag == 1'b1)begin
        delay_count <= 0;
        out1 <= 1;
        end
    else if(flag == 1'b1)begin
        delay_count <= delay_count + 1'b1;
        out1 <= 0;
        end
    else begin
        delay_count <= 0;
        out1 <= 0;
    end
end

  这种实现方式比较多,这里摘录了网上的代码。这种方法下,延迟的时间必须小于信号的间隔。因为如果延迟时间大于了信号间隔,就会丢掉信号。

缺点:.延迟时间必须小于信号间隔。       

四、大容量存储

        对于比较大时间的延迟,可以用RAM或者fifo或者DDR这种存储介质进行缓存延迟

     文章来源地址https://www.toymoban.com/news/detail-512184.html

到了这里,关于FPGA中数据延迟方案汇总的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Verilog基础:在testbench中使用阻塞赋值和非阻塞赋值的区别

    相关阅读 Verilog基础 https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.5482         本文详细阐述了在一个testbench中,应该如何使用阻塞赋值与非阻塞赋值。首先说结论,建议在testbench中,对时钟信号(包括分频时钟)使用阻塞赋值,对其他同步信号使用非阻塞赋值

    2024年04月08日
    浏览(64)
  • 空闲任务与阻塞延时(笔记)

    软件延时是让CPU等待达到延时效果。 而RTOS的优势是可以充分发挥CPU的性能,永远不会让CPU闲着。 RTOS中的延时叫做阻塞延时 当没有其他任务可以运行时,RTOS会为CPU创建一个空闲任务,然后CPU去执行。 在RTOS中,空闲任务是系统在调度器创建的优先级最低的任务,空闲任务主

    2024年02月03日
    浏览(67)
  • Verilog基础:避免混合使用阻塞和非阻塞赋值

    相关阅读 Verilog基础 https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.5482         “避免在一个always块中混杂阻塞赋值和非阻塞赋值”,这条原则是著名的Verilog专家Cliff Cummings在论文SUNG2000中提出的,这个观点在公众讨论时受到了广泛的质疑。有人认为可以在时钟

    2024年02月05日
    浏览(34)
  • QT 不阻塞线程,达到延时的作用

    有时候需要处理一些跟界面无关的但非常耗时的事情,这些事情跟界面在同一个线程中,由于时间太长,导致界面无法响应,处于“假死”状态。例如:在应用程序中保存文件到硬盘上,从开始保存直到文件保存完毕,程序不响应用户的任何操作,窗口也不会重新绘制,从而

    2024年02月08日
    浏览(27)
  • Verilog仿真文件中的阻塞和非阻塞赋值问题探讨

    在 RTL 代码中我们知道如果表达组合逻辑时使用“=”赋值,表达时序逻辑时使用“=”赋值,如果我们不按照这种规则来设计往往会得到意想不到的答案。虽然说在 Testbench 中我们对赋值号的要求并不是很在意,使用“=”和“=”赋值均可,都能够仿真出来结果,且最后不会被

    2024年02月07日
    浏览(35)
  • ARM 循环阻塞延迟函数

         串行驱动的关键是双方能够按照既定的时序进行检测、设置相关引脚上的电平,比如单总线、I2c这样基本的可以用GPIO模拟的时序协议,需要主从双方,必须在链路接口内严格按照微妙级的延迟单位进行时序同步。 所以,在这种对时间要求很敏感的情况下,一般都会考虑

    2024年02月15日
    浏览(31)
  • Android 广播阻塞、延迟问题分析方法

    一、问题 最近遇到一个问题,发送广播(普通广播)给另一个应用,但是广播需要要等约1min后才收到。 二、分析原因 原因是系统有个广播接收器在接收到广播后处理了接近50s,所以阻塞了后面的广播处理。如果大家也出现了广播阻塞问题,想知道广播到底堵塞到哪里?这里

    2024年02月13日
    浏览(57)
  • JavaScript:延迟访问和延时执行函数

    在java中线程有sleep函数可以延迟执行,但是在js中并没有这样的函数。 唯一有的就是setTimeout延迟执行函数,但是这个函数也是有很多坑。 场景:由于js是单线程异步执行的,当调用第三方API接口时,如果对方没有提供批量操作的接口,我们就需要多次请求相同的API,但是在

    2024年02月12日
    浏览(30)
  • FPGA学习笔记(八)同步/异步信号的打拍分析处理及亚稳态分析

    一、FPGA学习笔记(一)入门背景、软件及时钟约束 二、FPGA学习笔记(二)Verilog语法初步学习(语法篇1) 三、FPGA学习笔记(三) 流水灯入门FPGA设计流程 四、FPGA学习笔记(四)通过数码管学习顶层模块和例化的编写 五、FPGA学习笔记(五)Testbench(测试平台)文件编写进行

    2024年02月01日
    浏览(39)
  • 14.9-时序和组合的混合逻辑——使用非阻塞赋值

    原则4:在同一个always块中描述时序和组合逻辑混合电路时,用非阻塞赋值。 1,在一个always块中同时实现组合逻辑和时序逻辑 将简单的组合逻辑和时序逻辑写在一起很方便。 当把组合逻辑额时序逻辑写入到一个always块中时,应遵从时序逻辑建模的原则,使用非阻塞赋值。

    2024年02月02日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包