Generación de secuencias pseudoaleatorias y sistemas de expansión espectral por salto de frecuencia

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:

  1. Generar la secuencia m {ck} y verificar sus propiedades de autocorelación.
  2. Construir la secuencia recibida {rk} con varianza de ruido σ² = 10. Graficar y determinar si la secuencia transmitida es distinguible.
  3. 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.

Etiquetas: SecuenciasPN m-sequence SecuenciasGold SecuenciasKasami FH-CDMA

Publicado el 6-3 22:05