国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SATA硬盤控制器的FPGA實現(xiàn)

2016-10-18 10:43:32賈效玲張剛張博
火力與指揮控制 2016年9期
關(guān)鍵詞:鏈路層傳輸層物理層

賈效玲,張剛,張博

(太原理工大學信息工程學院,太原030024)

SATA硬盤控制器的FPGA實現(xiàn)

賈效玲,張剛,張博

(太原理工大學信息工程學院,太原030024)

設(shè)計一款高性能的SATA硬盤控制器IP核?;赬ilinx公司的Virtex-5系列FPGA,參考SATA2.5協(xié)議,運用VHDL硬件描述語言,采用模塊化的設(shè)計理念,完成IP核的設(shè)計。搭建了驗證平臺,對IP核的性能進行了測試,經(jīng)測試該控制器IP核能正確地完成讀、寫、設(shè)備復(fù)位、設(shè)備識別等操作,且穩(wěn)定性良好。同時編寫了PetaLinux操作系統(tǒng)下的驅(qū)動程序,便于嵌入式系統(tǒng)的應(yīng)用。

SATA2.5,控制器,F(xiàn)PGA,VHDL

0 引言

隨著嵌入式技術(shù)的發(fā)展,嵌入式系統(tǒng)對存儲器容量的要求越來越高,特別是圖像采集、視屏監(jiān)控等系統(tǒng)。硬盤容量大、價格便宜非常適合需要大容量存儲的嵌入式系統(tǒng),而目前很少有成熟的硬盤嵌入式接入方案。本文詳細分析了SATA協(xié)議結(jié)構(gòu),設(shè)計了相應(yīng)的SATA控制器,并在FPGA上進行了驗證,基于PetaLinux設(shè)計實現(xiàn)了文件系統(tǒng)接口,為硬盤的嵌入式系統(tǒng)應(yīng)用提供了良好解決方案。

1 SATA簡介

2001年Intel等廠商組成的Serial ATA委員會提出速度為150MB/s的SATA總線接口,高于并行ATA的最高理論速度133 MB/s,SATA2.0和SATA3.0更是分別達到了300MB/s和600MB/s[1]。

SATA接口由電源和上行、下行兩個數(shù)據(jù)通道組成,數(shù)據(jù)通道由3根地線將兩對差分信號線隔開,形成SATA獨占通道帶寬的點對點連接方式[2]。按功能SATA協(xié)議分為物理層、鏈路層、傳輸層和命令層,協(xié)議的層次結(jié)構(gòu)如圖1所示。主機和設(shè)備之間,除了物理層,其他各層均通過消息虛擬連接。物理層是協(xié)議的最底層主要負責碼流的收發(fā)及串并并串轉(zhuǎn)換;鏈路層主要負責消息的無差錯傳輸,包括8B/10B編解碼、加解擾、CRC校驗等;傳輸層主要負責生成與解析幀信息結(jié)構(gòu)(Frame Information Structures,F(xiàn)IS);命令層主要負責生成和解析訪問SATA硬盤的操作命令[3]。

2 SATA控制器

2.1總體設(shè)計

設(shè)計按照SATA協(xié)議分為4層,各層內(nèi)部通過控制模塊和數(shù)據(jù)通路實現(xiàn)相應(yīng)功能,各層之間相對獨立,發(fā)生錯誤時只需修改該層的模塊,而不會對其他層造成影響。

控制模塊通過有限狀態(tài)機實現(xiàn)協(xié)議的時序控制功能,相鄰層的狀態(tài)機相互配合實現(xiàn)數(shù)據(jù)的傳輸控制。狀態(tài)機用VHDL硬件語言描述,控制各層有條不紊地處理數(shù)據(jù)。數(shù)據(jù)通路分為發(fā)送和接收兩個通道,采用FIFO方式存儲。

