當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于FPGA的IDE硬盤接口卡的實現(xiàn)

摘要:本文介紹了一種基于FPGA技術(shù)的IDE硬盤接口的設(shè)計。該卡提供兩個符合ATA-6規(guī)范的接口,采用FPGA實現(xiàn)了兩套IDE接口功能,設(shè)計支持PIO和Ultra DMA傳輸模式,文章側(cè)重于介紹用FPGA實現(xiàn)IDE接口協(xié)議的具體方法。
關(guān)鍵詞:FPGA;硬盤;IDE接口

引言

    本文采用FPGA實現(xiàn)了IDE硬盤接口協(xié)議。系統(tǒng)提供兩套符合ATA-6規(guī)范的IDE接口,一個與普通IDE硬盤連接,另一個與計算機主板上的IDE接口相連。系統(tǒng)采用FPGA實現(xiàn)接口協(xié)議,完成接口數(shù)據(jù)的截獲、處理(在本文中主要是數(shù)據(jù)加密)和轉(zhuǎn)發(fā),支持PIO和Ultra DMA兩種數(shù)據(jù)傳輸模式。下面重點介紹用FPGA實現(xiàn)接口協(xié)議的方法。

1 IDE接口協(xié)議簡介

1.1 IDE接口引腳定義

    IDE(Integrated Drive Electronics)即“電子集成驅(qū)動器”,又稱為ATA接口。表1列出了ATA標(biāo)準(zhǔn)中IDE接口上的信號。其中,帶“-”的信號(如RESET-)表示低電平有效?!胺较颉笔窍鄬τ谟脖P而言,I表示進(jìn)入硬盤,O表示從硬盤出來,I/O表示雙向。

說 明

方向

名稱

管腳

管腳

名稱

方向

說 明

復(fù)位

I

RESET-

1

2

Ground

 

數(shù)據(jù)總線位7

I/O

DD7

3

4

DD8

I/O

數(shù)據(jù)總線位8

數(shù)據(jù)總線位6

I/O

DD6

5

6

DD9

I/O

數(shù)據(jù)總線位9

數(shù)據(jù)總線位5

I/O

DD5

7

8

DD10

I/O

數(shù)據(jù)總線位10

數(shù)據(jù)總線位4

I/O

DD4

9

10

DD11

I/O

數(shù)據(jù)總線位11

數(shù)據(jù)總線位3

I/O

DD3

11

12

DD12

I/O

數(shù)據(jù)總線位12

數(shù)據(jù)總線位2

I/O

DD2

13

14

DD13

I/O

數(shù)據(jù)總線位13

數(shù)據(jù)總線位1

I/O

DD1

15

16

DD14

I/O

數(shù)據(jù)總線位14

數(shù)據(jù)總線位0

I/O

DD0

17

18

DD15

I/O

數(shù)據(jù)總線位15

 

Ground

19

20

N.C.

 

 

DMA請求

O

DMARQ

21

22

Ground

 

I/O寫

I

DIOW-

23

24

Ground

 

I/O讀

I

DIOR-

25

26

Ground

 

I/O通道準(zhǔn)備好

O

IORDY

27

28

CSEL

 

(見注1)

DMA確認(rèn)

I

DMACK-

29

30

Ground

 

中斷請求

O

INTRQ

31

32

N.C.

 

(ATA-2中使用)

地址位1

I

DA1

33

34

PDIAG-

 

(見注2)

地址位0

I

DA0

35

36

DA2

I

地址位2

片選0

I

CS0-

37

38

CS1-

I

片選1

驅(qū)動器狀態(tài)

O

DASP-

39

40

Ground

 

注:1、CSEL:一條排線上有兩個存儲設(shè)備時,通過該信號確定某存儲設(shè)備為設(shè)備0(主設(shè)備)或設(shè)備1(從設(shè)備)。

    2、PDIAG-/CBLID-:一條排線上有兩個存儲設(shè)備時,設(shè)備1通知設(shè)備0,設(shè)備1已檢測通過。該引腳也用于確定是否有80芯的排線連接到接口上。

