趙志勇 ,呂玉祥*,趙曉龍,馬維青*
(1.太原理工大學物理與光電工程學院,太原 030024;2.山西省電力公司陽泉供電分公司,山西陽泉0 45000)
目前,在圖像、視頻和音頻處理以及信息家電的實際應用中都需要存儲大量的數據,針對以往ATA接口控制器工作時需要CPU的控制訪問不符合低成本、高速度的數據傳輸要求。本研究將通常由主機實現的ATA控制流程提取出來,選取其中的UltraDMA方式,實現一種脫離主機的硬盤訪問系統(tǒng),這樣可以有效節(jié)省處理器和內存資源,提高數據存儲速度[1]。
目前市場上的ATA IP核都是面向IC設計的,不利于在FPGA上集成,因此本研究基于Virtex-II FPGA實現的可獨立工作的UltraDMA控制器IP核,對國內邏輯IP核的發(fā)展起到了推動作用[2]。
本文所設計的數據傳輸控制器包括了以下3個模塊,分別是UltraDMA讀寫控制模塊、發(fā)送緩沖模塊以及接收緩沖模塊。UltraDMA讀寫控制模塊實現對硬盤寄存器的訪問和用戶數據的傳輸,是整個讀寫控制器中最重要的部分。接收/發(fā)送緩沖模塊采用雙端口RAM技術分別用來緩存用戶發(fā)送的數據和接收的數據??傮w架構如圖1所示。
圖1 總體架構
ATA技術是一個關于IDE(Integrated Device Electronics)的技術規(guī)范族。在ATA協(xié)議中,主機和ATA硬盤互聯(lián)的物理、電氣特性,信號傳輸以及相關命令的規(guī)范都有著明確的定義。ATA的傳輸模式主要包括以下3種:PIO模式、MDMA模式和Ultra?DMA模式。PIO模式是一種通過CPU執(zhí)行I/O端口指令來進行數據的讀寫的數據交換模式,傳輸速率只能達到16.7 Mbyte/s,對處理器資源的占用量極大,目前應用已經較少;MDMA模式在傳輸速率上和PIO模式同樣達到了16.7 Mbyte/s,但是已經可以有效地減少對處理器資源的占用;UltraDMA模式傳輸速率可以達到133 Mbyte/s,已經能夠明顯超越PIO模式和MDMA模式,成為了目前主流的硬盤傳輸方式[3]。
UltraDMA在決定開始數據傳輸之前會對硬盤寄存器進行訪問,通過寄存器的狀態(tài)對硬盤的當前狀態(tài)進行一次判斷,從而決定是否開始傳輸數據。主機對硬盤的讀寫操作是通過向硬盤中的寄存器發(fā)送讀寫等命令來實現的[4]。與UltraDMA相關的寄存器如表1所示。
表1 寄存器組
ATA接口一共有40個引腳,其中DDI(15:0)為雙向數據引腳;CBLID、DASP、ddmardy_dstrobe、dmarq、intrq和iordy控制硬盤數據進入主機,CS(1∶0)、DA(2∶0)、CSEL、dmack-out、hdmardy_hstrobe、reset和stop控制數據進入硬盤,共16個控制線。圖2所示為RTL頂層封裝圖,圖2顯示了ATA協(xié)議中所需要的主要引腳位置,該封裝為VHDL代碼經ISE綜合而成[5]。
圖2 接口定義
UltraDMA的執(zhí)行過程可以分為3個階段:連接初始化、數據傳輸和連接終止。UltraDMA數據輸入(主機讀)的初始化過程:首先硬盤向主機發(fā)出DMA的請求,主機會在Tui的時間內將DMACK置1,stop置0,HDMARDY置1,硬盤主機準備接受數據,等待第1個DSTROBE的跳變,第1組數據通過數據總線(dd(15∶0))傳輸給主機,初始化結束。
當所有數據傳輸結束時,進入連接終止階段。主機和硬盤均可終止連接,硬盤端啟動終止連接程序:首先硬盤端使DMA請求信號無效;主機端檢測到DMARQ無效后,在Tli時間內置高STOP信號、復位HDMARDY信號;硬盤在收到STOP跳變后的Tli時間內置高DSTROBE信號,表明此后沒有數據等待傳輸;此后主機端產生DMACK-跳變沿,同時將CRC校驗傳入數據總線,硬盤收到校驗結果與自己的校驗值進行比較,以此判斷傳輸是否錯誤[6]。
用VHDL實現UltraDMA控制器時,主要采用狀態(tài)機來控制整個讀/寫流程,定義的狀態(tài)轉移圖如圖3所示,在每個狀態(tài)執(zhí)行固定操作,這樣思路清晰易于實現。
圖3 UltraDMA狀態(tài)轉移圖
(1)st_idle 空閑狀態(tài);
(2)st_readst1 讀狀態(tài)寄存器;查看是否硬盤空閑來決定是否繼續(xù)訪問硬盤;
(3)st_selectdev 設備選擇狀態(tài);寫設備/磁頭寄存器對將要訪問的設備進行選擇;
(4)st_readst2 讀狀態(tài)寄存器;讀取硬盤狀態(tài),空閑進入下一狀態(tài),否則保持;
(5)st_setfeature 設置接口特性;01000寫入扇區(qū)寄存器高5位,設置接口為UltraDMA模式,010寫入低3位,選擇模式2;
(6)st_readst3 讀狀態(tài)寄存器;
(7)st_weparameter 寫命令參數;扇區(qū)數寄存器存儲本次需要傳輸數據所占扇區(qū)數;
(8)st_wec 寫命令;C8H為讀操作,CAH為寫操作;
(9)st_initiate UltraDMA初始化;
(10)st_transdata 數據傳輸狀態(tài);
(11)st_crc 終止連接和發(fā)送CRC校驗值;
(12)st_readst4 讀狀態(tài)寄存器;
(13)St_err狀態(tài) 錯誤狀態(tài)。當有錯誤發(fā)生時進入此狀態(tài)。
本文選擇的編譯環(huán)境為ISE10.1,編程語言選擇使用VHDL,通過編譯、綜合和布局布線,最后下載到開發(fā)板上進行了驗證。圖4~圖7為在UltraDMA控制器讀寫硬盤時用Chipscope軟件抓取的數據情況。
本文首先進行了UltraDMA讀(data_in)硬盤的驗證。硬盤讀取數據的過程可以總結為如下過程:數據讀初始化、數據讀取、數據讀取終止。UltraD?MA硬盤讀取的初始化過程如圖4所示,硬盤發(fā)出請求,通過DMACK,stop和hdmardy的響應,主機做好接收數據的準備。隨著第一組16位數據的傳輸,DSTROBE引腳發(fā)生一次跳變,結束數據傳輸初始化過程。圖5顯示了數據傳輸終止過程的時序圖,引導區(qū)標記數據為AA55,CRC校驗值為F445。在DMACK發(fā)生跳變時,該校驗值傳給硬盤,由此判斷數據傳輸是否正確[7]。
圖4 UltraDMA data_in初始化
圖5 UltraDMA data_in終止
圖6 UltraDMA data_out初始化
圖7 UltraDMA data_out終止
本文同樣驗證了UltraDMA寫(data_out)硬盤的功能。設定向硬盤寫入0 000 h-00 FFh共256個512 byte(一個扇區(qū))數據,此數據預先存入發(fā)送緩沖區(qū)。圖6為data_out初始化階段,硬盤與控制器“握手”完成后,由控制器產生第1個HSTROBE跳變,同時把第一個數據(0 000 h)傳入數據總線,此后數據按順序傳輸[8]。圖7為傳輸結束階段,硬盤首先使ddmardy(低電平有效)和dmarq無效,主控制器端則產生stop信號,并在最后一個HSTROBE跳變沿傳輸最后兩字節(jié)數據(00 FFh)。用戶數據傳輸完后在DMACK跳變沿將CRC校驗值(8 985 h)傳給硬盤。
整個驗證過程在無CPU環(huán)境下進行,控制器的讀/寫由各自使能信號控制完成,因此該控制器可以作為一個獨立的模塊應用于系統(tǒng)中[9]。
本文采用FPGA實現符合ATA標準的UltraD?MA讀寫控制器,在無CPU的情況下,能夠獨立完成對硬盤的讀寫操作。經測試,本控制器與希捷、邁拓、三星等公司的多種型號硬盤連接均能正常工作。若對控制器稍加改動,如配合相應文件系統(tǒng),如FAT32或者EXT,將可用于嵌入式設備中,實現海量數據存儲,使系統(tǒng)具有更好的實用性。
[1]于明喆,李暉,申婷.Nios系統(tǒng)基礎上的UltraDMA數據傳輸模式[J].單片機與嵌入式系統(tǒng)應用,2006(2):32-35.
[2]孫偉,郭寶龍,武曉玥.等.DSP視頻存儲關鍵技術研究及實現[J].電視技術,2009,33(6):30-32.
[3]Information Tichnology-AT Attachment with Packet Interface-7(ATA/ATAPI-7)(S):2003.
[4]胡偉,慕德俊,劉航,等.嵌入式ATA主機控制器IP核設計[J].計算機測量與控制,2009,17(1):192-194.
[5]于祥鳳,劉學斌,胡炳樑,等.UDMA突發(fā)數據傳輸中CRC的應用[J].電子器件,2008,31(5):10-31.
[6]Bo Li,Yu Peng,Liu Da tong.A High Speed DMA Transaction Method for PCI Express Devices[J].Journal Of Electronic Science And Technology Of China,2009,7(4):380-384.
[7]于磊,孟令軍,張園,等.基于FPGA的PCI-Express接口卡設計[J].計算機測量與控制,2014,22(1):152-154.
[8]楊立成,劉丹峰,史繼輝.基于DMA的大批量數據快速傳輸模塊設計[J].電子科技,2012,25(12):49-51.
[9]何瓊,陳鐵,程鑫.DMA在高速實時數據采集系統(tǒng)中的應用[J].儀表技術與傳感器,2012(3):49-52.
趙志勇(1988-),男,漢族,山西省呂梁市人,碩士研究生,研究方向為電子設備的研發(fā),zhaozhiyong217@163.com;
呂玉祥(1964-),男,漢族,山西省太原市人,太原理工大學教授,主要研究領域為光電子技術及電力電子設備的研究,lyx823@126.com。