当前位置:首页 > 通信技术 > 通信技术
[导读]本设计使用硬件描述语言VHDL在FPGA数字逻辑层面上实现AES加解密,为了系统的扩展性和构建良好的人机交互,设计通过PS/2键盘输入加密密钥,并将其显示在LCD上。在软核MicroBlaze上,通过SPI总线读写FIFO和RAM控制射频芯片CC2420,使系统具有信道选择、地址识别、自动CRC校验功能,使系统更加安全、通信误码率更低。

0 引言

  利用软件实施加密算法已经成为实时安全通信系统的重要瓶颈。标准的商品化CPU和DSP无法跟上数据加密算法的计算速度要求。此外,CPU和DSP需要完成太多的其他任务。基于FPGA高度优化的可编程的硬件安全性解决方案提供了并行处理能力,并且可以达到所要求的加密处理性能基准[1].然而如果仅使用FPGA可编程VHDL来实现的话,系统就不够灵活,升级困难,况且实现起来有很大的难度,本系统以AES加密算法为例,使用Xilinx SPARTAN 3E为开发平台,以Xilinx的嵌入式软核Microblaze为主控制器,调用FPGA的硬件VHDL编程实现的AES加解密和控制CC2420来实现高速有效的数据通信。

  1 系统设计思想

  本设计使用硬件描述语言VHDL在FPGA数字逻辑层面上实现AES加解密,为了系统的扩展性和构建良好的人机交互,设计通过PS/2键盘输入加密密钥,并将其显示在LCD上。在软核MicroBlaze上,通过SPI总线读写FIFO和RAM控制射频芯片CC2420,使系统具有信道选择、地址识别、自动CRC校验功能,使系统更加安全、通信误码率更低。

  1.1 数据帧结构设计

  为了更好的提高本系统数据的传输率,在官方zigbee的数据帧格式基础上做了修改。采用如表5-2所示的数据帧格式。数据帧发送时,CC2420自动在数据包的开始处加上前导码和帧起始分隔符在数据包末尾加CRC检验。
 

  1.2 数据可靠传输

  为了确保数据不出错和不丢失,本设计采用了CRC校验、超时重传、返回ACK和NOACK等措施来确保数据的不出错和丢失,

  2  系统模块构成

  加密端通过串口和网口从发送段接收数据,当接收够16字节(128bit),或不足时能自动补零成128bit后送给硬件AES加密模块。在软核Microblaze的控制下通过VHDL编程的AES加密后将数据进行组帧打包,通过软核对CC2420的寄存器的读写将数据通过无线发送端CC2420发送出去,同时等待发送段确认。接收端在接收到数据以后,从数据包中将数据提取,进行快速AES解密,解密完成后进行CRC校验,如果校验正确则向源地址发送ACK确认。将正确数据送出,如果校验失败,则返回NOACK。为了确保安全,AES加解密算法需要的密钥key由键盘输入和修改,同时可以在LCD上显示出来。必须保证两端key相同才能保证正常通信。

                                                                                    图1 系统总体控制数据流图
  3 AES加解密模块

  3.1.1 AES简介

  AES加解密算法(Rijndael算法)对待加密的明文先进行分段然后加密,明文的长度可以是l28位、192位或256位。同样,用于加密的密钥长度也有l28位、192位或256位。根据明文及密钥长度不同的组合,加密的轮次有10轮、12轮和l4轮。在圈函数的每一圈迭代中,包括4步变换,分别是字节代换运算、行变换、列混合以及圈密钥的加法变换。经过验证,选用l28位的明文和密钥是几种组合中加解密速度最快的[2]。所以在本系统设计中使用的为128位明文和128位密文的组合。由于AES为对称加解密,所以在此文中我们只讨论AES的加密方法,解密就是与AES对称的方式来进行的。

  3.1.2 AES加解密模块设计

  在本系统中,使用了FPGA的硬件描述语言(VHDL)来实现了AES的加解密算法,AES分别为轮密钥加、字节代换、行移位、列混淆、密钥扩展,下面为5个用硬件描述语言实现的小模块的分别介绍。由于列混淆模块、行移位模块、轮密钥加与文献[4]中算法相同在此不做讨论。

  ① 字节代换模块

  此模块为AES中的每一个字节提供了一个非线性代换。任一非零字节被函数所代替。如果x是零字节,y=b 就是SubBytes变化的结果。在本设计中,为了加快算法速度,将S盒预先写入RAM中,直接用地址来指示替代的字节,利用空间来换时间,达到了加快用算的目的。

  ②密钥扩展模块

  本设计采用了Xilinx IP核Single Block RAM 位宽32,深度64,在程序的开始,由用户设置的初始密钥系统按照密钥扩展算法生成的10轮扩展密钥,将生成的密钥按照地址次序从低到高放入RAM中,在每一轮执行addroundkey时取出对应轮数的密钥,与明文相加(异或)。

                                                                        图2 AES解密模块仿真波形
  
        3.2 无线通信模块

  在本系统中采用TI 公司的CC2420来实现数据的无线通信CC2420工作于免授权的2.4GHz频段,33个16位配置寄存器、15个命令选通寄存器、1个128字节的RX RAM、1个128字节的TX RAM、1个112字节的安全信息存储器。TX和RX RAM的存取可通过地址或者用两个8位的寄存器。主机可通过SPI总线设置其工作在Normal模式,通过SPI总线MOSI,MISO接口对TX FIFO和RX FIFO及状态进行写和读的操作,将数据写入和读出RAM来实现与CC2420的数据传输,通过触发CC2420STXON,SRXON来实现数据的无线发送和接收。表二是本系统CC2420涉及的寄存器及其功能。


  表2 是本系统CC2420涉及的寄存器及其功能

 

  3.3 软核控制模块
 
  3.3.1 软核MicroBlaze简介
 
  MicroBlaze 是一款由xilinx公司开发的嵌入式处理器软核,其采用RISC(Reduced Instruction Set Computer)优化架构。它符合IBM CoreConnect标准,能够与PPC405系统无缝连接[3]。MicroBlaze是一个非常简化却具有较高性能的软核,在Spartan3E系列FPGA中它只占400个Slice,相当于10万门FPGA容量的1/3。其为哈佛结构,32位地址总线,独立的指令和数据缓存,并且有独立的数据和指令总线连接到IBM的PLB总线,使得它能很容易和其它外设IP核一起完成整体功能。支持SPI、I2C、PCI、CAN总线,支持重置、硬件异常、中断、用户异常、暂停等机制,可配置UART、GPIO等接口。
 
  3.3.2 microblaze的控制流程
 
                                               图3 microblaze的控制流程
 
  3.3.3 microblaze的控制流程主程序
 
  main () {
 
  Initial()//初始化系统;
 
  CmdSend()//上位机命令输入;
 
  DataRev()//数据接收;
 
  AESEny()//数据加密;
 
  DataPackage()数据打包;
 
  CC2420Sen()加密数据发送;
 
  Return success; }
 
  结语
 
  本系统将软件加解密(在50M的频率下使用软件来进行加解密)与硬件加解密时间做了对比:如表3所示。
                                           表3 软件和硬件加密对比
                                        表4 AES加密占用FPGA资源统计表
 
  该方案充分有效的利用了Spartan 3E的资源,尤其为可编程逻辑和RAM的利用。其中AES加解密中的乘法运算均由LUT查找表来实现,用空间换取时间,获得了很高的算法速度。在AES算法测试时我们发现80%的AES加解密时间都用于密钥扩展算法中,如果能再进一步把算法优化,比如做成流水线的算法模式的话,加解密时间又能减少近20%,即由现在的6.74us减少到略大于5.39us,效率又可以增加很多。
 
  参考文献:
 
  [1]AES算法FPGA实现分析,唐金艺,[M] 海军计算技术研究所
 
  [2]唐明,张焕国,刘树渡等 AES的高性能硬件设计与研究 [M] 武汉大学计算机学院
 
  [3]赵峰 马迪民 孙伟等 FPGA上的嵌入式设计[M] 2008.4
 
  [4]佟玉伟 陆浪如 FPGA先进加密算法 (AES) 的并行实现 [M] 交通与计算机 2002.6
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