<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 基于SATA2.0的高速存儲(chǔ)系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)

          基于SATA2.0的高速存儲(chǔ)系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)

          作者:解冬 劉敏 時(shí)間:2016-06-28 來(lái)源:電子產(chǎn)品世界 收藏
          編者按:本文介紹了一種高速數(shù)據(jù)存儲(chǔ)系統(tǒng),該系統(tǒng)采用SATA2.0協(xié)議,存儲(chǔ)介質(zhì)選擇的是Intel公司新型固態(tài)硬盤,控制器選擇的是Xilinx公司的Viretx-5系列FPGA,以及所提供的軟件開(kāi)發(fā)平臺(tái)ISE和EDK聯(lián)合開(kāi)發(fā)工具,最后使用ChipScope對(duì)系統(tǒng)進(jìn)行測(cè)試。多次測(cè)試結(jié)果顯示,本系統(tǒng)能穩(wěn)定有效地完成高速數(shù)據(jù)傳輸,且存儲(chǔ)速度達(dá)到800MB/s。

          摘要:本文介紹了一種高速數(shù)據(jù)存儲(chǔ)系統(tǒng),該系統(tǒng)采用協(xié)議,存儲(chǔ)介質(zhì)選擇的是Intel公司新型,控制器選擇的是公司的Viretx-5系列,以及所提供的軟件開(kāi)發(fā)平臺(tái)ISE和EDK聯(lián)合開(kāi)發(fā)工具,最后使用對(duì)系統(tǒng)進(jìn)行測(cè)試。多次測(cè)試結(jié)果顯示,本系統(tǒng)能穩(wěn)定有效地完成高速數(shù)據(jù)傳輸,且存儲(chǔ)速度達(dá)到800MB/s。

          本文引用地址:http://www.ex-cimer.com/article/201606/293258.htm

          引言

            科學(xué)技術(shù)的快速發(fā)展使得人類快速地從網(wǎng)絡(luò)時(shí)代邁入大數(shù)據(jù)時(shí)代,于是人們?cè)谏鐣?huì)生活中產(chǎn)生的數(shù)據(jù)量呈現(xiàn)爆炸式增長(zhǎng),這給數(shù)據(jù)的存儲(chǔ)帶來(lái)了很大的壓力。正是基于這種現(xiàn)狀,借助于計(jì)算機(jī)與電子技術(shù)的快速發(fā)展,本文提出一種協(xié)議的高速大容量數(shù)據(jù)存儲(chǔ)系統(tǒng),相比于更早的PATA協(xié)議具有無(wú)可比擬的優(yōu)勢(shì)。SATA協(xié)議的數(shù)據(jù)傳輸模式傳輸速度比PATA協(xié)議更快,將40根數(shù)據(jù)線簡(jiǎn)化到7根,并且采取差分傳輸形式,能有效解決信號(hào)間的串?dāng)_問(wèn)題,最長(zhǎng)1m的數(shù)據(jù)線長(zhǎng)度擴(kuò)展使用范圍并能支持熱插拔[1]。為實(shí)現(xiàn)更快的傳輸速度,本系統(tǒng)還采取磁盤陣列方式進(jìn)行存儲(chǔ),采用四塊組成RAID0模式磁盤陣列。作為本系統(tǒng)的控制器是實(shí)現(xiàn)整個(gè)系統(tǒng)的關(guān)鍵,采用EDK的IP核生成工具定制實(shí)現(xiàn)SATA協(xié)議的IP核,因此數(shù)據(jù)可以直接從寫入磁盤陣列。

          1 SATA協(xié)議介紹

            SATA概念[2]由Intel公司在2000年提出,隨后誕生的SATA1.0協(xié)議規(guī)定采用串行數(shù)據(jù)傳輸模式,速率為1.5Gbps。之后將速率提升到3.0Gbps,并加入NCQ(本地指令列隊(duì))、EM(機(jī)架管理)等新技術(shù),同時(shí)支持熱插拔。最新版本SATA3.0傳輸速率高達(dá)6.0Gbps。

            SATA協(xié)議從上到下有四層,即物理層、鏈路層、傳輸層和應(yīng)用層[1],其架構(gòu)如圖1所示。

            SATA協(xié)議中,應(yīng)用層主要負(fù)責(zé)的是對(duì)所有命令的解析和執(zhí)行,會(huì)根據(jù)處理器的要求實(shí)現(xiàn)一系列操作,像PIO傳輸、DMA傳輸、軟件復(fù)位以及中斷等;傳輸層主要負(fù)責(zé)幀的封裝和解析,在發(fā)送端將要發(fā)送的數(shù)據(jù)按照要求封裝成各種類型的FIS,在接收端把接收到的FIS解析成數(shù)據(jù);鏈路層主要負(fù)責(zé)的是幀的校驗(yàn)和抗干擾處理,將根據(jù)上兩層傳輸命令生成原語(yǔ)發(fā)送出去,并且接收來(lái)自于下一層的原語(yǔ),將其轉(zhuǎn)換成命令發(fā)送給上兩層;物理層主要實(shí)現(xiàn)與對(duì)方物理層建立通信連接,負(fù)責(zé)差分?jǐn)?shù)據(jù)的傳輸[2]。在發(fā)送端從鏈路層接收數(shù)據(jù)[1],加入同步字符后對(duì)數(shù)據(jù)做串行化處理,再采用低壓差分方式傳輸。在接收端對(duì)低壓差分?jǐn)?shù)據(jù)進(jìn)行解串處理以分離時(shí)鐘與數(shù)據(jù),通過(guò)同步字符實(shí)現(xiàn)數(shù)據(jù)對(duì)齊,最終恢復(fù)出發(fā)送時(shí)的數(shù)據(jù)。

          2 總體方案的設(shè)計(jì)

            存儲(chǔ)系統(tǒng)的整體方案如圖2所示,F(xiàn)PGA內(nèi)部集成兩個(gè)主頻550MHz的PowerPC440處理器,通過(guò)PLB總線[4]控制整個(gè)系統(tǒng),數(shù)據(jù)輸入端是四路GTX,參考時(shí)鐘設(shè)置為150MHz,傳輸數(shù)據(jù)位為16位,高速緩存是容量1GB的DDR2,SATA控制器實(shí)現(xiàn)協(xié)議規(guī)定的所有功能,包括啟動(dòng)DMA傳輸模式,把數(shù)據(jù)封裝成幀,進(jìn)行CRC校驗(yàn)、加擾和解擾處理,最后進(jìn)行8B/10B編碼,數(shù)據(jù)被串行化后通過(guò)四路GTX寫入組成的磁盤陣列。

          3 存儲(chǔ)系統(tǒng)的實(shí)現(xiàn)

          3.1 通信鏈路初始化

            通信鏈路建立前需要進(jìn)行上電復(fù)位和電源管理,并對(duì)通信模式和傳輸速率進(jìn)行配置[1]。因此,雙方要建立通信先要進(jìn)行握手,握手成功后才能建立可靠的連接。SATA協(xié)議規(guī)定使用OOB信號(hào)進(jìn)行上電復(fù)位和電源管理。SATA2.0標(biāo)準(zhǔn)定義了三種OOB信號(hào),即COMRESET、COMINIT和COMWAKE來(lái)實(shí)現(xiàn)鏈路初始化。

            上電硬件復(fù)位后,雙方須先初始化,使通信鏈路都置于空閑狀態(tài)。對(duì)于物理層的初始化,通信雙方是利用OOB信號(hào)的硬件復(fù)位信號(hào)使設(shè)備端完成復(fù)位操作,設(shè)備端完成復(fù)位后準(zhǔn)備建立通信鏈接(速度協(xié)商、時(shí)鐘恢復(fù)等),其上電過(guò)程如圖3所示。

            ● 主機(jī)/設(shè)備端處于斷電狀態(tài);

            ● 電源上電,主機(jī)端將TX和RX拉到共模電壓;

            ● 主機(jī)端就連續(xù)發(fā)送多個(gè)COMRESET信號(hào),然后把總線設(shè)置成等待狀態(tài);

            ● 設(shè)備端發(fā)送COMINIT信號(hào),一旦檢測(cè)到COMRESET信號(hào),設(shè)備端發(fā)送COMINIT信號(hào)作為響應(yīng),無(wú)論何時(shí)設(shè)備端上電完成,都可以發(fā)送該序列請(qǐng)求建立連接;

            ● 主機(jī)端校準(zhǔn),主機(jī)端接收到COMINIT信號(hào)后進(jìn)行校準(zhǔn),校準(zhǔn)完成之后發(fā)送COMWAKE信號(hào)給設(shè)備端作為響應(yīng);

            ● 設(shè)備端響應(yīng),設(shè)備端在其接收端上檢測(cè)COMWAKE信號(hào)并校準(zhǔn)發(fā)射器;

            ● 速率協(xié)商,雙方要進(jìn)行速率協(xié)商,此時(shí)主機(jī)端以最低速率連續(xù)發(fā)出D10.2字符,如果設(shè)備端能夠鎖定該速率則速率協(xié)商成功,否則重新進(jìn)行;

            ● 設(shè)備端鎖存,假如此時(shí)設(shè)備端可以建立連接,回復(fù)SYNC原語(yǔ)表明設(shè)備端允許建立連接。

            如果主機(jī)端接收到的是三個(gè)連續(xù)的非ALIGN原語(yǔ)后,這就表明雙方連接成功,即可傳輸數(shù)據(jù)。

          3.2 數(shù)據(jù)傳輸過(guò)程

            數(shù)據(jù)在SATA協(xié)議中傳輸是以幀(Frame)形式傳遞[3]。幀由一組Dwords構(gòu)成,以SOF原語(yǔ)開(kāi)始,內(nèi)部含有多個(gè)數(shù)據(jù),最后一位是CRC校驗(yàn)值,并以EOF原語(yǔ)結(jié)束。有時(shí)為調(diào)節(jié)速率,幀中間也會(huì)插入一些原語(yǔ)(CONT、HOLD、HOLDA)用來(lái)控制流量。幀的典型內(nèi)部結(jié)構(gòu)圖如圖4所示。

            原語(yǔ)是由雙字組成的最簡(jiǎn)單信息單元,主要用于建立通信鏈接、傳遞最新?tīng)顟B(tài)和傳輸控制命令等。原語(yǔ)雙字之一是控制字符另外三個(gè)字節(jié)的存放數(shù)據(jù)。

            在數(shù)據(jù)通信過(guò)程中,信號(hào)會(huì)受到各種各樣的干擾,因此,在數(shù)據(jù)發(fā)送之前要對(duì)數(shù)據(jù)作校驗(yàn)處理,SATA協(xié)議采用的是CRC校驗(yàn),這要對(duì)數(shù)據(jù)幀中SOF與EOF之間包含的所有數(shù)據(jù)作循環(huán)冗余運(yùn)算,其計(jì)算單位是雙字(32bits),如需要計(jì)算的數(shù)據(jù)量不是雙字的整數(shù)倍,處理方法是在數(shù)據(jù)的后面添加“0”補(bǔ)成32位。CRC的運(yùn)算公式如公式(1)所示:

          (1)

            為使數(shù)據(jù)在傳輸過(guò)程中能更加穩(wěn)定,要對(duì)方法的數(shù)據(jù)進(jìn)行加擾,加擾處理的原理就是利用擾碼的正交性,一般都采用偽隨機(jī)序列碼。加擾后的信號(hào)可以降低噪聲對(duì)信號(hào)的影響,解擾碼的原理跟加擾一樣。加擾的特征方程如公式(2)所示:

          (2)

            現(xiàn)以一個(gè)數(shù)據(jù)幀的傳輸過(guò)程為例來(lái)說(shuō)明原語(yǔ)在傳輸過(guò)程中的作用以及其間應(yīng)答關(guān)系,傳輸過(guò)程如圖5所示。

            A.若發(fā)送端有數(shù)據(jù)要發(fā)送,發(fā)送X_RDY,通知接收端準(zhǔn)備接收;

            B.若接收端可以接收數(shù)據(jù),發(fā)送R_RDY;

            C.發(fā)送端開(kāi)始發(fā)送數(shù)據(jù);

            D.接收端在接收到數(shù)據(jù)時(shí),發(fā)送R_IP;

            E.發(fā)送端數(shù)據(jù)未準(zhǔn)備好,發(fā)送HOLD原語(yǔ)告訴接收端等待;

            F.接收端接收到HOLD原語(yǔ)后,發(fā)送HOLDA原語(yǔ)應(yīng)答;

            G.發(fā)送端可以繼續(xù)發(fā)送數(shù)據(jù),發(fā)送HOLD原語(yǔ)結(jié)束等待;

            H.繼續(xù)發(fā)送數(shù)據(jù);

            I.接收端接收到數(shù)據(jù)時(shí),發(fā)送R_IP原語(yǔ);

            J.發(fā)送端發(fā)送完數(shù)據(jù)以后,發(fā)送WTRM原語(yǔ)給接收端,發(fā)送端等待接收結(jié)果;

            K.接收端接收完成并校驗(yàn)正確后,發(fā)送R_OK原語(yǔ)給發(fā)送端,數(shù)據(jù)接收正確;

            L.發(fā)送端發(fā)送SYNC原語(yǔ)進(jìn)入空閑狀態(tài);

            M.接收端發(fā)送SYNC原語(yǔ)進(jìn)入空閑狀態(tài)。

          4 數(shù)據(jù)的測(cè)試與驗(yàn)證

            數(shù)據(jù)測(cè)試是整個(gè)系統(tǒng)開(kāi)發(fā)期間最為耗時(shí)的部分,為方便測(cè)試而選用公司提供的一款在線邏輯分析軟件Chipscope Pro。在ISE中直接調(diào)用數(shù)據(jù)采集的核(包括ICON、ILA和VIO)就能使用Chipscope來(lái)觀測(cè)FPGA芯片內(nèi)部的信號(hào)。模擬產(chǎn)生一串從0開(kāi)始遞增的數(shù)據(jù)發(fā)送給GTX,然后通過(guò)Chipscope檢測(cè)接收到的數(shù)據(jù)值,其采樣圖如圖6所示。

            從圖7可看出數(shù)據(jù)呈現(xiàn)非常規(guī)律的分布,從數(shù)據(jù)放大后的圖中可看出是非常規(guī)律的遞增碼。本系統(tǒng)自設(shè)計(jì)完成以來(lái)已經(jīng)做過(guò)多次測(cè)試,為配合數(shù)據(jù)測(cè)試的需要還為本系統(tǒng)開(kāi)發(fā)一套上位機(jī)數(shù)據(jù)誤碼檢測(cè)軟件。由于每次測(cè)試使用的數(shù)據(jù)格式都不同,每次存儲(chǔ)的數(shù)據(jù)量不少于2TB,數(shù)據(jù)存入固態(tài)硬盤后用數(shù)據(jù)誤碼檢測(cè)軟件對(duì)數(shù)據(jù)進(jìn)行檢測(cè),經(jīng)反復(fù)測(cè)試后的結(jié)果證明,所設(shè)計(jì)的高速存儲(chǔ)系統(tǒng)存儲(chǔ)速度不低于800MB/S并且性能穩(wěn)定、數(shù)據(jù)準(zhǔn)確率高。

          5 結(jié)束語(yǔ)

            本文給出了一個(gè)基于SATA協(xié)議的高速存儲(chǔ)系統(tǒng)的設(shè)計(jì),由于SATA協(xié)議傳輸速率較高、通信過(guò)程較為復(fù)雜,以往只能在專用芯片上實(shí)現(xiàn)。隨著越來(lái)越多高端FPGA集成了串行通信模塊,在FPGA內(nèi)部可以實(shí)現(xiàn)整個(gè)SATA協(xié)議,系統(tǒng)設(shè)計(jì)完成后,測(cè)試結(jié)果顯示其體積小、抗干擾能力強(qiáng)、傳輸速度快且穩(wěn)定性好,因而有很廣闊的應(yīng)用前景。

          參考文獻(xiàn):

            [1]Serial ATA International Organization.Serial ATA Revision2.0[S].USA,2005.08.

            [2]張?zhí)煳?基于SATA2.0接口的固態(tài)硬盤控制器的設(shè)計(jì)與實(shí)現(xiàn)[D]. 中北大學(xué), 2015.

            [3]寇科男. SATA接口技術(shù)研究及設(shè)計(jì)[D]. 哈爾濱工業(yè)大學(xué), 2010.

            [4].Process Local Bus(PLB)v4.6(v1.03a)[S].USA:Xilinx,2008.

            [5]趙峰. FPGA上的嵌入式系統(tǒng)設(shè)計(jì)實(shí)例[M].西安:西安電子科技大學(xué)出版社, 2008.

            [6]趙國(guó)慶.雷達(dá)對(duì)抗原理[M].西安:西安電子科技大學(xué)出版社,1999.

            [7]Xilinx.FIFO Generator v4.4 User Guide[S].USA:Xilinx,2008.

          本文來(lái)源于中國(guó)科技期刊《電子產(chǎn)品世界》2016年第6期第39頁(yè),歡迎您寫論文時(shí)引用,并注明出處。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();