【混沌加解密调制解调】基于FPGA的混沌自同步混沌数字保密通信系统
1.軟件版本
quartusii12.1
2.本算法理論知識
??? 本系統(tǒng)的基本結(jié)構(gòu),我們遵循你所提供的結(jié)構(gòu)進(jìn)行,整個框圖如下所示:
?各個部分的功能如下:
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); %簡化后的發(fā)送 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.操作步驟與仿真結(jié)論
首先實現(xiàn)使用MATLAB進(jìn)行算法的仿真,我們得到的仿真結(jié)果如下所示:
運行MATLAB程序:
這個是混沌模型的基本仿真,說明公式以及初始值選取的正確性。
運行MATLAB程序:
這個程序是混沌加密調(diào)制解調(diào)系統(tǒng)的MATLAB浮點仿真結(jié)果圖,說明上面的結(jié)果是正確的。
運行MATLAB程序:
從上面的仿真結(jié)果可知,以定點進(jìn)行仿真,只要量化寬度滿足一定要求之后,其完全不影響系統(tǒng)的精度。
根據(jù)上面的介紹,我們可以編寫了如下的程序:
自上而下,依次為:
系統(tǒng)頂層文件
——加密調(diào)制模塊
————加密子模塊,lorenz混沌序列產(chǎn)生模塊,組幀模塊,并串模塊。
——解密解調(diào)模塊
————解密子模塊,Lorenz混沌序列產(chǎn)生模塊,搜幀模塊,串并模塊。
?
仿真結(jié)果如下所示:
其頂層的文件的管腳為:
| 1 | i_clk | 系統(tǒng)時鐘,就是接到硬件板子上的晶振位置。 |
| 2 | i_rst | 系統(tǒng)復(fù)位,隨便接到板子上的key數(shù)字按鍵上。 |
| 3 | o_signal_enable | 測試并行信號的產(chǎn)生使能信號,不用接板子, |
| 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 | 搜幀模塊的相關(guān)峰輸出,不用接板子 |
| 12 | o_peak_enable, | 搜幀模塊的使能輸出,不用接板子 |
| 13 | o_peak_dout | 搜幀模塊的數(shù)據(jù)輸出,接板子上的測試腳或者signaltapII上 |
| 14 | o_enable2 | 最后串并轉(zhuǎn)化的使能,不用接板子 |
| 15 | o_voice_dout | 最后串并轉(zhuǎn)化的數(shù)據(jù)輸出,接板子上的測試腳或者signaltapII上 |
5.參考文獻(xiàn)
[1]馬在光, 吳純英, 丘水生. 混沌同步和混沌通信研究的新進(jìn)展與新嘗試[J]. 電波科學(xué)學(xué)報, 2002, 17(3):8.
A01-53
6.完整源碼獲得方式
方式1:微信或者QQ聯(lián)系博主
方式2:訂閱MATLAB/FPGA教程,免費獲得教程案例以及任意2份完整源碼
總結(jié)
以上是生活随笔為你收集整理的【混沌加解密调制解调】基于FPGA的混沌自同步混沌数字保密通信系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【FPGA教程案例2】基于vivado核
- 下一篇: 【功率控制】无线光通信-CDMA中闭环链