孫海波, 王曉斌, 李雅梅
(北京強度環(huán)境研究所 北京 100076)
基于SATA接口固態(tài)硬盤的高速存儲系統(tǒng)設(shè)計
孫海波, 王曉斌, 李雅梅
(北京強度環(huán)境研究所 北京 100076)
介紹一種基于SATA接口固態(tài)硬盤的高速存儲系統(tǒng)。采用LVDS接口實現(xiàn)高速數(shù)據(jù)輸入,通過IDE-SATA轉(zhuǎn)接芯片JMH330S實現(xiàn)SATA接口固態(tài)硬盤的高速讀寫控制。采用千兆以太網(wǎng)作為控制和數(shù)據(jù)下載接口,利用Microblaze軟核運行LwIP協(xié)議棧,實現(xiàn)TCP/IP協(xié)議。測試結(jié)果證明,系統(tǒng)可支持600Mb/s的連續(xù)LVDS數(shù)據(jù)流輸入,存儲的數(shù)據(jù)完整可靠。
SATA; LVDS; 固態(tài)硬盤; 存儲; 千兆以太網(wǎng)
近年來,航天任務(wù)中對嵌入式數(shù)據(jù)采集存儲系統(tǒng)的要求越來越高,主要表現(xiàn)在采集通道數(shù)量的增加、信號采樣率的提高、信號采樣精度的提升。而目前存儲系統(tǒng)較低的存儲帶寬成為數(shù)據(jù)采集系統(tǒng)的瓶頸。采用FPGA控制FLASH陣列可以達到較高的存儲帶寬[1],但是對于高可靠性應(yīng)用,需要設(shè)計非??煽康膲膲K管理算法和糾錯碼校驗ECC(Error Correcting Code)算法,實現(xiàn)起來比較復(fù)雜。
近年來出現(xiàn)的SATA接口固態(tài)硬盤具有存儲速度高、存儲容量大、可靠性高等優(yōu)點,可以滿足航天領(lǐng)域?qū)?shù)據(jù)存儲的要求。由于SATA協(xié)議復(fù)雜,直接使用FPGA控制SATA接口固態(tài)硬盤成本高,難度大,開發(fā)周期長,由此也帶來可靠性的降低。本文使用FPGA控制IDE-SATA轉(zhuǎn)接芯片JMH330S,實現(xiàn)了基于SATA接口固態(tài)硬盤的高速存儲系統(tǒng),數(shù)據(jù)輸入接口為低壓差分信號LVDS(Low-Voltage Differential Signaling),數(shù)據(jù)下載接口為千兆以太網(wǎng),系統(tǒng)支持掉電保護功能,可靠性高,通用性強,適用于多種應(yīng)用場合。
基于SATA接口固態(tài)硬盤的高速存儲系統(tǒng)的系統(tǒng)組成如圖1所示。前端數(shù)據(jù)采集系統(tǒng)(或其它數(shù)據(jù)源)產(chǎn)生的數(shù)據(jù)通過高速LVDS接口發(fā)送至存儲系統(tǒng)。存儲系統(tǒng)的主控芯片采用Spartan6 XC6SLX45 FPGA,F(xiàn)PGA內(nèi)部的LVDS接收模塊接收LVDS數(shù)據(jù)流并將其轉(zhuǎn)換為并行數(shù)據(jù)。并行數(shù)據(jù)通過深度為32k的SAVE_FIFO進入IDE接口模塊。在數(shù)據(jù)管理模塊控制下,IDE接口模塊讀取SAVE_FIFO的數(shù)據(jù),并通過JMH330S芯片控制固態(tài)硬盤進行高速存儲;讀取數(shù)據(jù)時,IDE接口模塊將讀出的硬盤數(shù)據(jù)存入CPU_ FIFO中,Microblaze通過DMA方式將數(shù)據(jù)讀入其DDR3內(nèi)存,并通過千兆以太網(wǎng)發(fā)送至上位機。Microblaze是FPGA內(nèi)部的嵌入式CPU,它以DDR3為內(nèi)存,運行TCP/IP協(xié)議棧,主要用來處理接收的以太網(wǎng)、RS422命令,將上層控制指令解析并傳遞至數(shù)據(jù)管理模塊,完成數(shù)據(jù)存儲、讀取、刪除等功能。
圖1 基于SATA接口固態(tài)硬盤的高速存儲系統(tǒng)組成
2.1 LVDS接收模塊
LVDS使用很低的電壓幅度(100mV~450mV)通過一對平行的PCB走線或平衡電纜傳輸高速數(shù)據(jù)。在兩條平行的差分信號線上,電流及電壓振幅相反,噪聲信號同時耦合到兩條線上,接收端只關(guān)心兩信號的差值,因此噪聲會被抑制掉。LVDS高速、低功耗、低噪聲等特點使其在板級高速數(shù)據(jù)傳輸中得到廣泛應(yīng)用。
本系統(tǒng)采用兩對LVDS數(shù)據(jù)線,分別為伴隨時鐘線差分對和數(shù)據(jù)線差分對。LVDS伴隨時鐘的頻率為75MHz,串行解串因子(SerDes ratio)為8:1,即每個伴隨時鐘周期內(nèi)傳輸8bits數(shù)據(jù),故數(shù)據(jù)碼率為600Mb/ s。Spartan6 FPGA可支持高達1050Mb/s的LVDS數(shù)據(jù)接收和發(fā)送,利用FPGA內(nèi)部豐富的解串器(ISERDES)、鎖相環(huán)PLL(Phase Locked Loop)和延時(IODELAY)資源,可實現(xiàn)2:1~16:1的數(shù)據(jù)解串[2]。LVDS接收模塊的功能是將串行LVDS碼流解串為并行數(shù)據(jù)。本模塊的輸出接口為字節(jié)同步信號byte_ syn和8位并行輸出信號data[7:0]。LVDS接收模塊輸入輸出接口見圖2。
圖2 LVDS接收模塊輸入輸出接口
2.2 JMH330S介紹
JMH330S是SATA-IDE橋接芯片,符合SATA1.0版本規(guī)范,可兼容SATA2.0和SATA3.0接口固態(tài)硬盤,最高可支持ATA Ultra DMA模式7,理論數(shù)據(jù)傳輸速度可達150MB/s。JMH330S主要實現(xiàn)IDE總線數(shù)據(jù)、地址、控制信號與SATA總線數(shù)據(jù)、地址、控制信號的轉(zhuǎn)換,故只需采用傳統(tǒng)的IDE控制接口即可實現(xiàn)高速SATA接口固態(tài)硬盤的讀寫,簡化了設(shè)計,節(jié)省了成本。
2.3 IDE接口模塊
IDE接口的硬盤傳輸模式有PIO、DMA以及Ultra DMA三種方式。Ultra DMA方式在選通信號的上升沿和下降沿均鎖定數(shù)據(jù),提高了數(shù)據(jù)的傳輸速率,并且在數(shù)據(jù)傳輸結(jié)束時還要進行循環(huán)冗余校驗CRC (Cyclic Redundancy Code),具有較高的可靠性。本文在寄存器讀寫時采用PIO方式,在存儲數(shù)據(jù)時采用Ultra DMA模式5,最高數(shù)據(jù)傳輸速度為100MB/s。IDE接口模塊的功能主要包括設(shè)備(硬盤)初始化,Write DMA和Read DMA(二者均以Ultra DMA模式傳輸數(shù)據(jù))。
根據(jù)ATA-6協(xié)議[3],在硬盤初始化時,F(xiàn)PGA通過SetFeatures命令將IDE傳輸方式設(shè)置為Ultra DMA模式5。每次Ultra DMA寫操作時,首先設(shè)置起始48位邏輯地址和將要寫入的扇區(qū)數(shù),然后通過向狀態(tài)控制寄存器寫命令0x35啟動一次Write DMA操作。硬盤收到控制命令后,會向IDE接口模塊發(fā)送DMA請求(DMARQ)信號,IDE接口模塊用DMACK_應(yīng)答并撤銷STOP信號,在硬盤DMARDY_信號有效后,IDE接口模塊開始讀取SAVE_FIFO中數(shù)據(jù)并驅(qū)動數(shù)據(jù)同步信號HSTROBE以及16位并行數(shù)據(jù)。Ultra DMA模式5的傳輸速度為100MB/s,數(shù)據(jù)寬度為16bits,由于在HSTROBE信號的上升沿和下降沿均傳遞數(shù)據(jù),故HSTROBE信號為25MHz。Write DMA過程采用100MHz時鐘,rden為SAVE_FIFO讀使能信號。使用FPGA片內(nèi)邏輯分析儀ChipScope截取的Write DMA時序圖見圖3。
圖3 Ultra DMA寫操作時序圖
在Write DMA過程中,可能會出現(xiàn)硬盤DMARDY_信號無效,該現(xiàn)象為硬盤暫停Write DMA。此時主機應(yīng)繼續(xù)產(chǎn)生3個HSTROBE信號并進行3次數(shù)據(jù)傳輸,等待硬盤DMARDY_信號有效后,繼續(xù)進行Write DMA操作。否則會出現(xiàn)數(shù)據(jù)錯誤的情況。
對于Read DMA操作,過程類似,使用ChipScope截取的Read DMA時序見圖4。由于JMH330S輸出的數(shù)據(jù)同步信號DSTROBE為異步信號,因此應(yīng)首先經(jīng)過2級D觸發(fā)器同步化處理,得到DSTROBE_d2。DSTROBE_d2與DSTROBE_d3(DSTROBE_d2延遲一個時鐘周期)異或得到上升沿和下降沿信號DSTROBE_Edge。該信號相對原DSTROBE信號已延遲了3個時鐘周期,此時讀取經(jīng)過3級D觸發(fā)器同步后的總線數(shù)據(jù)得到Rd_Data信號。分別使用DSTROBE_Edge_d2信號(DSTROBE_Edge經(jīng)過2級D觸發(fā)器延遲)和Rd_Data信號作為CPU_FIFO的寫使能和寫數(shù)據(jù)信號。DSTROBE的頻率為25MHz,DSTROBE _Edge的頻率為50MHz,而采樣時鐘應(yīng)大于DSTROBE_Edge頻率的兩倍,在本文中,采樣時鐘為150MHz。
圖4 Ultra DMA讀操作時序圖
2.4 數(shù)據(jù)管理模塊
數(shù)據(jù)管理模塊實現(xiàn)的功能主要是接收Microblaze軟核的命令,控制數(shù)據(jù)存儲、數(shù)據(jù)讀取、數(shù)據(jù)刪除等數(shù)據(jù)存儲管理的功能,并在突然斷電時完成掉電保護功能。
2.4.1 數(shù)據(jù)存儲管理
數(shù)據(jù)管理模塊將固態(tài)硬盤中邏輯地址為0x100的頁作為信息記錄頁(每頁為512字節(jié)),記錄總存儲次數(shù)、每次存儲的起始地址、存儲頁長度等信息。系統(tǒng)上電時,讀取固態(tài)硬盤的信息記錄頁并暫存入雙口RAM的指定地址處。當(dāng)數(shù)據(jù)管理模塊收到Microblaze軟核的開始存儲命令時,根據(jù)上一次的存儲起始地址和存儲頁長度,生成本次存儲的起始地址。并且當(dāng)SAVE_FIFO中達到8192個字的深度時開始一次Write DMA(每次寫32頁),同時累加該次的存儲頁長度。在收到停止存儲命令時,應(yīng)繼續(xù)從SAVE_FIFO中讀取32k數(shù)據(jù)進行存儲,以防止存儲數(shù)據(jù)不完整,并將新的存儲次數(shù)、該次存儲的起始地址、存儲頁長度寫入雙口RAM的指定地址處,存儲至固態(tài)硬盤的信息記錄頁。當(dāng)收到Microblaze軟核的數(shù)據(jù)讀取命令以及讀取次數(shù)索引值時,數(shù)據(jù)管理模塊從雙口RAM中指定位置得到本次存儲的起始地址和存儲頁長度,開始Read DMA過程,并通過CPU_FIFO接口將讀出的數(shù)據(jù)傳遞至Microblaze軟核。
2.4.2 掉電保護
由于固態(tài)硬盤中存在較大的數(shù)據(jù)緩沖區(qū),當(dāng)突然斷電時,緩沖區(qū)中的數(shù)據(jù)可能還未存入固態(tài)硬盤內(nèi)部的FLASH中,造成數(shù)據(jù)丟失。本存儲系統(tǒng)采用后備電池進行掉電保護,其機制如下:正常情況下,系統(tǒng)由9V外部電源供電,當(dāng)外部電源的電壓低于電池電壓(7.2V)時,由二極管電路自動轉(zhuǎn)至后備電池供電;當(dāng)比較器電路檢測到外部電源電壓低于7V時,如果在存儲狀態(tài)下,數(shù)據(jù)管理模塊強制執(zhí)行停止存儲命令,存儲SAVE_FIFO中剩余數(shù)據(jù)和信息記錄頁;然后持續(xù)供電1秒,確保固態(tài)硬盤完成全部數(shù)據(jù)的存儲,最后控制繼電器斷開電池供電。
2.5 Microblaze軟核
通過嵌入式片上可編程系統(tǒng)SOPC(System On Programmable Chip)技術(shù)在FPGA內(nèi)部建立32位Microblaze軟核,運行嵌入式程序。Microblaze軟核的組成架構(gòu)如圖5所示。其中DDR3和axi_dma模塊通過高速AXI總線與Microblaze軟核實現(xiàn)互聯(lián),其他低速外設(shè)通過AXI_lite總線與之互聯(lián)。
圖5 Microblaze組成架構(gòu)
128MB的DDR3是數(shù)據(jù)和程序運行空間。Microblaze軟核與數(shù)據(jù)管理模塊的命令接口(CMD)采用axi_gpio IP核實現(xiàn)。讀取硬盤數(shù)據(jù)時,需要將邏輯中CPU_FIFO內(nèi)數(shù)據(jù)讀取至DDR3,然后通過千兆以太網(wǎng)實現(xiàn)高速數(shù)據(jù)發(fā)送。為了提高數(shù)據(jù)吞吐量,采用成熟IP核axi_dma配合自定義的axistream_fifo模塊實現(xiàn)高速數(shù)據(jù)讀取,自定義的axistream_fifo模塊符合axi4_stream協(xié)議。同時,使用IP核axi_ethernet和axi_ dma實現(xiàn)千兆以太網(wǎng)功能,作為數(shù)據(jù)高速下載接口。讀取硬盤數(shù)據(jù)時流程如下:首先配置axi_dma1,開啟讀取CPU_FIFO的DMA通道,將數(shù)據(jù)放入DDR3中,然后開啟axi_dma2的DMA通道,將DDR3中的數(shù)據(jù)通過千兆以太網(wǎng)接口發(fā)送出去。
通過千兆以太網(wǎng)或RS422,可實現(xiàn)用戶控制指令接收功能和數(shù)據(jù)下載功能。為保證千兆以太網(wǎng)發(fā)送數(shù)據(jù)的可靠性,采用LwIP協(xié)議棧實現(xiàn)TCP網(wǎng)絡(luò)協(xié)議。LwIP是瑞士計算機科學(xué)院開發(fā)的一套用于嵌入式系統(tǒng)的開放源代碼TCP/IP協(xié)議棧。LwIP的含義是Light Weight(輕型)IP協(xié)議,它可以在無操作系統(tǒng)的情況下獨立運行。在軟件開發(fā)工具包(SDK)中包含了LwIP 1.4.0的源碼與庫,可以通過工具直接生成針對axi_ethernet的驅(qū)動,使用簡單,代碼少,運行方便[4,5]。
在系統(tǒng)進行存儲時,每16k字節(jié)啟動一次Write DMA,使用示波器觀察DMARQ信號。DMARQ信號的平均有效時間為190μs,即最大存儲速度約為82MB/s。留有一定裕量,采用速度為75MB/s的LVDS數(shù)據(jù)源測試系統(tǒng)性能。數(shù)據(jù)源的時鐘頻率為75MHz,串行解串因子為8:1,即數(shù)據(jù)碼率為600Mb/s,輸出的LVDS測試數(shù)據(jù)為累加數(shù)據(jù)。固態(tài)硬盤的型號為三星840pro-128G,經(jīng)過100次采集存儲100s數(shù)據(jù),并下載至上位機,千兆以太網(wǎng)的平均數(shù)據(jù)下載速度為24MB/s。通過數(shù)據(jù)分析得知,數(shù)據(jù)正確無誤,無誤碼和丟數(shù)現(xiàn)象。測試結(jié)果驗證了本文介紹的基于SATA接口固態(tài)硬盤高速存儲系統(tǒng)的可靠性。
本文介紹了一種基于SATA接口固態(tài)硬盤的高速存儲系統(tǒng),它采用高可靠的SATA接口固態(tài)硬盤作為存儲介質(zhì),使用高速LVDS接口作為數(shù)據(jù)輸入接口,并采用千兆以太網(wǎng)作為數(shù)據(jù)導(dǎo)出接口,支持掉電保護功能,可以實現(xiàn)高速、可靠的數(shù)據(jù)存儲與下載。該系統(tǒng)協(xié)議簡單,方便連接,可應(yīng)用于航空、航天等高速數(shù)據(jù)記錄領(lǐng)域,具有廣闊的應(yīng)用前景。
[1] 吳 昊.高速大容量固態(tài)存儲系統(tǒng)設(shè)計[D].西安電子科技大學(xué)碩士學(xué)位論文,2010.
[2] Nick Sawyer.Source-Synchronous Serialization and Deserialization[R].Xilinx Corporation:Application Note XAPP1064 (v1.1),2010.
[3] American National Standards Institute.American National Standard for Information Technology-AT Attachment with Packet Interface-6(ATA/ATAPI-6)[S].Revision 3b,2002.
[4] 張文沛,彭先蓉,徐 勇.基于SOPC的千兆以太網(wǎng)數(shù)據(jù)傳輸設(shè)計[J].儀器儀表用戶,2010,(3):66~68.
[5] Anirudha Sarangi and Stephen MacMahon.Light Weight IP(lwIP)Application Examples[R].Xilinx Corporation:Application Note XAPP1026(v3.2),2012.
Design of High-speed Storage System Based on SATA Interface Solid State Hard Disk
Sun Haibo, Wang Xiaobin, Li Yamei
A design of high-speed storaged system base on SATA interface solid state hard disk(SSD)is introduced.The LVDS interface is adopted to receive the high-speed incoming data.Depending on IDE-SATA bridge chip JMH330S,the high speed read and write commands for SSD are performed.The 1000-M Ethernet is used as the control and download interface,and Microblaze runs the LwIP stack to achieve TCP/IP protocol.Test result proves that the storage system can sustain consecutive LVDS data stream as fast as 600Mb/s and the storage data is integrated and reliable.
SATA; LVDS; Solid state hard disk; Storage; 1000-M Ethernet
TN919
A
CN11-1780(2014)02-0048-05
孫海波 1987年生,碩士,工程師,研究方向為測量與通信技術(shù)。
2013-09-18 收修改稿日期:2013-09-26
王曉斌 1965年生,研究員,研究方向為計算機測量與控制。
李雅梅 1976年生,助理工程師,研究方向為數(shù)據(jù)采集與存儲。