代码改变世界

DE2-115 SDRAM地址问题

2012-09-18 13:05  美女驴  阅读(1069)  评论(10编辑  收藏  举报

我在跑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的,还是如果要修改地址,需要修改时序的问题,
如果要修改时序,需要修改哪些地方。
 
希望得到大家的帮助!