集成电路EDA设计与实践(3)

2019-04-23 19:25

2013级集成电路EDA设计与实践

1.制定工程的文件存放目录、工程名以及最顶层的设计实体名,在默认情况下,工程名与最顶层的设计实体名是相同的;

2.添加文件,包括最顶层的设计实体文件以及一些额外的电路模块描述文件或定制的功能库;

3.选择目标芯片,具体芯片最好让编译器根据工程设计的实际情况自动选择; 4.第三方EDA工具设定,包括设计输入与综合工具、仿真工具、时序分析工具等,默认为Quartus II自带的仿真器、综合器以及时序分析器;

5.最后一步系统将整体工程的各项参数和设置总结并显示出来,这时即可完成工程的创建。

1.6 本章小结

本章首先介绍了DES加密系统的研究背景,现状,意义及应用前景,然后讲述了DES的基本概念及特点,介绍了本次设计采用的硬件开发语言VHDL和EDA开发工具 Quartus ||。

11

2013级集成电路EDA设计与实践

第二章 密钥生成

2.1 取得密钥

从用户处得到一个56位的密钥,该密钥可以由用户随机设定。

2.2 等分密钥

表1

50 1 9 17 43 51 2 10 36 44 52 3 29 37 45 53 表2

56 7 13 19 49 55 6 12 42 48 54 5 35 41 47 25 28 34 40 18 21 27 33 11 14 20 26 4 22 30 38 46 15 23 31 39 8 16 24 32 把56位输入密钥分成均等的A,B两部分,每部分为28位,参照表1和表2把输入密钥的位值填入相应的位置. 按照表1所示A的第一位为输入的56位密钥的第50位,A的第2位为56位密钥的第43位,...,依此类推,A的最后一位最后一位是56位密钥的第32位。

k?k1k2k3??k55k56A?k50k43k36??k39k32 B?k56k49k42??k11k4 其具体代码如下: process(key ) begin

c0(1to7)<=key(50)&key(43)&key(36)&key(29)&key(22)&key(15)&key(8); c0(8to14)<=key(1)&key(51)&key(44)&key(37)&key(30)&key(23)&key(16); c0(15to21)<=key(9)&key(2)&key(52)&key(45)&key(38)&key(31)&key(24);

12

2013级集成电路EDA设计与实践

c0(22to28)<=key(17)&key(10)&key(3)&key(53)&key(46)&key(39)&key(32); d0(1to7)<=key(56)&key(49)&key(42)&key(35)&key(28)&key(21)&key(14); d0(8 to 14)<=key(7)&key(55)&key(48)&key(41)&key(34)&key(27)&key(20); d0(15 to 21)<=key(13)&key(6)&key(54)&key(47)&key(40)&key(33)&key(26); d0(22 to 28)<=key(19)&key(12)&key(5)&key(25)&key(18)&key(11)&key(4); end process;

其中key为从用户处得到的56位密钥,经过等分以后,变为c0和d0两部分,分别为28位的密钥。

2.3 密钥移位

表3

i 1 ? 1 2 1 3 2 11 2 4 2 12 2 5 2 13 2 6 2 14 2 7 2 15 2 8 2 16 1 i 9 10 ? 1 2 DES算法的密钥是经过16次迭代得到一组密钥的,把2.2中生成的A,B视为迭代的起始密钥,表3显示在第i次迭代时密钥循环左移的位数. 比如在第1次迭代时密钥循环左移1位,第3次迭代时密钥循环左移2位. 第9次迭代时密钥循环左移1位,第14次迭代时密钥循环左移2位. 第一次迭代: A(1) = ?(1) A B(1) = ?(1) B 第i次迭代:

A(i) = ?(i) A(i-1) B(i) = ?(i) B(i-1) 其具体代码如下: 循环左移一位

c_s<=a(2 to 28)&a(1 ); d_s<=b(2 to 28)&b(1 );

13

2013级集成电路EDA设计与实践

cd<=c_s(1 to 28)&d_s(1 to 28); 循环左移两位

c_s<=a(3 to 28)&a(1 to 2); d_s<=b(3 to 28)&b(1 to 2); cd<=c_s(1 to 28)&d_s(1 to 28);

2.4 密钥选取

14 15 26 41 51 34 17 6 8 52 45 53 11 21 16 31 33 46 表4

1 5 3 12 13 30 39 29 2842405632

24 10 7 37 48 42 23 27 47 44 50 19 20 55 49 36 在2.3中第i次迭代生成的两个28位长的密钥为

合并

按照表4所示k的第一位为56位密钥的第14位,k的第2位为56位密钥的第17位,...,依此类推,k的最后一位最后一位是56位密钥的第32位。 生成与进行第i次迭代加密的数据进行按位异或的48位使用密钥:

其具体代码如下:

k(1 to 6)<=cd(14)&cd(17)&cd(11)&cd(24)&cd(1)&cd(5);

14

2013级集成电路EDA设计与实践

k(7 to 12)<=cd(3)&cd(28)&cd(15)&cd(6)&cd(21)&cd(10); k(13 to 18)<=cd(23)&cd(19)&cd(12)&cd(4)&cd(26)&cd(8); k(19 to 24)<=cd(16)&cd(7)&cd(27)&cd(20)&cd(13)&cd(2); k(25 to 30)<=cd(41)&cd(52)&cd(31)&cd(37)&cd(47)&cd(55); k(31 to 36)<=cd(30)&cd(40)&cd(51)&cd(45)&cd(33)&cd(48); k(37 to 42)<=cd(44)&cd(49)&cd(39)&cd(56)&cd(34)&cd(53); k(43 to 48)<=cd(46)&cd(42)&cd(50)&cd(36)&cd(29)&cd(32);

2.5 迭代

DES算法密钥生成需要进行16次迭代,在完成16次迭代前,循环执行2.3-2.4步.最终形成16套加密密钥:key[0] , key[1] , key[2] ,…. key[14] , key[15] .

其具体代码如下:

u1:ls1 port map(c0,d0,c1,d1,k1); u2:ls1 port map(c1,d1,c2,d2,k2); u3:ls2 port map(c2,d2,c3,d3,k3); u4:ls2 port map(c3,d3,c4,d4,k4); u5:ls2 port map(c4,d4,c5,d5,k5); u6:ls2 port map(c5,d5,c6,d6,k6); u7:ls2 port map(c6,d6,c7,d7,k7); u8:ls2 port map(c7,d7,c8,d8,k8); u9:ls1 port map(c8,d8,c9,d9,k9); u10:ls2 port map(c9,d9,c10,d10,ka); u11:ls2 port map(c10,d10,c11,d11,kb); u12:ls2 port map(c11,d11,c12,d12,kc); u13:ls2 port map(c12,d12,c13,d13,kd); u14:ls2 port map(c13,d13,c14,d14,ke); u15:ls2 port map(c14,d14,c15,d15,kf); u16:ls1 port map(c15,d15,c16,d16,kg);

15


集成电路EDA设计与实践(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小松鼠找花生果(第二教时)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: