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

          新聞中心

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

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

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

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

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

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

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

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

          FPGA頂層模塊布局

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

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

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

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



          評論


          相關(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); })();