<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于SOA架構(gòu)的網(wǎng)絡(luò)硬盤控制器的設(shè)計

          基于SOA架構(gòu)的網(wǎng)絡(luò)硬盤控制器的設(shè)計

          作者: 時間:2017-06-04 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/201706/348101.htm

          摘要:

          項目設(shè)計一種采用“流程+引擎+構(gòu)件”的SOA三層架構(gòu)的。系統(tǒng)采用FPGA作為系統(tǒng),在FPGA內(nèi)部MicroBlaze軟核處理器上移植PetaLinux操作系統(tǒng),加載NFS網(wǎng)絡(luò)文件系統(tǒng),將擴展Int 13H規(guī)范中定義的基本硬盤操作指令封裝成原子構(gòu)件,并采用VHDL硬件描述語言實現(xiàn)各原子構(gòu)件,實現(xiàn)對硬盤的基本操作。設(shè)計引擎模塊,根據(jù)NFS文件系統(tǒng)操作指令,調(diào)用相關(guān)原子操作,實現(xiàn)硬盤存儲空間管理、文件存儲操作、用戶管理等功能。本文設(shè)計可作為個人存儲服務(wù)器連接到以太網(wǎng),用戶可通過連接網(wǎng)絡(luò)的任意主機實現(xiàn)對服務(wù)器硬盤的訪問管理。

          1 引言

          隨著電子郵箱及的普及,用戶可不用攜帶存儲設(shè)備,而直接通過網(wǎng)絡(luò)進行數(shù)據(jù)的上傳和下載,實現(xiàn)個人數(shù)據(jù)的管理。然而,使用網(wǎng)絡(luò)運營商提供的網(wǎng)絡(luò)硬盤可用空間有限,且數(shù)據(jù)保密性不強。本項目旨在研究一種適合于個人應(yīng)用的網(wǎng)絡(luò)硬盤存儲裝置,該網(wǎng)絡(luò)硬盤使用RJ45接口連接到以太網(wǎng),通過以太網(wǎng)以TCP/IP協(xié)議,用戶可用以太網(wǎng)上任意主機實現(xiàn)對網(wǎng)絡(luò)硬盤的管理操作,與電子郵箱及網(wǎng)絡(luò)運營商提供的網(wǎng)絡(luò)硬盤相比,此項目設(shè)計的個人網(wǎng)絡(luò)存儲硬盤有著存儲空間容量大、使用安全、可靠性較高等優(yōu)點。

          2 系統(tǒng)原理與特點

          系統(tǒng)結(jié)構(gòu)如圖2-1所示。

          圖2-1 系統(tǒng)結(jié)構(gòu)

          用戶通過連接網(wǎng)絡(luò)的客戶端PC機采用TCP/IP協(xié)議實現(xiàn)文件的上傳和下載,上傳文件時,用戶通過客戶端PC機向網(wǎng)絡(luò)硬盤控制器發(fā)送上傳文件指令,并發(fā)送文件數(shù)據(jù),F(xiàn)PGA內(nèi)以太網(wǎng)控制器模塊接收數(shù)據(jù)并由DDR2控制器模塊寫入到DDR2中緩存,然后根據(jù)NFS協(xié)議將數(shù)據(jù)從DDR2中讀出經(jīng)硬盤控制器模塊寫入到硬盤中保存;客戶端下載文件時,用戶通過客戶端PC機向硬盤控制器發(fā)送下載文件指令,F(xiàn)PGA內(nèi)以太網(wǎng)控制器模塊接收指令后,根據(jù)NFS協(xié)議將文件數(shù)據(jù)通過硬盤控制器模塊讀出并寫入到DDR2緩存中,然后將數(shù)據(jù)由DDR2中讀出并由以太網(wǎng)控制器模塊,加載網(wǎng)絡(luò)協(xié)議棧,將數(shù)據(jù)由網(wǎng)絡(luò)發(fā)送到客戶端PC。

          FPGA內(nèi)部調(diào)用MicroBlaze處理器,移植PetaLinux操作系統(tǒng),配置TCP/IP協(xié)議棧,加載NFS網(wǎng)絡(luò)文件系統(tǒng),利用VHDL語言設(shè)計Int13H規(guī)范中定義的對硬盤操作的原子構(gòu)件,并設(shè)計對原子構(gòu)件調(diào)用的引擎管理模塊,將原子構(gòu)件與引擎管理模塊以用戶IP核形式添加到與MicroBlaze處理器互聯(lián)的PLB片內(nèi)總線,F(xiàn)PGA內(nèi)部系統(tǒng)模塊框圖如圖2-2所示。

          圖2-2 FPGA內(nèi)功能模塊

          3 硬盤引擎管理模塊設(shè)計

          借鑒互聯(lián)網(wǎng)分布式計算領(lǐng)域中網(wǎng)格計算、云計算技術(shù)廣泛采用的為核心設(shè)計思想,首先進行業(yè)務(wù)需求分析、根據(jù)業(yè)務(wù)用例、用例場景、業(yè)務(wù)步驟的分析過程找出對應(yīng)的原子業(yè)務(wù)。根據(jù)業(yè)務(wù)原子業(yè)務(wù)映射到相應(yīng)的系統(tǒng)需求進行系統(tǒng)建模,通過形式語義將場景步驟序列描述為由一系列原子構(gòu)件的組合。完成“流程+引擎+構(gòu)件”的三層SOA結(jié)構(gòu)的文件系統(tǒng)設(shè)計。

          3.1 文件系統(tǒng)業(yè)務(wù)單元

          文件系統(tǒng)是操作系統(tǒng)中負責(zé)管理和存儲文件信息的軟件系統(tǒng)。主要負責(zé)對文件存儲器空間進行組織和分配,文件的存儲以及對存入的文件進行保護和檢索。文件系統(tǒng)主要包括存儲空間管理、文件存儲操作、用戶管理這三個業(yè)務(wù)單元。

          存儲實間管理主要包括對存儲空間的組織、分配和回收。文件存儲操作主要包括用戶對存儲空間文件的基本操作,包含文件的生成、刪除、打開、關(guān)閉、文件讀、文件寫等。用戶管理主要包括用戶的注冊、登錄以及用戶權(quán)限管理等。

          3.2 提取業(yè)務(wù)用例

          在提取文件系統(tǒng)的業(yè)務(wù)用例時,主要是從業(yè)務(wù)主角——用戶的角度出發(fā),對文件系統(tǒng)的每一個業(yè)務(wù)單元進行分析提取業(yè)務(wù)用例。

          3.2.1 存儲空間管理

          存儲空間管理業(yè)務(wù)單元的用例視圖如圖3-1所示。

          圖3-1 存儲空間管理用例視圖

          存儲空間管理該業(yè)務(wù)單元主要包括如下業(yè)務(wù)用例:初始化存儲空間、分配存儲空間、追加存儲空間、回收存儲空間、查詢剩余存儲空間。

          3.2.2 文件存取操作

          文件存取操作業(yè)務(wù)單元的業(yè)務(wù)用例視圖如圖3-2所示。

          圖3-2 文件存取操作用例視圖

          文件存取操作業(yè)務(wù)單元包括如下業(yè)務(wù)用例:建立文件、打開文件、讀文件、寫文件、關(guān)閉文件、保存文件、刪除文件、保存文件、列舉文件、檢索文件、復(fù)制文件等。

          3.2.3 用戶管理

          用戶管理用例視圖如圖3-3所示。

          圖3-3 用戶管理用例視圖

          用戶管理該業(yè)務(wù)單元包括的業(yè)務(wù)用例主要有填加用戶、刪除用戶、用戶登錄、用戶退出、設(shè)置用戶權(quán)限、修改用戶權(quán)限等。

          3.3業(yè)務(wù)用例場景

          3.3.1 劃分業(yè)務(wù)用例場景

          業(yè)務(wù)用例在實際執(zhí)行的進程中可能會有多種不同的情況發(fā)生,每一種情況都稱為該業(yè)務(wù)用例的一個業(yè)務(wù)用例場景,也可以說業(yè)務(wù)用例場景是指實例化的用例。通過對文件系統(tǒng)的業(yè)務(wù)用例進行分析,劃分出文件系統(tǒng)的業(yè)務(wù)用例場景如表1所示。

          表3-1 文件系統(tǒng)業(yè)務(wù)用例場景

          業(yè)務(wù)用例

          業(yè)務(wù)用例場景

          說明

          初始化存儲空間

          初始化存儲空間

          對未進行初始化設(shè)置的空間進行初始化。

          分配存儲空間

          分配存儲空間

          為新創(chuàng)建的文件分配存儲空間。

          追加存儲空間

          追加存儲空間

          對現(xiàn)有存儲空間已滿的文件追加新的存儲空間

          回收存儲空間

          回收存儲空間

          文件被刪除后,回收不用的存儲空間

          建立文件

          創(chuàng)建文檔文件

          創(chuàng)建一個新的文件并存檔

          創(chuàng)建文件夾

          建立文件的組織單元

          打開文件

          打開文檔文件

          打開一個已經(jīng)存在的文件

          打開文件夾

          打開一個已經(jīng)存在的文件夾

          讀文件

          順序讀文件

          從文件頭順序讀取文件內(nèi)容

          隨機讀文件

          從指定位置處讀取指定長度的文件內(nèi)容

          寫文件

          寫文件

          從指定位置處向已創(chuàng)建文件中寫入內(nèi)容

          關(guān)閉文件

          關(guān)閉文檔文件

          關(guān)閉已經(jīng)打開的文件

          關(guān)閉文件夾

          關(guān)閉已經(jīng)打開的文件夾

          保存文件

          保存文件

          對文件內(nèi)容或?qū)傩杂羞^更改的文件進行存檔

          刪除文件

          刪除文件內(nèi)容

          刪除指定位置處指定長度的文件內(nèi)容

          刪除文件

          刪除已經(jīng)存在的文檔性質(zhì)的文件

          刪除文件夾

          刪除已經(jīng)存在的存放文檔的文件夾

          列舉文件

          列舉當(dāng)前文件夾下文件

          列舉當(dāng)前文件夾目錄中的所有文件,包括文件夾和文檔文件。

          列舉存儲空間的所有文件

          列舉存儲空間中的所有文件夾和文件

          檢索文件

          在當(dāng)前文件夾檢索

          在當(dāng)前文件夾中查找指定名稱的文件或文件夾

          在整個存儲空間檢索

          從整個存儲空間查找指定名稱的文件或文件夾

          改變目錄

          進入子目錄

          進入當(dāng)前目錄的下級目錄

          返回父目錄

          返回當(dāng)前目錄的上級目錄

          填加用戶

          注冊用戶

          登記允許對存儲空間內(nèi)文件進行操作的用戶信息

          刪除用戶

          刪除用戶

          刪除已登記的文件系統(tǒng)的用戶信息

          用戶登錄

          用戶登錄

          用戶進入文件存儲空間

          用戶退出

          用戶退出

          用戶退出文件存儲空間

          修改用戶信息

          修改用戶信息

          修改已登記的用戶信息

          設(shè)置用戶權(quán)限

          設(shè)置用戶權(quán)限

          對進入文件存儲空間用戶的文件操作權(quán)限進行設(shè)置

          3.3.2 描述業(yè)務(wù)用例

          本文對文件系統(tǒng)業(yè)務(wù)用例描述采用的是用例文檔和UML的活動圖,通過畫出文件系統(tǒng)業(yè)務(wù)用例場景的活動圖,按照所用例文檔模板的格式對活動圖進行描述,建立文件系統(tǒng)的業(yè)務(wù)用例模型,得到文件系統(tǒng)的業(yè)務(wù)需求文檔。

          3.4 提取原子業(yè)務(wù)

          前面對文件系統(tǒng)進行了業(yè)務(wù)建模,分析了文件系統(tǒng)的業(yè)務(wù)參與者、業(yè)務(wù)用例和業(yè)務(wù)場景,在此小結(jié)中將分析提取文件系統(tǒng)的原子業(yè)務(wù)。主要通過分析業(yè)務(wù)場景的主干流程來進行原子業(yè)務(wù)的提取。

          3.4.1 存儲空間管理原子業(yè)務(wù)分析

          以追加存儲空間為例分析業(yè)務(wù)流程。

          前置條件:文件當(dāng)前存儲空間不足,文件剩余存儲空間中有足夠的空閑空間。

          后置條件:成功為文件追加空閑存儲空間。

          該業(yè)務(wù)流程由如下業(yè)務(wù)步驟組成:

          1>.文件存儲空間不足,申請新的存儲空間;

          2>.文件定位;

          3>.追加新的存儲空間。

          分析上述業(yè)務(wù)步驟,畫出追加存儲空間業(yè)務(wù)用例場景的業(yè)務(wù)流程圖如圖3-4所示。

          圖3-4 追加存儲空間活動圖

          經(jīng)分析追加存儲空間該業(yè)務(wù)用例中可提取出兩個原子業(yè)務(wù):文件定位、追加存儲空間。分析存儲空間管理業(yè)務(wù)單元其它業(yè)務(wù)用例場景的業(yè)務(wù)流程后,得出該業(yè)務(wù)單元原子業(yè)務(wù)樹狀結(jié)構(gòu)圖如圖3-5所示。

          圖3-5 存儲空間管理原子業(yè)務(wù)模型結(jié)構(gòu)圖

          3.4.2 文件存取操作原子業(yè)務(wù)分析

          以順序讀文件為例分析業(yè)務(wù)流程。

          前置條件:文件存在并且可讀。

          后置條件:從文件指定位置處順序讀取指定長度內(nèi)容。

          該業(yè)務(wù)流程由如下業(yè)務(wù)步驟組成:

          1>.確定文件所在存儲空間;

          2>.打開目標文件;

          3>.讀取指定長度的文件內(nèi)容;

          4>.關(guān)閉文件。

          分析上述業(yè)務(wù)步驟,畫出順序讀文件業(yè)務(wù)用例場景的業(yè)務(wù)流程圖如圖3-6所示。

          經(jīng)分析順序讀取文件該業(yè)務(wù)用例中可提取出四個原子業(yè)務(wù):文件定位、打開文件、順序讀文件、關(guān)閉文件。

          分析文件存取操作業(yè)務(wù)單元其它業(yè)務(wù)用例場景的業(yè)務(wù)流程后,提取出該業(yè)務(wù)單元原子業(yè)務(wù)樹狀結(jié)構(gòu)圖如圖3-7所示。

          圖3-6 順序讀取文件業(yè)務(wù)活動圖

          3.4.3 用戶管理原子業(yè)務(wù)分析

          以注冊用戶為例分析業(yè)務(wù)流程。

          前置條件:有權(quán)限成為文件系統(tǒng)用戶。

          后置條件:注冊成功,分配用戶名。

          該業(yè)務(wù)流程由如下業(yè)務(wù)步驟組成:

          1>.管理員進入存儲空間;

          2>.登記用戶信息。

          分析上述業(yè)務(wù)步驟,畫出注冊用戶業(yè)務(wù)用例場景的業(yè)務(wù)流程圖如圖3-8所示。經(jīng)分析注冊用戶該業(yè)務(wù)用例中可提取出兩個原子業(yè)務(wù):用戶登錄、登記用戶信息。

          分析用戶管理業(yè)務(wù)單元其它業(yè)務(wù)用例場景的業(yè)務(wù)流程后,得出該業(yè)務(wù)單元原子業(yè)務(wù)部分樹狀結(jié)構(gòu)圖如圖3-9所示。

          圖3-9 用戶管理原子業(yè)務(wù)模型結(jié)構(gòu)圖

          通過以上對文件系統(tǒng)各業(yè)務(wù)單元的分析,提取文件系統(tǒng)完整的原子業(yè)務(wù)及其描述如表3-2所示。

          表3-2 文件系統(tǒng)原子業(yè)務(wù)及其描述

          序號

          原子業(yè)務(wù)

          描述

          1

          初始化空間(Initialize_Space)

          對文件系統(tǒng)的存儲空間容量大小和分區(qū)容量進行初始化設(shè)置。

          2

          分配空間(Allocate_Space)

          為新建文件或文件夾分配存儲空間

          3

          文件定位(Locate_File)

          確定文件所在存儲空間地址。

          4

          追加空間(Supplement_Space)

          文件存儲空間不足紿文件追加新的存儲空間。

          5

          釋放空間(Free_Space)

          將存儲空間改為未用。

          6

          查詢分區(qū)容量(Inquiry_Space)

          查詢分區(qū)空閑存儲空間大小。

          7

          設(shè)置文件為打開狀態(tài)(Set_File_Open)

          更改文件為“打開”狀態(tài)

          8

          設(shè)置文件夾為打狀態(tài)(Set_Folder_Open)

          更改文件夾為“打開”狀態(tài)

          9

          設(shè)置文件為關(guān)閉狀態(tài)(Set_File_Open)

          更改文件為“關(guān)閉”狀態(tài)

          10

          設(shè)置文件夾為關(guān)閉狀態(tài)(Set_Folder_Open)

          更改文件夾為“關(guān)閉”狀態(tài)

          11

          順序讀文件(Sequence_Read_File)

          按順序讀取指定長度的文件內(nèi)容

          12

          隨機讀文件(Random_Read_File)

          隨機讀取指定長度的文件內(nèi)容

          13

          寫文件(Write_File)

          向文件內(nèi)寫入指定長度文件內(nèi)容

          14

          更新文件(Update_File)

          文件進行讀寫后更改文年屬性和內(nèi)容

          15

          查找文件(Find_File)

          在指定空間查找指定文件名的文件

          16

          列舉文件(File_Enumeration)

          列舉指定空間的所有文件

          17

          登記用戶信息(Rsgister_User_Information)

          登記文件系統(tǒng)用戶信息。

          18

          修改用戶信息(Modify_User_Information)

          修改已登記的用戶信息

          19

          刪除用戶信息

          (Delete_User_Information)

          刪除已登記的文件系統(tǒng)用戶信息

          20

          用戶進入

          (User_Enter)

          用戶進入文件存儲空間,查看空間內(nèi)文件

          21

          用戶退出

          (User_Exit)

          用戶退出存儲空間

          22

          設(shè)置用戶權(quán)限(Set_Premissions)

          設(shè)置用戶訪問文件的權(quán)限。

          4 Petalinux及NFS網(wǎng)絡(luò)文件系統(tǒng)的移植

          Petalinux的移植主要工作為硬件平臺搭建,以及內(nèi)核的裁剪與移植,其中硬件平臺的搭建在windows操作系統(tǒng)上安裝的Xilinx EDK環(huán)境中完成,選擇Virtex5-lx110t開發(fā)板,由于網(wǎng)絡(luò)文件服務(wù)器的需要選擇以太網(wǎng)的IP核,DDR,串口,定時器等并添加相應(yīng)的中斷,成功建立工程的block diagram 如圖4-1所示。

          圖4-1 搭建工程框圖

          然后進行基于Petalinux軟件平臺的配置,操作系統(tǒng)和庫選項選擇Petalinux,修改主要存儲空間和輸入輸出的當(dāng)前值,軟件平臺搭建完畢,最后生成庫和板級支持包,然后生成比特流文件下載至目標板測試工程的正確性。

          Petalinux是一套開發(fā)環(huán)境,linux內(nèi)核的裁剪以及移植在安裝centos 5.6 操作系統(tǒng)的主機完成首先利用Petalinux自帶的工具創(chuàng)建嵌入式平臺,將在windows下完成的工程拷貝到Linux系統(tǒng),轉(zhuǎn)換到Linux系統(tǒng)格式,根據(jù)開發(fā)板選擇新的平臺,然后用make menuconfig 命令進入內(nèi)核裁剪的圖形化界面,合理的裁剪之后進行編譯將生成的image.bin文件通過下載線下載至開發(fā)板的DDR SDRAM中,在串口終端可以看到系統(tǒng)啟動信息,如圖4-2所示。

          圖4-2 系統(tǒng)啟動信息

          網(wǎng)絡(luò)文件系統(tǒng)支持以應(yīng)用程序在客戶端通過網(wǎng)絡(luò)存取位于服務(wù)器磁盤中數(shù)據(jù)的一種文件系統(tǒng)協(xié)議,大多數(shù)網(wǎng)絡(luò)文件系統(tǒng)都分成客戶端和文件服務(wù)器兩部分??蛻舳艘赃壿嬑募K的方式存取數(shù)據(jù),文件服務(wù)器使用塊映射存取真正的磁盤塊,并完成磁盤格式和元數(shù)據(jù)(如目錄)的管理,對客戶端完全屏蔽,一般客戶端和文件服務(wù)器以TCP/IP方式通信。NFS是網(wǎng)絡(luò)文件系統(tǒng)(Network File System)的簡稱,是分布式計算機系統(tǒng)的一個組成部分,可實現(xiàn)在異種網(wǎng)絡(luò)上共享和裝配遠程文件系統(tǒng),可讓不同操作系統(tǒng)的計算機共享數(shù)據(jù)。

          NFS服務(wù)器的移植:nfs服務(wù)器的實現(xiàn)需要內(nèi)核nfsd的支持外加兩個應(yīng)用程序套件 portmap 和nfs-utils ,Petalinux中移植此應(yīng)用程序,下載此應(yīng)用程序的源碼,添加到petalinux的usr目錄下,修改makefile 和config.in 文件,重新配置內(nèi)核加入nfs服務(wù)器端的支持,同時交叉編譯此應(yīng)用程序,將生成的可執(zhí)行文件復(fù)制到 romfs 的bin 目錄下,再在etc 目錄下添加exports 文件用來設(shè)置可掛載目錄,使得Petalinux 系統(tǒng)具有nfs服務(wù)器端的功能。

          5 IDE硬盤控制器的設(shè)計

          IDE(Integrated Drive Electronics,集成驅(qū)動電子設(shè)備)是由Compaq開發(fā)并由Western Digital公司生產(chǎn)的硬盤驅(qū)動器。IDE是在早期的ST506硬盤基礎(chǔ)上改進而成的,采用40線的單組電纜進行連接,數(shù)據(jù)傳輸?shù)目煽啃缘玫搅嗽鰪?,硬盤制造起來變得容易,因為廠商不需要再擔(dān)心自己的硬盤是否與其他廠商生產(chǎn)的控制器兼容,對用戶而言,硬盤安裝起來也更為方便。因此IDE接口實際上是系統(tǒng)級接口,故也稱為ATA(Advanced Technology Attachment)接口,(ATA更接近于接口的協(xié)議層標準,而IDE多用于描述接口的物理結(jié)構(gòu))。其傳輸方式主要有和DMA兩種。ATA接口規(guī)范從最初的ATA-1版本已發(fā)展到ATA-7版本。

          5.1 硬盤接口信號

          ATA/ATAPI-6標準中定義的主機和設(shè)備端之間的通信連接信號如表5-1所示。其中,左邊是對信號的描述,中間表示信號的傳輸方向(由主機到設(shè)備還是由設(shè)備到主機),右邊表示信號的名稱。

          1. CS(1:0)-:主機發(fā)送給硬盤的片選信號,實現(xiàn)對寄存器的選擇;
          2. DA(2:0):主機發(fā)送給硬盤的地址信號,用來實現(xiàn)對硬盤寄存器的尋址;
          3. DD(15:0):主機與硬盤之間的數(shù)據(jù)連接線,當(dāng)主機對硬盤寄存器進行讀寫時,使用該數(shù)據(jù)總線的低八位進行數(shù)據(jù)傳輸,當(dāng)對數(shù)據(jù)寄存器進行讀寫時,用該總線的16位進行數(shù)據(jù)傳輸;
          4. DIOR-:HDMARDY-:HSTROBE:復(fù)用信號,表示對寄存器讀信號/Ultra DMA就緒/Ultra DMA數(shù)據(jù)輸出同步信號,DIOR-表示主機對硬盤寄存器的讀信號,HDMARDY-表示Ultra DMA數(shù)據(jù)輸入時,主機發(fā)出的就緒信號,HSTROBE表示Ultra DMA數(shù)據(jù)輸出時主機發(fā)出的時鐘同步信號,雙沿有效,即在該信號的上升沿和下降沿,主機將數(shù)據(jù)輸出;
          5. DIOW-:STOP:復(fù)用信號,表示主機寫寄存器命令/主機終止Ultra DMA突發(fā)傳輸信號,DIOW-表示主機發(fā)出的對硬盤寄存器的寫命令信號。在Ultra DMA突發(fā)傳輸時,主機可通過使能STOP信號來終止Ultra DMA突發(fā)傳輸。
          6. DMACK-:在DMA開始傳輸時,主機對硬盤發(fā)出的DMA傳輸請求的應(yīng)答信號;
          7. DMARQ:當(dāng)硬盤準備好數(shù)據(jù)收發(fā)時,給主機發(fā)出的DMA傳輸請求信號;
          8. INTRQ:硬盤發(fā)出的中斷請求信號;
          9. IORDY:DDMARDY-:DSTROBE:硬盤發(fā)出的I/O通道就緒/Ultra DMA硬盤就緒/Ultra DMA數(shù)據(jù)輸入同步信號。IORDY表示在數(shù)據(jù)傳輸中,當(dāng)硬盤沒有準備好數(shù)據(jù)傳輸時,使能該信號無效以延長主機對硬盤的訪問時間。DDMARDY-表示在Ultra DMA數(shù)據(jù)傳輸中硬盤發(fā)出的流量控制信號,該數(shù)據(jù)有效時,表示硬盤已準備好接收Ultra DMA傳輸數(shù)據(jù),硬盤使能該信號無效可暫停Ultra DMA數(shù)據(jù)傳輸。DSTROBE表示在Ultra DMA數(shù)據(jù)傳輸時,硬盤發(fā)出的數(shù)據(jù)鎖存信號,主機可在該信號的上升沿和下降沿接收數(shù)據(jù);
          10. RESET-:主機發(fā)出的硬盤復(fù)位信號,低電平有效。

          表5-1 硬盤接口信號

          5.2 硬盤接口寄存器

          主機對硬盤的訪問是通過對接口寄存器的訪問來實現(xiàn)的。ATA-6標準規(guī)定的硬盤接口寄存器如表5-2所示。這些寄存器按照功能劃分為命令寄存器(Command block registers)和控制寄存器(Control block registers)。命令寄存器用來接收主機發(fā)出的各種命令和傳送數(shù)據(jù),包括數(shù)據(jù)寄存器、扇區(qū)計數(shù)寄存器等。控制寄存器用作控制硬盤操作,如使能硬盤中斷、選擇硬盤等。

          表5-2 硬盤端接口寄存器

          5.3 硬盤控制器模塊設(shè)計

          硬盤控制器模塊內(nèi)部結(jié)構(gòu)如圖5-1所示。

          圖5-1 硬盤控制器模塊內(nèi)部結(jié)構(gòu)

          5.3.1 總線接口模塊

          總線接口模塊是硬盤控制器與PLB總線的連接模塊,接收處理器通過PLB總線發(fā)來的操作命令及讀寫數(shù)據(jù)。

          5.3.2 硬盤復(fù)位模塊

          硬盤上電后需要完成一個復(fù)位過程,即ATA/ATAPI-6標準中描述的上電及硬件復(fù)位協(xié)議。復(fù)位過程既可以通過軟件編程實現(xiàn)也可以通過在硬盤控制器內(nèi)部設(shè)計專用的邏輯來實現(xiàn)。系統(tǒng)上電后,硬盤控制器通過硬盤復(fù)位模塊生成一個寬帶大于25us的低電平復(fù)位信號,復(fù)位信號回到高電平2ms后,即復(fù)位操作完成。復(fù)位信號波形如圖5-2所示。

          圖5-2 復(fù)位信號波形

          5.3.3 模塊

          該模塊的功能是產(chǎn)生讀寫硬盤內(nèi)部寄存器的時序,該模塊產(chǎn)生待訪問的硬盤寄存器的地址線,并輸出讀寫信號,根據(jù)數(shù)據(jù)傳輸方向,發(fā)送數(shù)據(jù)到數(shù)據(jù)線或從數(shù)據(jù)線上讀取數(shù)據(jù),操作完成后,釋放地址、數(shù)據(jù)線。

          根據(jù)PIO讀寫時序,該模塊應(yīng)實現(xiàn)以下功能:

          1. 產(chǎn)生訪問硬盤寄存器的地址信號,并具有一定有效寬帶。
          2. 產(chǎn)生相應(yīng)的讀寫信號DIOR-/DIOW-,當(dāng)為寫操作時,使數(shù)據(jù)具有規(guī)定的建立和保持時間;當(dāng)為讀操作時,給出讀數(shù)據(jù)的時機。
          3. 處理硬盤輸入的IORDY信號,當(dāng)IORDY無效時,應(yīng)延長對硬盤的讀寫周期。

          5.3.4 Ultra DMA模塊

          Ultra DMA模塊是硬盤控制器的關(guān)鍵模塊,其主要功能是實現(xiàn)Ultra DMA突發(fā)數(shù)據(jù)輸出時序的控制。Ultra DMA操作可分為三個階段,分別是初始階段、數(shù)據(jù)傳輸階段、傳輸中止階段。

          初始階段的時序描述為:當(dāng)硬盤發(fā)出DMA請求信號DMARQ,控制器通過DMACK-進行應(yīng)答,等到硬盤發(fā)出的DDMARDY-信號有效后,控制器開始輸出HSTROBE信號。

          數(shù)據(jù)傳輸階段的時序描述為:HSTROBE時鐘的上升沿和下降沿都觸發(fā)數(shù)據(jù)輸出,在數(shù)據(jù)傳輸過程中,控制器可通過停止產(chǎn)生HSTROBE信號來暫停數(shù)據(jù)的輸出,硬盤可以通過使DDMARDY-信號無效來暫停數(shù)據(jù)的接收。

          傳輸終止階段,控制器和硬盤都可終止數(shù)據(jù)傳輸,終止數(shù)據(jù)傳輸可分為四個過程:停止請求、停止檢查、HSTROBE返回高電平、發(fā)送CRC校驗值。對于控制器停止數(shù)據(jù)傳輸,首先停止產(chǎn)生HSTROBE時鐘信號,發(fā)出STOP命令信號,控制器檢查硬盤的DDMARDY和DMARQ均無效后,使HSTROBE返回高電平,使DMACK-無效,并在DMACK-信號跳變沿處輸出CRC校驗值到數(shù)據(jù)線DD(15:0),如圖5-3所示。對于硬盤停止數(shù)據(jù)傳輸,通過使DDMARDY和DMARQ均無效來停止數(shù)據(jù)傳輸,控制器需要在tL1時間內(nèi)發(fā)出STOP信號,使HSTROBE返回高電平,使DMACK-無效,并輸出CRC校驗值至DD(15:0),如圖5-4所示。

          圖5-3 控制器終止Ultra DMA數(shù)據(jù)傳輸時序

          圖5-4 硬盤終止Ultra DMA數(shù)據(jù)傳輸時序

          5.3.5 控制器模塊

          控制模塊是硬盤控制器的核心,該模塊的主要功能是實現(xiàn)CPU對硬盤控制器中寄存器的配置,并根據(jù)相關(guān)寄存器的寫入信息實現(xiàn)對應(yīng)的控制操作。

          6 總結(jié)

          項目設(shè)計一種基于“流程+引擎+構(gòu)件”SOA三層架構(gòu)的網(wǎng)絡(luò)硬盤控制器。采用FPGA作為系統(tǒng)控制器,在MicroBlaze軟核處理器上移植PetaLinux操作系統(tǒng),加載NFS網(wǎng)絡(luò)文件系統(tǒng),將擴展Int 13H規(guī)范中定義的基本硬盤操作指令封裝成原子構(gòu)件,采用VHDL硬件描述語言實現(xiàn)各原子構(gòu)件操作。設(shè)計引擎管理模塊,根據(jù)NFS文件系統(tǒng)操作指令,調(diào)用相關(guān)原子操作,實現(xiàn)硬盤存儲空間管理、文件存儲操作、用戶管理等功能。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();