smbxfdbz 发表于 2024-7-13 16:37:06

用FPGA对图像90度旋转,是不是对DDR带宽要求很高?

DDR顺序存储,效率很高,可以达到80%以上

但是如果要对顺序存储的图像旋转90度,就需要按列读取图像数据,即每次的读地址都是不一样,感觉这种读取方式,DDR的带宽也就能利用到百分之二三十

图像旋转90度这个需求,有什么办法能更高效的用上DDR的带宽呢?请坛友出谋划策一下,感谢!

Himem 发表于 2024-7-13 16:45:48

本帖最后由 Himem 于 2024-7-13 16:48 编辑

输入图像时速率不高则 输入时每像素存到旋转后地址? 输出时就顺序读了

smbxfdbz 发表于 2024-7-13 17:19:41

Himem 发表于 2024-7-13 16:45
输入图像时速率不高则 输入时每像素存到旋转后地址? 输出时就顺序读了
(引用自2楼)

输入输出速率是一样的,反正有一边地址要跳

kebaojun305 发表于 2024-7-13 17:27:46

本帖最后由 kebaojun305 于 2024-7-13 17:29 编辑

做个 Cache   直接单地址读 肯定效率最低

dellric 发表于 2024-7-13 19:16:57

做一个SRAM缓冲,横向2N列(根据FPGA的RAM调整N)。前N列输出的时候,读取DDR到后N列;后N列输出的时候,读取DDR到前N列。

wye11083 发表于 2024-7-13 19:49:39

本帖最后由 wye11083 于 2024-7-13 19:52 编辑

不吃带宽,但是非常吃随机效率。一般是缓存几行到几十行,然后并行写ddr,再跳着读。

wye11083 发表于 2024-7-13 19:52:59

kebaojun305 发表于 2024-7-13 17:27
做个 Cache   直接单地址读 肯定效率最低
(引用自4楼)

要考虑这里cache命中率≈=0。

chenfzg 发表于 2024-7-13 22:27:03

读取摄像头旋转?

jianfengxixi 发表于 2024-7-14 13:33:38

摄像头或视频输入的时候就存2份,一份正的,一份旋转90°,需要哪个读哪个;存的时候可以片内SRAM缓冲几十行,这样90°那个图像写入速度也快。。。

redroof 发表于 2024-7-14 14:43:15

smbxfdbz 发表于 2024-7-13 17:19
输入输出速率是一样的,反正有一边地址要跳
(引用自3楼)

片内有一点SRAM做双缓存就行了,能缓存十几行就可以不影响DDR效率。
收下十几行以后开始写DDR。从SRAM里面跳着读然后往DDR里面批量写,每次激活行列以后能连写十几个数据点,已经够不亏了。
这个时候另一块SRAM缓存可以继续收数据,收完后两个缓存轮换。
SRAM缓存大一点可以每次批量写更多,更合算。但是哪怕只要有几行缓存,就已经比直接跳着写DDR的效率高多了。

redroof 发表于 2024-7-14 14:49:49

本帖最后由 redroof 于 2024-7-14 14:56 编辑

smbxfdbz 发表于 2024-7-13 17:19
输入输出速率是一样的,反正有一边地址要跳
(引用自3楼)

你算一下你的DDR的时序参数,每次随机写的总开销是几个时钟,然后就知道至少需要多大的SRAM缓冲来平摊这个开销了。
我的原则是额外开销跟实际写数据的时间1:1已经够好了。额外开销是实际写数据时间的2倍也认为还行。。。
这种东西都是权衡,片内的缓冲是有限的,越大越贵,然后越大的缓冲边际效应反而越小。所以缓冲加大到一定程度就够了。具体多大叫够,跟据自己的实际情况决定。
页: [1]
查看完整版本: 用FPGA对图像90度旋转,是不是对DDR带宽要求很高?