- 主题:请教: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.*
这样也不是不行,但是感觉它不美啊,不漂亮啊~~
我感觉自己这个也不是啥高大上的需求,
我觉得肯定有简洁、漂亮的方法来解决它 >,<
【 在 captainjiang (lj) 的大作中提到: 】
如果用一个频率更高的FPGA内部时钟,比如100MHz同时对DQS DQ进行采样,再寻找合适的DQ采样点呢?
--
FROM 159.226.52.*
对速度要求确实不高,
但没有legacy接口可用,只能走NV-DDR2/3
【 在 Qlala (Qlala) 的大作中提到: 】
速度慢 不妨用nand lgacy接口
【 在 katyusza 的大作中提到: 】
: 遇到个问题,百思不解,还请版上各位朋友不吝赐教了
: 并口nand Flash在 Data output cycle 会输出DDR双沿的DQS时钟和DQ数据,
: 比方说,我只读8个字节数据,波形如下:
: ...................
--
FROM 159.226.52.*
                  ___     ___     ___     ___
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.*
嗯,您这个是高速时钟采样的方法,
但DQ[7:0]是个多位宽的信号,
对它采用“高速clk打2拍”,是否有采到数据跳变沿的风险呀?
【 在 netvideo (netvideo) 的大作中提到: 】
是异步DDR吗?异步的可以用高速时钟clk对DQS、DQ打两拍为DQS2、DQ2,以后都在高速时钟clk的时钟域处理。
然后对DQS2做上下边延检测,用检测的信号锁数据。
clk  __/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  
DQS ___/           \___________/           \___________/           \___________/           
DQ  ===X           X           X           X           X           X           X           X           
DQS1________/           \___________/           \___________/           \___________/           
DQ1 ========X           X           X           X           X           X           X           
DQS2______________/           \___________/           \___________/           \___________/           
DQ2 ==============X           X           X           X           X           X           X           
U   ______________/      \________________/      \________________/      \________________/      
D   ___________________________/      \________________/      \________________/      
【 在 katyusza 的大作中提到: 】
: ___     ___     ___     ___
: DQS     _________|   |___|   |___|   |___|   |__________
:         _________ ___ ___ ___ ___ ___ ___ ___ ___ ______
: ...................
--
修改:netvideo FROM 125.69.13.*
FROM 159.226.52.*
嗯,确实是,汗 >_<
【 在 Qlala (Qlala) 的大作中提到: 】
我觉得你这个事 完全是自己给自己找不痛快
如果是低速操作 就老老实实用高倍时钟采dqs/dq
如果是高速数据 就用iddr idelay去做相位调整
你现在是把一种高速接口运行在1/10的频率上
而fpga的资源显然不适合这样操作
【 在 katyusza 的大作中提到: 】
: 遇到个问题,百思不解,还请版上各位朋友不吝赐教了
: 并口nand Flash在 Data output cycle 会输出DDR双沿的DQS时钟和DQ数据,
: 比方说,我只读8个字节数据,波形如下:
: ...................
--
FROM 159.226.52.*