基于SOA架構的網(wǎng)絡(luò )硬盤(pán)控制器的設計
摘要:
項目設計一種采用“流程+引擎+構件”的SOA三層架構的網(wǎng)絡(luò )硬盤(pán)控制器。系統采用FPGA作為系統控制器,在FPGA內部MicroBlaze軟核處理器上移植PetaLinux操作系統,加載NFS網(wǎng)絡(luò )文件系統,將擴展Int 13H規范中定義的基本硬盤(pán)操作指令封裝成原子構件,并采用VHDL硬件描述語(yǔ)言實(shí)現各原子構件,實(shí)現對硬盤(pán)的基本操作。設計引擎模塊,根據NFS文件系統操作指令,調用相關(guān)原子操作,實(shí)現硬盤(pán)存儲空間管理、文件存儲操作、用戶(hù)管理等功能。本文設計網(wǎng)絡(luò )硬盤(pán)控制器可作為個(gè)人存儲服務(wù)器連接到以太網(wǎng),用戶(hù)可通過(guò)連接網(wǎng)絡(luò )的任意主機實(shí)現對服務(wù)器硬盤(pán)的訪(fǎng)問(wèn)管理。
1 引言
隨著(zhù)電子郵箱及網(wǎng)絡(luò )硬盤(pán)的普及,用戶(hù)可不用攜帶存儲設備,而直接通過(guò)網(wǎng)絡(luò )進(jìn)行數據的上傳和下載,實(shí)現個(gè)人數據的管理。然而,使用網(wǎng)絡(luò )運營(yíng)商提供的網(wǎng)絡(luò )硬盤(pán)可用空間有限,且數據保密性不強。本項目旨在研究一種適合于個(gè)人應用的網(wǎng)絡(luò )硬盤(pán)存儲裝置,該網(wǎng)絡(luò )硬盤(pán)使用RJ45接口連接到以太網(wǎng),通過(guò)以太網(wǎng)以TCP/IP協(xié)議,用戶(hù)可用以太網(wǎng)上任意主機實(shí)現對網(wǎng)絡(luò )硬盤(pán)的管理操作,與電子郵箱及網(wǎng)絡(luò )運營(yíng)商提供的網(wǎng)絡(luò )硬盤(pán)相比,此項目設計的個(gè)人網(wǎng)絡(luò )存儲硬盤(pán)有著(zhù)存儲空間容量大、使用安全、可靠性較高等優(yōu)點(diǎn)。
2 系統原理與特點(diǎn)
系統結構如圖2-1所示。
圖2-1 系統結構
用戶(hù)通過(guò)連接網(wǎng)絡(luò )的客戶(hù)端PC機采用TCP/IP協(xié)議實(shí)現文件的上傳和下載,上傳文件時(shí),用戶(hù)通過(guò)客戶(hù)端PC機向網(wǎng)絡(luò )硬盤(pán)控制器發(fā)送上傳文件指令,并發(fā)送文件數據,FPGA內以太網(wǎng)控制器模塊接收數據并由DDR2控制器模塊寫(xiě)入到DDR2中緩存,然后根據NFS協(xié)議將數據從DDR2中讀出經(jīng)硬盤(pán)控制器模塊寫(xiě)入到硬盤(pán)中保存;客戶(hù)端下載文件時(shí),用戶(hù)通過(guò)客戶(hù)端PC機向硬盤(pán)控制器發(fā)送下載文件指令,FPGA內以太網(wǎng)控制器模塊接收指令后,根據NFS協(xié)議將文件數據通過(guò)硬盤(pán)控制器模塊讀出并寫(xiě)入到DDR2緩存中,然后將數據由DDR2中讀出并由以太網(wǎng)控制器模塊,加載網(wǎng)絡(luò )協(xié)議棧,將數據由網(wǎng)絡(luò )發(fā)送到客戶(hù)端PC。
FPGA內部調用MicroBlaze處理器,移植PetaLinux操作系統,配置TCP/IP協(xié)議棧,加載NFS網(wǎng)絡(luò )文件系統,利用VHDL語(yǔ)言設計Int13H規范中定義的對硬盤(pán)操作的原子構件,并設計對原子構件調用的引擎管理模塊,將原子構件與引擎管理模塊以用戶(hù)IP核形式添加到與MicroBlaze處理器互聯(lián)的PLB片內總線(xiàn),FPGA內部系統模塊框圖如圖2-2所示。
圖2-2 FPGA內功能模塊
3 硬盤(pán)引擎管理模塊設計
借鑒互聯(lián)網(wǎng)分布式計算領(lǐng)域中網(wǎng)格計算、云計算技術(shù)廣泛采用的SOA架構為核心設計思想,首先進(jìn)行業(yè)務(wù)需求分析、根據業(yè)務(wù)用例、用例場(chǎng)景、業(yè)務(wù)步驟的分析過(guò)程找出對應的原子業(yè)務(wù)。根據業(yè)務(wù)原子業(yè)務(wù)映射到相應的系統需求進(jìn)行系統建模,通過(guò)形式語(yǔ)義將場(chǎng)景步驟序列描述為由一系列原子構件的組合。完成“流程+引擎+構件”的三層SOA結構的文件系統設計。
3.1 文件系統業(yè)務(wù)單元
文件系統是操作系統中負責管理和存儲文件信息的軟件系統。主要負責對文件存儲器空間進(jìn)行組織和分配,文件的存儲以及對存入的文件進(jìn)行保護和檢索。文件系統主要包括存儲空間管理、文件存儲操作、用戶(hù)管理這三個(gè)業(yè)務(wù)單元。
存儲實(shí)間管理主要包括對存儲空間的組織、分配和回收。文件存儲操作主要包括用戶(hù)對存儲空間文件的基本操作,包含文件的生成、刪除、打開(kāi)、關(guān)閉、文件讀、文件寫(xiě)等。用戶(hù)管理主要包括用戶(hù)的注冊、登錄以及用戶(hù)權限管理等。
3.2 提取業(yè)務(wù)用例
在提取文件系統的業(yè)務(wù)用例時(shí),主要是從業(yè)務(wù)主角——用戶(hù)的角度出發(fā),對文件系統的每一個(gè)業(yè)務(wù)單元進(jìn)行分析提取業(yè)務(wù)用例。
3.2.1 存儲空間管理
存儲空間管理業(yè)務(wù)單元的用例視圖如圖3-1所示。
圖3-1 存儲空間管理用例視圖
存儲空間管理該業(yè)務(wù)單元主要包括如下業(yè)務(wù)用例:初始化存儲空間、分配存儲空間、追加存儲空間、回收存儲空間、查詢(xún)剩余存儲空間。
3.2.2 文件存取操作
文件存取操作業(yè)務(wù)單元的業(yè)務(wù)用例視圖如圖3-2所示。
圖3-2 文件存取操作用例視圖
文件存取操作業(yè)務(wù)單元包括如下業(yè)務(wù)用例:建立文件、打開(kāi)文件、讀文件、寫(xiě)文件、關(guān)閉文件、保存文件、刪除文件、保存文件、列舉文件、檢索文件、復制文件等。
3.2.3 用戶(hù)管理
用戶(hù)管理用例視圖如圖3-3所示。
圖3-3 用戶(hù)管理用例視圖
用戶(hù)管理該業(yè)務(wù)單元包括的業(yè)務(wù)用例主要有填加用戶(hù)、刪除用戶(hù)、用戶(hù)登錄、用戶(hù)退出、設置用戶(hù)權限、修改用戶(hù)權限等。
3.3業(yè)務(wù)用例場(chǎng)景
3.3.1 劃分業(yè)務(wù)用例場(chǎng)景
業(yè)務(wù)用例在實(shí)際執行的進(jìn)程中可能會(huì )有多種不同的情況發(fā)生,每一種情況都稱(chēng)為該業(yè)務(wù)用例的一個(gè)業(yè)務(wù)用例場(chǎng)景,也可以說(shuō)業(yè)務(wù)用例場(chǎng)景是指實(shí)例化的用例。通過(guò)對文件系統的業(yè)務(wù)用例進(jìn)行分析,劃分出文件系統的業(yè)務(wù)用例場(chǎng)景如表1所示。
表3-1 文件系統業(yè)務(wù)用例場(chǎng)景
業(yè)務(wù)用例 | 業(yè)務(wù)用例場(chǎng)景 | 說(shuō)明 |
初始化存儲空間 | 初始化存儲空間 | 對未進(jìn)行初始化設置的空間進(jìn)行初始化。 |
分配存儲空間 | 分配存儲空間 | 為新創(chuàng )建的文件分配存儲空間。 |
追加存儲空間 | 追加存儲空間 | 對現有存儲空間已滿(mǎn)的文件追加新的存儲空間 |
回收存儲空間 | 回收存儲空間 | 文件被刪除后,回收不用的存儲空間 |
建立文件 | 創(chuàng )建文檔文件 | 創(chuàng )建一個(gè)新的文件并存檔 |
創(chuàng )建文件夾 | 建立文件的組織單元 | |
打開(kāi)文件 | 打開(kāi)文檔文件 | 打開(kāi)一個(gè)已經(jīng)存在的文件 |
打開(kāi)文件夾 | 打開(kāi)一個(gè)已經(jīng)存在的文件夾 | |
讀文件 | 順序讀文件 | 從文件頭順序讀取文件內容 |
隨機讀文件 | 從指定位置處讀取指定長(cháng)度的文件內容 | |
寫(xiě)文件 | 寫(xiě)文件 | 從指定位置處向已創(chuàng )建文件中寫(xiě)入內容 |
關(guān)閉文件 | 關(guān)閉文檔文件 | 關(guān)閉已經(jīng)打開(kāi)的文件 |
關(guān)閉文件夾 | 關(guān)閉已經(jīng)打開(kāi)的文件夾 | |
保存文件 | 保存文件 | 對文件內容或屬性有過(guò)更改的文件進(jìn)行存檔 |
刪除文件 | 刪除文件內容 | 刪除指定位置處指定長(cháng)度的文件內容 |
刪除文件 | 刪除已經(jīng)存在的文檔性質(zhì)的文件 | |
刪除文件夾 | 刪除已經(jīng)存在的存放文檔的文件夾 | |
列舉文件 | 列舉當前文件夾下文件 | 列舉當前文件夾目錄中的所有文件,包括文件夾和文檔文件。 |
列舉存儲空間的所有文件 | 列舉存儲空間中的所有文件夾和文件 | |
檢索文件 | 在當前文件夾檢索 | 在當前文件夾中查找指定名稱(chēng)的文件或文件夾 |
在整個(gè)存儲空間檢索 | 從整個(gè)存儲空間查找指定名稱(chēng)的文件或文件夾 | |
改變目錄 | 進(jìn)入子目錄 | 進(jìn)入當前目錄的下級目錄 |
返回父目錄 | 返回當前目錄的上級目錄 | |
填加用戶(hù) | 注冊用戶(hù) | 登記允許對存儲空間內文件進(jìn)行操作的用戶(hù)信息 |
刪除用戶(hù) | 刪除用戶(hù) | 刪除已登記的文件系統的用戶(hù)信息 |
用戶(hù)登錄 | 用戶(hù)登錄 | 用戶(hù)進(jìn)入文件存儲空間 |
用戶(hù)退出 | 用戶(hù)退出 | 用戶(hù)退出文件存儲空間 |
修改用戶(hù)信息 | 修改用戶(hù)信息 | 修改已登記的用戶(hù)信息 |
設置用戶(hù)權限 | 設置用戶(hù)權限 | 對進(jìn)入文件存儲空間用戶(hù)的文件操作權限進(jìn)行設置 |
3.3.2 描述業(yè)務(wù)用例
本文對文件系統業(yè)務(wù)用例描述采用的是用例文檔和UML的活動(dòng)圖,通過(guò)畫(huà)出文件系統業(yè)務(wù)用例場(chǎng)景的活動(dòng)圖,按照所用例文檔模板的格式對活動(dòng)圖進(jìn)行描述,建立文件系統的業(yè)務(wù)用例模型,得到文件系統的業(yè)務(wù)需求文檔。
3.4 提取原子業(yè)務(wù)
前面對文件系統進(jìn)行了業(yè)務(wù)建模,分析了文件系統的業(yè)務(wù)參與者、業(yè)務(wù)用例和業(yè)務(wù)場(chǎng)景,在此小結中將分析提取文件系統的原子業(yè)務(wù)。主要通過(guò)分析業(yè)務(wù)場(chǎng)景的主干流程來(lái)進(jìn)行原子業(yè)務(wù)的提取。
3.4.1 存儲空間管理原子業(yè)務(wù)分析
以追加存儲空間為例分析業(yè)務(wù)流程。
前置條件:文件當前存儲空間不足,文件剩余存儲空間中有足夠的空閑空間。
后置條件:成功為文件追加空閑存儲空間。
該業(yè)務(wù)流程由如下業(yè)務(wù)步驟組成:
1>.文件存儲空間不足,申請新的存儲空間;
2>.文件定位;
3>.追加新的存儲空間。
分析上述業(yè)務(wù)步驟,畫(huà)出追加存儲空間業(yè)務(wù)用例場(chǎng)景的業(yè)務(wù)流程圖如圖3-4所示。
圖3-4 追加存儲空間活動(dòng)圖
經(jīng)分析追加存儲空間該業(yè)務(wù)用例中可提取出兩個(gè)原子業(yè)務(wù):文件定位、追加存儲空間。分析存儲空間管理業(yè)務(wù)單元其它業(yè)務(wù)用例場(chǎng)景的業(yè)務(wù)流程后,得出該業(yè)務(wù)單元原子業(yè)務(wù)樹(shù)狀結構圖如圖3-5所示。
圖3-5 存儲空間管理原子業(yè)務(wù)模型結構圖
3.4.2 文件存取操作原子業(yè)務(wù)分析
以順序讀文件為例分析業(yè)務(wù)流程。
前置條件:文件存在并且可讀。
后置條件:從文件指定位置處順序讀取指定長(cháng)度內容。
該業(yè)務(wù)流程由如下業(yè)務(wù)步驟組成:
1>.確定文件所在存儲空間;
2>.打開(kāi)目標文件;
3>.讀取指定長(cháng)度的文件內容;
4>.關(guān)閉文件。
分析上述業(yè)務(wù)步驟,畫(huà)出順序讀文件業(yè)務(wù)用例場(chǎng)景的業(yè)務(wù)流程圖如圖3-6所示。
經(jīng)分析順序讀取文件該業(yè)務(wù)用例中可提取出四個(gè)原子業(yè)務(wù):文件定位、打開(kāi)文件、順序讀文件、關(guān)閉文件。
分析文件存取操作業(yè)務(wù)單元其它業(yè)務(wù)用例場(chǎng)景的業(yè)務(wù)流程后,提取出該業(yè)務(wù)單元原子業(yè)務(wù)樹(shù)狀結構圖如圖3-7所示。
圖3-6 順序讀取文件業(yè)務(wù)活動(dòng)圖
3.4.3 用戶(hù)管理原子業(yè)務(wù)分析
以注冊用戶(hù)為例分析業(yè)務(wù)流程。
前置條件:有權限成為文件系統用戶(hù)。
后置條件:注冊成功,分配用戶(hù)名。
該業(yè)務(wù)流程由如下業(yè)務(wù)步驟組成:
1>.管理員進(jìn)入存儲空間;
2>.登記用戶(hù)信息。
分析上述業(yè)務(wù)步驟,畫(huà)出注冊用戶(hù)業(yè)務(wù)用例場(chǎng)景的業(yè)務(wù)流程圖如圖3-8所示。經(jīng)分析注冊用戶(hù)該業(yè)務(wù)用例中可提取出兩個(gè)原子業(yè)務(wù):用戶(hù)登錄、登記用戶(hù)信息。
分析用戶(hù)管理業(yè)務(wù)單元其它業(yè)務(wù)用例場(chǎng)景的業(yè)務(wù)流程后,得出該業(yè)務(wù)單元原子業(yè)務(wù)部分樹(shù)狀結構圖如圖3-9所示。
圖3-9 用戶(hù)管理原子業(yè)務(wù)模型結構圖
通過(guò)以上對文件系統各業(yè)務(wù)單元的分析,提取文件系統完整的原子業(yè)務(wù)及其描述如表3-2所示。
表3-2 文件系統原子業(yè)務(wù)及其描述
序號 | 原子業(yè)務(wù) | 描述 |
1 | 初始化空間(Initialize_Space) | 對文件系統的存儲空間容量大小和分區容量進(jìn)行初始化設置。 |
2 | 分配空間(Allocate_Space) | 為新建文件或文件夾分配存儲空間 |
3 | 文件定位(Locate_File) | 確定文件所在存儲空間地址。 |
4 | 追加空間(Supplement_Space) | 文件存儲空間不足紿文件追加新的存儲空間。 |
5 | 釋放空間(Free_Space) | 將存儲空間改為未用。 |
6 | 查詢(xún)分區容量(Inquiry_Space) | 查詢(xún)分區空閑存儲空間大小。 |
7 | 設置文件為打開(kāi)狀態(tài)(Set_File_Open) | 更改文件為“打開(kāi)”狀態(tài) |
8 | 設置文件夾為打狀態(tài)(Set_Folder_Open) | 更改文件夾為“打開(kāi)”狀態(tài) |
9 | 設置文件為關(guān)閉狀態(tài)(Set_File_Open) | 更改文件為“關(guān)閉”狀態(tài) |
10 | 設置文件夾為關(guān)閉狀態(tài)(Set_Folder_Open) | 更改文件夾為“關(guān)閉”狀態(tài) |
11 | 順序讀文件(Sequence_Read_File) | 按順序讀取指定長(cháng)度的文件內容 |
12 | 隨機讀文件(Random_Read_File) | 隨機讀取指定長(cháng)度的文件內容 |
13 | 寫(xiě)文件(Write_File) | 向文件內寫(xiě)入指定長(cháng)度文件內容 |
14 | 更新文件(Update_File) | 文件進(jìn)行讀寫(xiě)后更改文年屬性和內容 |
15 | 查找文件(Find_File) | 在指定空間查找指定文件名的文件 |
16 | 列舉文件(File_Enumeration) | 列舉指定空間的所有文件 |
17 | 登記用戶(hù)信息(Rsgister_User_Information) | 登記文件系統用戶(hù)信息。 |
18 | 修改用戶(hù)信息(Modify_User_Information) | 修改已登記的用戶(hù)信息 |
19 | 刪除用戶(hù)信息 (Delete_User_Information) | 刪除已登記的文件系統用戶(hù)信息 |
20 | 用戶(hù)進(jìn)入 (User_Enter) | 用戶(hù)進(jìn)入文件存儲空間,查看空間內文件 |
21 | 用戶(hù)退出 (User_Exit) | 用戶(hù)退出存儲空間 |
22 | 設置用戶(hù)權限(Set_Premissions) | 設置用戶(hù)訪(fǎng)問(wèn)文件的權限。 |
4 Petalinux及NFS網(wǎng)絡(luò )文件系統的移植
Petalinux的移植主要工作為硬件平臺搭建,以及內核的裁剪與移植,其中硬件平臺的搭建在windows操作系統上安裝的Xilinx EDK環(huán)境中完成,選擇Virtex5-lx110t開(kāi)發(fā)板,由于網(wǎng)絡(luò )文件服務(wù)器的需要選擇以太網(wǎng)的IP核,DDR,串口,定時(shí)器等并添加相應的中斷,成功建立工程的block diagram 如圖4-1所示。
圖4-1 搭建工程框圖
然后進(jìn)行基于Petalinux軟件平臺的配置,操作系統和庫選項選擇Petalinux,修改主要存儲空間和輸入輸出的當前值,軟件平臺搭建完畢,最后生成庫和板級支持包,然后生成比特流文件下載至目標板測試工程的正確性。
Petalinux是一套開(kāi)發(fā)環(huán)境,linux內核的裁剪以及移植在安裝centos 5.6 操作系統的主機完成首先利用Petalinux自帶的工具創(chuàng )建嵌入式平臺,將在windows下完成的工程拷貝到Linux系統,轉換到Linux系統格式,根據開(kāi)發(fā)板選擇新的平臺,然后用make menuconfig 命令進(jìn)入內核裁剪的圖形化界面,合理的裁剪之后進(jìn)行編譯將生成的image.bin文件通過(guò)下載線(xiàn)下載至開(kāi)發(fā)板的DDR SDRAM中,在串口終端可以看到系統啟動(dòng)信息,如圖4-2所示。
圖4-2 系統啟動(dòng)信息
網(wǎng)絡(luò )文件系統支持以應用程序在客戶(hù)端通過(guò)網(wǎng)絡(luò )存取位于服務(wù)器磁盤(pán)中數據的一種文件系統協(xié)議,大多數網(wǎng)絡(luò )文件系統都分成客戶(hù)端和文件服務(wù)器兩部分??蛻?hù)端以邏輯文件塊的方式存取數據,文件服務(wù)器使用塊映射存取真正的磁盤(pán)塊,并完成磁盤(pán)格式和元數據(如目錄)的管理,對客戶(hù)端完全屏蔽,一般客戶(hù)端和文件服務(wù)器以TCP/IP方式通信。NFS是網(wǎng)絡(luò )文件系統(Network File System)的簡(jiǎn)稱(chēng),是分布式計算機系統的一個(gè)組成部分,可實(shí)現在異種網(wǎng)絡(luò )上共享和裝配遠程文件系統,可讓不同操作系統的計算機共享數據。
NFS服務(wù)器的移植:nfs服務(wù)器的實(shí)現需要內核nfsd的支持外加兩個(gè)應用程序套件 portmap 和nfs-utils ,Petalinux中移植此應用程序,下載此應用程序的源碼,添加到petalinux的usr目錄下,修改makefile 和config.in 文件,重新配置內核加入nfs服務(wù)器端的支持,同時(shí)交叉編譯此應用程序,將生成的可執行文件復制到 romfs 的bin 目錄下,再在etc 目錄下添加exports 文件用來(lái)設置可掛載目錄,使得Petalinux 系統具有nfs服務(wù)器端的功能。
5 IDE硬盤(pán)控制器的設計
IDE(Integrated Drive Electronics,集成驅動(dòng)電子設備)是由Compaq開(kāi)發(fā)并由Western Digital公司生產(chǎn)的硬盤(pán)驅動(dòng)器。IDE是在早期的ST506硬盤(pán)基礎上改進(jìn)而成的,采用40線(xiàn)的單組電纜進(jìn)行連接,數據傳輸的可靠性得到了增強,硬盤(pán)制造起來(lái)變得容易,因為廠(chǎng)商不需要再擔心自己的硬盤(pán)是否與其他廠(chǎng)商生產(chǎn)的控制器兼容,對用戶(hù)而言,硬盤(pán)安裝起來(lái)也更為方便。因此IDE接口實(shí)際上是系統級接口,故也稱(chēng)為ATA(Advanced Technology Attachment)接口,(ATA更接近于接口的協(xié)議層標準,而IDE多用于描述接口的物理結構)。其傳輸方式主要有PIO和DMA兩種。ATA接口規范從最初的ATA-1版本已發(fā)展到ATA-7版本。
5.1 硬盤(pán)接口信號
ATA/ATAPI-6標準中定義的主機和設備端之間的通信連接信號如表5-1所示。其中,左邊是對信號的描述,中間表示信號的傳輸方向(由主機到設備還是由設備到主機),右邊表示信號的名稱(chēng)。
- CS(1:0)-:主機發(fā)送給硬盤(pán)的片選信號,實(shí)現對寄存器的選擇;
- DA(2:0):主機發(fā)送給硬盤(pán)的地址信號,用來(lái)實(shí)現對硬盤(pán)寄存器的尋址;
- DD(15:0):主機與硬盤(pán)之間的數據連接線(xiàn),當主機對硬盤(pán)寄存器進(jìn)行讀寫(xiě)時(shí),使用該數據總線(xiàn)的低八位進(jìn)行數據傳輸,當對數據寄存器進(jìn)行讀寫(xiě)時(shí),用該總線(xiàn)的16位進(jìn)行數據傳輸;
- DIOR-:HDMARDY-:HSTROBE:復用信號,表示對寄存器讀信號/Ultra DMA就緒/Ultra DMA數據輸出同步信號,DIOR-表示主機對硬盤(pán)寄存器的讀信號,HDMARDY-表示Ultra DMA數據輸入時(shí),主機發(fā)出的就緒信號,HSTROBE表示Ultra DMA數據輸出時(shí)主機發(fā)出的時(shí)鐘同步信號,雙沿有效,即在該信號的上升沿和下降沿,主機將數據輸出;
- DIOW-:STOP:復用信號,表示主機寫(xiě)寄存器命令/主機終止Ultra DMA突發(fā)傳輸信號,DIOW-表示主機發(fā)出的對硬盤(pán)寄存器的寫(xiě)命令信號。在Ultra DMA突發(fā)傳輸時(shí),主機可通過(guò)使能STOP信號來(lái)終止Ultra DMA突發(fā)傳輸。
- DMACK-:在DMA開(kāi)始傳輸時(shí),主機對硬盤(pán)發(fā)出的DMA傳輸請求的應答信號;
- DMARQ:當硬盤(pán)準備好數據收發(fā)時(shí),給主機發(fā)出的DMA傳輸請求信號;
- INTRQ:硬盤(pán)發(fā)出的中斷請求信號;
- IORDY:DDMARDY-:DSTROBE:硬盤(pán)發(fā)出的I/O通道就緒/Ultra DMA硬盤(pán)就緒/Ultra DMA數據輸入同步信號。IORDY表示在PIO數據傳輸中,當硬盤(pán)沒(méi)有準備好數據傳輸時(shí),使能該信號無(wú)效以延長(cháng)主機對硬盤(pán)的訪(fǎng)問(wèn)時(shí)間。DDMARDY-表示在Ultra DMA數據傳輸中硬盤(pán)發(fā)出的流量控制信號,該數據有效時(shí),表示硬盤(pán)已準備好接收Ultra DMA傳輸數據,硬盤(pán)使能該信號無(wú)效可暫停Ultra DMA數據傳輸。DSTROBE表示在Ultra DMA數據傳輸時(shí),硬盤(pán)發(fā)出的數據鎖存信號,主機可在該信號的上升沿和下降沿接收數據;
- RESET-:主機發(fā)出的硬盤(pán)復位信號,低電平有效。
表5-1 硬盤(pán)接口信號
5.2 硬盤(pán)接口寄存器
主機對硬盤(pán)的訪(fǎng)問(wèn)是通過(guò)對接口寄存器的訪(fǎng)問(wèn)來(lái)實(shí)現的。ATA-6標準規定的硬盤(pán)接口寄存器如表5-2所示。這些寄存器按照功能劃分為命令寄存器(Command block registers)和控制寄存器(Control block registers)。命令寄存器用來(lái)接收主機發(fā)出的各種命令和傳送數據,包括數據寄存器、扇區計數寄存器等??刂萍拇嫫饔米骺刂朴脖P(pán)操作,如使能硬盤(pán)中斷、選擇硬盤(pán)等。
表5-2 硬盤(pán)端接口寄存器
5.3 硬盤(pán)控制器模塊設計
硬盤(pán)控制器模塊內部結構如圖5-1所示。
圖5-1 硬盤(pán)控制器模塊內部結構
5.3.1 總線(xiàn)接口模塊
總線(xiàn)接口模塊是硬盤(pán)控制器與PLB總線(xiàn)的連接模塊,接收處理器通過(guò)PLB總線(xiàn)發(fā)來(lái)的操作命令及讀寫(xiě)數據。
5.3.2 硬盤(pán)復位模塊
硬盤(pán)上電后需要完成一個(gè)復位過(guò)程,即ATA/ATAPI-6標準中描述的上電及硬件復位協(xié)議。復位過(guò)程既可以通過(guò)軟件編程實(shí)現也可以通過(guò)在硬盤(pán)控制器內部設計專(zhuān)用的邏輯來(lái)實(shí)現。系統上電后,硬盤(pán)控制器通過(guò)硬盤(pán)復位模塊生成一個(gè)寬帶大于25us的低電平復位信號,復位信號回到高電平2ms后,即復位操作完成。復位信號波形如圖5-2所示。
圖5-2 復位信號波形
5.3.3 PIO模塊
該模塊的功能是產(chǎn)生讀寫(xiě)硬盤(pán)內部寄存器的時(shí)序,該模塊產(chǎn)生待訪(fǎng)問(wèn)的硬盤(pán)寄存器的地址線(xiàn),并輸出讀寫(xiě)信號,根據數據傳輸方向,發(fā)送數據到數據線(xiàn)或從數據線(xiàn)上讀取數據,操作完成后,釋放地址、數據線(xiàn)。
根據PIO讀寫(xiě)時(shí)序,該模塊應實(shí)現以下功能:
- 產(chǎn)生訪(fǎng)問(wèn)硬盤(pán)寄存器的地址信號,并具有一定有效寬帶。
- 產(chǎn)生相應的讀寫(xiě)信號DIOR-/DIOW-,當為寫(xiě)操作時(shí),使數據具有規定的建立和保持時(shí)間;當為讀操作時(shí),給出讀數據的時(shí)機。
- 處理硬盤(pán)輸入的IORDY信號,當IORDY無(wú)效時(shí),應延長(cháng)對硬盤(pán)的讀寫(xiě)周期。
5.3.4 Ultra DMA模塊
Ultra DMA模塊是硬盤(pán)控制器的關(guān)鍵模塊,其主要功能是實(shí)現Ultra DMA突發(fā)數據輸出時(shí)序的控制。Ultra DMA操作可分為三個(gè)階段,分別是初始階段、數據傳輸階段、傳輸中止階段。
初始階段的時(shí)序描述為:當硬盤(pán)發(fā)出DMA請求信號DMARQ,控制器通過(guò)DMACK-進(jìn)行應答,等到硬盤(pán)發(fā)出的DDMARDY-信號有效后,控制器開(kāi)始輸出HSTROBE信號。
數據傳輸階段的時(shí)序描述為:HSTROBE時(shí)鐘的上升沿和下降沿都觸發(fā)數據輸出,在數據傳輸過(guò)程中,控制器可通過(guò)停止產(chǎn)生HSTROBE信號來(lái)暫停數據的輸出,硬盤(pán)可以通過(guò)使DDMARDY-信號無(wú)效來(lái)暫停數據的接收。
傳輸終止階段,控制器和硬盤(pán)都可終止數據傳輸,終止數據傳輸可分為四個(gè)過(guò)程:停止請求、停止檢查、HSTROBE返回高電平、發(fā)送CRC校驗值。對于控制器停止數據傳輸,首先停止產(chǎn)生HSTROBE時(shí)鐘信號,發(fā)出STOP命令信號,控制器檢查硬盤(pán)的DDMARDY和DMARQ均無(wú)效后,使HSTROBE返回高電平,使DMACK-無(wú)效,并在DMACK-信號跳變沿處輸出CRC校驗值到數據線(xiàn)DD(15:0),如圖5-3所示。對于硬盤(pán)停止數據傳輸,通過(guò)使DDMARDY和DMARQ均無(wú)效來(lái)停止數據傳輸,控制器需要在tL1時(shí)間內發(fā)出STOP信號,使HSTROBE返回高電平,使DMACK-無(wú)效,并輸出CRC校驗值至DD(15:0),如圖5-4所示。
圖5-3 控制器終止Ultra DMA數據傳輸時(shí)序
圖5-4 硬盤(pán)終止Ultra DMA數據傳輸時(shí)序
5.3.5 控制器模塊
控制模塊是硬盤(pán)控制器的核心,該模塊的主要功能是實(shí)現CPU對硬盤(pán)控制器中寄存器的配置,并根據相關(guān)寄存器的寫(xiě)入信息實(shí)現對應的控制操作。
6 總結
項目設計一種基于“流程+引擎+構件”SOA三層架構的網(wǎng)絡(luò )硬盤(pán)控制器。采用FPGA作為系統控制器,在MicroBlaze軟核處理器上移植PetaLinux操作系統,加載NFS網(wǎng)絡(luò )文件系統,將擴展Int 13H規范中定義的基本硬盤(pán)操作指令封裝成原子構件,采用VHDL硬件描述語(yǔ)言實(shí)現各原子構件操作。設計引擎管理模塊,根據NFS文件系統操作指令,調用相關(guān)原子操作,實(shí)現硬盤(pán)存儲空間管理、文件存儲操作、用戶(hù)管理等功能。
評論