《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于FPGA和ARM的虛擬軟盤實現
基于FPGA和ARM的虛擬軟盤實現
2017年電子技術應用第12期
陳章進1,2,陳旭東1,姜鵬程1,王文磊1,李瀚超1
1.上海大學 微電子研究與開發中心,上海200072;2.上海大學 計算中心,上海200444
摘要: 提出一種基于FPGA和ARM的虛擬軟盤實現方案。在FPGA上實現并行CRC運算、MFM編解碼,將存儲芯片SRAM虛擬成1.44 MB軟盤進行數據訪問,通過臺式機實現對虛擬軟盤的鏡像制作、文件讀寫、格式化、制作啟動盤等操作;ARM通過SPI接口實現與FPGA的數據通信,并且在ARM上搭建UDP服務器,實現局域網內設備對虛擬軟盤的狀態、數據進行讀寫訪問。
中圖分類號: TN791;TP301
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.171444
中文引用格式: 陳章進,陳旭東,姜鵬程,等. 基于FPGA和ARM的虛擬軟盤實現[J].電子技術應用,2017,43(12):40-43,47.
英文引用格式: Chen Zhangjin,Chen Xudong,Jiang Pengcheng,et al. Realization of the virtual floppy disk based on FPGA and ARM[J].Application of Electronic Technique,2017,43(12):40-43,47.
Realization of the virtual floppy disk based on FPGA and ARM
Chen Zhangjin1,2,Chen Xudong1,Jiang Pengcheng1,Wang Wenlei1,Li Hanchao1
1.Microelectronic Research and Development Center,Shanghai University,Shanghai 200072,China; 2.Computer Center,Shanghai University,Shanghai 200444,China
Abstract: An approach to virtualize an external memory device as a floppy disk based on FPGA and ARM is presented. This hardware system successfully implements parallel CRC computing, encodes/decodes MFM bit stream and accesses the SRAM as a 1.44 MB floppy disk, and implements image making, file read/write, formatting and making startup disk of this virtual floppy disk. ARM communicates with FPGA via SPI interface, and acts as a UDP server, and realizes reading/writing access to the status and data of the virtual floppy disk in the local area network.
Key words : FPGA;ARM;virtual floppy disk;parallel CRC;MFM encode/decode;UDP

0 引言

    隨著硬件技術的進步,軟盤逐漸被新的存儲介質代替。但部分舊設備(比如織布機等)并不支持這些更快、容量更大的存儲設備,也不支持網絡訪問。因此,設法將存儲設備虛擬成軟盤,通過網絡對其進行數據訪問具有一定的實用價值。在臺式機讀寫軟盤過程中,數據流遵循MFM編碼格式,使用CRC校驗檢測數據誤差。

    本文提出一種基于FPGAARM虛擬軟盤方案。在DE2-115開發平臺下,將2 MB的SRAM存儲器虛擬成1.44 MB軟盤,通過臺式機對虛擬軟盤的數據進行讀寫,并使用樹莓派實現UDP服務器,通過網絡對虛擬軟盤的狀態和數據進行讀寫訪問。

    同時,對設計方案進行實現與驗證,成功實現對虛擬軟盤的鏡像制作、文件讀寫、格式化、制作啟動盤等操作,并實現局域網內設備對虛擬軟盤的監控。

1 虛擬軟盤核心模塊的設計與實現

1.1 虛擬軟盤數據分布結構

    一張軟盤包含80個磁道,每個磁道有2個柱面,每個柱面包含18個扇區,每個扇區包含有512 B數據。整個軟盤包含有2×80×18×512 B=1.44 MB的數據量。在實際應用中,軟盤通過軟驅線發送到臺式機的1個磁道的數據,包含數據頭部、數據中部和數據尾部3個部分。

    在本虛擬軟盤設計中,虛擬軟盤的數據分布結構示意如圖1所示。

qrs3-t1.gif

    頭部的長度為200 B,其中GAP數據為0x4E,用于填充磁道,共有184 B;SYNC為同步信號0x00,共有12 B;IAM表示索引信號地址標記,內容為0xC2C2C2FC,用來指示磁道開始。而數據中部則包含有18個扇區的數據,每個扇區包含地址段和數據段兩部分。其中,地址段長度為72 B,數據段長度為608 B。地址段中:GAP段用于填充空間;SYNC表示同步;IDAM為地址標記;CHNR包含有磁道、磁面、扇區號、扇區內數據字節數等信息;CRC為2 B校驗信息,校驗起始于IDAM段,終止于CRC段。數據段中:GAP段用于填充空間;SYNC表示同步;DATAAM為地址標記;DATA包含512 B數據信息;CRC為2 B的校驗信息,校驗起始于DATAAM段,終止于CRC段。磁道尾部包含的數據是用于填充用的GAP段,其內容為0x4E,長度為60 B。

