赞
踩
目录
摘自:
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会读取存储的一整帧,这样会产生第一帧下半帧和第二帧上半帧混在一起,错帧。使用乒乓操作后:
一块内存存一帧。当读取右边内存两次,使得左边内存存够一帧,在跳转到左边内存读这一帧,也读两次,使得右边内存存够一帧,再跳转。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。