我想用FPGA實作三張圖片的VGA顯示,每隔一段時間顯示一張圖片,基本思路如下,將三張1024*768的圖片用Img2Lcd.exe軟體轉化為.bin檔案,然后燒錄到FPGA板子的FLASH上,再把圖片資料讀取到DDR上存盤,然后用VGA顯示。
但是在顯示的時候,第一張圖片和第三張圖片都能正常顯示,只有第二張圖片,顏色完全不對,求大神指點,問題究竟出在哪里?
是FLASH存盤的問題?還是DDR中讀取圖片地址的問題?還是VGA現實的問題?求幫助!!!
圖片顯示如下,原來的圖片是綠色的荷花圖片,結果顯示出來顏色全變了?
uj5u.com熱心網友回復:
最好把原圖也貼上來 看樣子是rgb 搞混了或者有一個通道 沒輸入,試著把這個圖放在第一個顯示看看怎么樣?uj5u.com熱心網友回復:
我變換過三張圖的順序,無論哪張圖放在第二張的位置上,顯示的顏色都會出現這樣的問題,所以懷疑是第二張圖讀取的問題,但是不知道具體問題出在了哪里?我把圖片讀取到ddr中,再在ddr中依次讀取三張圖片的地址,第一張圖片地址為0,第二張圖片按照1024*768*2=1572864的地址讀取,部分代碼如下:
if(pic_store_done) begin
if(ddr_addr_set==1'b1) begin
//c3_p0_cmd_byte_addr_r<=30'd0; //ddr的地址置位, 初始值為地址16
if(pic_num==2'd0)
c3_p0_cmd_byte_addr_r<=30'h0; //第一副影像在DDR中的起始存盤位置
else if(pic_num==2'd1)
c3_p0_cmd_byte_addr_r<=30'd1572864; //第二副影像在DDR中的起始存盤位置
else if(pic_num==2'd2)
c3_p0_cmd_byte_addr_r<=30'd3145728; //第三副影像在DDR中的起始存盤位置
下面是圖片本來的樣子。求大神指導!
uj5u.com熱心網友回復:
應該就是通道資料反了。綠色的葉子應該是g通道的值最大的 r b兩通道幾乎為0 的。顯示出來的結果是r通道最高的 。轉換資料或者把資料刷進去的時候搞錯位了吧。 看一下ddr 中的資料 比如第二幅圖片的前面幾行的前半行也就是綠色葉子的位置是不是 g的資料值比較大 其他的通道資料比較小?uj5u.com熱心網友回復:
可以指導一下怎么顯示圖片嘛,就是生成mif之后??uj5u.com熱心網友回復:
樓主,我也在做你這個試驗,請問把圖片轉化為bin檔案后是通過什么燒錄到FPGA板子的FLASH上轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/56255.html
標籤:其他硬件開發
上一篇:文明爬蟲,從你我做起。