1.2 并行CRC運算模塊的原理和實現

    循環冗余校驗(Cyclic Redundancy Check,CRC)算法在檢測數據傳輸的誤差上發揮著重要的作用[1]。CRC校驗被用在PCI-Express總線、以太網(IEEE 802.3)以及WiFi(IEEE 802.11)等通信標準中[2]。通常使用的CRC校驗生成算法有串行的線性反饋移位運算LFSR[3-4],但隨著數據傳輸速率的提高,使用串行運算不能滿足系統的要求[5],有必要實現并行CRC計算模塊。

qrs3-gs1.gif

    對于數據字節流{Cn(x),…,C1(x),C0(x)},Ck(x)都是關于x的7次多項式,表征一個字節的數據;生成多項式記作G(x),為關于x的N次多項式。CRC校驗結果為:

qrs3-gs2-5.gif

    考慮到有限域GF(2)上的加法等效于XOR異或運算,而乘法等效于AND與運算,在FPGA上可以實現一種基于矩陣式數據選通的并行CRC運算模塊。其結構框圖如圖2所示。該并行CRC運算模塊包含有邏輯運算陣列和輸出寄存器兩個部分。其中邏輯運算陣列由組合邏輯構成,其功能包括:將收到的數據DataIn左移(N-8)位,得到N位數據qrs3-t2-s1.gif利用qrs3-t2-s2.gif與上次CRC運算結果Rk(x)進行XOR運算,得qrs3-t2-s3.gif運算結果進入數據選通運算陣列,陣列由(N×N)個1-bit選擇器和N個N-bit XOR運算單元構成,選通使能信號是通過計算Φ=(A+KB)8結果得到的;陣列出來的運算結果進入輸出寄存器,由時序邏輯構成,在模塊接收到ENA使能信號時,寄存邏輯運算陣列的結果輸出到Q;當輸出寄存器接收到RST復位信號時,CRC模塊的輸出Q相當于CRC校驗初始值R-1(x)。

qrs3-t2.gif

    在本虛擬軟盤設計中,取N=16,即進行CRC-16校驗,生成多項式為G(x)=x16+x12+x5+1,根據定義得到K=[0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1]T,計算狀態轉移矩陣Φ,得到選通使能陣列如表1所示。其中橫向表示輸入位,用十六進制表示相應的位下標;縱向的表示輸出位對應的下標;表中陰影部分對應的輸入位被選通,空白部分對應的輸入位不被選通。

qrs3-b1.gif

1.3 MFM編解碼

1.3.1 MFM編碼原理與實現

    在軟盤應用中,讀寫的數據都是以串行方式傳輸的。通常在各個數據位之間插入時鐘位,保證數據能被正確傳輸和識別[6]。在軟盤的數據傳輸中,采用MFM編碼。其表達式如下:(x,y,z)→(x,x NOR y,y,y NOR z,z),其中NOR為非或運算,即p NOR q=p∨q。在RData和WData信號線上,一個電平翻轉表示在MFM編碼碼流的時鐘位或者數據位中出現了“1”;而沒有翻轉,則表示在碼流的時鐘位或數據位中出現了“0”。采用500 kb/s的傳輸速率,一個數據位的傳輸需要消耗2 μs時間。圖3為4-bit數據流“1010”MFM編碼示意。

qrs3-t3.gif

    MFM編碼沒有起始標志,所以在每個扇區地址段和數據段之前都有AM域,其中的數據字節“0xA1”的編碼采用了MMFM編碼,用于標記碼流起始:在數據位中,若出現連續的0-0,則時鐘位變1;若出現0-0-0,則時鐘位是1-0;若出現0-0-0-0,則時鐘位是1-0-1;以此類推。

    圖4是MFM編碼模塊的結構框圖。整個MFM編碼過程由移位寄存模塊、核心編碼模塊、計數模塊和并行轉串行模塊組成。其中,移位寄存模塊保留上一字節數據的最低位和當前字節數據,生成數據mfmData用來傳遞給核心編碼模塊進行MFM編碼。核心編碼模塊根據MFM編碼規則,對mfmData進行編碼運算,并通過Violate信號判斷當前是否處于AM域,若是,則要使用MMFM編碼規則。計數器模塊用來生成BitCnt計數信號,傳遞給并轉串模塊,生成最后的數據比特流mfmBit信號。