表1:IDE接口引腳定義

1.2 IDE控制器的寄存器組

    主機對IDE硬盤的控制是通過硬盤控制器上的兩組寄存器來實現(xiàn)的。一組為命令寄存器組;另一組為控制/診斷寄存器,如表2所示。

地  址

名 稱 及 意 義

CS1-

CS0-

DA2

DA1

DA0

讀操作

寫操作

 

命 令 寄 存 器 組

1

0

0

0

0

數(shù)據(jù)寄存器

數(shù)據(jù)寄存器

1

0

0

0

1

錯誤寄存器

特征寄存器

1

0

0

1

0

扇區(qū)數(shù)寄存器

扇區(qū)數(shù)寄存器

1

0

0

1

1

扇區(qū)號寄存器

扇區(qū)號寄存器

1

0

1

0

0

柱面數(shù)低8位

柱面數(shù)低8位

1

0

1

0

1

柱面數(shù)高8位

柱面數(shù)高8位

1

0

1

1

0

驅(qū)動器/磁頭寄存器

驅(qū)動器/磁頭寄存器

1

0

1

1

1

狀態(tài)寄存器

命令寄存器

 

控 制 / 診 斷 寄 存 器 組

0

1

1

1

0

輔助狀態(tài)寄存器

設(shè)備控制寄存器

 

數(shù) 據(jù) 端 口 ?。ㄓ糜贒MA模式,DMACK-有效后啟用)

1

1

*

*

*

數(shù)據(jù)端口

數(shù)據(jù)端口

表2寄存器組

    特征寄存器中的內(nèi)容作為命令的一個參數(shù),其作用隨命令而變。扇區(qū)數(shù)寄存器指示該次命令所需傳輸數(shù)據(jù)的扇區(qū)數(shù)。扇區(qū)號寄存器、柱面數(shù)寄存器(低、高)、驅(qū)動器/磁頭寄存器三者合稱為介質(zhì)地址寄存器,指示該次命令所需傳輸數(shù)據(jù)首扇區(qū)的地址,尋址方式可以用“柱面/磁頭/扇區(qū)(CHS)”或“邏輯塊地址(LBA)”方式,在驅(qū)動器/磁頭寄存器中指定。

    命令寄存器存儲執(zhí)行的命令代碼。當(dāng)向命令寄存器寫入命令時,相關(guān)的參數(shù)必須先寫入。命令寫入后,硬盤立即開始命令的執(zhí)行。狀態(tài)寄存器保存硬盤執(zhí)行命令后的結(jié)果,供主機讀取。其主要位有:BSY-驅(qū)動器忙,DRDY-驅(qū)動器準(zhǔn)備好,DF-驅(qū)動器故障,DRQ-數(shù)據(jù)請求,ERR-命令執(zhí)行出錯。輔助狀態(tài)寄存器與狀態(tài)寄存器的內(nèi)容完全相同,但讀該寄存器時不清除中斷請求。錯誤寄存器包含了命令執(zhí)行出錯時硬盤的診斷信息。

    數(shù)據(jù)寄存器為PIO傳輸模式下,主機和硬盤控制器的緩沖區(qū)之間進(jìn)行數(shù)據(jù)交換的寄存器。數(shù)據(jù)端口為DMA傳輸模式下專用的數(shù)據(jù)傳輸通道。

