新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于MEMS和FPGA的移動(dòng)硬盤數(shù)據(jù)加解密系統(tǒng)

        基于MEMS和FPGA的移動(dòng)硬盤數(shù)據(jù)加解密系統(tǒng)

        作者: 時(shí)間:2009-11-04 來(lái)源:網(wǎng)絡(luò) 收藏

          4. ATA 協(xié)議控制器的實(shí)現(xiàn)

          從密碼認(rèn)證通過(guò),枚舉開(kāi)始的那一刻起, 控制器得到了對(duì)硬盤的訪問(wèn)權(quán)。 根據(jù) ATA 協(xié)議,對(duì)支持Ultra DMA 傳輸方式的IDE 硬盤而言,操作歸結(jié)為兩種,對(duì)硬盤接 口寄存器讀寫以及對(duì)硬盤扇區(qū)進(jìn)行Ultra DMA 批量扇區(qū)。為了對(duì)硬盤數(shù)據(jù)進(jìn)行加解密,我們把 插入連接GPIF 接口和硬盤接口的IDE 總線,這樣所有控制信號(hào)和數(shù)據(jù)信號(hào)都要通過(guò) ,受到 的監(jiān)視和控制。

          FPGA 必須實(shí)現(xiàn)有限狀態(tài)機(jī),能夠?qū)π盘?hào)進(jìn)行協(xié)議解析,區(qū) 分出那些需要加解密的扇區(qū)數(shù)據(jù),也就是在Ultra DMA 傳輸過(guò)程中出現(xiàn)在數(shù)據(jù)總線上的數(shù)據(jù)。 在PIO 狀態(tài)時(shí),F(xiàn)PGA 讓所有信號(hào)保持直通,因而讀寫硬盤接口寄存器的操作不受任何影響,但狀態(tài)機(jī)監(jiān)測(cè)對(duì)硬盤接口寄存器的寫入操作。一旦發(fā)現(xiàn)寫入命令寄存器的命令代碼為DMA 讀 (0xC8 或0x25)或DMA 寫(0xCA 或0x35)命令,則有限狀態(tài)機(jī)進(jìn)入DMA 狀態(tài)。

          因?yàn)榭紤]到數(shù)據(jù)經(jīng)加解密模塊會(huì)有200ns 左右的延時(shí),如果控制信號(hào)仍然直通一定不能滿 足DMA 傳輸協(xié)議的時(shí)序要求,所以理想的辦法是把控制信號(hào)也延時(shí)相應(yīng)的時(shí)間。

          延時(shí)多少的確定很困難,況且也沒(méi)有必要,我們采取的方法是設(shè)計(jì)了三個(gè)主要模塊:數(shù)據(jù) 接收模塊、數(shù)據(jù)處理模塊和數(shù)據(jù)發(fā)送模塊,連成一條處理流水線,這樣既能對(duì)數(shù)據(jù)流進(jìn)行完全 時(shí)序化的控制,又能維持較高的數(shù)據(jù)吞吐。如圖3 所示。數(shù)據(jù)接收模塊的任務(wù)是把硬盤發(fā)送過(guò)來(lái)的讀扇區(qū)數(shù)據(jù)或者 控制器發(fā)送來(lái)的寫扇區(qū)數(shù) 據(jù)正確的接收和緩存;數(shù)據(jù)處理模塊的任務(wù)是對(duì)扇區(qū)數(shù)據(jù)進(jìn)行加密或解密處理;數(shù)據(jù)發(fā)送模塊 的任務(wù)是把處理完的結(jié)果數(shù)據(jù)發(fā)送出去。

        FPGA頂層模塊布局

          由于數(shù)據(jù)流是雙向的,所以兩個(gè)方向上各有一條數(shù)據(jù)收發(fā)流水線。在一次DMA 傳輸中,只有一條流水線是工作的,且它們暫時(shí)獲得IDE 總線的控制權(quán)。  不失一般性,我們討論下執(zhí)行DMA 讀命令的全過(guò)程。首先,在PIO 狀態(tài)下將DMA 讀命 令的代碼0xC8(或0x25)寫入硬盤的命令寄存器。此后狀態(tài)機(jī)進(jìn)入DMA 讀狀態(tài),總線切換給 DMA 讀數(shù)據(jù)接收模塊和DMA 讀數(shù)據(jù)發(fā)送模塊。DMA 讀數(shù)據(jù)接收模塊與硬盤進(jìn)行握手確認(rèn), 啟動(dòng)UDMA 讀傳輸,此后每當(dāng)硬盤DMA strobe 信號(hào)(DMA 同步信號(hào))發(fā)生跳變,就對(duì)16 位 硬盤數(shù)據(jù)總線進(jìn)行采樣,并更新CRC 接收校驗(yàn);每采樣8 次則整合成一個(gè)128 位并行數(shù)據(jù),提 供給AES 解密模塊,該模塊取走這128 位數(shù)據(jù)開(kāi)始新一輪AES 解密迭代運(yùn)算,同時(shí)輸出前一 輪處理完的128 位解密數(shù)據(jù),并拆分為8 個(gè)16 位并行數(shù)據(jù),陸續(xù)存入一個(gè)16 位寬的FIFO。與 此同時(shí),DMA 讀數(shù)據(jù)發(fā)送模塊查詢到FIFO 中出現(xiàn)了數(shù)據(jù),就開(kāi)始不斷的從中讀取,并放在16 位數(shù)據(jù)總線上提供給 控制器,每放一次數(shù)據(jù),便翻轉(zhuǎn)一次DMA strobe 電平使得USB 控制 器的GPIF 接口能夠同步接收數(shù)據(jù),同時(shí)更新CRC 發(fā)送校驗(yàn)。

          當(dāng)硬盤把所有指定數(shù)量的加密數(shù)據(jù)都發(fā)送給FPGA 后會(huì)收到FPGA 的CRC 接收校驗(yàn)反饋, 若與硬盤內(nèi)部的CRC 校驗(yàn)一致,則硬盤認(rèn)為這次DMA 讀命令被正確執(zhí)行。

          當(dāng) FPGA 把所有處理完的解密數(shù)據(jù)都發(fā)送給USB 控制器后也會(huì)收到USB 控制器的CRC 校 驗(yàn)反饋,若與FPGA 內(nèi)部的CRC 發(fā)送校驗(yàn)一致,則可以認(rèn)為一次完整的含解密的DMA 讀命令 被正確執(zhí)行。

          圖 3 中的全局控制狀態(tài)機(jī)負(fù)責(zé)整個(gè)系統(tǒng)的控制和協(xié)調(diào),它實(shí)時(shí)的監(jiān)測(cè)PIO 寫入命令,并在恰當(dāng)?shù)臅r(shí)機(jī)把IDE 總線控制權(quán)切換給加密流水線或解密流水線。當(dāng)加解密流水線執(zhí)行完一次 DMA 傳輸命令后,總線控制權(quán)會(huì)重新交還給全局控制狀態(tài)機(jī)。



        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 禄劝| 阳原县| 黔西| 天峻县| 通江县| 乐安县| 玉龙| 桐城市| 射洪县| 合阳县| 安新县| 丰城市| 庆元县| 惠州市| 秭归县| 仲巴县| 大姚县| 南部县| 千阳县| 城口县| 开封县| 清徐县| 和林格尔县| 长宁县| 武隆县| 镇江市| 西畴县| 略阳县| 延津县| 周至县| 奉化市| 曲水县| 玉山县| 华坪县| 昌图县| 安仁县| 保山市| 玉树县| 奇台县| 新巴尔虎左旗| 广安市|