利用软件实施加密算法已经成为实时安全通信系统的重要瓶颈。标准的商品化CPU和DSP无法跟上数据加密算法的计算速度要求。此外,CPU和DSP需要完成太多的其他任务。基于FPGA高度优化的可编程的硬件安全性解决方案提供了并行处理能力,并且可以达到所要求的加密处理性能基准[1].然而如果仅使用FPGA可编程VHDL来实现的话,系统就不够灵活,升级困难,况且实现起来有很大的难度,本系统以AES加密算法为例,使用Xilinx SPARTAN 3E为开发平台,以xilinx的嵌入式软核microblaze为主控制器,调用FPGA的硬件VHDL编程实现的AES加解密和控制CC2420来实现高速有效的数据通信。系统设计思想 本设计使用硬件描述语言VHDL在FPGA数字逻辑层面上实现AES加解密,为了系统的扩展性和构建良好的人机交互,设计通过PS/2键盘输入加密密钥,并将其显示在LCD上。在软核MicroBlaze上,通过SPI总线读写FIFO和RAM控制射频芯片CC2420,使系统具有信道选择、地址识别、自动CRC校验功能,使系统更加安全、通信误码率更低。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
表1 数据帧结构
数据可靠传输 为了确保数据不出错和不丢失,本设计采用了CRC校验、超时重传、返回ACK和NOACK等措施来确保数据的不出错和丢失, 系统模块构成 加密端通过串口和网口从发送段接收数据,当接收够16字节(128bit),或不足时能自动补零成128bit后送给硬件AES加密模块。在软核Microblaze的控制下通过VHDL编程的AES加密后将数据进行组帧打包,通过软核对CC2420的寄存器的读写将数据通过无线发送端CC2420发送出去,同时等待发送段确认。接收端在接收到数据以后,从数据包中将数据提取,进行快速AES解密,解密完成后进行CRC校验,如果校验正确则向源地址发送ACK确认。将正确数据送出,如果校验失败,则返回NOACK。为了确保安全,AES加解密算法需要的密钥key由键盘输入和修改,同时可以在LCD上显示出来。必须保证两端key相同才能保证正常通信。
图1 系统总体控制数据流图
AES加解密模块
图3 microblaze的控制流程
3.3.3 microblaze的控制流程主程序 main () { Initial()//初始化系统; CmdSend()//上位机命令输入; DataRev()//数据接收; AESEny()//数据加密; DataPackage()数据打包; CC2420Sen()加密数据发送; Return success; } 结语 本系统将软件加解密(在50M的频率下使用软件来进行加解密)与硬件加解密时间做了对比:如表3所示。
表3 软件和硬件加密对比
表4 AES加密占用FPGA资源统计表
一周热门 更多>