1.3 IDE數(shù)據(jù)傳輸方式

    IDE接口的數(shù)據(jù)傳輸包括PIO和DMA兩種方式。PIO模式是硬盤數(shù)據(jù)傳輸?shù)幕痉绞?。在PIO方式下,數(shù)據(jù)的傳輸以數(shù)據(jù)塊(1個或者多個扇區(qū))為單位,每傳輸完一個數(shù)據(jù)塊后,硬盤都會產(chǎn)生一個中斷請求,并向主機報告命令執(zhí)行結(jié)果。

    在DMA方式下,主機和硬盤之間需要通過一系列握手信號建立一個DMA通道,數(shù)據(jù)以數(shù)據(jù)流的形式傳輸。當(dāng)傳輸完一個命令的所有數(shù)據(jù)時,硬盤產(chǎn)生一個中斷請求,并向主機報告命令執(zhí)行結(jié)果。DMA方式又分為Ultra DMA和Multiword DMA兩種。Ultra DMA方式在選通信號的上升沿和下降沿均鎖定數(shù)據(jù),提高了數(shù)據(jù)的傳輸速率,并且在數(shù)據(jù)傳輸結(jié)束時還要進(jìn)行CRC校驗。

2 FPGA內(nèi)部框圖

    本設(shè)計采用Actel公司的ProASIC PLUS系列FPGA芯片,其內(nèi)部框圖如圖1所示。

    寄存器組一保存從主機寫入的命令及命令參數(shù),在控制模塊的作用下轉(zhuǎn)發(fā)給硬盤。寄存器組二保存從硬盤讀出的命令執(zhí)行結(jié)果,供主機讀取。控制模塊負(fù)責(zé)產(chǎn)生對主機及對硬盤的各種IDE協(xié)議控制信號,并協(xié)調(diào)各模塊之間的工作??刂颇K采用狀態(tài)機的設(shè)計方法,其軟件設(shè)計流程將在下一節(jié)中詳細(xì)介紹。數(shù)據(jù)處理單元對數(shù)據(jù)進(jìn)行加/解密運算。緩沖區(qū)一、二則作為數(shù)據(jù)處理單元的輸入/輸出緩存。在PIO方式下,數(shù)據(jù)的處理以數(shù)據(jù)塊為單位,緩沖區(qū)充當(dāng)RAM的作用;在Ultra DMA方式下,數(shù)據(jù)以數(shù)據(jù)流的形式處理,緩沖區(qū)充當(dāng)FIFO的作用。

3系統(tǒng)軟件流程

    開機時,F(xiàn)PGA檢測到復(fù)位信號,初始化內(nèi)部寄存器組,并對硬盤進(jìn)行復(fù)位操作,硬盤復(fù)位完畢后FPGA進(jìn)入空閑狀態(tài)。FPGA在空閑狀態(tài)時會檢測主機是否有寫命令操作(通常一個命令的寫入,要先寫特征寄存器、扇區(qū)數(shù)寄存器、扇區(qū)號寄存器、柱面數(shù)低位寄存器、柱面數(shù)高位寄存器、驅(qū)動器/磁頭寄存器6個命令參數(shù)寄存器,最后將命令寫入命令寄存器)。當(dāng)主機依次將寄存器組一寫完后,F(xiàn)PGA對主機置BSY位,并將命令轉(zhuǎn)發(fā)給硬盤,同時判斷命令類型,根據(jù)不同的命令,進(jìn)入相應(yīng)的命令處理流程。

    如果是無數(shù)據(jù)命令,F(xiàn)PGA等待硬盤命令的執(zhí)行,命令執(zhí)行完畢后,硬盤產(chǎn)生一個中斷請求,此時FPGA將執(zhí)行結(jié)果讀入寄存器組二中,并向主機產(chǎn)生中斷請求。如果是有數(shù)據(jù)命令,則根據(jù)數(shù)據(jù)傳輸?shù)哪J剑謩e進(jìn)入到下述的PIO命令處理流程及Ultra DMA命令處理流程。

