体系开发规划:
1.项目名称及主要内容
本项目名称是:根据FPGA的信息安全体系规划。
主要内容为:本模块选用xilinx公司的Spartan 3E系列XC3S500E型FPGA作为中心操控芯片,对收集究竟模拟信号进行数字转化后通过3DES算法进行加密、然后通过网络传输,再通过解密算法解密出明文数据。虽然DES已被证实是不安全的算法(主要是密钥太短),但三重DES增加了密钥长度,由56位增加到112或168位,有更高的安全性,并且在新一代因特网安全规范IPSEC协议会集已将DES作为加密规范。运用3DES能够使原体系不作大的改动,所以对3DES的研讨仍有很大的现实意义。在此运用了3DES算法,确保了体系功用的完整性与数据传输的安全性。该辨认模块可用于国内外卫星通信、网关服务器、机顶盒、视频传输以及其它很多的数据传输事务中,也可和计算机等设备联机运用,满意各个方面的不同需求,因而它的规划具有很广泛的使用远景和商场价值。
2.项目关键技能及规划
体系框图见下图
2.1 A/D、D/A模块
这两个模块功用是完结信号的转化功用,完结模拟信号与数字信号之间的转化。
2.3 数据加密(解密)
将转化好的明文数据存储在事前固化好的RAM1,根据3DES算法模块对明文进行加密,并将密文存储到RAM2中,并通过数据库技能连接到网络,通过网络传达,将传送后的密文数据收集到RAM3中,通过解密算法模块对密文解密存储到RAM4。
算法全体结构:通过一个密钥操控模块为3DES供给三个56位的密钥以及加/解密操控信号。密钥的输入是28位的,所发生的三个56位密钥并不是同一时间供给给3DES的,相互之间有16个时钟的延时,这样能够确保修正密钥后并不影响从前流水线的作业。再加上输入、输出接口就构成了该规划的全体结构,如图5所示。限于图的巨细,不影响了解的部分信号没有画出。加/解密的流程是先输入六组28位的密钥,然后就能够发送需求加/解密的数据了,中心能够有连续,假如需求更改密钥,也是先输入改后的密钥,再输入数据,可实时更改,无需比及流水线中最终一组数据加/解密完结。
3 程序代码及仿真
3des部分代码
module des_3(key1, key2, key3, datain, sysclk, en, reset, mode1, mode2, mode3, load, ready, dataout);
input [64:1] key1;
input [64:1] key2;
input [64:1] key3;
input [64:1] datain;
input sysclk;
input en;
input reset;
input mode1;
input mode2;
input mode3;
input load;
output ready;
output [64:1] dataout;
wire flagwire1,flagwire2;
wire[64:1] datastream1,datastream2;
DES jia1(.sysclk(sysclk),.en(en),.reset(reset),.mode(mode1),
.load(load),.key(key1),.datain(datain),.dataout(datastream1),
.ready(),.flag(flagwire1));
DES jie(.sysclk(sysclk),.en(flagwire1),.reset(reset),.mode(mode2),
.load(load),.key(key2),.datain(dataistream1),.dataout(datastream2), .ready(),.flag(flagwire2));
DESjia2(.sysclk(sysclk),.en(flagwire2),.reset(reset),.mode(mode3), .load(load),.key(key3),.datain(datastream2),.dataout(dataout),
.ready(ready),.flag());
Endmodule
操控代码
module control(sysclk, reset, load, en, ready,
ct1,ct2,ct3,ct4,ct5,ct6,ct7,ct8,
ct9,ct10,ct11,ct12,ct13,ct14,ct15,ct16);
input sysclk;
input reset;
input load;
input en;
output ready,ct1,ct2,ct3,ct4,ct5,ct6,ct7,ct8,
ct9,ct10,ct11,ct12,ct13,ct14,ct15,ct16;
wire ready,ct1,ct2,ct3,ct4,ct5,ct6,ct7,ct8,
ct9,ct10,ct11,ct12,ct13,ct14,ct15,ct16;
D d1(sysclk,reset,en,load,ct1);
D d2(sysclk,reset,en,ct1,ct2);
D d3(sysclk,reset,en,ct2,ct3);
D d4(sysclk,reset,en,ct3,ct4);
D d5(sysclk,reset,en,ct4,ct5);
D d6(sysclk,reset,en,ct5,ct6);
D d7(sysclk,reset,en,ct6,ct7);
D d8(sysclk,reset,en,ct7,ct8);
D d9(sysclk,reset,en,ct8,ct9);
D d10(sysclk,reset,en,ct9,ct10);
D d11(sysclk,reset,en,ct10,ct11);
D d12(sysclk,reset,en,ct11,ct12);
D d13(sysclk,reset,en,ct12,ct13);
D d14(sysclk,reset,en,ct13,ct14);
D d15(sysclk,reset,en,ct14,ct15);
D d16(sysclk,reset,en,ct15,ct16);
D d17(sysclk,reset,en,ct16,ready);
endmodule
4 RAM作业方法的挑选
“乒乓操作”(pingpong operation)是一个常常使用于数据流操控的处理技巧,典型的乒乓操作方法如图1所示。
乒乓操作的处理流程为:输入数据流通过“输入数据流挑选单元”将数据流等时分配到两个数据缓冲区,数据缓冲模块能够为任何存储模块,比较常用的存储单元为双口RAM(DPRAM)、单口RAM(SPRAM)、FIFO等。咱们挑选单口ram就能够完结其功用。
在第1个缓冲周期:将输入的数据流缓存到“数据缓冲模块1”;在第2个缓冲周期:通过“输入数据挑选单元”的切换,将输入的数据流缓存到“数据缓冲模块2”,一起将“数据缓冲模块1”缓存的第1个周期数据通过“输出数据挑选单元”的挑选,送到“数据流运算处理模块”进行运算处理;
在第3个缓冲周期:通过“输入数据挑选单元”的再次切换,将输入的数据流缓存到“数据缓冲模块1”,一起将“数据缓冲模块2”缓存的第2个周期的数据通过“输出数据挑选单元”切换,送到“数据流运算处理模块”进行运算处理。如此循环。
乒乓操作的最大特点是通过“输入数据挑选单元”和“输出数据挑选单元”按节拍、相互配合的切换,将通过缓冲的数据流没有中止地送到“数据流运算处理模块”进行运算与处理。把乒乓操作模块作为一个全体,站在这个模块的两头看数据,输入数据流和输出数据流都是接二连三的,没有任何中止,因而十分合适对数据流进行流水线式处理。所以乒乓操作常常使用于流水线式算法,完结数据的无缝缓冲与处理。
乒乓操作的第二个长处是能够节省缓冲区空间。比如在WCDMA基带使用中,1个帧是由15个时隙组成的,有时需求将1整帧的数据延时一个时隙后处理,比较直接的方法是将这帧数据缓存起来,然后延时1个时隙进行处理。这时缓冲区的长度是1整帧数据长,假定数据速率是3.84Mbps,1帧长10ms,则此刻需求缓冲区长度是38400位。假如选用乒乓操作,只需界说两个能缓冲1个时隙数据的RAM(单口RAM即可)。当向一块RAM写数据的时分,从另一块RAM读数据,然后送到处理单元处理,此刻每块RAM的容量仅需2560(=38400/15)位即可,2块RAM加起来也只要5120位的容量。
别的,奇妙运用乒乓操作还能够到达用低速模块处理高速数据流的作用。这儿咱们挑选乒乓操作方法来作业。
2)加密模块中存在一些问题,例如:3DES的代码还不完善,弥补之后在仿真是呈现不定态:
3)Ram中存在的问题:直接调用Ip核能够简练地生成咱们所需求的ram,但在前仿真时Modelsim SE 总是呈现过错。直接依照书上的仿真比如去实验,也仿真不出来,开始估测是软件破译的不全,有些库无法调用所形成。