新聞中心

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

基于MEMS和FPGA的移動(dòng)硬盤(pán)數(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ì)硬盤(pán)的訪問(wèn)權(quán)。 根據(jù) ATA 協(xié)議,對(duì)支持Ultra DMA 傳輸方式的IDE 硬盤(pán)而言,操作歸結(jié)為兩種,對(duì)硬盤(pán)接 口寄存器讀寫(xiě)以及對(duì)硬盤(pán)扇區(qū)進(jìn)行Ultra DMA 批量扇區(qū)。為了對(duì)硬盤(pán)數(shù)據(jù)進(jìn)行加解密,我們把 插入連接GPIF 接口和硬盤(pán)接口的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)保持直通,因而讀寫(xiě)硬盤(pán)接口寄存器的操作不受任何影響,但狀態(tài)機(jī)監(jiān)測(cè)對(duì)硬盤(pán)接口寄存器的寫(xiě)入操作。一旦發(fā)現(xiàn)寫(xiě)入命令寄存器的命令代碼為DMA 讀 (0xC8 或0x25)或DMA 寫(xiě)(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ù)是把硬盤(pán)發(fā)送過(guò)來(lái)的讀扇區(qū)數(shù)據(jù)或者 控制器發(fā)送來(lái)的寫(xiě)扇區(qū)數(shù) 據(jù)正確的接收和緩存;數(shù)據(jù)處理模塊的任務(wù)是對(duì)扇區(qū)數(shù)據(jù)進(jìn)行加密或解密處理;數(shù)據(jù)發(fā)送模塊 的任務(wù)是把處理完的結(jié)果數(shù)據(jù)發(fā)送出去。

FPGA頂層模塊布局

  由于數(shù)據(jù)流是雙向的,所以?xún)蓚€(gè)方向上各有一條數(shù)據(jù)收發(fā)流水線。在一次DMA 傳輸中,只有一條流水線是工作的,且它們暫時(shí)獲得IDE 總線的控制權(quán)?! 〔皇б话阈裕覀冇懻撓聢?zhí)行DMA 讀命令的全過(guò)程。首先,在PIO 狀態(tài)下將DMA 讀命 令的代碼0xC8(或0x25)寫(xiě)入硬盤(pán)的命令寄存器。此后狀態(tài)機(jī)進(jìn)入DMA 讀狀態(tài),總線切換給 DMA 讀數(shù)據(jù)接收模塊和DMA 讀數(shù)據(jù)發(fā)送模塊。DMA 讀數(shù)據(jù)接收模塊與硬盤(pán)進(jìn)行握手確認(rèn), 啟動(dòng)UDMA 讀傳輸,此后每當(dāng)硬盤(pán)DMA strobe 信號(hào)(DMA 同步信號(hào))發(fā)生跳變,就對(duì)16 位 硬盤(pán)數(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ā)送模塊查詢(xún)到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)硬盤(pán)把所有指定數(shù)量的加密數(shù)據(jù)都發(fā)送給FPGA 后會(huì)收到FPGA 的CRC 接收校驗(yàn)反饋, 若與硬盤(pán)內(nèi)部的CRC 校驗(yàn)一致,則硬盤(pá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 寫(xiě)入命令,并在恰當(dāng)?shù)臅r(shí)機(jī)把IDE 總線控制權(quán)切換給加密流水線或解密流水線。當(dāng)加解密流水線執(zhí)行完一次 DMA 傳輸命令后,總線控制權(quán)會(huì)重新交還給全局控制狀態(tài)機(jī)。



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