乒乓操作-低速模块——高速模块

目录

 低速模块处理高速数据流:

实现中的总结:

相机时序低速输入->高速输出:

不是整数倍读写速率:


摘自:

CMOS摄像头(4):SDRAM和乒乓操作 - 咸鱼FPGA - 博客园

 彻底弄懂乒乓操作与并行化_快,快去救列宁!的博客-CSDN博客

 低速模块处理高速数据流:

        假设端口A的输入数据流的速率为 100Mbps,而一个数据预处理模块运算速度只有50Mbps,如果不采用乒乓操作结构,很明显数据预处理模块是处理不了数据端口A的数据流的。

        当采用上图的乒乓操作方式之后。假设两个数据缓冲模块的内存大小都是1Mb,故每段乒乓缓冲周期为10ms。但是此时留给每个数据预处理模块的运算时间不再是10ms,而是20ms了,20ms内数据预处理模块是可以处理掉1Mb数据的。为什么留给数据预处理模块的时间有20ms呢?这20ms等于往自己写入数据的10ms加上往另外一个缓冲模块写入数据的10ms。因为这20ms内数据预处理模块都可以从自己本级的缓冲模块读取数据做运算。

        这就做到了采用低速的数据预处理模块处理高速的数据流。上图是2级乒乓操作结构(因为数据流速率是预处理模块速率的2倍),如果数据流速率是预处理模块速率的n倍,就可以采用n级乒乓操作结构。这也是面积换速度的方法。

        0.5s后,R1存入50Mbit同时处理了25Mbit

        1s后,R1处理完了,并开始输出50Mbit,R2存入50Mbit同时处理了25Mbit

        1.5s后,R1的50Mbit输出完了,并又存入了50Mbit同时处理了25Mbit,R2处理完了,并开始输出50Mbit

        2s后,R1处理完了,并开始输出50Mbit,R2的50Mbit输出完了,并又存入了50Mbit同时处理了25Mbit        

        所以RAM的写入时钟是也是读出时钟的2倍,但野火里的实验,RAM的读出时钟是减半了,但却带宽*2,速度就是核写入速度一样,我觉得完全没必要时钟减半,直接用一样的时钟不行吗?用一半的时钟,不加宽带宽也可行吧。那就相当于RAM0.5s把存入的50Mbit送了25Mbit至处理模块。

      这就做到了采用低速的数据预处理模块处理高速的数据流。上图是2级乒乓操作结构(因为数据流速率是预处理模块速率的2倍),如果数据流速率是预处理模块速率的n倍,就可以采用n级乒乓操作结构。这也是面积换速度的方法。

实现中的总结:

        野火的实验里,实现低速模块处理高速模块,但省略了低速处理模块,RAM输出还是高速

        数据在时钟上升沿发送,输入选择模块接收数据时,也用一个reg寄存一下,采用时钟下降沿寄存。上升沿采到的就是数据变化的那一刻,这样采到的信号可能就是不稳定的状态。

相机时序低速输入->高速输出:

        假设OV5640 帧率 30fps,输出VGA 帧率 60fps,无乒乓操作时:

         当写入第二帧的上半帧时,VGA会读取存储的一整帧,这样会产生第一帧下半帧和第二帧上半帧混在一起,错帧。使用乒乓操作后:

         一块内存存一帧。当读取右边内存两次,使得左边内存存够一帧,在跳转到左边内存读这一帧,也读两次,使得右边内存存够一帧,再跳转。

不是整数倍读写速率:

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DDR乒乓操作是指在Verilog中使用双数据率(DDR)技术进行乒乓操作。在给定的Verilog代码中,有两个RAM模块(RAM1和RAM2),它们的使能信号(en1和en2)交替为高。当RAM1的o_addr为0时,表示RAM1正在进行读操作,而o_addw为高时,表示RAM1正在进行写操作。\[1\] 在提供的测试台(testbench)代码中,定义了时钟信号(clk)、复位信号(rst_n)和数据输入信号(data_in),以及数据输出信号(data_out)。通过对时钟信号进行周期性翻转,产生20ns的时钟周期。在初始化阶段,将时钟和复位信号设置为初始值,并在一定时间后将复位信号拉高。然后,通过每10个时钟周期翻转一次时钟信号,产生输入激励。\[2\] RAM存储模块(DRAM)定义了时钟信号(clk)、复位信号(rst_n)、数据输入信号(data)、写使能信号(wr_en),以及数据输出信号(o_data)、地址输出信号(o_addr)和写地址输出信号(o_addw)。在时钟上升沿或复位信号下降沿触发的always块中,根据不同的情况对输出信号进行更新。当复位信号为低电平时,将地址输出信号和写地址输出信号设置为0。当写使能信号为高时,将写地址输出信号递增1,地址输出信号设置为0。当写使能信号为低时,将地址输出信号递增1,写地址输出信号设置为0。同时,使用一个数组aRAM来存储数据,并根据读写操作对数据进行更新。\[3\] 综上所述,DDR乒乓操作是通过交替使用两个RAM模块,并根据读写操作对数据进行更新,实现数据的双数据率操作。 #### 引用[.reference_title] - *1* *3* [verilog 实现乒乓操作(附代码)](https://blog.csdn.net/weixin_44413306/article/details/128153149)[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设计——verilog实现乒乓操作并modelsim仿真](https://blog.csdn.net/H19981118/article/details/125103589)[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 ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值