專利名稱::Ata接口的ddr固態(tài)盤的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計(jì)算機(jī)外部存儲(chǔ)設(shè)備:磁盤的革新。具體地說,多年來,傳統(tǒng)機(jī)械式硬盤一直被用來作為計(jì)算機(jī)的外部存儲(chǔ)設(shè)備,隨著新的磁盤存儲(chǔ)器(例如,ATA接口的DDR固態(tài)盤)的提出,在磁盤的存儲(chǔ)速度、防震性能、體積等技術(shù)方面都將有重大的革新。
背景技術(shù):
:當(dāng)前,計(jì)算機(jī)通用的外部存儲(chǔ)器是磁盤,就是傳統(tǒng)的機(jī)械式硬盤,這是用來存儲(chǔ)數(shù)據(jù)必備的外部設(shè)備,硬盤里存放著包括操作系統(tǒng)和各種各樣的應(yīng)用程序的計(jì)算機(jī)軟件。從機(jī)械式硬盤誕生之日起,到現(xiàn)在的四,五十年中,硬盤驅(qū)動(dòng)器在控制技術(shù)、接口標(biāo)準(zhǔn)、機(jī)械結(jié)構(gòu)等方面進(jìn)行了一系列的重大改進(jìn),新的機(jī)械式硬盤技術(shù)不斷涌現(xiàn),并得到廣泛的應(yīng)用。從市場來看,磁盤的容量、體積、速度和性能方面仍有待進(jìn)一步提高方能滿足用戶的需求。另一種是以通用串行總線USB(UniversalSerialBus)為接口的閃盤,這是一個(gè)容量較大的存儲(chǔ)設(shè)備,只要計(jì)算機(jī)上有USB插口就可以使用;雖然讀寫速度慢一些,但可以隨意更換盤,且兼容性較高和防震性能好,仍受到用戶廣泛地重視。新近出現(xiàn)的一種存儲(chǔ)器是以ATA接口的雙倍數(shù)據(jù)速率DDR(DoubleDataRate)SDRAM的固態(tài)盤。比起前兩種盤,固態(tài)盤有它顯著的特點(diǎn),如讀寫速度快,寫操作次數(shù)沒有限制等。表l給出這三種盤的性能比較-有關(guān)盤的存儲(chǔ)技術(shù)方面亦有相應(yīng)的專利知識(shí)產(chǎn)權(quán)。例如,專利號(hào)為ZL01114762.8(2004年4月28日)的"使用半導(dǎo)體存儲(chǔ)設(shè)備的數(shù)據(jù)安全存取方法和系統(tǒng)"和專利號(hào)為US6,148,354(2000年11月14日)的"通用串行總線個(gè)人電腦閃存盤的結(jié)構(gòu)(Architectureforauniversalserialbus-basedPCflashdisk)"。這兩個(gè)專禾!j文獻(xiàn)涉及到的USB接口和閃存盤都是成熟的技術(shù),但在這些專利中,將其組合在一起,也體現(xiàn)了一種創(chuàng)新的亮點(diǎn)。<table>tableseeoriginaldocumentpage5</column></row><table>表l:三種盤的性能比較同樣地,ATA接口,DDR接口是成熟的技術(shù),但以ATA接口和DDR盤的組合而形成新的固態(tài)盤,確是繼傳統(tǒng)的機(jī)械式盤和閃盤之后出現(xiàn)的具有創(chuàng)新亮點(diǎn)的事物。由于DDR盤使用了更多更先進(jìn)的同步電路,因此,DDR實(shí)際上不需要提高時(shí)鐘頻率就能加倍提高同步動(dòng)態(tài)存儲(chǔ)器SDRAM(SynchronousDynamicRAM)的速度,它允許在時(shí)鐘脈沖的上邊沿和下邊沿傳輸數(shù)據(jù),這就使得DDR的速度是標(biāo)準(zhǔn)SDRAM的兩倍;而且容量上還有了提高。當(dāng)然,由于SDRAM的數(shù)據(jù)易失性,ATA接口禾QDDR接口組合的固態(tài)盤必須工作在有穩(wěn)定電源支持的情況下。
發(fā)明內(nèi)容本發(fā)明是一項(xiàng)接口轉(zhuǎn)換技術(shù)。即從ATA接口到DDR接口(如圖l所示),從而實(shí)現(xiàn)固態(tài)盤的功能。接口轉(zhuǎn)換過程分四個(gè)步驟(1)ATA接口分別通過兩個(gè)通道傳送數(shù)據(jù)到FiFo,和傳送控制信息到控制邏輯;(2)控制邏輯對(duì)控制信息的分析處理產(chǎn)生新的信息,并將新的相關(guān)控制信息分別通過控制信息通道送到FiFo,和DDR接口;(3)FiFo根據(jù)控制信息將數(shù)據(jù)送到DDR接口;(4)DDR接口對(duì)控制信息和數(shù)據(jù)加工,從而實(shí)現(xiàn)固態(tài)盤的整體轉(zhuǎn)換功能。本發(fā)明是根據(jù)現(xiàn)場可編程門陣列芯片F(xiàn)PGA(FieldProgrammableGateArray)設(shè)計(jì)的。根據(jù)ATA接口規(guī)范與DDR接口規(guī)范對(duì)接口類型和數(shù)量上的要求以及本發(fā)明的設(shè)計(jì)規(guī)模,我們采用的是美國Xilinx公司推出的SpantanIII系列XC3S200型芯片。(1)ATA接口ATA是一種異步接口協(xié)議,需要使用異步接口電路完成信息的同步工作。ATA規(guī)范定義了12個(gè)寄存器,這些寄存器通過FPGA隨機(jī)存儲(chǔ)器實(shí)現(xiàn)對(duì)信息的監(jiān)控。ATA接口中的DMA的功能接收輸入clk,reset,dior—,diow一和dmack等控制信息和輸出dmarq和iody等控制信息。ATA接口中的接tJ模塊&功能是利用FPGA芯片中的BlockRam實(shí)現(xiàn)ATA協(xié)議中規(guī)定的接口寄存器,并保存Identify信息。我們選用的RAM是一個(gè)雙端口(A和B)器件;A和B兩端口可分別對(duì)整個(gè)RAM空間進(jìn)行讀寫操作,互不妨礙。在本發(fā)明的設(shè)計(jì)中,RAM的A端口由ATA的相關(guān)邏輯控制;B端口由控制邏輯控制,并向RAM中實(shí)現(xiàn)的狀態(tài)寄存器中返回當(dāng)前指令的狀態(tài)信息。(2)控制邏輯控制邏輯主要由微控制器和FiFo控制邏輯,以及信息傳送通道組成。1)微控制器微控制器的主要功能是完成ATA命令解析,初始化DDR等任務(wù)。微控制器對(duì)DDR與ATA釆用統(tǒng)一的編址。使用微控制器完成這些任務(wù),可以有效地利用FPGA芯片內(nèi)部的RAM資源,減少硬件設(shè)計(jì)的復(fù)雜程度??刂菩畔刂贫丝诤涂刂茢?shù)據(jù)。端口分布概況是,0~7,Oxf是ATA—側(cè)的接口;90xb是FiFo控制邏輯與部分DDR的接口;0xc0xe是與DDR的接口。2)FiFo控制邏輯FiFo控制邏輯主要完成的任務(wù)是匹配DDR與ATA的數(shù)據(jù)速率,避免數(shù)據(jù)丟失。FiFo控制邏輯狀態(tài)圖包含以下幾種狀態(tài)-Idle:無操作狀態(tài);Write:等待端口A(ATA側(cè))寫數(shù)據(jù)狀態(tài);Write—wait:當(dāng)端口A接收到足夠的數(shù)據(jù)時(shí),轉(zhuǎn)向DDR寫的狀態(tài)(端口B);Pre—read:從端口B(DDR側(cè))讀入數(shù)據(jù)到FiFo的狀態(tài);Rea—d:等待從端口A(ATA側(cè))取一定量數(shù)據(jù)的狀態(tài);Read—wait:從端口B(DDR側(cè))讀入數(shù)據(jù)到FiFo的狀態(tài)。通過&上狀態(tài)協(xié)調(diào)數(shù)據(jù)從ATA到DDR的傳輸速率,該部分邏輯配合DDR控制模塊、微控制解析命令的執(zhí)行狀態(tài)來控制數(shù)據(jù)流入流出DDR模塊,完成數(shù)據(jù)的讀寫與存儲(chǔ),實(shí)現(xiàn)模擬硬盤的功能。3)微控制器程序流程圖微控制器的工作是通過微控制器程序?qū)崿F(xiàn)的。微控制器程序流程包括初始化DDR程序根據(jù)協(xié)議要求初始DDR顆粒(即一個(gè)DDR芯片,它的規(guī)格包括:容量、位寬、塊地址、行地址和列地址;及映射后的塊地址、行地址列地址。);等待ATA命令程序PC停止取命令,并等待ATA—側(cè)發(fā)信號(hào)激活PC;判斷ATA命令程序判斷需運(yùn)行哪一條與ATA命令相關(guān)的子程序,并控制程序執(zhí)行流程,填寫ATA側(cè)的狀態(tài)寄存器;ATA命令子程序保證ATA按照協(xié)議要求完成;Soft—reset命令以上的各個(gè)狀態(tài)下,當(dāng)接到ATA—側(cè)發(fā)送的Soft_reset命令時(shí),設(shè)置—狀態(tài)寄存器,并返回到等待ATA命令的狀態(tài)。(3)FiFoFIFO(First-InFirst-Out)是先入先出。FiFo的功能由FPGA中的BlockRAM直接實(shí)現(xiàn)。FiFo有A和B兩個(gè)端口,F(xiàn)iFo的A端口接收數(shù)據(jù),F(xiàn)iFo的B端口發(fā)送數(shù)據(jù)到ATA接口一側(cè)。(4)DDR接口DDR接口由ECC模塊和DDR控制器兩部分實(shí)現(xiàn)1)ECC模塊利用海明編碼技術(shù)提高數(shù)據(jù)的可靠性。海明編碼是一種可以糾錯(cuò)的編碼。它是利用在k位信息增加r位,構(gòu)成一個(gè)n=k+r位的碼字,然后利用數(shù)學(xué)演算法來校驗(yàn)nbit碼字中的lbit錯(cuò)誤。2)DDR控制器的功能是,向DDR顆粒發(fā)送讀寫命令,初始化指令隊(duì)列,完成DDR的設(shè)計(jì)要求。DDR控制器包括以下幾個(gè)狀態(tài)-Initialize:表示DDR顆粒需要經(jīng)過一系列初始化操作才可使用;Idle:等待狀態(tài);Auto—refesh:向DDR發(fā)送Auto一refesh命令,當(dāng)大于tRFC時(shí)間后回到Idle;Active:發(fā)送Active命令,在發(fā)^Active命令前,先選好執(zhí)行地址,在tRCD時(shí)間后去執(zhí)行下一條命令;Read:發(fā)送讀命令;Write:發(fā)送寫命令,在tWR時(shí)間后進(jìn)入下一個(gè)狀態(tài);Prechange—all:結(jié)束一次讀和寫命令,在tRP時(shí)間后進(jìn)入Idle等待狀態(tài);Power_down:在執(zhí)行DDR命令間隙進(jìn)入省電模式。根據(jù)5dR的狀態(tài)控制,上電后,控制邏輯控制ddr控制器完成一系列步驟(這些步驟在"具體實(shí)施方式"中詳細(xì)列出)的工作,使得DDR按要求執(zhí)行。DDR—側(cè)地址由塊地址,行地址,列地址組成(見表2)。對(duì)應(yīng)不同類型的DDR顆粒有不同的分配方式。由上述可以歸納出本發(fā)明具有以下幾點(diǎn)顯著特點(diǎn)(l),本發(fā)明通過ATA接口到DDR接口的接口轉(zhuǎn)換技術(shù),實(shí)現(xiàn)固態(tài)盤的功能;(2),本發(fā)明輪廓清晰即從ATA接口到控制邏輯、FiFo,再到DDR接口。這是本發(fā)明獨(dú)具匠心的巧妙設(shè)計(jì);(3),在本發(fā)明采用現(xiàn)場可編程門陣列芯片F(xiàn)PGA中的XC3S200芯片。由于創(chuàng)造性的設(shè)計(jì)構(gòu)思,使得本發(fā)明的固態(tài)盤在存儲(chǔ)速率和存儲(chǔ)量達(dá)到理想的境界。圖l為本發(fā)明所闡述的固態(tài)盤整體結(jié)構(gòu)框圖,它是從ATA接口到DDR接口的轉(zhuǎn)換技術(shù);圖2為ATA接口框圖;圖3為接口模塊;圖4為控制邏輯框圖;圖5為微控制器;圖6為DDR接口框圖;圖7為接口寄存器RAM;圖8微控制器的程序流程圖9為FiFo控制邏輯狀態(tài)轉(zhuǎn)換圖-,圖IO為DDR控制器。具體實(shí)施例方式本發(fā)明通過從ATA接口到DDR接口的技術(shù)轉(zhuǎn)換,從而實(shí)現(xiàn)固態(tài)盤的功能。參見圖1,其工作過程如下(1)〈ATA接口101〉含兩條通道通過雙向〈數(shù)據(jù)102〉將數(shù)據(jù)送到〈FiFo104〉和通過雙向〈控制信息103〉將控制信息送到〈控制邏輯106〉;(2)通過〈控制邏輯106〉對(duì)控制信息的分析處理產(chǎn)生新的信息,接著將新的相關(guān)控制信息分別通過〈控制信息105〉通道送到〈FiFo104〉,和通過雙向〈控制信息108〉通道送到〈DDR接口109〉;(3)〈FiFo104〉將從雙向〈數(shù)據(jù)102〉和〈控制信息105〉獲得的信息經(jīng)加工后,通過雙向〈數(shù)據(jù)107〉送到〈DDR接口109〉。(4)〈DDR接口109〉通過〈控制信息108〉從〈控制邏輯106〉接收到控制信息和從〈數(shù)據(jù)107〉接收到數(shù)據(jù)后,經(jīng)過加工后,從而實(shí)現(xiàn)固態(tài)盤的整體轉(zhuǎn)換功能。本發(fā)明所闡述的從ATA接口到DDR接口的技術(shù)轉(zhuǎn)換,就是FPGA芯片的功能,即現(xiàn)場可編程門陣列芯片F(xiàn)PGA(FieldProgrammableGateArray)。它是是美國Xilinx公司1985年推出的SpantanIII系列產(chǎn)品,這是Xilinx公司為了滿足客戶對(duì)高性能、低價(jià)格電子應(yīng)用的需求而推出FPGA芯片。根據(jù)ATA接口規(guī)范與DDR接口規(guī)范對(duì)接口類型和數(shù)量上的要求以及本發(fā)明的設(shè)計(jì)規(guī)模,我們采用的是XC3S200芯片。(1)ATA接口ATA接口如圖2所示,它的結(jié)構(gòu)包括〈ATA數(shù)據(jù)同步邏輯201〉,〈DMA控制202〉和〈接口模塊203〉,以及〈數(shù)據(jù)102〉和〈控制信息103〉。ATA接口是按照ATA規(guī)范協(xié)議要求,完成相關(guān)操作。ATA是一種異步接口協(xié)議,需要使用異步接口電路完成信息的同步工作。ATA規(guī)范定義了AlternateStatusRegister、CommandRegister、DataRegister、DeviceRegister、DeviceControlRegister、ErrorRegister、FeaturesRegister、LBAHighRegister、LBALowRegister、LBAMidRegister、SectorCountRegister、StatusRegister等12個(gè)寄存器,其中LBA(LogicBlockAddress)為邏輯塊地址。這些寄存器以及固態(tài)盤監(jiān)別信息是在FPGARAM(FPGA隨機(jī)存儲(chǔ)器)中實(shí)現(xiàn)?!碅TA數(shù)據(jù)同步邏輯201〉直接和〈數(shù)據(jù)102〉相連。〈DMA控制202〉接收輸入信息clk,reset,dior—,diow—和dmack;輸出信息dmarq和iody。完成與ATA接口DMA操作的控制信號(hào)?!附涌谀K203〉的結(jié)構(gòu)如圖3所示。它包括〈譯碼與控制電路301〉,輸送通道〈寄存器地址信息302〉,(Identify信息與接口寄存器303〉,以及雙向輸送的〈控制信息103〉(即〈輸送到控制邏輯的信息〉和〈從控制邏輯返回的信息〉)。接口模塊的功能是實(shí)現(xiàn)向ATA協(xié)議規(guī)定的寄存器存儲(chǔ)Identify信息,向〈控制邏輯106〉提供必要的控制信息。接口模塊(見圖3)的功能是利用FPGA芯片中的BlockRam實(shí)現(xiàn)ATA協(xié)議中規(guī)定的接口寄存器,并保存Identify信息。FPGA的RAM是一個(gè)雙端口(A和B)器件;A和B兩端口可分別對(duì)整個(gè)RAM空間進(jìn)行讀寫操作,互不妨礙。即圖3中的(Identify信息與接口寄存器303〉分A、B兩個(gè)端口。A端口和B端口的隨機(jī)存儲(chǔ)器RAM(randomaccessmemory)如圖7所示,這是FPGA資源。在本發(fā)明的設(shè)計(jì)中,RAM的A端口由ATA的相關(guān)邏輯控制;B端口由控制邏輯控制,并向RAM中實(shí)現(xiàn)的狀態(tài)寄存器中返回當(dāng)前指令的狀態(tài)信息。A端口與〈寄存器地址信息302〉相聯(lián),其對(duì)應(yīng)地址映射方式如下'hOOO、hOff:512byteidentify信息的地址;'hi00:Dataregister;'h101:Featureregister;'h102:Sectorcountregister;、hl03:LABlowregister(LBA為邏輯塊地址);'hl04:LBAmidregister;、h105:LBAhighregister;'hl06:Deviceregister;、h1Of:Statusregister,Alternativestatueregister;、hl07:Commandregister;、h3ff:其它。(2)控制邏輯〈控制邏輯106〉(見圖4)由〈微控制器401〉、〈FiFo控制邏輯402〉和雙向傳送的〈讀寫信息403〉,以及〈控制信息103〉、〈輸送到FiFo的讀寫信息105〉和雙向傳送的〈控制信息108〉組成。1)微控制器〈微控制器401〉(見圖5)由〈ROM501〉、單向傳送〈PC502>、〈PC生成邏輯503〉、〈PC控制信息504〉、〈存儲(chǔ)于ROM中的代碼505〉,和傳送〈提供ALU的操作數(shù)506〉、傳送〈提供讀寫寄存器的信息507〉、傳送〈提供端口地址信息508〉、〈ALU509〉、傳送數(shù)據(jù)的〈數(shù)據(jù)510〉、〈寄存器的文件511〉、〈端口地址512〉、〈輸送ALU的計(jì)算結(jié)果513〉、雙向傳送〈輸送讀寫寄存器的數(shù)據(jù)514〉,以及〈數(shù)據(jù)總線515〉和〈地址108〉組成。微控制器的主要功能是完成命令解析,初始化DDR等任務(wù)。微控制器對(duì)DDR與ATA采用統(tǒng)一的編址。使用微控制器完成這些任務(wù),可以有效地利用FPGA芯片內(nèi)部的RAM資源,減少硬件設(shè)計(jì)的復(fù)雜程度??刂菩畔刂贫丝诤涂刂茢?shù)據(jù)。端口分布概況是,0~7,Oxf是ATA—側(cè)的接口;9~0xb是FiFo控制邏輯與部分DDR的接口;0xc0xe是與DDR的接口。微控制器的ATA側(cè)的接口地址(即圖4中的〈控制信息103〉一側(cè)),它代表相應(yīng)的寄存器??刂贫丝谶壿嫷挠成溥壿嬋缦?.、國保留;'h01:Featureregister;、h02:Sectorcountregister;、h03:LBAlowregister;'固LBAmidregister;、h05:LBAhighregister;'h06:Deviceregister;、h07:Commandregister;、hOf:Statusregister,Alternativestatuaregister;、h08:Errorregister.微控制器的DDR側(cè)(即圖4中的〈控制信息108〉一側(cè))'h09,'hOa,'hOb控制DDR與FiFo的寄存器;、hOc,'hOd,、hOe為DDR相關(guān)寄存器。2)FiFo控制邏輯〈FiFo控制邏輯402〉主要完成的任務(wù)是匹配DDR與ATA的數(shù)據(jù)速率,避免數(shù)據(jù)丟失。FiFo控制邏輯狀態(tài)圖見圖9。圖中各個(gè)種狀態(tài)的含意如下-Idle:無操作狀態(tài),見圖9中的901;Write:等待端口A(ATA側(cè))寫數(shù)據(jù)狀態(tài),見圖9中的902;Write—wait:當(dāng)端口A接收到足夠的數(shù)據(jù)時(shí),轉(zhuǎn)向DDR寫的狀態(tài)(端口B),見圖9中的卯3;Pre—read:從端口B(DDR側(cè))讀入數(shù)據(jù)到FiFo的狀態(tài),見圖9中的904;Rea一d:等待從端口A(ATA側(cè))取一定量數(shù)據(jù)的狀態(tài),見圖9中的905;Read_wait:從端口B(DDR側(cè))讀入數(shù)據(jù)到FiFo的狀態(tài),見圖9中的906。通過^l上狀態(tài)協(xié)調(diào)數(shù)據(jù)從ATA到DDR的傳輸速率,該部分邏輯配合DDR控制模塊、微控制解析命令的執(zhí)行狀態(tài)來控制數(shù)據(jù)流入流出DDR模塊,完成數(shù)據(jù)的讀寫與存儲(chǔ),實(shí)現(xiàn)模擬硬盤的功能。3)微控制器程序流程圖微控制器的工作是通過微控制器程序?qū)崿F(xiàn)的。微控制器程序流程圖見圖8。它由以下幾部分組成〈初始化DDR程序801〉、〈等待ATA命令程序802〉、(Soft—reset命令803〉、〈判斷ATA命令程序804〉、〈ATA命令子程序I805〉、〈ATA命令子程序I1806〉、〈ATA命令子程序n807〉。各個(gè)框的功能為初始化DDR程序根據(jù)協(xié)議要求初始DDR顆粒;等待ATA命令程序PC停止取命令,并等待ATA—測發(fā)信號(hào)激活PC;判斷ATA命令程序判斷需運(yùn)行哪一條與ATA命令相關(guān)的子程序,并控制程序執(zhí)行流程,填寫ATA側(cè)的狀態(tài)寄存器;ATA命令子程序保證ATA按照協(xié)議要求完成;Soft—reset命令以上的各個(gè)狀態(tài)下,當(dāng)接到ATA—側(cè)發(fā)送的Soft—reset命令時(shí),設(shè)f狀態(tài)寄存器,并返回到等待ATA命令的狀態(tài)。(3)FiFoFIFO(First-InFirst-Out)是先入先出。圖1中〈FiFo104〉的功能由FPGA中的BlockRAM直接實(shí)現(xiàn)。如圖7所示,F(xiàn)iFo有A和B兩個(gè)端口。FiFo的A端口通過〈數(shù)據(jù)102〉接收數(shù)據(jù),并通過雙向〈數(shù)據(jù)107〉(即FiFo的B端口)發(fā)送數(shù)據(jù)到ATA接口一側(cè),以及從〈控制邏輯106〉接收控制信息。FiFo讀寫控制由圖4中〈FiFo控制邏輯402〉提供。(4)DDR接口DDR接口由ECC模塊和DDR控制器兩部分實(shí)現(xiàn)1)ECC模塊利用海明編碼技術(shù)提高數(shù)據(jù)的可靠性。海明編碼是一種可以糾錯(cuò)的編碼。它是利用在k位信息增加r位,構(gòu)成一個(gè)nzk+r位的碼字,然后利用數(shù)學(xué)算法來校驗(yàn)nbit碼字中的lbit錯(cuò)誤。2)DDR控制器的功能是,向DDR顆粒發(fā)送讀寫命令,初始化指令隊(duì)列,完成DDR的設(shè)計(jì)要求。圖1中〈DDR接口109〉的結(jié)構(gòu)(見圖6)由〈ECC模塊601〉、〈DDR控制器602〉和雙向通道〈DDR數(shù)據(jù)[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〉組^g。DDR控制器6^2〉的狀態(tài)關(guān)系如圖10所示。它包括以下幾個(gè)狀態(tài)Initialize:表示DDR顆粒需要經(jīng)過一系列初始化操作才可使用,見圖10中的畫l;Idle:等待狀態(tài),見圖10中的1002;Auto_refesh:向DDR發(fā)送Auto_refesh命令,當(dāng)大于tRFC時(shí)間后回到Idle,見圖10^的1003;Active:發(fā)送Active命令,在發(fā)送Active命令前,先選好執(zhí)行地址,在tRCD時(shí)間后去執(zhí)行下一條命令,見圖10中的1004;Read:發(fā)送讀命令,見圖10中的1005;Write:發(fā)送寫命令,在tWR時(shí)間后進(jìn)入下一個(gè)狀態(tài),見圖10中的1006;Prechange—ail:結(jié)束一次讀和寫命令,在tRP時(shí)間后進(jìn)入Idle等待狀態(tài),見圖10中的1007;Power—down:在執(zhí)行DDR命令間隙進(jìn)入省電模式,見圖10中的1008。根據(jù))^DDR的狀態(tài)控制,上電后,控制邏輯控制DDR控制器完成以下步驟的工作,能使得DDR按要求執(zhí)行1.ApplypowertoVDDandVDDQ;2.ApplyVREEandVTT;3.CKEmustbeLVCMOSLow;4.Applystabledocks;5.Waitatleast200us.6.BringCKEHighwithaNOPcomman;7.Precharge_allj8.AssertNd^fortRPtime;9.Configureextendedmaderegister;10.AssertNOPfortMRDtime;11.ConfigureLoadmoderegisterandresetDLL;12.AssertNOPfortMRDtime;13.Precharde—a出14.AssertNOPfortRPtime;15.IssueAuto_refreshcommand;16.AssertNOfortRFC;17.IssueAuto—refreshcommand;18.AssertNOffortRFCtime;19.OptionalLMRcommandtoclearDLLbit;20.AssertNOPfortMRDtime。DDR—側(cè)地址由塊地址,行地址,列地址組成(見表2)。對(duì)應(yīng)不同類型的DDR顆粒有不同的分配方式。<table>tableseeoriginaldocumentpage12</column></row><table>表2DDR顆粒和映射地址對(duì)照如表2所示,DDR顆粒(即一個(gè)DDR芯片,表中列出相關(guān)的12個(gè)顆粒)的規(guī)格包括:容量,位寬,塊地址db,行地址row和列地址col。映射后的塊地址BA,行地址ROW和列地址。DDR顆粒有多種型號(hào),分別對(duì)應(yīng)不同的塊、行、列地址。通過表2的地址映射方式可以只使用一個(gè)地址選擇器完成不同類型的地址映射工作,節(jié)約了FPGA上的資源,有利于布線。(5)接口命令A(yù)TA接口有五類命令PIO讀/寫命令,UDMA讀/寫命令,和非數(shù)據(jù)(控制信息)傳輸命令。這里PIO(ProcessI叩utOutput)命令是過程輸入輸出;UDMA(UltraDirectMemoryAccess)命令是超直接內(nèi)存存取。本發(fā)明共設(shè)計(jì)10個(gè)命令代碼,分屬于ATA接口五類命令,每個(gè)命令代碼均有相應(yīng)的命令名稱。1)PIO讀命令執(zhí)行順序如下PIO讀命令協(xié)議(PIOdata-incommandprotocol)的命令用于讀取磁盤數(shù)據(jù),或讀取磁盤基本控制信息。①ATA接口接收ATA命令(101)a.同步ATA接口數(shù)據(jù)到當(dāng)前時(shí)鐘域(201);b.解析基本信息,如起始地址、讀/寫使能等(203);c.向控制邏輯報(bào)告接收到的命令(106)。②解析ATA命令的執(zhí)行順序a.微控制器401接收①c的信號(hào);b.微控制器401啟動(dòng)軟件程序判斷ATA命令(804);c.微控制器執(zhí)行相應(yīng)程序(805,806~807);d.執(zhí)行過程中,啟動(dòng)FiFo(105)和利用FiFo104,并使之匹配ATA與DDR的數(shù)據(jù)傳輸速率(102—107);d.在執(zhí)行過程中,控制邏輯把命令的基本信息(起始地址、讀/寫)通知DDR接口(109)。③結(jié)束執(zhí)行命令的順序-a.微控制器401、軟件子程序(805~807)執(zhí)行完畢;b.把執(zhí)行狀態(tài)(如成功或失敗)寫回到ATA接口(303);c.子程序跳轉(zhuǎn)到等待ATA命令程序802。2)PIO寫命令執(zhí)行順序如下PIO寫命令協(xié)議(PIOdata-outcommandprotocol)的命令用于將數(shù)據(jù)寫入磁盤。①ATA接口接收ATA命令(101)a.解析基本命令,如起始地址等;b.向控制邏輯報(bào)告接收到的命令。②解析ATA命令的執(zhí)行順序a.微控制器401接收l.b的信號(hào);b.微控制器401啟動(dòng)程序判斷ATA命令;c.微控制器執(zhí)行相應(yīng)程序;d.執(zhí)行過程中,F(xiàn)iFo主機(jī)側(cè)數(shù)據(jù),根據(jù)FiFo控制邏輯的狀態(tài),間歇向DDR輸送數(shù)據(jù);e.在執(zhí)行過程中,控制邏輯把命令的基本信息(起始地址、讀/寫)寫到DDR接口?!蚪Y(jié)束執(zhí)行命令的順序a.微控制器401、軟件子程序(805-807)執(zhí)行完畢;b.把執(zhí)行狀態(tài)(如成功或失敗)寫回到ATA接口(303);c.子程序跳轉(zhuǎn)到等待ATA命令程序(802)。3)UDMA讀/寫命令執(zhí)行順序如下UDMA讀/寫命令是以DMA協(xié)議(DMAprotocol)的方式讀/寫一個(gè)或多個(gè)、w-ir~i數(shù)據(jù)。①ATA接口接收ATA命令(101)(只有讀需要同步數(shù)據(jù))a.同步ATA接口數(shù)據(jù)到當(dāng)前時(shí)鐘域(101);b.解析命令基本信息(203);c.DMA控制(202)完成DMA相關(guān)的協(xié)議操作;d.向控制邏輯(106)報(bào)告。②此小節(jié)的讀/寫命令分別等同于P10②小接節(jié)的讀/寫命令;③此小節(jié)的讀/寫命令分別等同于P10③小接節(jié)的讀/寫命令;注對(duì)于本發(fā)明的設(shè)計(jì)來說,在內(nèi)部數(shù)據(jù)傳輸?shù)姆绞缴希琍IO和DMA沒有明顯的不同。它們的不同之點(diǎn)主要在ATA接口的握手信號(hào)的使用上。例如,dmarq,dmack兩個(gè)信號(hào),主要用于傳輸開始和結(jié)束的握手信號(hào),而PIO則不需要這些信號(hào)來參與數(shù)據(jù)傳輸。4)非數(shù)據(jù)(控制信息)傳輸命令非數(shù)據(jù)命令協(xié)議(Non-datacommandprotocol)的命令用于控制磁盤狀態(tài),和設(shè)置磁盤參數(shù)。①接收ATA命令a.解析基本信息;b.向控制邏輯報(bào)告(106)接收到ATA命令。②解析并執(zhí)行命令a.微控制器收到①b信號(hào);b.啟動(dòng)軟件程序,判斷ATA命令(804);c.執(zhí)行相應(yīng)程序(805—807);d.寫回相應(yīng)寄存器(303)。(6)兩則例子在下面的例子中,先對(duì)輸入寄存器、輸出寄存器、符號(hào)含意、命令描述和流程作一介紹,從輸入信號(hào)開始,給出具體例子。兩則例子均為讀的例子,而寫功能只是讀功能反方向而已,所以省略了寫的例子。1)例l,命令名稱READSECT0RLS(直接從設(shè)備讀取數(shù)據(jù)到主機(jī));命令代碼20h(='h20,以16進(jìn)制表示);這是10個(gè)命令代碼中的一個(gè);輸入寄存器給寄存器賦值,設(shè)以Listl為名表示這一組寄存器;寄存器名稱(字長8bit)寄存器內(nèi)容FeaturenaSectorCountSectorCountLBALowLBA[7:0]LBAMidLBA[15:0]LBAHighLBA[23:16]DeviceobsLBAobsDEVLBA[27:24]Command2Oh輸出寄存器輸出寄存器值,設(shè)以List2為名表示這一組寄存器;寄存器名稱(字長8bit)寄存器內(nèi)容ErrorSectorCountnaLBALownaLBAMidnaLBAHighnaDeviceobsLBAobsDEVnanarmnaStatusBSYDRDYDFnaDRQnanaERR符號(hào)解釋-"BSY"表式是否忙,l為忙,0為不忙;"DF"表示此位不用;"DEV"表示是否支持主設(shè)備,l為支持,O為不支持;"DRDY"表示是否準(zhǔn)備好,l為準(zhǔn)備好,O為未準(zhǔn)備好;"DRQ"表示是否請求,1為請求,0為不請求;"ERR"表示是否出錯(cuò),l為出錯(cuò),O為不出錯(cuò)。"LBA"表示是否支持LBA地址,l為支持,O為不支持;"na"表此寄存器現(xiàn)不用,可不寫;"obs"等于l為使用,O表示此位不用;命令描述這條命令從起始地址(由LBA規(guī)定)讀指定的Sectors(由SectorCount指定),通過ATA接口IOI輸出數(shù)據(jù)到主機(jī)側(cè),把命令的執(zhí)行狀態(tài)通過Status寄存器返回;流程-主機(jī)側(cè)填寫好輸入信號(hào),如Listl組寄存器,各種寄存器在303中實(shí)現(xiàn),假定從OSector(0扇區(qū))開始讀1個(gè)Sector;輸入信號(hào)-、h02sectorcount:1、h03LBALow:0、h04LBAMid:0、h05LBAHigh:0、h06Device:'b01010000、h07、h20;當(dāng)主機(jī)側(cè)填寫CommandRegister時(shí),ATA接口(101)通知控制邏輯(106)。微控制器向StatusRegister填寫、hD0(BSY=1,DRDY=1),此時(shí)主機(jī)側(cè)還不能立即執(zhí)行命令,微控制器從'h07中讀到'h20(命令代碼),開始解析命令(804),完成后,向StatusRegister填寫'h58(DRDY-l,DRQ=1),通知主機(jī)側(cè)可以執(zhí)行命令。同時(shí)微控制器把'h02中的數(shù)據(jù)填到相應(yīng)的控制邏輯,把'h03~'h05的信息填寫到(109),并向104,109指明讀寫。109把從DDR讀到的數(shù)據(jù)寫到104,等待主機(jī)側(cè)通過101把104中的數(shù)據(jù)讀走,直到完成命令。2)例2命令名稱IDENTIFYDEVICE(直接從設(shè)備讀取數(shù)據(jù)到主機(jī));命令代碼ECh;輸入寄存器給寄存器賦值,設(shè)以Listl為名表示這一組寄存器;寄存器名稱(字長8bite)寄存器內(nèi)容FeaturenaSectorCountnaLBALowrmLBAMidnaLBAHighnaDeviceobsnaobsDEVnetnananaCommandECh輸出寄存器給寄存器賦值,設(shè)以List2為名表示這一組寄存器;寄存器名稱(字長8bit)寄存器內(nèi)容ErrorrmSectorCountri3LBALowna_LBAMidLBAHighDeviceobsHaobsDEVStatusBSYDRDYDFna符號(hào)解釋同例1;命令描述-這條命令從主機(jī)側(cè)發(fā)EC命令讀取設(shè)備側(cè)的各種參數(shù)。如地址格式、磁盤大小、支持傳輸?shù)乃俾?、方式等。流程主機(jī)側(cè)按照Listl填寫寄存器、h06:、b01010000、h07:、hEC當(dāng)主機(jī)側(cè)填寫CommandRegister時(shí),ATA-interface(101)通知控制邏輯(106)。微控制器向StatusRegister填寫、hD0(BSY=1,DRDY-l),然后從、h07端口讀到命令代碼'hEC,并執(zhí)行命令解析程序,最后向StatusRegister填寫'h58(DRDY=1,DRQ=1),等待主機(jī)側(cè)讀數(shù)據(jù)。此命令數(shù)據(jù)存儲(chǔ)在303中,當(dāng)數(shù)據(jù)傳輸完畢,微控制器向'hOf,StatusRegister填寫'h50,結(jié)束執(zhí)行命令。權(quán)利要求1.一種由接口轉(zhuǎn)換技術(shù)實(shí)現(xiàn)固態(tài)盤的方法,即從ATA接口到DDR接口的技術(shù)轉(zhuǎn)換。接口轉(zhuǎn)換過程分四個(gè)步驟1)ATA接口分別通過兩個(gè)通道傳送數(shù)據(jù)到FiFo,和傳送控制信息到控制邏輯;2)控制邏輯對(duì)控制信息的分析處理產(chǎn)生新的信息,并將新的相關(guān)控制信息分別通過控制信息通道送到FiFo,和DDR接口;3)FiFo根據(jù)控制信息將數(shù)據(jù)送到DDR接口;4)DDR接口對(duì)控制信息和數(shù)據(jù)加工,從而實(shí)現(xiàn)固態(tài)盤的整體轉(zhuǎn)換功能。2.根據(jù)權(quán)利要求1所敘述的方法,其中ATA接口的功能是ATA是一種異步接口協(xié)議。ATA接口中的數(shù)據(jù)同步邏輯是通過數(shù)據(jù)通道將數(shù)據(jù)送到FiFo。ATA接口中的DMA的功能接收輸入和輸出控制信息。ATA接口中的接口模塊的功能是利用FPGA芯片中的BlockRam實(shí)現(xiàn)ATA協(xié)議中規(guī)定的接口寄存器,并保存Identify信息。FPGA的BlockRAM是一個(gè)雙端口(A和B)器件;A和B兩端口可分別對(duì)整個(gè)RAM空間進(jìn)行讀寫操作,互不妨礙。在本發(fā)明的設(shè)計(jì)中,RAM的A端口由ATA的相關(guān)邏輯控制;B端口由控制邏輯控制,并向RAM中實(shí)現(xiàn)的狀態(tài)寄存器中返回當(dāng)前指令的狀態(tài)信息。3.根據(jù)權(quán)利要求1所敘述的方法,其中第二項(xiàng)控制邏輯的結(jié)構(gòu)是由微控制器和FiFo控制邏輯,以及信息傳送通道組成。1)微控制器微控制器的主要功能是完成命令解析,初始化DDR等任務(wù)。微控制器對(duì)DDR與ATA采用統(tǒng)一的編址。使用微控制器完成這些任務(wù),可以有效地利用FPGA芯片內(nèi)部的RAM資源,減少硬件設(shè)計(jì)的復(fù)雜程度。控制信息包括控制端口和控制數(shù)據(jù)。端口分布概況是,0~7,f是ATA—側(cè)的接口;9~b是FiFo控制邏輯與部分DDR的接口;c^是與DDR的接口。2)FiFo控制邏輯FiFo控制邏輯主要完成的任務(wù)是匹配DDR與ATA的數(shù)據(jù)速率,避免數(shù)據(jù)丟失。FiFo控制邏輯狀態(tài)圖包含以下7種狀態(tài)(詳細(xì)情況見"具體實(shí)施方式")Idle,Write,Write_wait,Pre—read,Read禾QRead—wait。通過這些工作狀態(tài)協(xié)調(diào)數(shù)據(jù)從ATA到DDR的傳輸速i,該部分邏輯配合控制模塊、微控制解析命令的執(zhí)行狀態(tài)來控制數(shù)據(jù)流入流出DDR模塊,完成數(shù)據(jù)的讀寫與存儲(chǔ),實(shí)現(xiàn)模擬硬盤的功能。3)微控制器程序流程圖微控制器的工作是通過微控制器程序?qū)崿F(xiàn)的。微控制器程序流程包括初始化DDR程序,等待ATA命令程序,判斷ATA命令程序,ATA命令子程序和Soft_reset命令。執(zhí)行Soft—reset命令,是設(shè)置狀態(tài)寄存器,并返回到等待ATA命令的狀態(tài),從而實(shí)現(xiàn)微控制i程序的循環(huán)。4.根據(jù)權(quán)利要求l所敘述的方法,其中第三項(xiàng)是FiFoFiFo的功能由FPGA中的BlockRAM直接實(shí)現(xiàn)。從而體現(xiàn)FIFO(First-InFirst-Out)先入先出的作用。5.根據(jù)權(quán)利要求1所敘述的方法,其中第四項(xiàng)是DDR接口DDR接口的功能由ECC模塊和DDR控制器兩部分實(shí)現(xiàn)。1)ECC模塊利用海明編技術(shù)提高數(shù)據(jù)的可靠性。海明編碼是一種可以糾錯(cuò)的編碼。它是利用在k位信息增加r位,構(gòu)成一個(gè)n=k+r位的碼字,然后利用數(shù)學(xué)演算法來校驗(yàn)nbite碼字中的1bite錯(cuò)誤。2)DDR控制器的功能是,向DDR顆粒發(fā)送讀寫命令,初始化指令隊(duì)列,完成DDR的設(shè)計(jì)要求。DDR控制器包括以8個(gè)狀態(tài)Initialize,Idle,Auto_refesh,Active,Read,Write,Prechange_all禾口Power—down。根據(jù)DDR控i器的狀態(tài)控、U,上電后,控制邏輯控制DDR控制器完成一系列步驟(這些步驟在"具體實(shí)施方式"中詳細(xì)列出)的工作,使得DDR按要求執(zhí)行。由上述可以歸納出本發(fā)明具有以下幾點(diǎn)顯著特點(diǎn)(l),本發(fā)明通過ATA接口到DDR接口的接口轉(zhuǎn)換技術(shù),實(shí)現(xiàn)固態(tài)盤的功能;(2),本發(fā)明輪廓清晰即從ATA接口到控制邏輯、FiFo,再到DDR接口。這是本發(fā)明獨(dú)具匠心的巧妙設(shè)計(jì);(3),在本發(fā)明采用現(xiàn)場可編程門陣列芯片F(xiàn)PGA中的XC3S200芯片。由于創(chuàng)造性的設(shè)計(jì)構(gòu)思,使得本發(fā)明的固態(tài)盤在存儲(chǔ)速率和存儲(chǔ)量達(dá)到理想的境界。全文摘要一種能夠通過接口轉(zhuǎn)換技術(shù)實(shí)現(xiàn)的固態(tài)盤,在本發(fā)明中得到充分地表述。這項(xiàng)接口轉(zhuǎn)換技術(shù)就是從ATA接口到DDR接口(見摘要附圖)。接口轉(zhuǎn)換過程分四個(gè)步驟(1)ATA接口分別通過兩個(gè)通道傳送數(shù)據(jù)到FiFo,和傳送控制信息到控制邏輯;(2)控制邏輯對(duì)控制信息的分析處理產(chǎn)生新的信息,并將新的相關(guān)控制信息分別通過控制信息通道送到FiFo,和DDR接口;(3)FiFo根據(jù)控制信息將數(shù)據(jù)送到DDR接口;(4)DDR接口對(duì)控制信息和數(shù)據(jù)加工,從而實(shí)現(xiàn)固態(tài)盤的整體轉(zhuǎn)換功能。本發(fā)明是根據(jù)現(xiàn)場可編程門陣列芯片F(xiàn)PGA(FieldProgrammableGateArray)設(shè)計(jì)的。FPGA是是美國Xilinx公司1985年推出的SpantanIII系列產(chǎn)品。根據(jù)ATA接口規(guī)范與DDR接口規(guī)范對(duì)接口類型和數(shù)量上的要求以及本發(fā)明的設(shè)計(jì)規(guī)模,我們采用的是XC3S200芯片。文檔編號(hào)G11C7/00GK101105970SQ20061008968公開日2008年1月16日申請日期2006年7月12日優(yōu)先權(quán)日2006年7月12日發(fā)明者琦林申請人:北京赫芯斯信息技術(shù)有限公司