[Modulación y demodulación de cifrado y descifrado de caos] Sistema de comunicación digital seguro caótico de autosincronización caótica basado en FPGA

1. Versión de software

cuarzo 12.1

2. Conocimiento teórico de este algoritmo

    La estructura básica de este sistema, seguimos la estructura que proporcionó, todo el diagrama de bloques es el siguiente:

 Las funciones de cada sección son las siguientes:

  1. El módulo del algoritmo de cifrado adopta la operación XOR , que realiza la operación XOR entre la secuencia de números binarios codificada por la fuente y la secuencia de cifrado para generar la secuencia de texto cifrado. Una vez que se completa el cifrado, se notifica al sistema de la unidad que vuelva a iterar, de modo que se pueda garantizar la integridad de los datos.
  2. La función principal del módulo de generación de cifrado de secuencia del sistema de accionamiento es generar secuencias de cifrado para el cifrado. Es la parte central de la confiabilidad del cifrado en el sistema de cifrado digital, incluida la generación de la secuencia secreta (cifrando el texto sin formato en el remitente). Debido a que es un sistema de autosincronización, la secuencia caótica cifrada también se utiliza como iterativo. valor del sistema de conducción.
  3. El módulo de algoritmo de descifrado también utiliza la operación XOR.En el extremo receptor, la secuencia de texto cifrado y la secuencia de texto cifrado se someten a XOR para restaurar la secuencia de texto plano binario.
  4. El módulo de detección de sincronización de contraseñas genera principalmente una señal de sincronización de contraseñas para impulsar el módulo generador de contraseñas del sistema de respuesta para actualizar el estado del generador de contraseñas del receptor. Su principio de funcionamiento es juzgar si el texto cifrado transmitido a través del canal cambia, y si cambia, se genera una señal de conducción. Por un lado, impulsa el sistema de respuesta para realizar la siguiente iteración, y por otro lado, impulsa el módulo de algoritmo de descifrado para descifrar.
  5. La función principal del módulo generador de secuencias del sistema de respuesta es generar una secuencia de contraseña para el cifrado. Cuando recibe la señal de activación de sincronización de contraseña generada por el módulo de detección de sincronización de contraseña, el sistema de respuesta itera una vez.

3. Código central

//`timescale 1 ns/ 100 ps
module Encryption_complete_system(
                                   i_clk,
											  i_rst,
											  i_enable,//the enable of signal
											  i_voice, //the signal
											  o_enable,//the enable of p2s
											  o_serial_dout,//the serial data of signal
											  o_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)
begin
     if(i_rst)
	  begin
	  o_dout_sign <= 1'b0;
	  end
else begin
          if(o_dout < 32'h0000_00ff)
			 o_dout_sign <= 1'b0;
	  else
          o_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-1
    n
    %反馈
    if n == 1
       S1_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);   
    else
       S1_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);           
    end

end

%简化后的接收
for n = 1:N-1
    n
    %反馈
    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);           
end


figure;
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. Pasos de operación y conclusión de la simulación.

Primero se implementa la simulación del algoritmo usando MATLAB, los resultados de la simulación que obtenemos son los siguientes:

Ejecute el programa MATLAB:

Esta es la simulación básica del modelo de caos, que muestra la corrección de la fórmula y la selección del valor inicial.

Ejecute el programa MATLAB:

Este programa es el gráfico de resultados de simulación de coma flotante de MATLAB del sistema de modulación y demodulación de cifrado caótico, que muestra que los resultados anteriores son correctos.

Ejecute el programa MATLAB:

Se puede ver a partir de los resultados de la simulación anterior que si se realiza la simulación de punto fijo, siempre que el ancho de cuantificación cumpla con ciertos requisitos, no afectará en absoluto la precisión del sistema.

De acuerdo con la introducción anterior, podemos escribir el siguiente programa:

De arriba a abajo, en orden:

archivo de nivel superior del sistema

——Módulo de modulación de cifrado

——Submódulo de cifrado, módulo de generación de secuencias caóticas de lorenz, módulo de tramas, módulo serie paralelo.

- Módulo de descifrado y demodulación

——Submódulo de descifrado, módulo de generación de secuencias caóticas de Lorenz, módulo de búsqueda de tramas, módulo serie-paralelo.

 

Los resultados de la simulación son los siguientes:

Los pines del archivo de nivel superior son:

1

i_clk

El reloj del sistema es la posición del oscilador de cristal conectado a la placa de hardware.

2

yo_primero

Restablecimiento del sistema, solo conéctese al botón de número clave en el tablero.

3

o_signal_habilitar

Pruebe la señal de habilitación de generación de la señal paralela, sin conectar la placa,

4

o_señal

Pruebe la señal paralela, esta señal se puede conectar a signaltapII para verificación

5

o_habilitar

La señal de habilitación del módulo de cifrado, sin necesidad de conectar la placa

6

o_serial_dout

Salida en serie, conéctese a los pines de prueba en la placa o signaltapII

7

o_serial_frame

Salida de encuadre de señal en serie, conectada a los pines de prueba en la placa o signaltapII

8

o_T_señal

Salida cifrada, esta señal para verificación, puede conectarse a signaltapII

9

o_dout

La salida descifrada se puede conectar a signaltapII

10

o_dout_sign

Descifre el juicio del símbolo de la señal de salida, conéctelo al pin de prueba en el tablero o signaltapII

11

o_pico

Salida máxima de correlación del módulo de búsqueda de cuadros, sin necesidad de conectar la placa

12

o_peak_habilitar,

La salida habilitada del módulo de búsqueda de cuadros, no es necesario conectar la placa

13

o_peak_dout

La salida de datos del módulo de búsqueda de cuadros está conectada a los pines de prueba en la placa o signaltapII

14

o_habilitar2

La última conversión de serie a paralelo habilitada, sin necesidad de conectar la placa

15

o_voice_dout

La salida de datos de la conversión serie-paralelo final se conecta a los pines de prueba en la placa o SignaltapII

5. Referencias

[1] Ma Zaiguang, Wu Chunying, Qiu Shuisheng. Nuevos avances y nuevos intentos en la investigación sobre sincronización del caos y comunicación del caos [J] Journal of Radio Wave Science, 2002, 17(3):8.

A01-53

6. Cómo obtener el código fuente completo

Método 1: Póngase en contacto con el bloguero a través de WeChat o QQ

Método 2: suscríbase al tutorial de MATLAB/FPGA, obtenga el caso del tutorial y 2 códigos fuente completos de forma gratuita

Supongo que te gusta

Origin blog.csdn.net/ccsss22/article/details/123943996
Recomendado
Clasificación