一个很容易掉的坑,写下,以避免后面再跳
(2019-03-15-21:29)
<涉及项目:Video_Switch_xxxx>
平台: lattice ecp5
一个很容易掉的坑,写下,以避免后面再跳.!!!!!!!!
目的: 原来ddr里走的是rgb888,后边还要旋转操作,前面还要走scaler等,都是走的8*3=24位,比较耗资源。
现在改为yc422的数据,16位进ddr做后续一系列处理。
之前ddr进出都是正常的,我就默认ddr是对的了。
后来出现问题就没往ddr中去想,这没问题嘛!之前不是验证过了嘛。
一度以为是scaler的ip核出了问题(之前没用diamond做过scaler ip,一直用的是同事那边做好的)
① 调了很久才发现,原来就是DDR那块逻辑的问题。数据位宽改变了,你ddr的读写fifo的那个h_cnt==的那个值不用改??? 为什么? 24位—> 16位,64位ddr的吞吐从一次两个变成一次4个,速度变快了一倍,以写fifo为例,如果还在之前的那个H_CNT_BEGIN开始往DDR里写,可能你还没写完,DDR就读完了,读地址追上写地址了,fifo有空信号了。
②还有一点,在这样的情况下,(ddr的wrfifo或者rdfifo报错),scaler的ready信号甚至一直为0,从来不拉高,让人很奔溃。然后数据又是有的,真奇怪。
》》》后来改过来之后,scaler的ready也就正常了。