3-DES算法的FPGA高速实现
6个寄存器,使得加/解密速度可以提高近16倍。在DES模块的每一轮中设计3级流水线,尽管这样增加了48个周期的时延,但却进一步提高了整体处理的速度性能;同时,将数据加/解密部分和密钥生成部分分开单独设计,可以减少相邻流水线级间的逻辑层数目。
2.2S盒设计
通过时间分析发现,S盒在整个设计中占了很大的比重。S盒性能的提高对于整个设计性能会有很大的改善,因此S盒是整个设计优化的重点。
DES的8个S盒分别是一个满足特殊性能的6~4位的变换。在VHDL或Verilog语言中,可以直接用CASE语句来实现。这是最简单的实现方法,但是HDL语言都属于高级语言,它们强烈依赖于编译器的优化能力,往往对设计者来说,涉及得越少、编程越简单,代码效率越不高,这对于高速实现来说是不可取的。在实现过程中通过分析工具也发现,依赖于编译器的实现不但复杂,而且占用大量的空间。这样,S盒成了速度的瓶颈,为此,采用ROM来实现。XC2S100的LUT可以配置为16×1位的ROM,把输入的6位作为地址,对应的地址空间里存放的就是输出的4位,从而实现了6~4位的查找表LUT,所需时间只是FPGA中CLB的传输时间加上传输线上的延时,如图3。
2.3密钥生成器设计
密钥生成器的设计是独立于DES轮函数运算实现的,采用3级流水线来与轮函数中的流水线相平衡,单轮的实现如图4。
其中,3级流水线由移位寄存器(SR)和1个触发器(FF)构成,在SR中完成两级流水线,在FF中实现第三级。XC2S100的LUT中的每个查找表LUT可以用来生成1~16个移位寄存器,而且在一个单独的可配置逻辑功能块CLB中连接8个移位寄存器来构成一个128位的移位寄存器。
图53-DES实现的结构
2.43-DES的实现
将上述所设计的三份DES模块在FPGA中组合,实现如图5所示的完整连接。整个时延约为单个DES模块的三倍。
结语
我们在Xilinx的开发平台Foundation4.2i下用VerilogHDL完成设计,并进行了综合和仿真;成功下载到我们实验室的试验板上的XC2S100中,用VC++6.0编写了测试程序;在Windows98下运行,均能正确实现加/解密功能。在试验板上晶振为25MHz的情况下,大致评测出加密速度为520Mb/s。
《3-DES算法的FPGA高速实现(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/169327.html
2.2S盒设计
通过时间分析发现,S盒在整个设计中占了很大的比重。S盒性能的提高对于整个设计性能会有很大的改善,因此S盒是整个设计优化的重点。
DES的8个S盒分别是一个满足特殊性能的6~4位的变换。在VHDL或Verilog语言中,可以直接用CASE语句来实现。这是最简单的实现方法,但是HDL语言都属于高级语言,它们强烈依赖于编译器的优化能力,往往对设计者来说,涉及得越少、编程越简单,代码效率越不高,这对于高速实现来说是不可取的。在实现过程中通过分析工具也发现,依赖于编译器的实现不但复杂,而且占用大量的空间。这样,S盒成了速度的瓶颈,为此,采用ROM来实现。XC2S100的LUT可以配置为16×1位的ROM,把输入的6位作为地址,对应的地址空间里存放的就是输出的4位,从而实现了6~4位的查找表LUT,所需时间只是FPGA中CLB的传输时间加上传输线上的延时,如图3。
2.3密钥生成器设计
密钥生成器的设计是独立于DES轮函数运算实现的,采用3级流水线来与轮函数中的流水线相平衡,单轮的实现如图4。
其中,3级流水线由移位寄存器(SR)和1个触发器(FF)构成,在SR中完成两级流水线,在FF中实现第三级。XC2S100的LUT中的每个查找表LUT可以用来生成1~16个移位寄存器,而且在一个单独的可配置逻辑功能块CLB中连接8个移位寄存器来构成一个128位的移位寄存器。
图53-DES实现的结构
2.43-DES的实现
将上述所设计的三份DES模块在FPGA中组合,实现如图5所示的完整连接。整个时延约为单个DES模块的三倍。
结语
我们在Xilinx的开发平台Foundation4.2i下用VerilogHDL完成设计,并进行了综合和仿真;成功下载到我们实验室的试验板上的XC2S100中,用VC++6.0编写了测试程序;在Windows98下运行,均能正确实现加/解密功能。在试验板上晶振为25MHz的情况下,大致评测出加密速度为520Mb/s。
《3-DES算法的FPGA高速实现(第2页)》