qrs3-t4.gif

1.3.2 MFM解碼原理與實現

    數據在編碼和傳輸過程中,經常出現相位超前、延遲的情況。在MFM解碼之前,需要先同步WData碼流和MFM解碼時鐘。此外,軟盤數據在AM域的0xA1標志遵循MMFM編碼,用于定位MFM碼流的起始位置。圖5是MFM解碼模塊的模塊結構框圖。采用32 MHz的采樣時鐘捕捉WData信號。因為一個數據位周期為2 μs,采樣過程中計數器由0計到63,即T=0,1,2,…,62,63。據此設定數據比特的采樣時間在T=10和T=42時刻采樣結果保存在移位寄存器SHIFTER中,并分離數據位和時鐘位。MFM碼流中的下降沿出現通常在T=0或者T=31時刻。AM域的數據字節0xA1經 MMFM編碼后CLOCK_BITS是0x0A,而MFM編碼后CLOCK_BITS為0x0E。據此,仲裁單元的相位調整規則如下:

    (1)檢測到WData下降沿時:若16≤T≤47,選通T=31;若T≤15或者T≥48,選通T=0;

    (2)若DATA_BITS==0xA1且CLOCK_BITS ==0x0A,即檢測到0xA1編碼違例,則選通T=44;

    (3)否則選通T=T+1。

qrs3-t5.gif

    最后,數據比特計數模塊用來判斷是否接收到8 bit數據,若是,則輸出數據有效脈沖信號MFM_DATA_EN。

2 虛擬軟盤系統的設計與實現

2.1 虛擬軟盤系統框架結構

    虛擬軟盤系統如圖6所示。其中,控制電腦與虛擬軟盤系統處于同一個局域網下,通過socket通信實現與虛擬軟盤系統的交互,包括軟盤狀態獲取、軟盤狀態修改、發送軟盤鏡像和選擇軟盤鏡像等命令;虛擬軟盤系統包括ARM、FPGA和SRAM存儲器3個部分,其中ARM和FPGA的交互通過SPI接口實現;ARM負責網絡交互,從網絡獲取軟盤數據、狀態的讀寫命令,同時開啟SSH服務,方便遠程登錄,開啟FTP服務用于控制中心發送、選擇虛擬軟盤系統中的軟盤鏡像;FPGA負責將2 MB容量的SRAM虛擬成1.44 MB軟盤,并通過軟驅線和外部的臺式機/織布機進行交互。

qrs3-t6.gif

2.2 FPGA部分的結構

    FPGA部分的結構框圖如圖7所示。該系統主要包括虛擬軟盤控制模塊、SPI收發模塊、SRAM控制模塊。

qrs3-t7.gif

    控制模塊實現軟盤磁針的位置控制和數據編解碼:步進模塊通過檢測iStep下降沿和iDir電平確定當前軟盤磁針所處的磁道號rCylNo;通過iHdSel電平確定磁針所處柱面號rHeadNo;旋轉模塊確定當前扇區號rSectNo以及在扇區內偏移地址rAddrL。MFM解碼模塊根據WData得到回寫數據wData和磁道wCylNo、柱面wHeadNo、扇區號wSectNo及扇區內偏移地址wAddrL等信息。

    通過SPI收發模塊,FPGA可獲取到ARM給出的讀寫命令,數據交換模塊會根據命令判斷執行以下某個行動:讀取軟盤的扇區數據、修改軟盤的扇區數據、獲取軟盤狀態(寫保護,軟盤就緒,寫入使能,磁道、磁面和扇區等)、修改軟盤狀態(寫保護和軟盤就緒等)。

    地址、數據等信息通過地址轉移模塊,映射成對SRAM的讀地址rAddr和寫地址wAddr。通過SRAM讀寫控制模塊,可以對虛擬成軟盤的SRAM進行數據訪問。CRC編碼模塊用于計算地址段和數據段的校驗和,可以用來檢測數據傳輸上可能出現的錯誤。軟盤數據或者校驗和經過MFM編碼模塊生成MFM碼流傳送給臺式機。

