2013级集成电路EDA设计与实践
第四章 仿真结果及分析
利用QuartusⅡ自带的仿真器,输入激励为10ns周期(CLK),输入加密数据0(64位二进制),密匙0(56位二进制),仿真结果如图4-1所示。
图4-1基于QuartusⅡ的时序仿真
从第1个数据块开始加密起,经16轮次的延时后,每一轮次延时都会有一个数据块编码完成输出一个密文块。一个轮次延时就是一个时钟周期,即每个时钟周期得到一个密文块。但完整的16轮DES加密数据块还是要等到第16个时钟才输出。可以验证,非第16个时钟输出的加密数据块并不符合有关参考值。
通过波形,可以看到第16轮的加密结果(一个数据完整的DES加密在第16轮完成):
KEY_IN:0000000000000000 DIN_IN:0000000000000000 DOUT:8CA64DE9C1B123A7
结果表明本文设计的DES加密系统的加密功能是正确可靠的。
29
2013级集成电路EDA设计与实践
第五章 结论
本文首先了解了
DES加密系统的背景及其意义。其次,深入理解了DES
的基本概念,特点及原理。在其基础上,采用VHDL语言具体描述加密的过程。主要包括两个方面,有密钥的产生和数据的加密。其中,密钥的产生由取得密钥,等分密钥,密钥移位,密钥选取,迭代等步骤构成。数据的加密由取得数据,初始换位,数据扩展,数据压缩,数据换位,交换数据, 数据整理等步骤构成。最后,采用Quartus ||开发工具对编写的硬件描述语言VHDL进行仿真分析,分析结果显示,当输入的加密数据为0(64位二进制),密钥为0(56位二进制)时,其输出结果为8CA64DE9C1B123A7。因此,本文设计的DES加密系统的加密功能是正确可靠的。
30
2013级集成电路EDA设计与实践
附录:整体代码
--sboxc.vhd library ieee;
use ieee.std_logic_1164.all; entity sboxc is port(
a :in std_logic_vector(1 to 48); couta:out std_logic_vector(1 to 32)); end sboxc;
architecture struct of sboxc is signal cout:std_logic_vector(1 to 32); signal a_s:std_logic_vector(1 to 48); begin a_s<=a; process(a)
variable i: std_logic_vector(1 to 48); begin
i(1 to 6):=a_s(1)&a_s(6)&a_s(2)&a_s(3)&a_s(4)&a_s(5); i(7 to 12):=a_s(7)&a_s(12)&a_s(8)&a_s(9)&a_s(10)&a_s(11); i(13 to 18):=a_s(13)&a_s(18)&a_s(14)&a_s(15)&a_s(16)&a_s(17); i(19 to 24):=a_s(19)&a_s(24)&a_s(20)&a_s(21)&a_s(22)&a_s(23); i(25 to 30):=a_s(25)&a_s(30)&a_s(26)&a_s(27)&a_s(28)&a_s(29); i(31 to 36):=a_s(31)&a_s(36)&a_s(32)&a_s(33)&a_s(34)&a_s(35); i(37 to 42):=a_s(37)&a_s(42)&a_s(38)&a_s(39)&a_s(40)&a_s(41); i(43 to 48):=a_s(43)&a_s(48)&a_s(44)&a_s(45)&a_s(46)&a_s(47); case i(1 to 6) is
when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \
31
2013级集成电路EDA设计与实践
when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \
when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \
when \ when \ when \ when \ when \ when \ when \ when \ when \
32
相关推荐: