特权例程 sdram串口同学问题
时间:10-02
整理:3721RD
点击:
always @(posedge clk or negedge rst_n)
if(!rst_n) addr <= 19'd0;
else if(!wr_done && cntwr == 6'h3f) addr <= addr+1'b1;//写地址产生
else if(wr_done && neg_rdack) addr <= addr+1'b1;
//读地址产生
////////////test
这是产生数据模块中的一段代码,为什么要是 写了8个数据后,addr 才加一,怎么不是写一个数据,加一个地址呢 ?
还有 如果我想把突发模式改成4,需要改那些地方,我試过了很多次,打印数据依然有问题。
希望有路过的朋友看到了麻烦帮忙解决一下。
if(!rst_n) addr <= 19'd0;
else if(!wr_done && cntwr == 6'h3f) addr <= addr+1'b1;//写地址产生
else if(wr_done && neg_rdack) addr <= addr+1'b1;
//读地址产生
////////////test
这是产生数据模块中的一段代码,为什么要是 写了8个数据后,addr 才加一,怎么不是写一个数据,加一个地址呢 ?
还有 如果我想把突发模式改成4,需要改那些地方,我試过了很多次,打印数据依然有问题。
希望有路过的朋友看到了麻烦帮忙解决一下。
BRUST length是8,当然写8个数据,然后那个地址他应该最后会补3个0。很久以前做的SDR,依稀记得BL最小是8吧,也许我记错了也不一定,你去看看SDR的datasheet把
那我想问下,因为我移植特权代码,我的sdram是266Mbit,,但打印的数据出现了问题,有数据会重叠,你知道这是啥原因不 ?
不知道,没移植过他,你可以仿真自己找下问题
嗯,好的,谢谢。
BL长度是SDRAM初始化的时候配置的,有个最小长度的,如果最小不支持4,那就是不行,支持你需要改一下初始化时候的配置,少年还是去看SDRAM的datasheet的把,心急吃不了热豆腐啊
没心急,呵呵,,,只是看了很久,有点想不明白,
如果他的是BL8而你的SDRAM是BL4的话,那他代码直接移植过来肯定会有数据冲突。这的确需要你好好研读你选择的SDRAM的时序参数,而且要吃透程序的BL参数在哪些地方起作用。关键还是要靠仿真,没有simulation,搞很久都不一定搞的出来。
