发新帖我要提问
12
返回列表
打印

FIFO与SDRAM问题

[复制链接]
楼主: mr.king
手机看帖
扫描二维码
随时随地手机跟帖
21
mr.king|  楼主 | 2010-12-17 08:57 | 只看该作者 回帖奖励 |倒序浏览
我本来意思是写512 读512,所以不用考虑空满,但是现在数据有错位.不过我想到解决办法是预先写20个无用的数据,这样FIFO总不空,然后解决第一个有效数据位置的问题.只要FIFO不空(多留一些数据),读的都是对的.空的话(可能还剩3个数据)虽然本次对,但是下次读会碰到开始若干假数据

使用特权

评论回复
22
钻研的鱼| | 2010-12-17 09:11 | 只看该作者
这种设计太复杂,建议另一种方法。
采用两片fifo,每片fifo 512的大小,乒乓操作。写的时候判断fifo时候空,空的时候连续写512个,然后准备下一片操作。读也是同理,fifo满表示有512个数据,连续读512个,切换到下一片准备操作。
另外,sdram调通了吗?

使用特权

评论回复
23
mr.king|  楼主 | 2010-12-17 10:42 | 只看该作者
本帖最后由 mr.king 于 2010-12-17 10:44 编辑

SDRAM没有问题,数据部错位了,换了个DCM重新综合,不过原来为何会错位还不清楚.从逻辑分析一上看,数据相对时钟的相位提前半个周期

使用特权

评论回复
24
钻研的鱼| | 2010-12-21 18:30 | 只看该作者
我猜想你的sdram的时钟是经过dcm输出。
xilinx的spartan和altera的cyclone不一样,cyclone有一个专门的锁相环输出引脚,可以消除内部走线的影响。xilinx的dcm本身输出可能已经锁定,但它输出到普通引脚,然后再由普通引脚送到你的sdram(我是这样猜想),dcm输出到普通引脚的走线随着编译而不同,有可能影响你的sdram读取

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则