- 主题:请教:fpga读并口NandFlash的DQ数据/DQS时钟疑问
遇到个问题,百思不解,还请版上各位朋友不吝赐教了
并口nand Flash在 Data output cycle 会输出DDR双沿的DQS时钟和DQ数据,
比方说,我只读8个字节数据,波形如下:
___ ___ ___ ___
DQS _________| |___| |___| |___| |__________
_________ ___ ___ ___ ___ ___ ___ ___ ___ ______
DQ[7:0] _________X___X___X___X___X___X___X___X___X______
xx A B C D E F G H xx
频率比较低,DQS在10-20MHz左右。
DQS的跳变沿,大致对齐DQ[7:0]的跳变沿,
两者有大约0.85ns-5ns的tDQSQ延时(DQS-DQ skew, DQS to last DQ valid, per access)。
在fpga内,用IDDR来采样,DQ和DQS分别连到IDDR的数据、时钟,
为了稳定采样,希望在iddr的入口做成center-aligned波形,如下:
___ ___ ___ ___
DQS ___________| |___| |___| |___| |________
_________ ___ ___ ___ ___ ___ ___ ___ ___ ______
DQ[7:0] _________X___X___X___X___X___X___X___X___X______
xx A B C D E F G H xx
这就希望,把dqs时钟延迟一段时间,做90度移相。
【疑问1】
如何给实现90度移相?
1,若用IDELAY,max只有几个ns的延时,对于10-20M时钟,无法移相90度,
不知道IDELAYE2能级联吗?
在官方文档里,没找到明确说法。
2,如果用MMCM,它是否只能对持续不断的时钟做移相?
若是只有上图所示的4拍时钟,MMCM能移相吗?
3,有其他办法吗?
【疑问2】
用fpga吃入的dqs时钟,对iddr输出的Q1、Q2做采样,
只能采到 AB CD EF 六个字节,抓不到GH(因为此时DQS已经停了),如何解决?
我想到的方法是:
让nand Flash多吐1拍dqs时钟,其对应的dq数据为don't care,
但是用这多出的1拍dqs时钟,可以实现最后一个字节 GH 的采样。
不知此方法是否妥当?
--
修改:katyusza FROM 159.226.52.*
FROM 159.226.52.*
如果用一个频率更高的FPGA内部时钟,比如100MHz同时对DQS DQ进行采样,再寻找合适的DQ采样点呢?
--
FROM 49.7.47.*
这样也不是不行,但是感觉它不美啊,不漂亮啊~~
我感觉自己这个也不是啥高大上的需求,
我觉得肯定有简洁、漂亮的方法来解决它 >,<
【 在 captainjiang (lj) 的大作中提到: 】
如果用一个频率更高的FPGA内部时钟,比如100MHz同时对DQS DQ进行采样,再寻找合适的DQ采样点呢?
--
FROM 159.226.52.*
速度慢 不妨用nand lgacy接口
【 在 katyusza 的大作中提到: 】
: 遇到个问题,百思不解,还请版上各位朋友不吝赐教了
: 并口nand Flash在 Data output cycle 会输出DDR双沿的DQS时钟和DQ数据,
: 比方说,我只读8个字节数据,波形如下:
: ...................
--
FROM 106.39.50.*
对速度要求确实不高,
但没有legacy接口可用,只能走NV-DDR2/3
【 在 Qlala (Qlala) 的大作中提到: 】
速度慢 不妨用nand lgacy接口
【 在 katyusza 的大作中提到: 】
: 遇到个问题,百思不解,还请版上各位朋友不吝赐教了
: 并口nand Flash在 Data output cycle 会输出DDR双沿的DQS时钟和DQ数据,
: 比方说,我只读8个字节数据,波形如下:
: ...................
--
FROM 159.226.52.*
1.用4倍时钟产生90度,这个频率4倍才40-80MHz
2.fpga内部用持续不断的时钟,用Enable控制pin的输出
--
FROM 182.151.102.*
赞你这个思路
我跟这种思路叫“优雅”
【 在 katyusza 的大作中提到: 】
: 这样也不是不行,但是感觉它不美啊,不漂亮啊~~
: 我感觉自己这个也不是啥高大上的需求,
: 我觉得肯定有简洁、漂亮的方法来解决它 >,<
: ...................
--
FROM 114.242.29.*
用过NV-DDR接口,100MHz的IO,用IDELAY控制DQS延时,但有个问题是采样第一个数据时会有错误,不知道怎么解决,NV-DDR2应该可以用Warmup Cycles可以解决第一个数据错误问题
--
FROM 223.104.38.*
___ ___ ___ ___
DQS _________| |___| |___| |___| |__________
_________ ___ ___ ___ ___ ___ ___ ___ ___ ______
DQ[7:0] _________X___X___X___X___X___X___X___X___X______
xx A B C D E F G H xx
1,您是说,
用4倍频的时钟对DQS打一拍Dff,其Dff的Q就是dqs移相90度吧?
但是,
DQS并不是连续的时钟信号,它类似稀疏数据,
这个应该无法用mmcm对它做4倍频,
应该是只有连续不断的时钟才能用mmcm倍频。
并且,
吃入的dqs相对于fpga片内的其他时钟,其相位差是未知的,
所以应该也无法用fpga内其他时钟来倍频。
2,没看太明白 >,<
【 在 netvideo (netvideo) 的大作中提到: 】
1.用4倍时钟产生90度,这个频率4倍才40-80MHz
2.fpga内部用持续不断的时钟,用Enable控制pin的输出
--
FROM 159.226.52.*
嗯,多谢提醒,调试的时候我留意一下。
【 在 BJZHTY (BJZHTY) 的大作中提到: 】
用过NV-DDR接口,100MHz的IO,用IDELAY控制DQS延时,但有个问题是采样第一个数据时会有错误,不知道怎么解决,NV-DDR2应该可以用Warmup Cycles可以解决第一个数据错误问题
--
FROM 159.226.52.*