我在跑VEEK-MT的camera的demo(DE2-115+D5M),運行很正常,但是當我在top module中修改SDRAM Controller的時候,就是把
WR2_ADDR(23'h100000);
WR2_MAX_ADDR(23'h100000+800*480/2);
RD2_ADDR(23'h100000);
RD2_MAX_ADDR(23'h100000+800*480/2);
中的23‘h100000分別修改為
1. 23'h200000 LCD顯示圖像正確
2. 23'h400000 LCD能顯示圖像,但顏色很奇怪,也很模糊
3. 25’h1000000 LCD中能大致看出圖像,但是花的,而且有很多綠色
關於這些地址,我都做了計算, SDRAM共兩塊,每塊64MB, 形成8M*32 bits*4banks
行地址線是A0-A12
列地址線是A0-A9,
所以共有13+10=23根地址線,正好可以尋址一個bank 8M= 8*1024*1024 = 800000h
因此我認為改成1. 23'h200000和2. 23'h400000都應該可以顯示正確的影像
但是2的影像有錯誤
因為我原來用過DE1的板子,並且跑過DE1_D5M,其中也用了SDRAM Controller,它的SDRAM是1M*16 bits*4banks,
但是在它的頂層文件中卻用了22‘h100000這樣的方式,而22根地址線是可以尋址4個banks的,但VEEK-MT(也就是
DE2-115)卻用23,只尋址了一個bank,對比了二者的SDRAM Controller代碼,我沒發現本質的區別,所以我認為
25’h1000000也是可以的,
8M*4=32M=32*1024*1024=2000000h,需要25跟地址線,但是3的影像也是錯誤的。
我注意到在VEEK-MT Camera的demo中,SDRAM controller的實現中出現多次[11:0] SA這樣的定義,但是這塊SDRAM的地址線是有13根的,所以我將其
修改為[12:0] (在多個verilog文件中,包括SDRAM params),但是效果仍然不對,我想知道本身這個controller是有bug的,還是如果要修改地址,需要修改時序的問題,
如果要修改時序,需要修改哪些地方。
希望得到大家的幫助!
