一种NANDFlashPHY的制作方法

文档序号:19015724发布日期:2019-11-01 19:44阅读:1232来源:国知局
一种NAND Flash PHY的制作方法

本发明涉及一种nandflashphy,主要作用于flash的ddr模式,能够显著提高flash的接口频率。



背景技术:

目前,采用pcie-nvme作为接口的ssd已经成为一种趋势,对flashphy的设计也提出了更高的挑战性。通常flash接口支持sdr或者ddr模式,并且每一种模式又有不同的timingmode。在高速的flash接口中,通常采用flash的ddr模式。然而在高速的ddr模式中,对dq和dqs的相位调节至关重要,因此,flashphy的设计也是存储行业的一项难点。

现有技术存在的技术问题1:目前常见的nandflashphy在fpga和asic上并不一样,通常在做asic芯片的时候,由于fpga上flash的接口速度远远低于asic,导致在fpga原型验证阶段不能充分的验证逻辑电路的正确性。

现有技术存在的技术问题2:不仅如此,在使用fpga作为ssd的主控的时候,为了满足所需要的带宽,通常需要并行多个nandflash通道,极大的浪费资源和面积。

以上两个问题均是由于flash的接口速度较低导致,故只要能够提高接口速度,便能有效的解决技术问题1和技术问题2。在常见的asic设计中,flash的phy都会集成有dll,但是该类型的dll基本不能在fpga上通用。本方案设计的phy和内部的dll能够在fpga和asic上都容易实现。在xilinx的fpga上,可以利用其内部的idelay,odeialy,iddr,oddr,lut,dff等相关资源;在asic上,可以利用or,nor,nadnd,and等相关门电路。经过实践证明,在xilinxzynq系列fpga上,该设计能够实现的频率为200mhz/s,即单通道16bits位宽的flash接口速度为800mb/s,完全能够满足fpga产品的速度要求;在asic上,可以达到400mhz/s,单通道16bits位宽的flash接口速度为1.6gb/s,在性能上完全满足常见的pcie3.0x4接口的ssd控制器。



技术实现要素:

本发明旨在针对上述问题,提出一种能够在asic和fpga通用的nandflashphy。

本发明的技术方案在于:

一种nandflashphy,dq通过delay_dq送至iddrgrp;dqs通过delay_dqs0送至iddrgrp;使得dq在经过delay_dq、dqs经过delay_dqs0后产生dqs相对于dq的90°相位延时;

iddrgrp通过dqs捕获到正确的dq过后,将dq及生成的wdata送入到asyncfifo中;另一方面,delay_dqs0后还设有二级延时单元delay_dqs1,经delay_dqs1二次延时后送至asyncfifo作为asyncfifo的wrclk;其中,delay_dqs0经delay_dqs0为dqs_90°,delay_dqs1为dqs_(invert(180°)+180°)。

所述delay_dqs0通过dll_dqs0实现控制,delay_dqs1通过dll_dqs1实现控制。

所述dll_dqs0及dll_dqs1中的鉴相器的原理如下:

(1)将refclk依次送入到n个delaytap单元中进行延时调节,每个delaytap单元由一个反相器构成,通过refclk对n个delaytap单元的输出进行采样,并存至每个delaytap单元对应的tapreg中;

(2)将当前tapreg【n】和下一个tapreg【n+1】进行异或非操作,并将其结果送至delt寄存器delt【n】中,得到一个n位的delt码流;

(3)将此delt码流送至相位校验单元以计算delt码流中两个1之间0的个数,进而得到180°的相位延时。

所述delay_dqs1的原理如下:

dqs的输入信号为delayin,通过相位校验单元计算得到n个sel信号延时后,dqs的输出信号即实现延时90°或者180°相位。

本发明的技术效果在于:

1.解决了asic和fpga上nandflashphy不能通用的问题;

2.解决了fpga上phy的性能较低的问题,该phy能够达到较快的运行频率。

附图说明

图1为本发明一种nandflashphy的nandflash写时序图。

图2为本发明一种nandflashphy的nandflash读时序图。

图3为本发明一种nandflashphy的整体结构示意图。

图4为本发明鉴相器的结构示意图。

图5为本发明delay_dqs1的结构示意图。

图6为本发明布局示意图。

具体实施方式

如图1所示,通用的flash要求控制器送给flash的dq和dqs默认相位差为90°。

如图2所示,通用的flash送给控制器的dqs和dq之间有一定的延时,控制器还需要对dq进行做延时调节,才能使其dqs的上升沿和下降沿处于dq的有效时间窗口,并且随着温度的变化,调节的值要随时变化。该问题一直是本领域的一个设计难点。

