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