3.1 PIO命令處理流程

    以PIO模式傳輸數(shù)據(jù)的命令有Write Sectors、Write Multiple、Read Sectors和Read Multiple。當(dāng)FPGA判斷出是PIO模式的數(shù)據(jù)傳輸命令時,轉(zhuǎn)向PIO命令處理流程。下面我們以PIO寫操作為例介紹。

    FPGA首先查詢硬盤的BSY位。若BSY為0則將硬盤的狀態(tài)寄存器讀入寄存器組二,并查詢DRQ位。若DRQ為1則表明硬盤已準(zhǔn)備好接收數(shù)據(jù)。此時主機可以向緩沖區(qū)一寫入數(shù)據(jù)塊(本設(shè)計中,我們設(shè)定數(shù)據(jù)塊的大小為1個扇區(qū)共512字節(jié))。主機寫完一個數(shù)據(jù)塊后FPGA對主機置BSY位,數(shù)據(jù)處理單元開始進(jìn)行加密運算,并將加密后的數(shù)據(jù)寫入緩沖區(qū)二。加密運算完成后,F(xiàn)PGA將緩沖區(qū)二中的數(shù)據(jù)寫入硬盤數(shù)據(jù)緩存區(qū),并進(jìn)入等待狀態(tài)。硬盤將數(shù)據(jù)寫入物理介質(zhì)(磁碟)后會產(chǎn)生一個中斷請求,報告已完成該數(shù)據(jù)塊的寫操作。FPGA將執(zhí)行結(jié)果讀入寄存器組二中,向主機產(chǎn)生中斷請求,并再次查詢DRQ位,若DRQ為1則進(jìn)入下一個PIO數(shù)據(jù)塊的傳輸過程,若DRQ為0則表示該命令所有數(shù)據(jù)全部傳完,F(xiàn)PGA進(jìn)入空閑狀態(tài)。

    此外,Identify Device命令是主機以PIO方式從硬盤讀出512字節(jié)的屬性信息(包括硬盤的型號、容量等)。此時,數(shù)據(jù)處理單元不應(yīng)對該命令的數(shù)據(jù)進(jìn)行加/解密運算。

3.2 Ultra DMA命令處理流程

    以Ultra DMA模式傳輸數(shù)據(jù)的命令有Write DMA和Read DMA。下面我們以Ultra DMA寫操作為例介紹Ultra DMA命令處理流程。

    DMA傳輸通道的建立都是由硬盤通過DMARQ來請求的。FPGA接收到硬盤的DMA請求后首先初始化主機至FPGA的DMA通道,緊接著初始化FPGA至硬盤的DMA通道。此時主機經(jīng)FPGA到硬盤的DMA通道即已建立,主機向緩沖區(qū)一寫入數(shù)據(jù),同時數(shù)據(jù)處理單元對數(shù)據(jù)進(jìn)行加密運算,并將加密后的數(shù)據(jù)寫入緩沖區(qū)二,F(xiàn)PGA則將緩沖區(qū)二中的數(shù)據(jù)寫入硬盤。在傳輸過程中,若硬盤要求暫?;蛘呔彌_區(qū)二空,則FPGA暫停向硬盤發(fā)送數(shù)據(jù);若緩沖區(qū)一滿,則FPGA要求主機暫停發(fā)送數(shù)據(jù)。