發(fā)送數(shù)據(jù)時,命令層將傳來的數(shù)據(jù)和命令按照SATA協(xié)議要求傳給傳輸層,傳輸層接收數(shù)據(jù)并封裝成FIS,存放于FIFO中;數(shù)據(jù)鏈路層對接收到的FIS進行CRC校驗和加擾,并且加上幀頭幀尾送到物理層;物理層由RocketIOGTP來實現(xiàn),由于GTP具有8B/10B編解碼功能,所以鏈路層的8B/10B編解碼功能可以省略[4]。物理層的OOB信號用于完成初始化,速度協(xié)調(diào)模塊自動識別硬盤速率。GTP能夠?qū)邮盏降南M行8B/10B編碼,然后經(jīng)過并串轉(zhuǎn)換按照差分的方式發(fā)送出去。接收過程正好相反。物理層差分信號RX和TX分別與硬盤的差分收發(fā)信號線相接。系統(tǒng)結(jié)構(gòu)框圖如圖2所示。

2.2物理層

主機與設(shè)備之間的通信基礎(chǔ)是物理層,通過SATA接口連接。其主要功能包括:①接收高速串行差分信號并轉(zhuǎn)換成并行數(shù)據(jù);②將并行數(shù)據(jù)轉(zhuǎn)換成高速串行差分信號發(fā)送;③實現(xiàn)主機與設(shè)備的初始化連接。

Xilinx Virtex5芯片內(nèi)嵌RocketIO GTP高速串行收發(fā)器可直接來實現(xiàn)SATA物理層[5]。接收數(shù)據(jù)時它將3Gb/s的串行碼流轉(zhuǎn)換成并行數(shù)據(jù)流,發(fā)送時把并行數(shù)據(jù)串行化發(fā)送[6],同時還能產(chǎn)生用于初始化的帶外信號(OutOfBand,OOB)。物理層協(xié)議定義了COMRESET、

COMINIT、COMWAKE 3種帶外信號,均表現(xiàn)為在連續(xù)的Align原語簇間插入時間長度不同的空閑[7]。

初始化連接的目的是建立鏈路層數(shù)據(jù)傳輸?shù)耐?,其過程為:首先主機發(fā)送信號COMRESET,設(shè)備檢測到COMRESET信號后發(fā)送信號COMINIT響應(yīng),主機確認收到信號COMINIT后發(fā)送信號COMWAKE確認,然后設(shè)備以信號COMWAKE響應(yīng),接著主機與設(shè)備進行速率匹配,匹配成功后主機發(fā)送SYNC原語,當主機端接收3個連續(xù)的非ALIGN原語時表示連接建立成功。物理層的測試結(jié)果如圖3所示,rxstatus0表示的是接收到OOB信號的類型,‘4’表示COMINIT信號,‘2’表示COMWAKE信號。

圖2 系統(tǒng)架構(gòu)圖

圖3 物理層測試結(jié)果

2.3鏈路層

鏈路層接收傳輸層的FIS,插入原語封裝成幀后交給物理層發(fā)送,并從物理層得到的數(shù)據(jù)中提取出FIS后送到傳輸層,同時進行CRC值的計算和對除原語以外的所有數(shù)據(jù)(包括CRC值)進行加解擾操作[8]。擾碼的目的是減少數(shù)據(jù)中連續(xù)‘0’或‘1’的長度,以便于提取定時信息,使碼流更適合基帶傳輸[9]。擾碼建立在線性反饋移位寄存器的基礎(chǔ)之上,其特征方程為:

SATA協(xié)議采用CRC32校驗作為差錯檢測,并規(guī)定初始的CRC值為0X52325032。擾碼和CRC值計算的仿真結(jié)果如圖4所示,由圖可知第1個原始數(shù)據(jù)是0X00308027,計算的CRC值為0X11E353FD,擾碼器的輸出為0XC2D2768D,加擾后數(shù)據(jù)輸出0XC2E2F6AA。

圖4 擾碼和CRC仿真

2.4傳輸層

