• m基于Lorenz混沌自同步的混沌数字保密通信系统的FPGA实现,verilog编程实现,带MATLAB混沌程序


    目录

    1.算法描述

    2.部分程序 

    3.部分仿真图预览

    4.源码获取方式 


    1.算法描述

        本系统的基本结构框图如下所示:

    系统顶层文件

    ——加密调制模块

    ————加密子模块,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上

    2.部分程序 

    1. clc;
    2. clear;
    3. close all;
    4. warning off;
    5. addpath(genpath(pwd));
    6. N = 40000;
    7. x = zeros(N,1);
    8. y = zeros(N,1);
    9. z = zeros(N,1);
    10. x(1) = 0.001;
    11. y(1) = 0.002;
    12. z(1) = 0.02;
    13. for n = 1:N-1
    14. n
    15. y(n+1) = 0.028*x(n) - 0.001*x(n)*z(n) + 0.999*y(n);
    16. x(n+1) = 0.99*x(n) + 0.01*y(n);
    17. z(n+1) = 0.001*x(n)*y(n) + 0.9973333*z(n);
    18. end
    19. figure;
    20. subplot(221);plot(x,y);title('x-y');
    21. subplot(222);plot(x,z);title('x-z');
    22. subplot(223);plot(y,z);title('y-z');
    23. subplot(224);plot3(x,y,z);title('x-y-z');
    24. figure;
    25. subplot(311);plot(x);title('x');
    26. subplot(312);plot(y);title('y');
    27. subplot(313);plot(z);title('z');
    1. //`timescale 1 ns/ 100 ps
    2. module Decryption_complete_system(
    3. i_clk,
    4. i_rst,
    5. i_rec_signal,
    6. o_dout,
    7. o_dout_sign,
    8. o_peak,
    9. o_peak_enable,
    10. o_peak_dout,
    11. o_enable2,
    12. o_voice_dout
    13. );
    14. input i_clk;
    15. input i_rst;
    16. input signed[31:0] i_rec_signal;
    17. output signed[31:0]o_dout;
    18. output o_dout_sign;
    19. output[6:0] o_peak;
    20. output o_peak_dout;
    21. output o_peak_enable;
    22. output o_enable2;
    23. output[15:0] o_voice_dout;
    24. wire signed[31:0]xn;
    25. wire signed[31:0]yn;
    26. wire signed[31:0]zn;
    27. Lorenz2 Lorenz2_u(
    28. .i_clk (i_clk),
    29. .i_rst (i_rst),
    30. .i_yn (i_rec_signal),
    31. .o_xn (xn),
    32. .o_yn (yn),
    33. .o_zn (zn)
    34. );
    35. Decryption Decryption_u(
    36. .i_clk (i_clk),
    37. .i_rst (i_rst),
    38. .i_din (i_rec_signal),
    39. .i_yn (yn),
    40. .o_signal(o_dout)
    41. );
    42. reg o_dout_sign;
    43. always @(posedge i_clk or posedge i_rst)
    44. begin
    45. if(i_rst)
    46. begin
    47. o_dout_sign <= 1'b0;
    48. end
    49. else begin
    50. if(o_dout < 32'h0000_00ff)
    51. o_dout_sign <= 1'b0;
    52. else
    53. o_dout_sign <= 1'b1;
    54. end
    55. end
    56. find_frame find_frame_u(
    57. .i_clk (i_clk),
    58. .i_rst (i_rst),
    59. .i_din (o_dout_sign),
    60. .o_peak (o_peak),
    61. .o_dout (o_peak_dout),
    62. .o_enable(o_peak_enable)
    63. );
    64. s2p s2p_u(
    65. .i_clk (i_clk),
    66. .i_rst (i_rst),
    67. .i_enable (o_peak_enable),
    68. .i_serial_din (o_peak_dout),
    69. .o_enable (o_enable2),
    70. .o_voice_dout (o_voice_dout)
    71. );
    72. endmodule
    1. //`timescale 1 ns/ 100 ps
    2. module Encryption_complete_system(
    3. i_clk,
    4. i_rst,
    5. i_enable,//the enable of signal
    6. i_voice, //the signal
    7. o_enable,//the enable of p2s
    8. o_serial_dout,//the serial data of signal
    9. o_serial_frame,
    10. o_T_signal//the data of Encryption
    11. );
    12. input i_clk;
    13. input i_rst;
    14. input i_enable;
    15. input[15:0] i_voice;
    16. output o_enable;
    17. output o_serial_dout;
    18. output o_serial_frame;
    19. output signed[31:0]o_T_signal;
    20. //change the parallel data to serial data
    21. p2s p2s_u(
    22. .i_clk (i_clk),
    23. .i_rst (i_rst),
    24. .i_enable (i_enable),
    25. .i_voice (i_voice),
    26. .o_enable (o_enable),
    27. .o_serial_dout(o_serial_dout)
    28. );
    29. add_frame add_frame_u(
    30. .i_clk (i_clk),
    31. .i_rst (i_rst),
    32. .i_din (o_serial_dout),
    33. .i_enable (o_enable),
    34. .o_dout (o_serial_frame),
    35. .o_enable ()
    36. );
    37. wire signed[31:0]xn;
    38. wire signed[31:0]yn;
    39. wire signed[31:0]zn;
    40. Lorenz Lorenz_u(
    41. .i_clk (i_clk),
    42. .i_rst (i_rst),
    43. .i_yn (o_T_signal),
    44. .o_xn (xn),
    45. .o_yn (yn),
    46. .o_zn (zn)
    47. );
    48. Encryption Encryption_u(
    49. .i_clk (i_clk),
    50. .i_rst (i_rst),
    51. .i_din (o_serial_frame),
    52. .i_yn (yn),
    53. .o_signal (o_T_signal)
    54. );
    55. endmodule

    3.部分仿真图预览

     

    4.源码获取方式 

    获得方式1:

    点击下载链接:

    m基于Lorenz混沌自同步的混沌数字保密通信系统的FPGA实现,verilog编程实现,带MATLAB混沌程序+程序操作视频

    获取方式2:

    博客资源项,搜索和博文同名资源。

    获取方式3:

    如果下载链接失效,加博主微信联系。

    01_053_m

  • 相关阅读:
    c++多线程(一)线程管理
    【每日一题】补档 AGC015D A or...or B Problem | 构造 | 困难
    Web网上订购系统开题报告详解
    CCC数字钥匙设计【BLE】 --建立安全测距
    vue实现防抖函数、节流函数,全局使用【输入框、按钮】
    web技术支持| 基于vue3实现自己的组件库第三章:Checkbox组件
    【初学者】Vue使用axios向Node.js发起请求以及跨域问题的解决
    户外指南——时代产物
    什么是交换分区以及如何创建交换分区
    java性能优化实战:谈一谈服务性能衡量指标有哪些?
  • 原文地址:https://blog.csdn.net/hlayumi1234567/article/details/125811145