1. Generación de secuencias PN (pseudoaleatorias)
Una secuencia PN (pseudo-ruido) es una cadena de bits compuesta por 1s y 0s cuya autocorrelación se asemeja a la del ruido blanco. La secuencia binaria PN más conocida es la secuencia de registro de desplazamiento de longitud máxima, comúnmente denominada secuencia m.
- Generación de la secuencia m: Una secuencia m tiene una longitud L = 2m - 1 bits y se genera con un registro de desplazamiento de m etapas con realimentación lineal. Su período es L, conteniendo 2m-1 unos y 2m-1 - 1 ceros por ciclo. La tabla siguiente muestra las conexiones del registro de desplazamiento para generar secuencias de longitud máxima.
| m | Etapas conectadas al sumador módulo 2 | m | Etapas conectadas al sumador módulo 2 |
|---|---|---|---|
| 2 | 1, 2 | 10 | 1, 8 |
| 3 | 1, 3 | 11 | 1, 10 |
| 4 | 1, 4 | 12 | 1, 7, 9, 12 |
| 5 | 1, 4 | 13 | 1, 10, 11, 13 |
| 6 | 1, 6 | 14 | 1, 5, 9, 14 |
| 7 | 1, 7 | 15 | 1, 15 |
| 8 | 1, 5, 6, 7 | 16 | 1, 5, 14, 16 |
| 9 | 1, 6 | 17 | 1, 15 |
- Secuencia bipolar: En aplicaciones de espectro expandido por secuencia directa (DS), una secuencia binaria con elementos {0, 1} se mapea a una secuencia equivalente con elementos {-1, 1}, denominada secuencia bipolar {Cn}.
- Función de autocorrelación: Una propiedad clave de una secuencia PN periódica es su función de autocorrelación, definida para la secuencia bipolar {Cn} como Rc(m) = Σn=1L CnCn+m, donde L es el período de la secuencia. Idealmente, la autocorrelación de una secuencia PN debería ser: Rc(0) = L y Rc(m) = 0 para 1 ≤ m ≤ L-1. Para una secuencia m, la autocorrelación es: Rc(0) = L y Rc(m) = -1 para 1 ≤ m ≤ L-1. Para secuencias m largas, la relación Rc(m)/Rc(0) = -1/L es despreciable, por lo que se aproximan al ideal.
2. Ejemplo: Detección de señales de baja probabilidad de intercepción (LPI)
Una señal LPI se modula con una secuencia m generada por un registro de desplazamiento de 10 etapas (L = 1023), utilizando 1023 chips por bit de información. La salida del registro se mapea a una secuencia bipolar Ck. La señal recibida en el canal AWGN es rk = s·ck + nk, donde s es el bit de datos (+1 o -1) y nk es ruido gaussiano.
Pasos del análisis:
- Generar la secuencia m {ck} y verificar sus propiedades de autocorelación.
- Construir la secuencia recibida {rk} con varianza de ruido σ² = 10. Graficar y determinar si la secuencia transmitida es distinguible.
- Calcular y graficar la correlcaión cruzada Yn = Σk=1n rkck.
El siguiente script en MATLAB ilustra este procedimiento (con nombres de variables y estructura modificados):
% Script MATLAB para el problema ilustrativo
num_muestras = 1000; % Número de muestras
long_corr = 50; % Longitud de la función de autocorrelación
polos = [0.9 0.99]; % Posiciones de los polos
% Generación de ruido complejo gaussiano
ruido = (1/sqrt(2)) * (randn(1, num_muestras) + 1i*randn(1, num_muestras));
% Pre-asignación para eficiencia
senal = zeros(length(polos), num_muestras);
corr_aut = zeros(length(polos), long_corr+1);
espectro = zeros(length(polos), long_corr+1);
for idx = 1:length(polos)
for n = 3:num_muestras
% Generación de la señal con filtro recursivo
senal(idx, n) = 2*polos(idx)*senal(n-1) - (polos(idx)^2)*senal(n-2) + ((1-polos(idx))^2)*ruido(n);
end
% Cálculo de autocorrelación y espectro de potencia
corr_aut(idx,:) = mi_autocorr(senal(idx,:), long_corr);
espectro(idx,:) = fftshift(abs(fft(corr_aut(idx,:))));
end
% Graficar resultados (estructura similar pero con etiquetas actualizadas)
subplot(3,2,1); plot(real(senal(1,:))); title('Parte Real (polo=0.9)'); xlabel('Muestra'); ylabel('Amplitud');
% ... (se continúan los subplots de manera análoga)
3. Propiedades de correlación cruzada y otras secuencias PN
En aplicaciones como CDMA, la correlación cruzada entre secuencias asignadas a diferentes usuarios es crucial. Idealmente, deberían ser ortogonales.
- Secuencias m: Pares de secuencias m del mismo período pueden exhibir picos de correlación cruzada relativamente altos, haciéndolas inadecuadas para CDMA.
- Secuencias Gold: Se construyen a partir de un par de secuencias m preferidas (preferentes). Se genera un conjunto de L secuencias Gold mediante la suma módulo 2 de una secuencia con cada desplazamiento cíclico de la otra. Para L grande y m impar, el máximo de correlación cruzada es Rmax = √(2L); para m par, Rmax = √L.
- Secuencias Kasami: Se derivan de una secuencia m mediante decimación, seleccionando cada (2m/2 + 1) bits. Producen un conjunto más pequeño pero con un máximo de correlación cruzada óptimo de Rmax = √L.
La siguiente tabla compara las propiedades de correlación para diferentes valores de m.
| m | L = 2m - 1 | Rmax (Secuencia m) | Rmax (Gold) | Rmax (Kasami) |
|---|---|---|---|---|
| 5 | 31 | 11 | 9 | √31≈5.57 |
| 6 | 63 | 23 | 17 | √63≈7.94 |
| 7 | 127 | 41 | 17 | √127≈11.27 |
| 8 | 255 | 95 | 33 | √255≈15.97 |
| 9 | 511 | 113 | 33 | √511≈22.61 |
4. Ejemplo: Generación de secuencias Gold
Generar el conjunto de L=31 secuencias Gold a partir de dos secuencias m específicas. El script MATLAB siguiente (con lógica y variables reestructuradas) realiza el cálculo y verifica el máximo de correlación cruzada.
% Generación de secuencias Gold
L_gold = 31; % Longitud de las secuencias
% Definición de conexiones para dos secuencias m (representación modificada)
tap_config1 = [1 0 1 0 0];
tap_config2 = [1 1 1 0 1];
% Generar las dos secuencias m base
seq1 = generar_m_seq(tap_config1);
seq2 = generar_m_seq(tap_config2);
% Inicializar matriz para las secuencias Gold
gold_sequences = zeros(L_gold, L_gold);
% Generar todas las secuencias Gold por desplazamiento cíclico y suma módulo 2
for desplaz = 0:L_gold-1
seq_despl = [seq2(desplaz+1:end) seq2(1:desplaz)];
gold_sequences(desplaz+1,:) = mod(seq1 + seq_despl, 2);
end
% Calcular y encontrar la correlación cruzada máxima entre pares de secuencias Gold
max_corr_cruzada = 0;
for i = 1:L_gold
for j = i+1:L_gold
seq_bin1 = 2*gold_sequences(i,:) - 1; % Convertir a bipolar
seq_bin2 = 2*gold_sequences(j,:) - 1;
for shift = 0:L_gold-1
seq2_shifted = [seq_bin2(shift+1:end) seq_bin2(1:shift)];
corr_valor = abs(sum(seq_bin1 .* seq2_shifted));
if corr_valor > max_corr_cruzada
max_corr_cruzada = corr_valor;
end
end
end
end
% Función auxiliar para generar una secuencia m
function seq = generar_m_seq(conexiones)
etapas = length(conexiones);
longitud = 2^etapas - 1;
reg = [zeros(1, etapas-1) 1]; % Contenido inicial
seq(1) = reg(etapas);
for i = 2:longitud
nueva_entrada = mod(conexiones(1)*seq(i-1), 2);
for j = 2:etapas
nueva_entrada = mod(reg(j-1) + conexiones(j)*seq(i-1), 2);
end
reg = [nueva_entrada reg(1:end-1)]; % Desplazamiento
seq(i) = reg(etapas);
end
end
5. Sistemas de espectro expandido por salto de frecuencia (FH)
En FH, el ancho de banda W se divide en múltiples intervalos de frecuencia no superpuestos. Durante cada intervalo de señalización, la transisión ocupa uno o varios de estos canales, seleccionados de manera pseudoaleatoria según la salida de un generador PN.
- Diagrama de bloques: El transmisor consiste en un codificador, un modulador FSK, un mezclador y un sintetizador de frecuencia controlado por un generador PN. El receptor tiene un sistema similar de deshopificación, sincronizado mediante un sincronizador temporal.
- Modulación: Se suele usar FSK (binaria o M-aria) con detección no coherente, ya que es difícil mantener la coherencia de fase durante los saltos.
- Velocidad de salto: Si la velocidad de salto Rh es igual o menor que la tasa de símbolo, el sistema es de "salto lento"; si es mayor, es de "salto rápido".
6. Probabilidad de error en sistemas FH
Para un sistema FH con FSK binaria, detección no coherente y un salto por bit:
- Canal AWGN o interferencia de banda ancha: La probabilidad de error por bit es Pb = (1/2)·exp(-Eb/(2N0)). Si hay un interferidor de banda ancha con densidad espectral J0, se reemplaza N0 por N0 + J0.
- Interferencia de banda parcial: Es especialmente problemática para FH lento. Un interferidor puede elegir la proporción α del ancho de banda a interferir para maximizar el error. La probabilidad de error promedio es Pe(α) = (α/2)·exp(-α·Pb/2), donde Pb = Eb/J0. El α óptimo para el interferidor es α* = min(2/Pb, 1).
7. Ejemplo: Simulación de un sistema FH
Simulación por Monte Carlo de un sistema FH con FSK binaria bajo la peor interferencia de banda parcial. El script siguiente modela el sistema con parámetros y variables renombrados.
% Simulación de sistema FH con interferencia de banda parcial
EbN0_dB = 0:5:35; % Relación Eb/J0 en dB
prob_error_sim = zeros(size(EbN0_dB));
num_bits = 10000; % Bits por simulación
for idx = 1:length(EbN0_dB)
EbN0 = 10^(EbN0_dB(idx)/10); % Convertir a lineal
% Parámetros del interferidor según el peor caso
if EbN0 > 2
alpha_int = 2/EbN0; % Proporción de banda interferida
else
alpha_int = 1;
end
% Desviación estándar del ruido/interferencia
sigma_ruido = sqrt(1/(2*alpha_int));
% Generar secuencia de datos binaria aleatoria
datos_tx = randi([0 1], 1, num_bits);
% Modular con FSK binaria (simplificado: representación en cuadratura)
if datos_tx(i) == 0
senal_tx = sqrt(EbN0);
else
senal_tx = 0;
end
% Decidir si el bit es interferido
es_interferido = rand(1, num_bits) < alpha_int;
% Añadir ruido/interferencia a la señal
senal_rx = senal_tx + es_interferido .* (sigma_ruido * randn(1, num_bits));
% Detección no coherente (simplificada)
decision = double(senal_rx < sqrt(EbN0)/2); % Umbral de decisión
% Contar errores
prob_error_sim(idx) = sum(datos_tx ~= decision) / num_bits;
end
8. Uso de diversidad para contrarrestar la interferencia de banda parcial
La diversidad de señales, transmitiendo el mismo bit de información en varios saltos de frecuencia, puede mitigar el efecto de la interferencia parcial. En un sistema con diversidad D, la probabilidad de error se reduce a Pb ≈ KD / (Eb/J0)D, donde KD es una constante. Por ejemplo, con doble diversidad (D=2), se necesita una SNR de ~30 dB para alcanzar una Pb de 10-6, frente a ~60 dB sin diversidad.
El combinador en el receptor asigna pesos wi = 1/σi2 a las señales de cada salto, donde σi2 es la potencia del ruido+interferencia en ese salto. Esto atenúa los saltos que están severamente interferidos.
9. Ejemplo: Simulación de sistema FH con diversidad
El siguiente script simula un sistema FH con doble diversidad bajo interferencia de banda parcial, siguiendo el principio de combinación descrito.
% Simulación FH con diversidad orden D=2
EbN0_dB_vec = 0:2:24; % Vector de EbN0 en dB
prob_error_diversidad = zeros(size(EbN0_dB_vec));
bits_sim = 10000;
for idx = 1:length(EbN0_dB_vec)
EbN0 = 10^(EbN0_dB_vec(idx)/10);
energia_por_salto = EbN0 / 2; % Energía total dividida en dos saltos
% Parámetros de interferencia (peor caso)
if EbN0 > 2
alpha = 2/EbN0;
else
alpha = 1;
end
sigma_int = sqrt(energia_por_salto / 2); % Desviación bajo interferencia
sigma_ruido_fondo = sqrt(0.1); % Ruido de fondo (ejemplo)
% Generar datos
bits_orig = randi([0 1], 1, bits_sim);
errores = 0;
for bit_idx = 1:bits_sim
% Transmisión: dos réplicas (saltos) por bit
if bits_orig(bit_idx) == 0
s1 = sqrt(energia_por_salto); s2 = sqrt(energia_por_salto);
else
s1 = 0; s2 = 0;
end
% Determinar interferencia en cada salto
int_en_salto1 = rand < alpha;
int_en_salto2 = rand < alpha;
% Señales recibidas (ruido de fondo + posible interferencia)
r1 = s1 + sigma_ruido_fondo*randn;
if int_en_salto1
r1 = r1 + sigma_int*randn;
end
r2 = s2 + sigma_ruido_fondo*randn;
if int_en_salto2
r2 = r2 + sigma_int*randn;
end
% Pesos del combinador (máxima relación combate)
w1 = 1/(sigma_ruido_fondo^2 + int_en_salto1 * sigma_int^2);
w2 = 1/(sigma_ruido_fondo^2 + int_en_salto2 * sigma_int^2);
% Variables de decisión combinadas
X = w1 * r1^2 + w2 * r2^2; % Ejemplo simplificado
Y = w1 * 0^2 + w2 * 0^2; % (Asumiendo la otra hipótesis)
% Detección
if X > Y
decision = 0;
else
decision = 1;
end
if decision ~= bits_orig(bit_idx)
errores = errores + 1;
end
end
prob_error_diversidad(idx) = errores / bits_sim;
end
10. Comparación integral de secuencias PN
| Tipo de Secuencia | Generación | Autocorrelación | Correlación Cruzada | Aplicación Típica |
|---|---|---|---|---|
| m (Larga Máxima) | Regitsro de desplazamiento lineal retroalimentado. | Cercana al ideal: pico en 0, bajo fuera. | Picos altos entre pares; colecciones grandes no son buenas. | Pruebas, sistemas donde se requiere buena autocorrelación pero no muchos usuarios. |
| Gold | Suma módulo 2 de dos secuencias m preferidas y sus desplazamientos. | Similar a la secuencia m. | Pico controlado (≈√L o √(2L)); permite conjuntos de tamaño L. | CDMA, múltiples usuarios con buena separación. |
| Kasami | Decimación de una secuencia m (cada 2m/2+1 símbolos). | Similar a la secuencia m. | Pico mínimo (√L); cumple cota inferior de Welch. Óptima. | Sistemas que requieren el mínimo pico de correlación cruzada posible. |
11. Resumen de rendimiento y tendencias
Los sistemas FH ofrecen robustez contra interferencia de banda ancha, pero son vulnerables a la de banda parcial. La diversidad es una técnica eficaz para mejorar su resistencia. Las secuencias PN con buenas propiedades de correlación cruzada (Gold, Kasami) son esenciales para aplicaciones multiusuario. El futuro apunta a combinaciones con técnicas de codificación avanzada y inteligencia artificial para la gestión dinámica del espectro y el salto de frecuencia.