CN101105970A - Ata接口的ddr固态盘 - Google Patents

Ata接口的ddr固态盘 Download PDF

Info

Publication number
CN101105970A
CN101105970A CNA2006100896838A CN200610089683A CN101105970A CN 101105970 A CN101105970 A CN 101105970A CN A2006100896838 A CNA2006100896838 A CN A2006100896838A CN 200610089683 A CN200610089683 A CN 200610089683A CN 101105970 A CN101105970 A CN 101105970A
Authority
CN
China
Prior art keywords
interface
ddr
ata
fifo
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2006100896838A
Other languages
English (en)
Inventor
林琦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING HEXINSI INFORMATION TECHNOLOGY Co Ltd
Original Assignee
BEIJING HEXINSI INFORMATION TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING HEXINSI INFORMATION TECHNOLOGY Co Ltd filed Critical BEIJING HEXINSI INFORMATION TECHNOLOGY Co Ltd
Priority to CNA2006100896838A priority Critical patent/CN101105970A/zh
Publication of CN101105970A publication Critical patent/CN101105970A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种能够通过接口转换技术实现的固态盘,在本发明中得到充分地表述。这项接口转换技术就是从ATA接口到DDR接口(见摘要附图)。接口转换过程分四个步骤:(1)ATA接口分别通过两个通道:传送数据到FiFo,和传送控制信息到控制逻辑;(2)控制逻辑对控制信息的分析处理产生新的信息,并将新的相关控制信息分别通过控制信息通道送到FiFo,和DDR接口;(3)FiFo根据控制信息将数据送到DDR接口;(4)DDR接口对控制信息和数据加工,从而实现固态盘的整体转换功能。本发明是根据现场可编程门阵列芯片FPGA(Field Programmable Gate Array)设计的。FPGA是是美国Xilinx公司1985年推出的SpantanIII系列产品。根据ATA接口规范与DDR接口规范对接口类型和数量上的要求以及本发明的设计规模,我们采用的是XC3S200芯片。

Description