傳輸層的核心是FIS,它只需生成與解析幀信息的結(jié)構(gòu),而不關(guān)心幀數(shù)據(jù)接收和發(fā)送過程。協(xié)議定義了8種FIS,它們長度不等但結(jié)構(gòu)類似,第一個雙字的低8位標志了類型號,各種FIS的基本信息列在表1。常用的3種FIS:Command/Control FIS,用于主機向設(shè)備發(fā)送命令、參數(shù)等;Response FIS,用于設(shè)備向主機返回狀態(tài);Data FIS,用于數(shù)據(jù)傳送。

用緩存7個雙字(非數(shù)據(jù)FIS的最大長度)實現(xiàn)非數(shù)據(jù)FIS的封裝,根據(jù)FIS的類型決定緩存的內(nèi)容和長度,然后由鏈路層發(fā)送。對于數(shù)據(jù)FIS,先發(fā)送用于表示類型的第1個雙字后,直接將命令層的消息交給鏈路層發(fā)送[10]。

表1 幀信息結(jié)構(gòu)

2.5命令層

命令層主要解析命令,SATA協(xié)議完全兼容傳統(tǒng)ATA命令。協(xié)議定義了兩組操作寄存器實現(xiàn)命令操作,分別為命令寄存器組和控制寄存器組。命令寄存器組包括命令和參數(shù)寄存器,錯誤寄存器等;控制寄存器組主要用于對設(shè)備的控制,包括控制寄存器和輔助狀態(tài)寄存器。

3 設(shè)計驗證

在XILINX的EDK環(huán)境下,把設(shè)計當作一個定制IP核,掛載到PLB總線上來對IP核進行測試。如圖5所示是讀取SATA硬盤的主引導扇區(qū)(硬盤的0號扇區(qū))中的數(shù)據(jù),從超級終端打印的結(jié)果。主引導扇區(qū)的最后兩個字節(jié)是其簽名值55AA,圖中讀出的數(shù)據(jù)的后兩個字節(jié)也是55AA,說明控制器能夠正確地完成讀硬盤操作。同時對寫硬盤、設(shè)備識別、硬盤復(fù)位等功能進行了測試,結(jié)果證明控制器能很好地完成這些操作。

圖5 讀操作測試結(jié)果

為了方便嵌入式的應(yīng)用,并進一步測試硬盤控制器的性能,在XILINX公司的EDK環(huán)境下,把所設(shè)計的SATA硬盤控制器封裝成一個定制IP核,掛載到FPGA內(nèi)嵌MicroBlaze處理器的PLB總線上,當作處理器的一個設(shè)備,移植Petalinux操作系統(tǒng)到MicroB-laze,在Petalinux操作系統(tǒng)下設(shè)計獨立的FAT32文件系統(tǒng),通過文件系統(tǒng)來實現(xiàn)控制器IP核的通信測試。測試中文件系統(tǒng)能很好地調(diào)用設(shè)計控制器完成讀,寫,刪除等文件操作,說明硬盤控制器性能良好。圖6是讀取硬盤根目錄下一個文件并顯示的結(jié)果,由圖可知硬盤的根目錄下一共有6個文件,當前讀取的文件路徑為/sata_test.vhd,其大小為34724個字節(jié)。

圖6 控制器測試結(jié)果

4 結(jié)論

本文設(shè)計了一個集成度高、可擴展性強、運用靈活方便的SATA硬盤控制器,同時基于Xilinx公司的軟硬件協(xié)同設(shè)計平臺,開發(fā)了控制器的文件系統(tǒng)接口程序,特別適合需要大容量存儲(如視屏采集)的嵌入式系統(tǒng),具有良好嵌入式應(yīng)用前景。

[1]陳杰,張偉,張順生.SATA2.0控制器的設(shè)計與實現(xiàn)[J].計算機應(yīng)用,2011,31(2):25-26+32.

[2]申濟菘.SATA IP的設(shè)計與優(yōu)化[D].南京:南京大學,2013.

