嵌入式SATA存儲(chǔ)系統(tǒng)的研究
掃描二維碼
隨時(shí)隨地手機(jī)看文章
SATA硬盤作為新型的存儲(chǔ)介質(zhì),具有高速、海量、價(jià)格低廉、使用方便等優(yōu)點(diǎn)。SATA2.5協(xié)議支持3.0Gb/s的接口速度,SATA2.5硬盤的持續(xù)存儲(chǔ)速度可達(dá)80MB/s,最大存儲(chǔ)容量已經(jīng)達(dá)到750GB(如希捷ST3750640AS硬盤)。SATA硬盤已經(jīng)占據(jù)了大部分的PC機(jī)硬盤市場(chǎng),并且正向工作站、服務(wù)器的領(lǐng)域邁進(jìn)。而在嵌入式的應(yīng)用領(lǐng)域,目前的硬盤存儲(chǔ)設(shè)備依然廣泛采用傳統(tǒng)的IDE(ATA)和SCSI硬盤。由于兩者存在低速或昂貴的缺點(diǎn),因此如何將SATA硬盤存儲(chǔ)應(yīng)用到嵌入式系統(tǒng)中就成為今后相關(guān)領(lǐng)域的研究重點(diǎn)。
1 SATA2.5協(xié)議的性能與結(jié)構(gòu)
1.1 各種硬盤存儲(chǔ)接口的比較
通常硬盤根據(jù)接口類型進(jìn)行分類。硬盤接口主要分為:IDE(ATA)、Serial ATA(SATA)、SCSI、Serial Attached SCSI(SAS)和Fiber Channel(FC),此外還存在IEEE1394、USB等。
IDE、SCSI采用的是并行總線接口,隨著技術(shù)要求的不斷提高,并行技術(shù)的種種問(wèn)題如信號(hào)扭曲和串?dāng)_、電纜和連接器的反射、設(shè)備的尋址能力有限等都已成為提高其數(shù)據(jù)吞吐能力的障礙。FC、SAS和SATA采用串行技術(shù),克服了并行技術(shù)存在的缺點(diǎn),大大提高了速度、可靠性和可擴(kuò)展性。而SATA硬盤相對(duì)于FC和SAS硬盤具有很大的價(jià)格優(yōu)勢(shì),并且與SAS接口兼容。
1.2 SATA2.5協(xié)議的基本性能[1]
SATA2.5是國(guó)際串行ATA組織SATA-IO(Serial ATA International Organization)制訂的最新SATA標(biāo)準(zhǔn)。其主要性能特點(diǎn)如下:
(1)傳輸速率快,由SATA1.0的1.5Gb/s發(fā)展到SATA2.5的3.0Gb/s,并且SATA-IO計(jì)劃今后幾年推出6.0Gb/s的接口協(xié)議,這比最新的并行IDE接口ATAPI-7的133MB/s的傳輸速率提高許多。
(2)電纜線寬度降低而長(zhǎng)度增加,寬度由IDE的40針/80針減少到7針,長(zhǎng)度由18英寸增加到1米。
(3)支持熱插拔,這使SATA硬盤可以作為移動(dòng)硬盤使用。
(4)提高了數(shù)據(jù)傳輸?shù)木_度,ATA-3標(biāo)準(zhǔn)引入了基于CRC(循環(huán)冗余碼校驗(yàn))的數(shù)據(jù)包出錯(cuò)檢測(cè),但是,沒(méi)有任何一種并行ATA標(biāo)準(zhǔn)提供命令和狀態(tài)包的出錯(cuò)檢測(cè)。SATA提高了CRC對(duì)數(shù)據(jù)、命令和狀態(tài)包錯(cuò)誤的檢測(cè)能力,從而提高了數(shù)據(jù)傳輸?shù)木_度。
(5)支持全速命令隊(duì)列(NQC),大大提高了硬盤的內(nèi)部數(shù)據(jù)傳輸速度。
此外,SATA2.5協(xié)議采用點(diǎn)對(duì)點(diǎn)結(jié)構(gòu),降低了磁盤陣列的出錯(cuò)風(fēng)險(xiǎn);降低了工作電壓,減少了功耗;向下軟件兼容并行ATA,橫向兼容SAS協(xié)議。
1.3 SATA2.5協(xié)議的體系結(jié)構(gòu)
SATA2.5采用四層結(jié)構(gòu):應(yīng)用層、傳輸層、鏈接層和物理層。其中,應(yīng)用層負(fù)責(zé)所有ATA命令的執(zhí)行,包括對(duì)控制命令模塊寄存器的訪問(wèn);傳輸層負(fù)責(zé)在主機(jī)和硬盤設(shè)備之間以幀信息結(jié)構(gòu)(FIS)的形式傳輸控制命令和數(shù)據(jù);鏈接層負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行8/10編解碼,根據(jù)需要從結(jié)構(gòu)幀中提取有效數(shù)據(jù),或者將控制字插入到結(jié)構(gòu)幀當(dāng)中;物理層負(fù)責(zé)在串行數(shù)據(jù)線上傳輸已編碼的數(shù)據(jù)。
2 Virtex-5 FPGA芯片簡(jiǎn)介[2]
Virtex-5系列FPGA芯片[2]是Xilinx公司最新推出的高端產(chǎn)品,它采用65納米工藝,1.0V核電壓,具有靈活的時(shí)鐘管理模塊,100Mb/s~3.2Gb/s的串行連接功能,550MHz的DSP硬核,內(nèi)置36KB的塊RAM, I/O引腳多達(dá)1 200個(gè)。目前,Virtex5系列FPGA有LX、LXT和SXT三款平臺(tái),分別面向高性能邏輯功能、高性能邏輯功能和高速串行連接,以及高速串行連接和DSP功能。
RocketIO GTP收發(fā)器是專門為Virtex-5 FPGA實(shí)現(xiàn)高速低功耗串行連接而設(shè)計(jì)的,具有高速、穩(wěn)定的特點(diǎn),可以實(shí)現(xiàn)PCI Express、FC、SATA等高速接口的物理層協(xié)議,而不用外置子板,從而節(jié)省了空間和成本。
3 SATA2.5協(xié)議在FPGA上的實(shí)現(xiàn)[3][4]
3.1 鏈接層在FPGA內(nèi)的實(shí)現(xiàn)
鏈接層發(fā)送或者接收混合了控制原語(yǔ)的數(shù)據(jù)流,在數(shù)據(jù)傳輸過(guò)程中,CRC被加入或者提取出數(shù)據(jù)流,同時(shí)8b/10b編解碼被執(zhí)行。圖1給出了鏈接層在FPGA內(nèi)部的邏輯結(jié)構(gòu),左邊與傳輸層相連,右邊與物理層相連。
在核時(shí)鐘域里,數(shù)據(jù)寬度是32位;而在PHY時(shí)鐘域里,數(shù)據(jù)寬度是10位。在發(fā)送過(guò)程中,異步接口每四個(gè)PHY時(shí)鐘發(fā)送一次雙字,每個(gè)PHY時(shí)鐘內(nèi)一個(gè)8位數(shù)據(jù)塊通過(guò)8b/10b編碼器生成10位數(shù)據(jù)塊,并被連續(xù)串行發(fā)送到物理層。接收過(guò)程剛好與此相反。原語(yǔ)是由雙字組成的實(shí)體,用于控制和提供串行連接的狀態(tài)。在FPGA內(nèi)部,原語(yǔ)專門由原語(yǔ)發(fā)生器提供,主控制器根據(jù)上層命令控制原語(yǔ)的產(chǎn)生。CRC發(fā)生器多項(xiàng)式為:
[!--empirenews.page--]
FPGA內(nèi)需設(shè)置一個(gè)線性循環(huán)移位寄存器(LFSR),在檢驗(yàn)過(guò)程中與傳輸數(shù)據(jù)進(jìn)行異或,LFSR內(nèi)部多項(xiàng)式為:
3.2 傳輸層在FPGA內(nèi)的實(shí)現(xiàn)
傳輸層在發(fā)送過(guò)程中將數(shù)據(jù)和控制信號(hào)打包為FIS,在接收過(guò)程中分解接收到的FIS。如圖2所示,F(xiàn)PGA內(nèi)部設(shè)置了一個(gè)FIFO,數(shù)據(jù)的接收和發(fā)送過(guò)程都通過(guò)同一個(gè)FIFO通道。Wishbone總線是一種片上系統(tǒng)互聯(lián)規(guī)范,該規(guī)范給片內(nèi)的各部分以及IP核之間的互聯(lián)定義了一種通用的接口,由此提高了設(shè)計(jì)的可靠性和可移植性。圖中的Wishbone從接口與應(yīng)用層的Wishbone主接口通信,過(guò)程方便可靠。Shadow寄存器用于轉(zhuǎn)送命令到設(shè)備端,或者記錄設(shè)備端的狀態(tài)。狀態(tài)和控制寄存器包含了一系列的寄存器,用于控制接口并且檢索接口狀態(tài)信息。
3.3 SATA與XC5VLX30T的接口及仿真
3.3.1 GTP收發(fā)器簡(jiǎn)介[5]
GTP收發(fā)器是Virtex-5 LXT和SXT系列FPGA內(nèi)高度可配置和高度集成的可編程邏輯資源。它支持包括SATA在內(nèi)的許多高速串行接口,內(nèi)部的電流模式邏輯(CML)驅(qū)動(dòng)器和緩存器提供用戶可配置的終端、電壓擺幅和耦合,可編程的發(fā)送預(yù)加重和接收均衡使得信號(hào)完整性得到優(yōu)化。此外它還集成了可選的8b/10b編碼、逗號(hào)校準(zhǔn)、信道綁定以及時(shí)鐘校正模塊。
以Virtex-5 LXT系列的XC5VLX30T為例,它具有四個(gè)獨(dú)立的GTP模塊,每個(gè)模塊又分別包含了若干GTP驅(qū)動(dòng)電壓與參考電壓引腳,一對(duì)低壓差分串行時(shí)鐘引腳,以及兩對(duì)RocketIOTM低壓差分串行引腳。
3.3.2 SATA接口信號(hào)定義
SATA接口數(shù)據(jù)線由7根信號(hào)線組成。在主機(jī)端,1至7號(hào)線依次為GND、Tx+、Tx-、GND、Rx+、Rx-和GND。其中,Tx+和Tx-組成低壓差分發(fā)送信號(hào)對(duì),分別與XC5VLX30T的MGTTXP和MGTTXN引腳相連;Rx+和Rx-組成低壓差分接收信號(hào)對(duì),分別與XC5VLX30T的MGTRXP和MGTRXN引腳相連。
3.3.3 SATA時(shí)鐘電路及PCB仿真[6-8]
由于SATA的時(shí)鐘頻率和串行數(shù)據(jù)傳輸速率都很高,因此對(duì)信號(hào)的抗干擾能力的要求很高。為提高系統(tǒng)可靠性,需要對(duì)布線后的PCB板上SATA時(shí)鐘信號(hào)和數(shù)據(jù)信號(hào)進(jìn)行反復(fù)的仿真實(shí)驗(yàn)。下面以SATA時(shí)鐘信號(hào)為例,進(jìn)行PCB布線后仿真實(shí)驗(yàn)。
SATA2.5最高支持3.0Gb/s的傳輸速度,因此要求所選的晶振具有300MHz以上的低壓差分時(shí)鐘輸出能力。IDT公司的ICS844071和ICS844031滿足要求,前者的輸出頻率范圍是62.5MHz~170MHz,后者的輸出頻率范圍是245MHz~340MHz。兩者在封裝上完全兼容,用戶可以根據(jù)設(shè)計(jì)的速度要求來(lái)選取。圖3是SATA時(shí)鐘接口電路圖,其中SATA_CLK和分別與XC5VLX30T 的GTP專用差分時(shí)鐘輸入引腳MGTREFCLKP和MGTREFCLKN相連。
利用844071_3v3.ibs及virtex5.ibs兩個(gè)IBIS模型,在Hyperlynx7.5環(huán)境下對(duì)SATA差分時(shí)鐘進(jìn)行BoardSim差分眼圖仿真。圖4是在線長(zhǎng)1.2in、線寬10mil、差分線距12mil、串行連接0.01μF電容以及端接100Ω電阻等條件下,考慮各種過(guò)孔、PCB板的整體分析等因素后的PRBS位模式仿真眼圖。從圖中可以看出,在100MHz頻率條件下,眼圖的睜開程度較大,符合GTP收發(fā)器的時(shí)鐘眼圖要求。
隨著FPGA邏輯單元的不斷增多、內(nèi)存容量的不斷增大、主頻的不斷提高,許多以前只能在專用芯片上才能實(shí)現(xiàn)的功能,現(xiàn)在都可以集成到一片F(xiàn)PGA內(nèi)部來(lái)完成。例如圍繞著一片Virtex-5 FXT可以搭建涵蓋圖像采集、顯示、處理、存儲(chǔ)、通信等功能的系統(tǒng)。SATA作為一項(xiàng)正蓬勃發(fā)展的存儲(chǔ)技術(shù),與FPGA技術(shù)結(jié)合之后可以極大地提高其本身的應(yīng)用范圍,特別是為一些脫離PC機(jī)的嵌入式系統(tǒng)實(shí)現(xiàn)高速、穩(wěn)定、價(jià)格較低的存儲(chǔ)功能提供一種新的有效途徑。