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