[3]Serial ATA Revision 2.5[S].USA:Serial ATA International Organization,2005.

[4]JOSE S.Virtex-5 FPGA RocketIO GTP Transceiver User Guide[R].Xilinx Coporation,2008.

[5]SAWYERN.Source-Synchronous Serialization and Deserialization[R].Xilinx Corporation:Application Note XAPP1064(v1.1),2010.

[6]孫志雄,謝海霞.基于FPGA的高速串并/并串轉(zhuǎn)換器設(shè)計[J].現(xiàn)代電子技術(shù),2014,37(8):151-152.

[7]楊佳朋,張剛,郝敏.基于RocketIO的SATA物理層實現(xiàn)[J].電視技術(shù),2013,37(3):70-72.

[8]王超,劉偉,張德聰.基于SATA的嵌入式直接存儲系統(tǒng)[J].計算機工程,2012,38(12):232-235.

[9]璩澤旭.高速大容量存儲系統(tǒng)關(guān)鍵技術(shù)研究與實現(xiàn)[D].西安:西安電子科技大學,2013.

[10]荊旭.基于FPGA的SATA協(xié)議分析及收發(fā)控制器設(shè)計[D].西安:西安電子科技大學,2014.

FPGA Im p lementation of SATA Hard Disk Controller

JIA Xiao-ling,ZHANGGang,ZHANGBo
(School of Information Engineering,Taiyuan University of Technology,Taiyuan 030024,China)

The paper designs a high-performance SATA controller IP core.It takes SATA 2.5 protocol for reference and is implemented on the basis of FPGA of Virtex-5 family of Xilinx with modular design concept in VHDL language.A platform for IP core performance verification is built. The test results indicate that the controller IP can realize many operations,such as reading,writing,device reset,identification and so on.And it has good stability.Meanwhile,it also finishes the operating system drivers of PetaLinux.It can facilitate the application of embedded systems.

SATA2.5,controller,F(xiàn)PGA,VHDL

TP333.2

A

1002-0640(2016)09-0182-03

2015-07-05

2015-08-07

賈效玲(1990-),女,山西汾陽人,碩士研究生。研究方向:嵌入式。

猜你喜歡
鏈路層傳輸層物理層
基于K-ML-MPWFRFT的物理層安全傳輸技術(shù)
基于多空間內(nèi)存共享的數(shù)據(jù)鏈路層網(wǎng)絡(luò)包捕獲方法
基于Python語言的網(wǎng)絡(luò)傳輸層UDP協(xié)議攻擊性行為研究
ZnO電子傳輸層在有機無機雜化鈣鈦礦太陽能電池中的應(yīng)用
陶瓷學報(2020年5期)2020-11-09 09:22:54
公路聯(lián)網(wǎng)電子不停車收費系統(tǒng)路側(cè)單元物理層自動測試軟件研發(fā)
物聯(lián)網(wǎng)無線通信傳輸層動態(tài)通道保障機制
基于物聯(lián)網(wǎng)GIS的消防智能巡檢系統(tǒng)設(shè)計與實現(xiàn)
基于FPGA全功能MVB網(wǎng)絡(luò)從設(shè)備鏈路層IP核設(shè)計
多天線物理層安全傳輸系統(tǒng)性能分析
數(shù)據(jù)鏈路層的選擇重傳協(xié)議的優(yōu)化改進
大洼县| 宁陵县| 盐池县| 海淀区| 清水县| 台东市| 三亚市| 柳河县| 永仁县| 靖江市| 昭觉县| 深州市| 临海市| 惠州市| 米林县| 视频| 唐海县| 赣榆县| 镇赉县| 凤山市| 霍城县| 福清市| 凤台县| 山西省| 宣威市| 广饶县| 内丘县| 伽师县| 涪陵区| 图们市| 天水市| 黄浦区| 普格县| 缙云县| 剑阁县| 山西省| 镇平县| 浦县| 汕尾市| 竹溪县| 蓬莱市|