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

          新聞中心

          EEPW首頁 > 消費電子 > 設計應用 > 基于Nios II的語音加密傳輸系統(tǒng)設計

          基于Nios II的語音加密傳輸系統(tǒng)設計

          作者: 時間:2010-12-07 來源:網絡 收藏


          2.1.3 AES加解密模塊

          G.729A的編碼幀為80 bit/10 ms,根據對進行分幀編碼和傳輸的特點,在利用該聲碼器構造保密通信時選用分組密碼。本文采用高級標準AES完成數字語音信號的加解密,為了提高AES加解密速度,將AES加解密過程 的一條自定義指令。

          (1)AES算法及硬件實現

          AES模塊工作原理如下:在運算控制模塊(Control) 控制下,待明文與初始圈密鑰進行異或(AddRoundKey),接著進行Nr次圈迭代變換,除最后一圈(第Nr圈)省略列混合變換處,每圈包含字節(jié)代替變換(ByteSub)、行移位變換(ShiftRow)、列混合變換(MixColumn)和圈密鑰加法(AddRoundKey)四步變換。

          解密工作過程與加密相類似,待脫密的密文與初始圈密鑰進行異或(AddRoundKey),然后進行Nr圈迭代運算,除最后一圈(第Nr圈)省略逆列混合變換外,每圈包含逆字節(jié)代替變換(InvByteSub)、逆行移位變換(InvShiftRow)、逆列混合變換 (InvMixColumn)、圈密鑰加(AddRoundKey)四步變換。

          G.729A的語音編碼幀為80 bit/10 ms,每秒所需加密的數據約為8 Kbit,因此,在滿足語音加密的情況下,本文采用循環(huán)方式實現AES,節(jié)省硬件資源。其硬件加解密結構及其相關控制信號如圖5所示。

          AES硬件加解密結構
          AES硬件加解密結構
          圖5 AES硬件加解密結構

          (2)自定義指令邏輯

          自定制AES加密指令的內部硬件結構如圖6所示。從圖6可以看到用戶自定義邏輯功能(AES)連接到了ALU的2個輸入端以及ALU的輸出端,當使用 的自定義指令時,Nios II內部的ALU操作將被放棄,以用戶自定義邏輯的輸出結果作為有效結果。

          Nios自定義邏輯指令
           Nios自定義邏輯指令
          圖6 Nios自定義邏輯指令

          AES加解密模塊得到的自定義邏輯在多個時鐘周期完成,采用多周期自定義指令結構。涉及的信號線在dataa、datab、result 的基礎上增加了clk、clk_en、reset、start 4個信號。其指令結構如圖7所示。

          AES自定義指令結構
          AES自定義指令結構
          圖7 AES自定義指令結構

          2.1.4 通信傳輸模塊

          通信傳輸模塊利用MODEM在公共電話網PSTN上實現通信。PSTN網絡覆蓋面廣,用戶通過MODEM就可以方便地完成對接,實現通信,這在現有條件下非常實用。

          MODEM通過RS232接口與DE1相連,通過RJ45與PSTN網絡相連,解析來自Nios II控制系統(tǒng)的命令,來實現通信雙方的互連通信。


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();