2.3 ARM程序結構

    ARM部分的程序設計框圖如圖8所示。其中,主線程負責socket和SPI接口的初始化,并創建線程1和線程2;線程1負責通過網絡獲取控制中心的命令(包括軟盤狀態讀取命令即#R,軟盤狀態修改命令即#W、WP、READY、FLAG,以及鏡像文件讀取/寫入命令即&R/W、xxx.ima),對互斥量filelock進行上鎖后,修改data_sent為1,再把filelock解鎖;線程2負責判斷data_sent是否為1,即網絡命令是否有效。若是,則對filelock進行上鎖后,根據網絡命令執行相應的操作,并返回相應數據給控制中心,再將data_sent清零后,把filelock解鎖;若data_sent為0,即沒有收到網絡命令,那么讀取當前軟盤狀態,空閑1 s后,重新進行循環。

qrs3-t8.gif

    此外,ARM端還負責作為FTP服務器,用于接收控制中心發送的各個ima軟盤鏡像文件。

3 虛擬軟盤運行測試情況

    針對提出的虛擬軟盤設計方案進行測試與驗證。在Altera的DE2-115開發板上燒寫FPGA工程文件,并在樹莓派上運行ARM部分的程序。對虛擬軟盤的測試包括虛擬軟盤格式化、文件讀寫、鏡像制作、啟動盤測試等。首先對虛擬軟盤徹底格式化,將虛擬軟盤所有扇區數據清零;然后進行多文件隨機寫入,并讀取虛擬軟盤文件,進行文件比較,比對結果說明虛擬軟盤讀寫正常;最后,制作啟動盤并利用UltraISO制作軟盤鏡像,通過啟動測試程序加載鏡像,能順利進入系統,說明啟動盤制作和讀取正常。

4 結論

    本文提出并實現了一種基于FPGA和ARM的虛擬軟盤方案,并成功將2 MB的SRAM虛擬成1.44 MB軟盤,可通過網絡對虛擬軟盤的狀態和數據進行遠程訪問,也可通過臺式機對虛擬軟盤進行讀寫操作。利用實際開發板進行實驗,驗證了本設計方案的可行性。

參考文獻

[1] MATHUKIYA H H,PATEL N M.A novel approach for parallel CRC generation for high speed application[C].Communication Systems and Network Technologies(CSNT),2012 International Conference on.IEEE,2012:581-585.

[2] KENNEDY C E,KERMANI M M.Generalized parallel CRC computation on FPGA[C].Electrical and Computer Engineering(CCECE),2015 IEEE 28th Canadian Conference on.IEEE,2015:107-113.

[3] PETERSON W W,BROWN D T.Cyclic codes for error detection[J].Proceedings of the IRE,1961,49(1):228-235.

[4] 李永基,魏文軍.基于LFSR的CRC校驗碼在FPGA上的實現[J].蘭州交通大學學報,2015(6):91-94.

[5] 李傳輝,劉純武,黃芝平.100G以太網中高位寬并行CRC的簡化方法[J].微型機與應用,2016(7):57-59.

[6] Victor Lazzarini,Joseph Timoney.Theory and practice of modified frequency modulation synthesis[J].Journal of the Audio Engineering Society,2010,58(6):459-471.



作者信息:

陳章進1,2,陳旭東1,姜鵬程1,王文磊1,李瀚超1

(1.上海大學 微電子研究與開發中心,上海200072;2.上海大學 計算中心,上海200444)

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: free性欧美高清另类 | 欧美日韩国产成人精品 | 91精品啪在线观看国产老湿机 | 欧美高清视频手机在在线 | 欧美日韩一区二区在线视频播放 | 2020久久国产最新免费观看 | 97久久精品人人做人人爽 | 性高跟鞋xxxxhd | 永久看片 | 欧美成人禁片在线www | 亚洲精国产一区二区三区 | 最近中文字幕mv免费视频 | 三级三级三级a级全黄公司的 | 国产高清美女一级a毛片久久w | 成人特黄午夜性a一级毛片 成人网18免费软件 成人网免费 | 夜夜爽天天操 | 高清一级毛片免免费看 | 麻豆果冻传媒新剧国产短视频 | 亚欧日韩毛片在线看免费网站 | 久操视频免费 | 最近韩国日本高清免费观看 | 好男人在线社区www免费看 | 日韩色天使综合色视频 | 免费精品一区二区三区在线观看 | 亚洲国产欧美一区 | 一区二区三区在线视频播放 | 手机一级片 | 久久国产精品久久精 | 国产一级毛片午夜福 | 免费女上男下xx00视频 | h全彩黄漫网站 | 欧美在线视频免费 | 清清草免费视频 | 亚洲有码转帖 | 精品一区二区三区波多野结衣 | 本道久久综合88全国最大色 | 一区二区三区在线观看视频 | 999www成人免费视频 | 欧美成人免费做真爱大片 | 午夜手机福利视频 | 亚洲色图在线观看 |