如图3所示,本发明设计的一种nandflashphy,在在writeflash方向,dq经过clk送至dqoddr,dqs经过clk_90送入到oddr;即输出的dq和dqs默认有90°的相位差值,写方向的设计相对简单,并且稳定可靠。

在readflash方向,dq通过delay_dq送至iddrgrp;实现对对每一bit的dq进行细微调节;dq到iddrgrp的固有延时为750ps;同时,dqs通过delay_dqs0进行90°相位调节后送至iddrgrp。

delay_dqs0既可以通过cpu进行控制,也可通过dll_dqs0模块控制,当外界环境变化的时候,dll_dqs0会产生不同的值送给delay_dqs0单元。使其相位差固定在90°。delay_dqs0调节过程中,固定延时为200个ps,每一级的延时为78ps,总共有32级2.696ns延时可供调节。在200mhz/s的速度下,90°相位延时需要调节1.25ns,满足设计需求。使得iddrgrp能够正确的通过dqs_90°捕获到dq。

iddrgrp通过dqs捕获到正确的dq过后,将dq及生成的wdata送入到asyncfifo中;另一方面,delay_dqs0后还设有二级延时单元delay_dqs1,经delay_dqs1二次延时后送至asyncfifo作为asyncfifo的wrclk;最后,asyncfifo将所有数据进行缓存,最后通过异步时钟域处理即可全部将数据准确无误的读出去。

其中,delay_dqs0经delay_dqs0为dqs_90°,delay_dqs1为dqs_(invert(180°)+180°);即wrclk由dqs_90°进行相移180°并同时取反而来。其中,delay_dq及delay_dqs0可以直接利用xilinxfpga上的idelay;所述delay_dqs0通过dll_dqs0实现控制,delay_dqs1通过dll_dqs1实现控制。delay_dqs1中,每级的延时时间为400ps,200mhz/s的速率下,180°的相位延时大约为6级。

如图4所示,为dll_dqs0及dll_dqs1中的鉴相器的原理示意图。鉴相器的主要目的是对通过输入的refclk进行相位鉴定,并且输出一串带有相位信息的数据码流送给相位校验单元,相位校验单元能够通过该码流计算出180°的相位和90°的相位延时级数。

所述dll_dqs0及dll_dqs1中的鉴相器的原理如下:

(1)将refclk依次送入到n个delaytap单元中进行延时调节,每个delaytap单元由一个反相器构成,通过refclk对n个delaytap单元的输出进行采样,并存至每个delaytap单元对应的tapreg中;其中,n根据时钟周期和每个delaytap单元所能实现的延时得出。

(2)将当前tapreg【n】和下一个tapreg【n+1】进行异或非操作,并将其结果送至delt寄存器delt【n】中,得到一个n位的delt码流;

(3)将此delt码流送至相位校验单元以计算delt码流中两个1之间0的个数,进而得到180°的相位延时。

其中,鉴相器的设计关键是对dll_dqs0及dll_dqs1的布局布线部分,布局布线的优劣,决定了dll_dqs0及dll_dqs1的精度。

如图5所示,图5为本发明delay_dqs1的结构示意图。delay_dqs1的原理如下:

dqs的输入信号为delayin,通过相位校验单元计算得到n个sel信号延时后,dqs的输出信号即实现延时90°或者180°相位。

在delay_dqs1的设计过程中,通过人为的约束每个cell的位置和关键路径,做到每一级的延时和dll的每一级延时相匹配,才能确保delayline延时的准确性。在我们常见的硬件逻辑设计中,都是基于行为级进行描述,这就会导致每次综合后我们的cell的名称都不一致,给后端的布局布线约束造成极大的困难。在本设计中,关键路径采用门级方案实现,每次综合后不会对名称有任何影响,有效的解决了布局布线约束的问题。

如图6所示,是本设计的dlldelayline和dqsdelayline的布局示意图。即dll的delay和dqsdelay的每一级延时相等。

实现的结果如下:

在flash的写方向,直接使用两个相位差为90°的clock,分别命名为clk和clk_90。clk为dq的时钟,clk_90为dqs的时钟,那么输出到flash的dq和dqs默认成90°相位差,flash内部能够正取的通过dqs捕获到dq。解决写方向数据的相位问题。

在flash的读方向:从flash输入到controller的dqs经过delay_dqs0延时后,将dqs做一定的相位延时,使得dqs的上升沿和下降沿在dq的有效时间窗口。将延时过后的dqs和dq分别送入iddrgrp,此时iddrgrp会通过延时过后的dqs输出准确的dq采样数据。再将延时过后的dqs进行取反并且延时180°,将此dqs和iddrgrp输出的dq全部送入asyncfifo进行缓存。最后外部可以通过异步时钟将数据从asyncfifo中读出。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1