• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于SATA3.0的存儲系統(tǒng)優(yōu)化設計

      2021-01-22 09:45:02李晉濤任勇峰楊志文李輝景
      電子技術應用 2021年1期
      關鍵詞:傳輸層原語狀態(tài)機

      李晉濤,任勇峰,2,楊志文,李輝景

      (1.中北大學 電子測試技術國家重點實驗室,山西 太原 030051;2.中北大學 儀器科學與動態(tài)測試教育部重點實驗室,山西 太原 030051)

      0 引言

      SATA3.0(SerialATA Revision3.0)采用差分信號傳輸系統(tǒng),該系統(tǒng)對共模噪聲有很強的抵抗力,因此SATA可以采用更低的電壓去抑制噪聲。在數(shù)據(jù)傳輸這一方面,SATA3.0的傳輸速度在SATA2.0的基礎上翻倍,理論上可以達到6 Gb/s。另一方面,SATA總線使用了嵌入式時鐘頻率信號,具備了比以往更強的糾錯能力。在傳輸過程中能對相應的指令進行檢查,即使出現(xiàn)錯誤的指令,也可以進行及時的修正,因此廣泛地應用于實際工程中。但是,基于測試系統(tǒng)產生的數(shù)據(jù)愈加地趨向于大體積、高速率,多數(shù)存儲系統(tǒng)采用存儲陣列的方式進行存儲。然而,隨著存儲量的增加以及傳輸環(huán)境的復雜,SATA總線會出現(xiàn)個別通道傳輸中斷的現(xiàn)象,雖然只是偶爾現(xiàn)象,但卻能造成不可挽回的損失。

      針對以上問題,該設計基于FPGA控制的SATA3.0總線,從硬件和代碼方面優(yōu)化了存儲系統(tǒng)并進行驗證。實測存儲速率不低于800 MB/s,并且數(shù)據(jù)傳輸穩(wěn)定,在大容量存儲應用領域具有很好的參考和使用價值。

      1 系統(tǒng)總體設計

      圖1 系統(tǒng)總體框圖

      基于SATA3.0的存儲電路能夠實現(xiàn)對大量數(shù)據(jù)的快速、穩(wěn)定的存儲,該系統(tǒng)的總體設計方案如圖1所示。系統(tǒng)由四部分組成,即數(shù)據(jù)接收模塊、FPGA控制模塊、數(shù)據(jù)存儲模塊和數(shù)據(jù)分析模塊。數(shù)據(jù)接收模塊采用了4路SRIO數(shù)據(jù)接口,接收外部數(shù)據(jù),單路傳輸速率為3.125 Gb/s,總體理論傳輸速率為12.5 Gb/s。控制模塊采用FPGA,主要負責邏輯控制,即通過控制SRIO協(xié)議、SATA協(xié)議以及UDP協(xié)議來完成數(shù)據(jù)的接收、存儲和調用。數(shù)據(jù)存儲模塊采用4片500 GB的固態(tài)硬盤,以單次記錄的方式,先擦除再寫入,斷電停止記錄。數(shù)據(jù)分析模塊采用UDP協(xié)議,通過千兆以太網接口進行交互[1]。對試驗數(shù)據(jù)進行分析時,只需要將硬盤內存儲的數(shù)據(jù)讀取到計算機上即可。

      2 硬件電路設計

      此模塊采用Xilinx的Kintex-7系列PFGA作為主控芯片,該芯片采用RocketIO技術進行串行數(shù)據(jù)傳輸,即串行收發(fā)器GTX接口,單路最高傳輸速率可達到12.5 Gb/s[2],串行收發(fā)器配備有可配置的阻抗、擺幅以及耦合等級。SATA傳輸采用全雙工的方式,2、3引腳作為發(fā)送端將指令或者數(shù)據(jù)發(fā)送至硬盤,5、6引腳作為接收端接收硬盤返回的信息。相比于以往的并行傳輸方式,串行傳輸采用差分走線,具有很強的抗噪聲能力,不需要考慮多排傳輸線之間的干擾,只需要提高時鐘頻率便可以提高傳輸速率,串行傳輸一次傳輸一個比特(bit)包含有源同步時鐘。而時鐘是通過PMA PLL將一個高質量的參考時鐘倍頻出高速串行時鐘,用來驅動GTX收發(fā)器工作,本設計采用的時鐘芯片為CDCM61002[3],該芯片內置板載鎖相環(huán),可以提供穩(wěn)定的差分時鐘作為參考時鐘,并且具有功耗低、高性能、低相位噪聲等優(yōu)點。在時鐘配置方面,該芯片可配置出專有的SATA時鐘、PCI Express以及GigE等。根據(jù)芯片手冊,此處選用25 MHz的晶振作為時鐘輸入,同時將PR0、PR1、OD2配置為低電平,OD1和OD0配置為高電平,即實現(xiàn)設計需要的SATA參考時鐘150 MHz。同時,將OS1配置為低電平、OS0配置為高電平,從而控制時鐘輸出方式為LVDS。硬件電路圖如圖2所示。

      圖2 SATA硬件原理圖

      3 系統(tǒng)軟件設計

      3.1 SATA3.0結構分析

      SATA3.0接口主要包括四個層次:應用層、傳輸層、鏈路層以及物理層,總體框架如圖3所示。

      圖3 SATA協(xié)議結構圖

      (1)物理層主要是由差分對TX和RX來實現(xiàn)串行全雙工傳輸,主要功能是主機端與設備端的鏈路初始化[4]。為了提高SATA接口的主機端和設備快速建立通信的能力,SATA協(xié)議在物理層引入了OOB信號,通過原語交互來完成鏈路初始化和傳輸速度的協(xié)商。

      (2)鏈路層主要負責的是FIS幀收發(fā),通過CRC校驗和加擾碼解擾碼的方式來提高數(shù)據(jù)傳輸?shù)臏蚀_性[5]。當鏈路層發(fā)送數(shù)據(jù)時,SATA協(xié)議將0x52325032作為初始值[6],根據(jù) CRC32校驗方式,將最多 2 048個 DWORDS有效數(shù)據(jù)依次校驗,生成一個最終的校驗和,然后將校驗和加在所發(fā)送的有效數(shù)據(jù)后,并進行加擾,最后進行8B/10B編碼后發(fā)送到物理層,在接收到設備端的數(shù)據(jù)時,先對數(shù)據(jù)進行8B/10B解碼以及解擾,然后將幀頭原語SOF、CRC校驗以及幀尾原語EOF去除,再次計算接收到的有效數(shù)據(jù)的CRC校驗和[7],并與接收到的CRC校驗和做對比,然后向傳輸層報告當前傳輸狀態(tài)。CRC32的生成多項式如式(1)所示:

      (3)傳輸層主要負責將相關的數(shù)據(jù)或命令構造成相應的FIS幀。其中,幀類型主要有數(shù)據(jù)幀、寄存器幀以及控制幀這三大類。當傳輸層接收到來自鏈路層的幀時,會將該幀解析出幀類型以及幀內容,并將其中的數(shù)據(jù)寫入寄存器中。當檢測到應用層發(fā)出的數(shù)據(jù)傳輸操作請求后,傳輸層作為響應,會從寄存器中讀取數(shù)據(jù),并按照相應的幀格式組成幀發(fā)送至鏈路層[8]。

      (4)應用層主要負責解析各個寄存器以及執(zhí)行寄存器中的命令。根據(jù)命令的要求,應用層會接收來自主機端傳輸?shù)臄?shù)據(jù),并將數(shù)據(jù)寫入SATA硬盤中,或者將硬盤中的數(shù)據(jù)讀取出來傳送給主機端。存儲或者讀取的方式可以是PIO或DMA,為了提高數(shù)據(jù)交互速率,本文采用DMA方式[9]。在數(shù)據(jù)進行緩沖時,分別采用一個讀FIFO和一個寫FIFO來完成。寫FIFO負責緩存?zhèn)鬏攲咏馕龀鰜淼臄?shù)據(jù)幀,而讀FIFO負責把來自總線的數(shù)據(jù)保存下來[10]。在這一系列動作完成之后,應用層將構造數(shù)據(jù)幀的指令發(fā)給傳輸層。

      3.2 OOB狀態(tài)機優(yōu)化

      SATA物理鏈路的建立主要是通過OOB(Out of Band,OOB)信號來實現(xiàn)的[11]。FPGA和硬盤上電以后,F(xiàn)PGA端首先發(fā)出重置信號COMREST,硬盤在檢測到FPGA發(fā)出的COMRESET后,會發(fā)出初始化信號COMINIT作為回應,并且硬盤可以在任意時間通過發(fā)送COMINIT來發(fā)起會話。收到硬盤回應以后,F(xiàn)PGA會進行校準并發(fā)出COMWAKE信號。硬盤在RX差分對上接收到COMWAKE信號后會校準發(fā)送器,并且會將COMWAKE信號連續(xù)傳輸六次,接著連續(xù)發(fā)送ALIGN原語與主機端進行傳送速度的協(xié)商。FPGA接收到COMWAKE信號,鎖存硬盤發(fā)來的原語然后在54.6 μs內回傳 ALIGN,并且在 COMWAKE信號收到之后連續(xù)地發(fā)送D10.2原語。返回ALIGN信號給硬盤的速率應與接收時保持一致,如在880 μs內未檢測到硬盤返回ALlGN,則進入復位狀態(tài)重新連接。硬盤在檢測到ALIGN原語后,會以SYNC同步信號作為回應,表示準備開始正常的傳輸操作。當FPGA接收到三個來自硬盤的非ALIGN原語后,linkup信號由低電平變?yōu)楦唠娖?,鏈接建立完成,進入正常操作。

      圖4 鏈路優(yōu)化前

      如圖4所示,以往的數(shù)據(jù)傳輸過程中,可能會遇到物理鏈路連接斷開的現(xiàn)象[12],此時linkup信號由高變低,數(shù)據(jù)傳輸中斷,OOB狀態(tài)機停留在當前l(fā)inkready狀態(tài)。從硬盤回放的數(shù)據(jù)可以看出,遞增數(shù)已經不再連續(xù),雖然這種問題出現(xiàn)的概率比較小,但卻能造成無法挽回的后果。為了提高系統(tǒng)鏈路的穩(wěn)定性以及抗干擾能力,使得系統(tǒng)建立起來以后數(shù)據(jù)更加穩(wěn)定地傳輸,避免在系統(tǒng)工作中出現(xiàn)中斷,需要對OOB狀態(tài)機增加一個通路標志循環(huán)監(jiān)測狀態(tài)。當出現(xiàn)鏈路斷開時,在物理層立即重新建立物理鏈路,及時地恢復數(shù)據(jù)傳輸。圖5是改進后的OOB狀態(tài)機。

      圖5 優(yōu)化后的OOB狀態(tài)機

      linkup狀態(tài)之前的狀態(tài)與原來相同,是物理通路的建立過程。linkup狀態(tài)下認為發(fā)送的已經是正常的數(shù)據(jù)幀,在此狀態(tài)下可以檢測幀頭SOF原語和EOF原語判斷是否有正常數(shù)據(jù)幀的交互。當檢測到幀頭SOF原語后進入下一狀態(tài)。linkcheck是鏈路檢測狀態(tài),也是物理層正常工作時需要保持的狀態(tài)。在正常工作狀態(tài)下,鏈路需要保持穩(wěn)定,這就需要實時檢測當前鏈路的工作狀態(tài),此狀態(tài)下需要檢測的標志位有rxelecidle、linkup等。可以看到鏈路斷開以后,linkup信號由高變低,此時OOB狀態(tài)機立即進入 0狀態(tài),即復位狀態(tài);txcominit拉高,說明鏈路開始初始化;經過短時間的鏈路重建linkup信號拉高,說明鏈路重新恢復連接,rxelecidle信號持續(xù)拉低,說明數(shù)據(jù)已經開始繼續(xù)傳輸。圖6是ILA抓取的一條通路重新建立的采樣圖。

      4 系統(tǒng)整體測試

      首先,使用外部發(fā)圖機以800 MB/s的速率循環(huán)發(fā)送遞增數(shù),遞增數(shù)以四個字節(jié)的幀計數(shù),再加上EB 90作為幀結尾[13],每幀包含 256個字節(jié)。接收數(shù)據(jù)時,F(xiàn)PGA以156.25 MHz的時鐘接收數(shù)據(jù),然后寫入64位的FIFO。由于SRIO采用8B/10B編碼,4路SRIO接口理論接收速率可達到 156.25 M×64÷10=1 000 MB/s。緊接著,例化一個 64位轉 128位的 FIFO,讀時鐘為 150 MHz,此時 FIFO的讀速率為 150 M×128÷10=1 920 MB/s完全大于接收速率。之后FPGA將打包后的128位的數(shù)據(jù)拆分成四路32位的數(shù)據(jù),通過SATA控制器,將32位的數(shù)據(jù)轉為串行的差分數(shù)據(jù),通過SATA串口同時存儲到四塊硬盤中。圖7為上位機讀取到的遞增數(shù),圖8為遞增數(shù)校驗結果。

      在高溫60℃和低溫-40℃條件下,以800 MB/s的寫入速率每次寫入硬盤600 GB的數(shù)據(jù)進行測試,經過100次測試及數(shù)據(jù)分析,發(fā)現(xiàn)數(shù)據(jù)傳輸穩(wěn)定,遞增數(shù)連續(xù)且沒有出現(xiàn)傳輸中斷的情況。

      5 結論

      圖6 鏈路優(yōu)化后

      圖7 接收數(shù)據(jù)回放

      圖8 遞增數(shù)校驗

      本文優(yōu)化了一種基于FPGA控制的存儲系統(tǒng),系統(tǒng)以SATA3.0作為傳輸總線,固態(tài)硬盤陣列作為存儲介質,對存儲邏輯進行了設計,并對硬件電路和OOB狀態(tài)機進行了優(yōu)化。最終實現(xiàn)了一種高速率,高穩(wěn)定性的存儲系統(tǒng),解決了大容量存儲系統(tǒng)的傳輸穩(wěn)定性問題。經過大量的讀寫測試,表明該系統(tǒng)可以對高速數(shù)據(jù)進行可靠的存儲,滿足多數(shù)遙測試驗的需求,具有很好的應用價值。

      猜你喜歡
      傳輸層原語狀態(tài)機
      測試原語:存儲器故障最小檢測序列的統(tǒng)一特征
      基于Python語言的網絡傳輸層UDP協(xié)議攻擊性行為研究
      ZnO電子傳輸層在有機無機雜化鈣鈦礦太陽能電池中的應用
      陶瓷學報(2020年5期)2020-11-09 09:22:54
      基于有限狀態(tài)機的交會對接飛行任務規(guī)劃方法
      物聯(lián)網無線通信傳輸層動態(tài)通道保障機制
      密碼消息原語通信協(xié)議介紹及安全分析
      基于物聯(lián)網GIS的消防智能巡檢系統(tǒng)設計與實現(xiàn)
      基于原語自動生成的安全協(xié)議組合設計策略及應用研究
      FPGA設計中狀態(tài)機安全性研究
      黑龍江科學(2011年2期)2011-03-14 00:39:36
      基于反熔絲FPGA的有限狀態(tài)機加固設計
      瑞昌市| 定陶县| 宜川县| 日喀则市| 什邡市| 武穴市| 保德县| 朝阳县| 磴口县| 峨眉山市| 长沙市| 敖汉旗| 勐海县| 芦溪县| 阳朔县| 抚州市| 德江县| 华容县| 饶阳县| 扶绥县| 阜阳市| 广河县| 衡山县| 嘉鱼县| 平原县| 盐山县| 湘西| 灵武市| 阜新市| 肇州县| 柘荣县| 闵行区| 临泉县| 芷江| 夹江县| 玉山县| 恩平市| 贵州省| 潜山县| 塔河县| 武功县|