求助FPGA视频缩放问题

请问用双线性插值来做视频缩放,为什么要用到SDRAM和内部的双口ram?
当FPGA处理好一行数据后(在x轴上插完值)将数据存储进sdram,存一整帧数据,之后再从sdram中读取后再存入第一个双口ram,之后第二个双口ram,完了之后在Y轴上插值。
这两个双扣ram我很好理解,在Y轴上插值要用到相邻两行数据,这样做类似于乒乓和流水线操作,前一个ram提供一行,后一个提供相邻的下一行。问题来了,中间那个sdram起到什么作用,而且还必须存一整帧数据,当在x轴上插完数据为什么不直接送进第一个双口ram中????????

请问你从SDRAM读取到双口ram的数据是一行的还是一帧的?如果仅仅读取一帧的话,我觉得可能是因为双口ram容量小,不足以存储整帧图像的数据,所以用SDRAM用来暂存一帧的数据,而双口ram存储插值后的一行的数据。总得有个地方把一帧数据都存起来吧。追问

从sdram读取到双口ram中是一行,用了两级双口ram,前一级出来的数据存入后一级,同时从两级中读出数据,这样读出的数据就是相邻两行中同一列的数据,再进行Y轴插值运算。
我不明白的是sdram有什么用,没必要存一整帧数据啊,x轴插完值之后直接送进去第一级双口ram中不是更好?

追答

照你这么做的话,如果你现在处理的是第三行和第四行的数据,那你的双口ram就是第三行和第四行的图像数据,那你前面处理好的第一行和第二行的数据呢,不要了?应该是要完全处理完一帧数据之后,再把这帧图像送出去显示啊或者继续后续处理什么的吧。SDRAM就相当于是一个暂时存储你当前处理帧数据的容器。总不能处理一行显示一行或者又写会你原来的视频中吧。

追问

不是啊,这个sdram是在x轴插值和Y轴插值的中间,看下面这张RTL视图,yscale模块中存在我上面说的两级双口ram,之后才是一些乘法插值运算。所以我才纳闷sdram有什么用。

追答

好复杂的RTL视图,我眼睛都看花了!这个图应该是你自己在Quartus II里面截出来的吧,那你有整个工程的源文件啊,为啥不去看看SDRAM那一块的代码。而且我看你这个SDRAM又给外部提供了接口,都不知道这些接口拿来做啥的。Sorry,所学知识有限,这次帮不上什么忙了。

追问

这个就是外挂了一块sdram,现在做移植,我看了那个sdram的代码,就是存进去一帧数据,然后写sdram前有一个fifo,读sdram之后有一个fifo,我知道这两个fifo是速率匹配的作用,但唯独不晓得这块sdram有什么用。
不管怎样,谢谢你的答案。

温馨提示:答案为网友推荐,仅供参考