序言
最近的项目需要在设计一个SDRAM控制器,用于存储一段采样数据,然后等待上位机下发指令,把数据上报。采用连续突发读写模式BL为4,时钟50MHz。
SDRAM器件型号为MT48LC16M16A2。(4M*16*4banks),从上面的信息我们可以了解到,该SDRAM的数据总线为16bit,行地址有13根(8K),列地址为9根,有4个BANK。
问题现象
项目中的SDRAM控制模块,是由原来写好的SDRAM模块移植过来的,原来的代码中读写突发长度都为1的。经过修改后就移植到新的项目当中。一开始当一次采样的数据量比较少的时候,读写正常,但是一旦一次采样数据量大的时候,发现数据有错位。而且有一定的规律,这样可以排除掉是由于时序问题或者管脚设置、或者初始化等原因,初步可以断定时逻辑设计出问题了。
图1 写入的测试数据
往sdram写入从16’h1---16’h6B35递增数据。
图2 Sdram读出的数据1
图3 Sdram读