ATA接口的DDR固态盘
技术领域
本发明涉及计算机外部存储设备:磁盘的革新。具体地说,多年来,传统机械式硬盘一直被用来作为计算机的外部存储设备,随着新的磁盘存储器(例如,ATA接口的DDR固态盘)的提出,在磁盘的存储速度、防震性能、体积等技术方面都将有重大的革新。
背景技术
当前,计算机通用的外部存储器是磁盘,就是传统的机械式硬盘,这是用来存储数据必备的外部设备,硬盘里存放着包括操作系统和各种各样的应用程序的计算机软件。
从机械式硬盘诞生之日起,到现在的四,五十年中,硬盘驱动器在控制技术、接口标准、机械结构等方面进行了一系列的重大改进,新的机械式硬盘技术不断涌现,并得到广泛的应用。从市场来看,磁盘的容量、体积、速度和性能方面仍有待进一步提高方能满足用户的需求。
另一种是以通用串行总线USB(Universal Serial Bus)为接口的闪盘,这是一个容量较大的存储设备,只要计算机上有USB插口就可以使用;虽然读写速度慢一些,但可以随意更换盘,且兼容性较高和防震性能好,仍受到用户广泛地重视。
新近出现的一种存储器是以ATA接口的双倍数据速率DDR(Double Data Rate)SDRAM的固态盘。比起前两种盘,固态盘有它显著的特点,如读写速度快,写操作次数没有限制等。表1给出这三种盘的性能比较:
有关盘的存储技术方面亦有相应的专利知识产权。例如,专利号为ZL01114762.8(2004年4月28日)的“使用半导体存储设备的数据安全存取方法和系统”和专利号为US6,148,354(2000年11月14日)的“通用串行总线个人电脑闪存盘的结构(Architecture for a universal serial bus-based PC flash disk)”。这两个专利文献涉及到的USB接口和闪存盘都是成熟的技术,但在这些专利中,将其组合在一起,也体现了一种创新的亮点。
Figure A20061008968300051
表1:三种盘的性能比较
同样地,ATA接口,DDR接口是成熟的技术,但以ATA接口和DDR盘的组合而形成新的固态盘,确是继传统的机械式盘和闪盘之后出现的具有创新亮点的事物。由于DDR盘使用了更多更先进的同步电路,因此,DDR实际上不需要提高时钟频率就能加倍提高同步动态存储器SDRAM(Synchronous Dynamic RAM)的速度,它允许在时钟脉冲的上边沿和下边沿传输数据,这就使得DDR的速度是标准SDRAM的两倍;而且容量上还有了提高。当然,由于SDRAM的数据易失性,ATA接口和DDR接口组合的固态盘必须工作在有稳定电源支持的情况下。
发明内容
本发明是一项接口转换技术。即从ATA接口到DDR接口(如图1所示),从而实现固态盘的功能。接口转换过程分四个步骤:(1)ATA接口分别通过两个通道:传送数据到FiFo,和传送控制信息到控制逻辑;(2)控制逻辑对控制信息的分析处理产生新的信息,并将新的相关控制信息分别通过控制信息通道送到FiFo,和DDR接口;(3)FiFo根据控制信息将数据送到DDR接口;(4)DDR接口对控制信息和数据加工,从而实现固态盘的整体转换功能。本发明是根据现场可编程门阵列芯片FPGA(Field Programmable Gate Array)设计的。根据ATA接口规范与DDR接口规范对接口类型和数量上的要求以及本发明的设计规模,我们采用的是美国Xilinx公司推出的Spantan III系列XC3S200型芯片。
(1)ATA接口
ATA是一种异步接口协议,需要使用异步接口电路完成信息的同步工作。ATA规范定义了12个寄存器,这些寄存器通过FPGA随机存储器实现对信息的监控。
ATA接口中的DMA的功能接收输入clk,reset,dior_,diow_和dmack等控制信息和输出dmarq和iody等控制信息。ATA接口中的接口模块的功能是利用FPGA芯片中的Block Ram实现ATA协议中规定的接口寄存器,并保存Identify信息。我们选用的RAM是一个双端口(A和B)器件;A和B两端口可分别对整个RAM空间进行读写操作,互不妨碍。在本发明的设计中,RAM的A端口由ATA的相关逻辑控制;B端口由控制逻辑控制,并向RAM中实现的状态寄存器中返回当前指令的状态信息。
(2)控制逻辑
控制逻辑主要由微控制器和FiFo控制逻辑,以及信息传送通道组成。
1)微控制器
微控制器的主要功能是完成ATA命令解析,初始化DDR等任务。微控制器对DDR与ATA采用统一的编址。使用微控制器完成这些任务,可以有效地利用FPGA芯片内部的RAM资源,减少硬件设计的复杂程度。控制信息包括控制端口和控制数据。端口分布概况是,0~7,0xf是ATA一侧的接口;9~0xb是FiFo控制逻辑与部分DDR的接口;0xc~0xe是与DDR的接口。
2)FiFo控制逻辑
FiFo控制逻辑主要完成的任务是匹配DDR与ATA的数据速率,避免数据丢失。FiFo控制逻辑状态图包含以下几种状态:
Idle:无操作状态;
Write:等待端口A(ATA侧)写数据状态;
Write_wait:当端口A接收到足够的数据时,转向DDR写的状态(端口B);
Pre_read:从端口B(DDR侧)读入数据到FiFo的状态;
Read:等待从端口A(ATA侧)取一定量数据的状态;
Read_wait:从端口B(DDR侧)读入数据到FiFo的状态。
通过以上状态协调数据从ATA到DDR的传输速率,该部分逻辑配合DDR控制模块、微控制解析命令的执行状态来控制数据流入流出DDR模块,完成数据的读写与存储,实现模拟硬盘的功能。
3)微控制器程序流程图
微控制器的工作是通过微控制器程序实现的。微控制器程序流程包括:
初始化DDR程序:根据协议要求初始DDR颗粒(即一个DDR芯片,它的规格包括:容量、位宽、块地址、行地址和列地址;及映射后的块地址、行地址列地址。);
等待ATA命令程序:PC停止取命令,并等待ATA一侧发信号激活PC;
判断ATA命令程序:判断需运行哪一条与ATA命令相关的子程序,并控制程序执行流程,填写ATA侧的状态寄存器;
ATA命令子程序:保证ATA按照协议要求完成;
Soft_reset命令:以上的各个状态下,当接到ATA一侧发送的Soft_reset命令时,设置状态寄存器,并返回到等待ATA命令的状态。
(3)FiFo
FIFO(First-In First-Out)是先入先出。FiFo的功能由FPGA中的Block RAM直接实现。FiFo有A和B两个端口,FiFo的A端口接收数据,FiFo的B端口发送数据到ATA接口一侧。
(4)DDR接口
DDR接口由ECC模块和DDR控制器两部分实现:
1)ECC模块:利用海明编码技术提高数据的可靠性。海明编码是一种可以纠错的编码。它是利用在k位信息增加r位,构成一个n=k+r位的码字,然后利用数学演算法来校验n bit码字中的1 bit错误。
2)DDR控制器的功能是,向DDR颗粒发送读写命令,初始化指令队列,完成DDR的设计要求。
DDR控制器包括以下几个状态:
Initialize:表示DDR颗粒需要经过一系列初始化操作才可使用;
Idle:等待状态;
Auto_refesh:向DDR发送Auto_refesh命令,当大于tRFC时间后回到Idle;
Active:发送Active命令,在发送Active命令前,先选好执行地址,在tRCD时间后去执行下一条命令;
Read:发送读命令;
Write:发送写命令,在tWR时间后进入下一个状态;
Prechange_all:结束一次读和写命令,在tRP时间后进入Idle等待状态;
Power_down:在执行DDR命令间隙进入省电模式。
根据DDR的状态控制,上电后,控制逻辑控制DDR控制器完成一系列步骤(这些步骤在“具体实施方式”中详细列出)的工作,使得DDR按要求执行。DDR一侧地址由块地址,行地址,列地址组成(见表2)。对应不同类型的DDR颗粒有不同的分配方式。
由上述可以归纳出本发明具有以下几点显著特点:(1),本发明通过ATA接口到DDR接口的接口转换技术,实现固态盘的功能;(2),本发明轮廓清晰:即从ATA接口到控制逻辑、FiFo,再到DDR接口。这是本发明独具匠心的巧妙设计;(3),在本发明采用现场可编程门阵列芯片FPGA中的XC3S200芯片。由于创造性的设计构思,使得本发明的固态盘在存储速率和存储量达到理想的境界。
附图说明
图1为本发明所阐述的固态盘整体结构框图,它是从ATA接口到DDR接口的转换技术;
图2为ATA接口框图;
图3为接口模块;
图4为控制逻辑框图;
图5为微控制器;
图6为DDR接口框图;
图7为接口寄存器RAM;
图8微控制器的程序流程图;
图9为FiFo控制逻辑状态转换图;
图10为DDR控制器。
具体实施方式
本发明通过从ATA接口到DDR接口的技术转换,从而实现固态盘的功能。参见图1,其工作过程如下:(1)<ATA接口101>含两条通道:通过双向<数据102>将数据送到<FiFo 104>和通过双向<控制信息103>将控制信息送到<控制逻辑106>;(2)通过<控制逻辑106>对控制信息的分析处理产生新的信息,接着将新的相关控制信息分别通过<控制信息105>通道送到<FiFo104>,和通过双向<控制信息108>通道送到<DDR接口109>;(3)<FiFo104>将从双向<数据102>和<控制信息105>获得的信息经加工后,通过双向<数据107>送到<DDR接口109>。(4)<DDR接口109>通过<控制信息108>从<控制逻辑106>接收到控制信息和从<数据107>接收到数据后,经过加工后,从而实现固态盘的整体转换功能。
本发明所阐述的从ATA接口到DDR接口的技术转换,就是FPGA芯片的功能,即现场可编程门阵列芯片FPGA(Field Programmable Gate Array)。它是是美国Xilinx公司1985年推出的Spantan III系列产品,这是Xilinx公司为了满足客户对高性能、低价格电子应用的需求而推出FPGA芯片。根据ATA接口规范与DDR接口规范对接口类型和数量上的要求以及本发明的设计规模,我们采用的是XC3S200芯片。(1)ATA接口
ATA接口如图2所示,它的结构包括<ATA数据同步逻辑201>,<DMA控制202>和<接口模块203>,以及<数据102>和<控制信息103>。ATA接口是按照ATA规范协议要求,完成相关操作。
ATA是一种异步接口协议,需要使用异步接口电路完成信息的同步工作。ATA规范定义了Alternate Status Register、Command Register、Data Register、DeviceRegister、Device Control Register、Error Register、Features Register、LBA High Register、LBA Low Register、LBA Mid Register、Sector Count Register、Status Register等12个寄存器,其中LBA(Logic BlockAddress)为逻辑块地址。这些寄存器以及固态盘监别信息是在FPGARAM(FPGA随机存储器)中实现。
<ATA数据同步逻辑201>直接和<数据102>相连。<DMA控制202>接收输入信息:clk,reset,dior_,diow_和dmack;输出信息:dmarq和iody。完成与ATA接口DMA操作的控制信号。<接口模块203>的结构如图3所示。它包括:<译码与控制电路301>,输送通道<寄存器地址信息302>,<Identify信息与接口寄存器303>,以及双向输送的<控制信息103>(即<输送到控制逻辑的信息>和<从控制逻辑返回的信息>)。接口模块的功能是实现向ATA协议规定的寄存器存储Identify信息,向<控制逻辑106>提供必要的控制信息。
接口模块(见图3)的功能是利用FPGA芯片中的Block Ram实现ATA协议中规定的接口寄存器,并保存Identify信息。FPGA的RAM是一个双端口(A和B)器件;A和B两端口可分别对整个RAM空间进行读写操作,互不妨碍。即图3中的<Identify信息与接口寄存器303>分A、B两个端口。A端口和B端口的随机存储器RAM(random access memory)如图7所示,这是FPGA资源。在本发明的设计中,RAM的A端口由ATA的相关逻辑控制;B端口由控制逻辑控制,并向RAM中实现的状态寄存器中返回当前指令的状态信息。
A端口与<寄存器地址信息302>相联,其对应地址映射方式如下:
`h000~`h0ff:512byte identify信息的地址;
`h100:Data register;
`h101:Feature register;
`h102:Sector count register;
`h103:LAB low register(LBA为逻辑块地址);
`h104:LBA mid register;
`h105:LBA high register;
`h106:Device register;
`h10f:Status register,Alternative statue register;
`h107:Command register;
`h3ff:其它。
(2)控制逻辑
<控制逻辑106>(见图4)由<微控制器401>、<FiFo控制逻辑402>和双向传送的<读写信息403>,以及<控制信息103>、<输送到FiFo的读写信息105>和双向传送的<控制信息108>组成。
1)微控制器
<微控制器401>(见图5)由<ROM501>、单向传送<PC502>、<PC生成逻辑503>、<PC控制信息504>、<存储于ROM中的代码505>,和传送<提供ALU的操作数506>、传送<提供读写寄存器的信息507>、传送<提供端口地址信息508>、<ALU509>、传送数据的<数据510>、<寄存器的文件511>、<端口地址512>、<输送ALU的计算结果513>、双向传送<输送读写寄存器的数据514>,以及<数据总线515>和<地址108>组成。
微控制器的主要功能是完成命令解析,初始化DDR等任务。微控制器对DDR与ATA采用统一的编址。使用微控制器完成这些任务,可以有效地利用FPGA芯片内部的RAM资源,减少硬件设计的复杂程度。
控制信息包括控制端口和控制数据。端口分布概况是,0~7,0xf是ATA一侧的接口;9~0xb
是FiFo控制逻辑与部分DDR的接口;0xc~0xe是与DDR的接口。微控制器的ATA侧的接口地址(即图4中的<控制信息103>一侧),它代表相应的寄存器。控制端口逻辑的映射逻辑如下:
`h00:保留;
`h01:Feature register;
`h02:Sector count register;
`h03:LBA low register;
`h04:LBA mid register;
`h05:LBA high register;
`h06:Device register;
`h07:Command register;
`h0f:Status register,Alternative statua register;
`h08:Error register.
微控制器的DDR侧(即图4中的<控制信息108>一侧):
`h09,`h0a,`h0b控制DDR与FiFo的寄存器;
`h0c,`h0d,`h0e为DDR相关寄存器。
2)FiFo控制逻辑
<FiFo控制逻辑402>主要完成的任务是匹配DDR与ATA的数据速率,避免数据丢失。FiFo控制逻辑状态图见图9。图中各个种状态的含意如下:
Idle:无操作状态,见图9中的901;
Write:等待端口A(ATA侧)写数据状态,见图9中的902;
Write_wait:当端口A接收到足够的数据时,转向DDR写的状态(端口B),见图9中的903;
Pre_read:从端口B(DDR侧)读入数据到FiFo的状态,见图9中的904;
Read:等待从端口A(ATA侧)取一定量数据的状态,见图9中的905;
Read_wait:从端口B(DDR侧)读入数据到FiFo的状态,见图9中的906。
通过以上状态协调数据从ATA到DDR的传输速率,该部分逻辑配合DDR控制模块、微控制解析命令的执行状态来控制数据流入流出DDR模块,完成数据的读写与存储,实现模拟硬盘的功能。
3)微控制器程序流程图
微控制器的工作是通过微控制器程序实现的。微控制器程序流程图见图8。它由以下几部分组成:<初始化DDR程序801>、<等待ATA命令程序802>、<Soft_reset命令803>、<判断ATA命令程序804>、<ATA命令子程序I805>、<ATA命令子程序II806>、<ATA命令子程序n807>。各个框的功能为:
初始化DDR程序:根据协议要求初始DDR颗粒;
等待ATA命令程序:PC停止取命令,并等待ATA一测发信号激活PC;
判断ATA命令程序:判断需运行哪一条与ATA命令相关的子程序,并控制程序执行流程,填写ATA侧的状态寄存器;
ATA命令子程序:保证ATA按照协议要求完成;
Soft_reset命令:以上的各个状态下,当接到ATA一侧发送的Soft_reset命令时,设置状态寄存器,并返回到等待ATA命令的状态。
(3)FiFo
FIFO(First-In First-Out)是先入先出。图1中<FiFo104>的功能由FPGA中的Block RAM直接实现。如图7所示,FiFo有A和B两个端口。FiFo的A端口通过<数据102>接收数据,并通过双向<数据107>(即FiFo的B端口)发送数据到ATA接口一侧,以及从<控制逻辑106>接收控制信息。FiFo读写控制由图4中<FiFo控制逻辑402>提供。
(4)DDR接口
DDR接口由ECC模块和DDR控制器两部分实现:
1)ECC模块:利用海明编码技术提高数据的可靠性。海明编码是一种可以纠错的编码。它是利用在k位信息增加r位,构成一个n=k+r位的码字,然后利用数学算法来校验n bit码字中的1 bit错误。
2)DDR控制器的功能是,向DDR颗粒发送读写命令,初始化指令队列,完成DDR的设计要求。
图1中<DDR接口109>的结构(见图6)由<ECC模块601>、<DDR控制器602>和双向通道<DDR数据[15:0]603>、<ECC[5:0]604>,以及单向通道<BA[1:0]605>、<地址[12:0]606>,以及<CS_607>、<RAS_608>、<CAS_609>、<WE_610>、<CK_611>、<CK6012>、<CKE_613>和<DQS614>组成。
<DDR控制器602>的状态关系如图10所示。它包括以下几个状态:
Initialize:表示DDR颗粒需要经过一系列初始化操作才可使用,见图10中的1001;
Idle:等待状态,见图10中的1002;
Auto_refesh:向DDR发送Auto_refesh命令,当大于tRFC时间后回到Idle,见图10中的1003;
Active:发送Active命令,在发送Active命令前,先选好执行地址,在tRCD时间后去执行下一条命令,见图10中的1004;
Read:发送读命令,见图10中的1005;
Write:发送写命令,在tWR时间后进入下一个状态,见图10中的1006;
Prechange_all:结束一次读和写命令,在tRP时间后进入Idle等待状态,见图10中的1007;
Power_down:在执行DDR命令间隙进入省电模式,见图10中的1008。
根据对DDR的状态控制,上电后,控制逻辑控制DDR控制器完成以下步骤的工作,能使得DDR按要求执行:
1.Apply power to VDD and VDDQ;
2.Apply VREE and VTT;
3.CKE must be LVCMOS Low;
4.Apply stable clocks;
5.Wait at least200 us.
6.Bring CKE High with a NOP comman;
7.Precharge_all;
8.Assert NOP for tRP time;
9.Configure extended made register;
10.Assert NOP for tMRD time;
11.Configure Load mode register and reset DLL;
12.Assert NOP for tMRD time;
13.Precharde_all;
14.Assert NOP for tRP time;
15.Issue Auto_refresh command;
16.Assert NOP for tRFC;
17.Issue Auto_refresh command;
18.Assert NOP for tRFC time;
19.Optional LMR command to clear DLL bit;
20.Assert NOP for tMRD time。
DDR一侧地址由块地址,行地址,列地址组成(见表2)。对应不同类型的DDR颗粒有不同的分配方式。
DDR颗粒的规格     DDR颗粒映射后的地址
容量×位宽(单位:bit) db块地址 row行地址     col列地址     BA块地址     ROW行地址     COL列地址
    128x4     2   0-11     0-8,9,11     X,11,10     x,x,23-12     x,x,25,1`b0,24,9-1(s0)
    128x8     2   0-11     0-8,9     X,11,10     x,x,23-12     x,x,x,1`b0,24,9-1(s0)
    128x16     2   0-11     0-8     X,11,10     x,x,23-12     x,x,x,1`b0,x,9-1(s0)
    256x4     2   0-12     0-8,9,11     X,11,10     x,26,23-12     x,x,25,1`b0,24,9-1(s2)
    256x8     2   0-12     0-8,9     X,11,10     x,25,23-12     x,x,x,1`b0,24,9-1(s1)
    256x16     2   0-12     0-8     X,11,10     x,24,23-12     x,x,x,1`b0,x,9-1(s0)
    512x4     2   0-12     0-8,9,11,12     X,11,10     x,27,23-12     x,26,25,1`b0,24,9-1(s3)
    512x8     2   0-12     0-8,9,11     X,11,10     x,26,23-12     x,x,25,1`b0,24,9-1(s2)
    512x16     2   0-12     0-8,9     X,11,10     x,25,23-12     x,x,x,1`b0,24,9-1(s1)
表2DDR颗粒和映射地址对照
如表2所示,DDR颗粒(即一个DDR芯片,表中列出相关的12个颗粒)的规格包括:容量,位宽,块地址db,行地址row和列地址col。映射后的块地址BA,行地址ROW和列地址。DDR颗粒有多种型号,分别对应不同的块、行、列地址。通过表2的地址映射方式可以只使用一个地址选择器完成不同类型的地址映射工作,节约了FPGA上的资源,有利于布线。
(5)接口命令
ATA接口有五类命令:PIO读/写命令,UDMA读/写命令,和非数据(控制信息)传输命令。这里PIO(Process Input Output)命令是过程输入输出;UDMA(UltraDirect Memory Access)命令是超直接内存存取。本发明共设计10个命令代码,分属于ATA接口五类命令,每个命令代码均有相应的命令名称。
1)PIO读命令执行顺序如下:
PIO读命令协议(PIO data-in command protocol)的命令用于读取磁盘数据,
或读取磁盘基本控制信息。
①ATA接口接收ATA命令(101)
a.同步ATA接口数据到当前时钟域(201);
b.解析基本信息,如起始地址、读/写使能等(203);
c.向控制逻辑报告接收到的命令(106)。
②解析ATA命令的执行顺序:
a.微控制器401接收①c的信号;
b.微控制器401启动软件程序判断ATA命令(804);
c.微控制器执行相应程序(805,806~807);
d.执行过程中,启动FiFo(105)和利用FiFo104,并使之匹配ATA与DDR的数据传输速率(102→107);
d.在执行过程中,控制逻辑把命令的基本信息(起始地址、读/写)通知DDR接口(109)。
③结束执行命令的顺序:
a.微控制器401、软件子程序(805~807)执行完毕;
b.把执行状态(如成功或失败)写回到ATA接口(303);
c.子程序跳转到等待ATA命令程序802。
2)PIO写命令执行顺序如下:
PIO写命令协议(PIO data-out command protocol)的命令用于将数据写入磁盘。
①ATA接口接收ATA命令(101)
a.解析基本命令,如起始地址等;
b.向控制逻辑报告接收到的命令。
②解析ATA命令的执行顺序:
a.微控制器401接收1.b的信号;
b.微控制器401启动程序判断ATA命令;
c.微控制器执行相应程序;
d.执行过程中,FiFo主机侧数据,根据FiFo控制逻辑的状态,间歇向DDR输送数据;
e.在执行过程中,控制逻辑把命令的基本信息(起始地址、读/写)写到DDR接口。
③结束执行命令的顺序:
a.微控制器401、软件子程序(805~807)执行完毕;
b.把执行状态(如成功或失败)写回到ATA接口(303);
c.子程序跳转到等待ATA命令程序(802)。
3)UDMA读/写命令执行顺序如下:
UDMA读/写命令是以DMA协议(DMA protocol)的方式读/写一个或多个数据。
①ATA接口接收ATA命令(101)(只有读需要同步数据)
a.同步ATA接口数据到当前时钟域(101);
b.解析命令基本信息(203);
c.DMA控制(202)完成DMA相关的协议操作;
d.向控制逻辑(106)报告。
②此小节的读/写命令分别等同于PIO②小接节的读/写命令;
③此小节的读/写命令分别等同于PIO③小接节的读/写命令;
注:对于本发明的设计来说,在内部数据传输的方式上,PIO和DMA没有明显的不同。它们的不同之点主要在ATA接口的握手信号的使用上。例如,dmarq,dmack两个信号,主要用于传输开始和结束的握手信号,而PIO则不需要这些信号来参与数据传输。
4)非数据(控制信息)传输命令
非数据命令协议(Non-data command protocol)的命令用于控制磁盘状态,和设置磁盘参数。
①接收ATA命令
a.解析基本信息;
b.向控制逻辑报告(106)接收到ATA命令。
②解析并执行命令
a.微控制器收到①b信号;
b.启动软件程序,判断ATA命令(804);
c.执行相应程序(805→807);
d.写回相应寄存器(303)。
(6)两则例子
在下面的例子中,先对输入寄存器、输出寄存器、符号含意、命令描述和流程作一介绍,从输入信号开始,给出具体例子。两则例子均为读的例子,而写功能只是读功能反方向而已,所以省略了写的例子。
1)例1,
命令名称:READ SECTORLS(直接从设备读取数据到主机);
命令代码:20h(≡`h20,以16进制表示);这是10个命令代码中的一个;
输入寄存器:给寄存器赋值,设以List 1为名表示这一组寄存器;
寄存器名称(字长8bit)寄存器内容
Feature         na
Sector Count    Sector Count
LBA Low         LBA[7:0]
LBA Mid         LBA[15:0]
LBA High        LBA[23:16]
Device          obs LBA obs DEV LBA[27:24]
Command         20h
输出寄存器:输出寄存器值,设以List 2为名表示这一组寄存器;
寄存器名称(字长8bit)寄存器内容
Error            na
Sector Count     na
LBA Low          na
LBA Mid          na
LBA High         na
Device           obs LBA obs DEV na na na na
Status    BSY DRDY DF na URQ na na ERR
符号解释:
“BSY”表式是否忙,1为忙,0为不忙;
“DF”表示此位不用;
“DEV”表示是否支持主设备,1为支持,0为不支持;
“DRDY”表示是否准备好,1为准备好,0为未准备好;
“DRQ”表示是否请求,1为请求,0为不请求;
“ERR”表示是否出错,1为出错,0为不出错。
“LBA”表示是否支持LBA地址,1为支持,0为不支持;
“na”表此寄存器现不用,可不写;
“obs”等于1为使用,0表示此位不用;
命令描述:
这条命令从起始地址(由LBA规定)读指定的Sectors(由Sector Count指定),通过ATA接口101输出数据到主机侧,把命令的执行状态通过Status寄存器返回;
流程:
主机侧填写好输入信号,如List 1组寄存器,各种寄存器在303中实现,假定从0 Sector(0扇区)开始读1个Sector;
输入信号:
`h02:sector count:    1
`h03:LBA Low           0
`h04:LBA Mid:         0
`h05:LBA High:        0
`h06:Device:         `b01010000
`h07:`h20;
当主机侧填写Command Register时,ATA接口(101)通知控制逻辑(106)。微控制器向Status Register填写`hD0(BSY=1,DRDY=1),此时主机侧还不能立即执行命令,微控制器从`h07中读到`h20(命令代码),开始解析命令(804),完成后,向Status Register填写`h58(DRDY=1,DRQ=1),通知主机侧可以执行命令。同时微控制器把`h02中的数据填到相应的控制逻辑,把`h03~`h05的信息填写到(109),并向104,109指明读写。109把从DDR读到的数据写到104,等待主机侧通过101把104中的数据读走,直到完成命令。
2)例2
命令名称:IDENTIFY DEVICE(直接从设备读取数据到主机);
命令代码:ECh;
输入寄存器:给寄存器赋值,设以List 1为名表示这一组寄存器;
寄存器名称(字长8bite)寄存器内容
Feature         na
Sector Count    na
LBA Low         na
LBA Mid         na
LBA High    na
Device      obs na obs DEV na na na na
Command     ECh
输出寄存器:给寄存器赋值,设以List 2为名表示这一组寄存器;
寄存器名称(字长8bit)寄存器内容
Error           na
Sector Count    na
LBA Low         na
LBA Mid         na
LBA High        na
Device          obs na obs DEV na na na na
Status          BSY DRDY DF na DRQ na na ERR
符号解释同例1;
命令描述:
这条命令从主机侧发EC命令读取设备侧的各种参数。如:地址格式、磁盘大小、支持传输的速率、方式等。
流程:
主机侧按照List 1填写寄存器
`h06:    `b01010000
`h07:    `hEC
当主机侧填写Command Register时,ATA-interface(101)通知控制逻辑(106)。微控制器向Status Register填写`hD0(BSY=1,DRDY=1),然后从`h07端口读到命令代码`hEC,并执行命令解析程序,最后向Status Register填写`h58(DRDY=1,DRQ=1),等待主机侧读数据。此命令数据存储在303中,当数据传输完毕,微控制器向`h0f,Status Register填写`h50,结束执行命令。

Claims (5)

1.一种由接口转换技术实现固态盘的方法,即从ATA接口到DDR接口的技术转换。接口转换过程分四个步骤:
1)ATA接口分别通过两个通道:传送数据到FiFo,和传送控制信息到控制逻辑;
2)控制逻辑对控制信息的分析处理产生新的信息,并将新的相关控制信息分别通过控制信息通道送到FiFo,和DDR接口;
3)FiFo根据控制信息将数据送到DDR接口;
4)DDR接口对控制信息和数据加工,从而实现固态盘的整体转换功能。
2.根据权利要求1所叙述的方法,其中ATA接口的功能是:
ATA是一种异步接口协议。
ATA接口中的数据同步逻辑是通过数据通道将数据送到FiFo。ATA接口中的DMA的功能接收输入和输出控制信息。ATA接口中的接口模块的功能是利用FPGA芯片中的Block Ram实现ATA协议中规定的接口寄存器,并保存Identify信息。FPGA的BlockRAM是一个双端口(A和B)器件;A和B两端口可分别对整个RAM空间进行读写操作,互不妨碍。在本发明的设计中,RAM的A端口由ATA的相关逻辑控制;B端口由控制逻辑控制,并向RAM中实现的状态寄存器中返回当前指令的状态信息。
3.根据权利要求1所叙述的方法,其中第二项控制逻辑的结构是由微控制器和FiFo控制逻辑,以及信息传送通道组成。
1)微控制器
微控制器的主要功能是完成命令解析,初始化DDR等任务。微控制器对DDR与ATA采用统一的编址。使用微控制器完成这些任务,可以有效地利用FPGA芯片内部的RAM资源,减少硬件设计的复杂程度。控制信息包括控制端口和控制数据。端口分布概况是,0~7,f是ATA一侧的接口;9~b是FiFo控制逻辑与部分DDR的接口;c~e是与DDR的接口。
2)FiFo控制逻辑
FiFo控制逻辑主要完成的任务是匹配DDR与ATA的数据速率,避免数据丢失。FiFo控制逻辑状态图包含以下7种状态(详细情况见“具体实施方式”):
Idle,Write,Write_wait,Pre_read,Read和Read_wait。通过这些工作状态协调数据从ATA到DDR的传输速率,该部分逻辑配合DDR控制模块、微控制解析命令的执行状态来控制数据流入流出DDR模块,完成数据的读写与存储,实现模拟硬盘的功能。
3)微控制器程序流程图
微控制器的工作是通过微控制器程序实现的。微控制器程序流程包括:
初始化DDR程序,等待ATA命令程序,判断ATA命令程序,ATA命令子程序和Soft_reset命令。执行Soft_reset命令,是设置状态寄存器,并返回到等待ATA命令的状态,从而实现微控制器程序的循环。
4.根据权利要求1所叙述的方法,其中第三项是FiFo
FiFo的功能由FPGA中的Block RAM直接实现。从而体现FIFO(First-InFirst-Out)先入先出的作用。
5.根据权利要求1所叙述的方法,其中第四项是DDR接口
DDR接口的功能由ECC模块和DDR控制器两部分实现。
1)ECC模块:利用海明编技术提高数据的可靠性。海明编码是一种可以纠错的编码。它是利用在k位信息增加r位,构成一个n=k+r位的码字,然后利用数学演算法来校验n bite码字中的1 bite错误。
2)DDR控制器的功能是,向DDR颗粒发送读写命令,初始化指令队列,完成DDR的设计要求。
DDR控制器包括以8个状态:Initialize,Idle,Auto_refesh,Active,Read,Write,Prechange_all和Power_down。
根据DDR控制器的状态控制,上电后,控制逻辑控制DDR控制器完成一系列步骤(这些步骤在“具体实施方式”中详细列出)的工作,使得DDR按要求执行。
由上述可以归纳出本发明具有以下几点显著特点:(1),本发明通过ATA接口到DDR接口的接口转换技术,实现固态盘的功能;(2),本发明轮廓清晰:即从ATA接口到控制逻辑、FiFo,再到DDR接口。这是本发明独具匠心的巧妙设计;(3),在本发明采用现场可编程门阵列芯片FPGA中的XC3S200芯片。由于创造性的设计构思,使得本发明的固态盘在存储速率和存储量达到理想的境界。
CNA2006100896838A 2006-07-12 2006-07-12 Ata接口的ddr固态盘 Pending CN101105970A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2006100896838A CN101105970A (zh) 2006-07-12 2006-07-12 Ata接口的ddr固态盘

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2006100896838A CN101105970A (zh) 2006-07-12 2006-07-12 Ata接口的ddr固态盘

Publications (1)

Publication Number Publication Date
CN101105970A true CN101105970A (zh) 2008-01-16

Family

ID=38999825

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006100896838A Pending CN101105970A (zh) 2006-07-12 2006-07-12 Ata接口的ddr固态盘

Country Status (1)

Country Link
CN (1) CN101105970A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591681A (zh) * 2011-12-20 2012-07-18 华为技术有限公司 计算机设备以及计算机设备的启动方法
CN102750244A (zh) * 2011-04-22 2012-10-24 安凯(广州)微电子技术有限公司 分级缓冲的dma传送装置及传送方法
KR101613072B1 (ko) * 2012-03-31 2016-04-19 자오셩 시아오 시클로헥산 산화로 제조하는 시클로헥산올과 시클로헥사논의 생산공정
CN105786749A (zh) * 2016-03-16 2016-07-20 山东华芯半导体有限公司 一种基于nand flash接口的双通道ata协议桥接装置
CN102591681B (zh) * 2011-12-20 2016-12-14 华为技术有限公司 计算机设备以及计算机设备的启动方法
CN111104056A (zh) * 2018-10-25 2020-05-05 华为技术有限公司 存储系统中数据恢复方法、系统及装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102750244A (zh) * 2011-04-22 2012-10-24 安凯(广州)微电子技术有限公司 分级缓冲的dma传送装置及传送方法
CN102750244B (zh) * 2011-04-22 2015-03-11 安凯(广州)微电子技术有限公司 分级缓冲的dma传送装置及传送方法
CN102591681A (zh) * 2011-12-20 2012-07-18 华为技术有限公司 计算机设备以及计算机设备的启动方法
CN102591681B (zh) * 2011-12-20 2016-12-14 华为技术有限公司 计算机设备以及计算机设备的启动方法
KR101613072B1 (ko) * 2012-03-31 2016-04-19 자오셩 시아오 시클로헥산 산화로 제조하는 시클로헥산올과 시클로헥사논의 생산공정
CN105786749A (zh) * 2016-03-16 2016-07-20 山东华芯半导体有限公司 一种基于nand flash接口的双通道ata协议桥接装置
CN105786749B (zh) * 2016-03-16 2018-08-07 山东华芯半导体有限公司 一种基于nand flash接口的双通道ata协议桥接装置
CN111104056A (zh) * 2018-10-25 2020-05-05 华为技术有限公司 存储系统中数据恢复方法、系统及装置

Similar Documents

Publication Publication Date Title
CN109154918B (zh) 自刷新状态机mop阵列
US8438328B2 (en) Emulation of abstracted DIMMs using abstracted DRAMs
US7281079B2 (en) Method and apparatus to counter mismatched burst lengths
CN109690508B (zh) 带虚拟控制器模式的存储器控制器
CN1977336B (zh) 改善支持多存储器访问延迟的计算机存储器系统的性能的系统和方法
US7913022B1 (en) Port interface modules (PIMs) in a multi-port memory controller (MPMC)
Ganesh et al. Fully-buffered DIMM memory architectures: Understanding mechanisms, overheads and scaling
CN104520932A (zh) 闪存存储器控制器
US20030061458A1 (en) Memory control with lookahead power management
JP2013525924A (ja) 単一のバッファを用いて複数のメモリ素子を同時にリードする方法及び装置
US11188264B2 (en) Configurable write command delay in nonvolatile memory
TW200305802A (en) Power conservation techniques for a digital computer
CN102999453A (zh) 用于系统芯片集成的通用非易失性存储器控制装置
US20240069811A1 (en) Efficient rank switching in multi-rank memory controller
KR20210091647A (ko) 비휘발성 메모리에 대한 자동 증분 기입 카운트
NL2031713B1 (en) Double fetch for long burst length memory data transfer
CN101105970A (zh) Ata接口的ddr固态盘
CN102339261B (zh) 一种ddr2sdram控制器
CN114691571B (zh) 数据处理方法、重排序缓存器及互联设备
US20240036754A1 (en) Adjustable access energy and access latency memory system and devices
JP2024512623A (ja) マルチキューメモリコントローラのためのクレジット方式
JP2022161812A (ja) 低電力のコヒーレントメモリデバイスにアクセスする場合のプロセッサストールの回避法
EP4375840A1 (en) Memory controller, electronic system including the same and method of controlling memory access
US20100096446A1 (en) Electronic storage card reader and control chip thereof
Germchi A High Performance DDR4 Memory Controller on FPGA

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C57 Notification of unclear or unknown address
DD01 Delivery of document by public notice

Addressee: Lin Li

Document name: Notification of Publication of the Application for Invention

C57 Notification of unclear or unknown address
DD01 Delivery of document by public notice

Addressee: Lin Li

Document name: Notification before expiration of term

C57 Notification of unclear or unknown address
DD01 Delivery of document by public notice

Addressee: Lin Li

Document name: Notification that Application Deemed to be Withdrawn

C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20080116