【混沌加解密调制解调】基于FPGA的混沌自同步混沌数字保密通信系统
1.软件版本
quartusii12.1
2.本算法理论知识
本系统的基本结构,我们遵循你所提供的结构进行,整个框图如下所示:
各个部分的功能如下:
3.核心代码
//`timescale 1 ns/ 100 ps module Encryption_complete_system(i_clk,i_rst,i_enable,//the enable of signali_voice, //the signalo_enable,//the enable of p2so_serial_dout,//the serial data of signalo_serial_frame,o_T_signal//the data of Encryption);input i_clk; input i_rst; input i_enable; input[15:0] i_voice;output o_enable; output o_serial_dout; output o_serial_frame; output signed[31:0]o_T_signal;//change the parallel data to serial data p2s p2s_u(.i_clk (i_clk),.i_rst (i_rst),.i_enable (i_enable),.i_voice (i_voice),.o_enable (o_enable),.o_serial_dout(o_serial_dout)); add_frame add_frame_u(.i_clk (i_clk),.i_rst (i_rst),.i_din (o_serial_dout),.i_enable (o_enable),.o_dout (o_serial_frame),.o_enable ()); wire signed[31:0]xn; wire signed[31:0]yn; wire signed[31:0]zn; Lorenz Lorenz_u(.i_clk (i_clk),.i_rst (i_rst),.i_yn (o_T_signal),.o_xn (xn), .o_yn (yn),.o_zn (zn));Encryption Encryption_u(.i_clk (i_clk),.i_rst (i_rst),.i_din (o_serial_frame),.i_yn (yn),.o_signal (o_T_signal)); endmodule //`timescale 1 ns/ 100 ps module Decryption_complete_system(i_clk,i_rst,i_rec_signal,o_dout,o_dout_sign,o_peak,o_peak_enable,o_peak_dout,o_enable2,o_voice_dout); input i_clk; input i_rst; input signed[31:0] i_rec_signal; output signed[31:0]o_dout; output o_dout_sign; output[6:0] o_peak; output o_peak_dout; output o_peak_enable; output o_enable2; output[15:0] o_voice_dout; wire signed[31:0]xn; wire signed[31:0]yn; wire signed[31:0]zn; Lorenz2 Lorenz2_u(.i_clk (i_clk),.i_rst (i_rst),.i_yn (i_rec_signal),.o_xn (xn), .o_yn (yn),.o_zn (zn)); Decryption Decryption_u(.i_clk (i_clk),.i_rst (i_rst),.i_din (i_rec_signal),.i_yn (yn),.o_signal(o_dout));reg o_dout_sign; always @(posedge i_clk or posedge i_rst) beginif(i_rst)begino_dout_sign <= 1'b0;end else beginif(o_dout < 32'h0000_00ff)o_dout_sign <= 1'b0;elseo_dout_sign <= 1'b1; end end find_frame find_frame_u(.i_clk (i_clk),.i_rst (i_rst),.i_din (o_dout_sign),.o_peak (o_peak),.o_dout (o_peak_dout),.o_enable(o_peak_enable) ); s2p s2p_u(.i_clk (i_clk),.i_rst (i_rst),.i_enable (o_peak_enable),.i_serial_din (o_peak_dout),.o_enable (o_enable2),.o_voice_dout (o_voice_dout)); endmodule clc; clear; close all;N = 50000;x = zeros(N,1); y = zeros(N,1); z = zeros(N,1);x(1) = 0.001; y(1) = 0.002; z(1) = 0.02;S1 = double(rand(N,1)>=0.5); %简化后的发送 for n = 1:N-1n%反馈if n == 1S1_T(n)= S1(n) + y(n); y(n+1) = 0.028*x(n) - 0.001*x(n)*z(n) + 0.999*y(n); x(n+1) = 0.99*x(n) + 0.01*y(n);z(n+1) = 0.001*x(n)*y(n) + 0.9973333*z(n); elseS1_T(n)= S1(n) + y(n);y(n+1) = 0.028*x(n) - 0.001*x(n)*z(n) + 0.999*S1_T(n); x(n+1) = 0.99*x(n) + 0.01*S1_T(n);z(n+1) = 0.001*x(n)*S1_T(n) + 0.9973333*z(n); endend%简化后的接收 for n = 1:N-1n%反馈S1_R(n)= S1_T(n) - y(n);y(n+1) = 0.028*x(n) - 0.001*x(n)*z(n) + 0.999*S1_T(n); x(n+1) = 0.99*x(n) + 0.01*S1_T(n);z(n+1) = 0.001*x(n)*S1_T(n) + 0.9973333*z(n); endfigure; subplot(311); plot(S1); title('原信号'); axis([1,N,-1,2]);subplot(312); plot(S1_T); title('加密后的信号');subplot(313); plot(S1_R); title('解密后的信号'); axis([1,N,-2,2]);4.操作步骤与仿真结论
首先实现使用MATLAB进行算法的仿真,我们得到的仿真结果如下所示:
运行MATLAB程序:
这个是混沌模型的基本仿真,说明公式以及初始值选取的正确性。
运行MATLAB程序:
这个程序是混沌加密调制解调系统的MATLAB浮点仿真结果图,说明上面的结果是正确的。
运行MATLAB程序:
从上面的仿真结果可知,以定点进行仿真,只要量化宽度满足一定要求之后,其完全不影响系统的精度。
根据上面的介绍,我们可以编写了如下的程序:
自上而下,依次为:
系统顶层文件
——加密调制模块
————加密子模块,lorenz混沌序列产生模块,组帧模块,并串模块。
——解密解调模块
————解密子模块,Lorenz混沌序列产生模块,搜帧模块,串并模块。
仿真结果如下所示:
其顶层的文件的管脚为:
| 1 | i_clk | 系统时钟,就是接到硬件板子上的晶振位置。 |
| 2 | i_rst | 系统复位,随便接到板子上的key数字按键上。 |
| 3 | o_signal_enable | 测试并行信号的产生使能信号,不用接板子, |
| 4 | o_signal | 测试并行信号,这个信号为了验证,你可以接signaltapII上 |
| 5 | o_enable | 加密模块的使能信号,不用接板子 |
| 6 | o_serial_dout | 串行输出,接板子上的测试脚或者signaltapII上 |
| 7 | o_serial_frame | 串行信号组帧输出,接板子上的测试脚或者signaltapII上 |
| 8 | o_T_signal | 加密输出,这个信号为了验证,你可以接signaltapII上 |
| 9 | o_dout | 解密输出,可以接signaltapII上 |
| 10 | o_dout_sign | 解密输出信号的符号判决,接板子上的测试脚或者signaltapII上 |
| 11 | o_peak | 搜帧模块的相关峰输出,不用接板子 |
| 12 | o_peak_enable, | 搜帧模块的使能输出,不用接板子 |
| 13 | o_peak_dout | 搜帧模块的数据输出,接板子上的测试脚或者signaltapII上 |
| 14 | o_enable2 | 最后串并转化的使能,不用接板子 |
| 15 | o_voice_dout | 最后串并转化的数据输出,接板子上的测试脚或者signaltapII上 |
5.参考文献
[1]马在光, 吴纯英, 丘水生. 混沌同步和混沌通信研究的新进展与新尝试[J]. 电波科学学报, 2002, 17(3):8.
A01-53
6.完整源码获得方式
方式1:微信或者QQ联系博主
方式2:订阅MATLAB/FPGA教程,免费获得教程案例以及任意2份完整源码
总结
以上是生活随笔为你收集整理的【混沌加解密调制解调】基于FPGA的混沌自同步混沌数字保密通信系统的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【FPGA教程案例2】基于vivado核
- 下一篇: 【64QAM同步】基于FPGA/MATL