| ||
Nand Flash 接口协议只有两种ONFI与toogle. 两者在本质上没有太大区别,具体到接口协议上,主要有SDR,NV-DDR,NV-DDR2等。在接口时序上的差异不大。但在实现Nand Flash 接口控制器上确有着不小的麻烦。所有接口信号都不是在某个统一的时钟控制之下同步工作的。每个信号都有其对应的时序要求,这对于实现RTL设计而言还是比较复杂的。何况为了是Nand Flash slave设计更为简单,协议还规定:对于Nand Flash接收到的DQ与DQS信号,DQS信号的跳变沿必须在DQ中间,也就意味着,从Nand Flash接口控制器出来的DQS信号必须要做90°相移。此外,从Nand Flash出来的DQ,DQS信号,他们的跳变沿确实对齐的,也就意味着,Nand Flash接口控制器收到DQ,DQS信号之后,也需要对DQS信号做90°相移,之后才能作为DQ信号的采样时钟。
由于DQS是双沿采样,对于RTL而言,就需要一个posedge和negedge的寄存器分别采样不同的数据。当然为了产生DQS这种信号,也需要posedge和negedge的寄存器锁存原始DQS信号,再经过同或操作之后得到待输出的DQS信号。
因为DQ,DQS信号在引线上传输的时候,由于环境电容电阻问题,会使得信号产生不同的偏移,需要些微修正,以便正确采样,这里引入了delay_line的概念。Delay_line其实就是一组延迟单元,通过控制信号来调节,以便达到不同的延迟效果,从ps到ns的延迟。 关于delay_line的设计,目前有两种方式,最稳妥的当然是采用模拟DLL单元,这样延迟最稳定,但面积消耗大,也可采用如下文章里的数字DLL方式:https://aijishu.com/a/1060000000263418t https://aijishu.com/a/1060000000264859。当然,这种做法的线性度还不够好,还可能会有毛刺,目前有其他人提出无毛刺的延迟单元<Electronics Letters - 2014 - Lee - Single‐step glitch‐free NAND‐based digitally controlled delay lines using dual loops>。