圖3 PIO命令處理流程

 

    主機和硬盤都可以隨時停止當(dāng)前的DMA傳輸,未傳完的數(shù)據(jù)將等待硬盤下一次的DMA請求時再進(jìn)行傳輸。如果硬盤提出中止傳輸,F(xiàn)PGA將撤除FPGA至硬盤的DMA通道,同時向主機提出中止傳輸,撤除主機至FPGA的DMA通道,并計算該次所傳數(shù)據(jù)的CRC校驗。然后FPGA進(jìn)入等待狀態(tài),等待硬盤下一次的DMA請求。

    如果主機提出中止傳輸,F(xiàn)PGA將撤除主機至FPGA的DMA通道,同時繼續(xù)向硬盤發(fā)送數(shù)據(jù),直到將接收到主機的數(shù)據(jù)發(fā)送完畢,即緩沖區(qū)二空后,向硬盤提出中止傳輸,撤除FPGA至硬盤的DMA通道,并計算CRC校驗。然后FPGA進(jìn)入等待狀態(tài),等待硬盤下一次的DMA請求。

    在等待狀態(tài)下,若FPGA接收到硬盤的中斷請求,則說明該次命令的所有數(shù)據(jù)已經(jīng)傳完,命令結(jié)束。FPGA將命令執(zhí)行結(jié)果讀入寄存器組二,向主機產(chǎn)生中斷請求,進(jìn)入空閑狀態(tài)。若接收到硬盤的DMA請求,則說明硬盤還未接收到該次命令的所有數(shù)據(jù),此時需要判斷主機是否已將所有數(shù)據(jù)發(fā)送完。如果主機并沒有將所有數(shù)據(jù)發(fā)送完,則再次建立FPGA兩側(cè)的DMA通道,開始新一輪的DMA傳輸;如果主機已將所有數(shù)據(jù)發(fā)送完,則重新建立FPGA至硬盤的DMA通道,直到將緩沖區(qū)二中的數(shù)據(jù)發(fā)送完,并計算CRC校驗。

4 結(jié)束語

    本文采用FPGA實現(xiàn)了兩套符合ATA-6規(guī)范的IDE接口,完成主機與硬盤之間數(shù)據(jù)的截獲、處理和轉(zhuǎn)發(fā)。經(jīng)測試,系統(tǒng)在DOS、Windows 98、Windows  2000、Windows XP及 Red Hat Linux 9.0操作系統(tǒng)環(huán)境下,使用希捷、邁拓、三星、西數(shù)等公司的多種型號硬盤均工作正常,支持PIO和Ultra DMA兩種數(shù)據(jù)傳輸模式。由于通過FPGA實現(xiàn)一個完整的IDE接口,若對系統(tǒng)稍加改動,如在數(shù)據(jù)處理單元中加入相應(yīng)的文件系統(tǒng),即可實現(xiàn)脫機讀寫IDE硬盤,用于數(shù)據(jù)采集的海量存儲等多種場合,使系統(tǒng)具有較好的通用性。

    本文作者創(chuàng)新點:作者針對硬盤數(shù)據(jù)易泄密及高速大容量數(shù)據(jù)采集困難等問題,提出在主機和硬盤之間使用FPGA芯片構(gòu)建一個雙向IDE硬盤通道,實現(xiàn)兩套符合ATA-6規(guī)范的IDE接口,F(xiàn)PGA對主機與硬盤間的數(shù)據(jù)流進(jìn)行處理及轉(zhuǎn)發(fā),以實現(xiàn)硬盤數(shù)據(jù)加密、數(shù)據(jù)高速采集存儲及脫機控制硬盤等操作。系統(tǒng)支持PIO和Ultra DMA兩種數(shù)據(jù)傳輸模式,對操作系統(tǒng)透明,較常見的單向IDE通道,該系統(tǒng)通用性強,有較好的推廣價值。本文側(cè)重于用FPGA實現(xiàn)IDE接口協(xié)議,對實現(xiàn)過程及方法做了詳細(xì)描述,對讀者有較高的參考實用價值。

參考文獻(xiàn):

1  T13 Technical Committee.  Information Technology-AT Attachment with Packed Interface-6 (ATA/ATAPI-6). [S] Revision 1e.  2001
2  Friedhelm Schmidt,精英科技譯,SCSI總線和IDE接口:協(xié)議、應(yīng)用和編程(第二版),[M] 中國電力出版社,2001.3
3  Actel Corporation.  Libero User’s Guide.  2004
4         Actel Corporation,Pro ASIC PLUS Data sheet, Version v3.5,2004.4
5 基于FPGA的高速連續(xù)數(shù)據(jù)采集系統(tǒng)的設(shè)計 [J] 黃新財 佃松宜 汪道輝 《微計算機信息》2005年第21卷第2期58頁

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