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:
- 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.
- 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.
- 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.
- 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.
- 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