verificador de secuencia PN

3

Tengo un AD9253 ADC conectado a un FPGA. Quiero verificar el diseño, así que uso el ADC en modo PN sequence short . (Consulte p.28 en la hoja de datos).

Aquíhayunatabla(delahojadedatos)quemuestralos4primerosresultados.

Miproblemaesquenopuedocrearlamismasecuencia(inclusolas4primerassalidas)conmigeneradordesecuenciasPN.

Heleídoel estándar ITU 0.150 , pero no obtuve la solución.

Traté de implementarlo según el siguiente esquema de este documento.

MegustamodelarescenariosdigitalesenExcel.Aquíestámisolución.(Loquefalla.)

El tiempo transcurre de arriba hacia abajo, y cada fila muestra una instantánea del registro de desplazamiento. Esperaba que la columna I produjera la secuencia PN.

Las celdas en la primera columna tienen la fórmula de retroalimentación. (Ej .: A2 : =IF(OR(AND(E1, NOT(I1)), AND(NOT(E1), I1)), 1, 0) ) Todas las demás celdas obtienen su valor de la celda superior izquierda. (Por ejemplo: la fórmula de celda B2 es el siguiente =A1 )

    
pregunta betontalpfa

2 respuestas

2

Yo hago mi modelado en Perl. El siguiente código genera la secuencia enumerada en la hoja de datos:

#!/bin/perl -w

# 14-bit words:
# | 1   F   E   0| 1   D   F   1| 3   C   C   8| 2   9   4   E|
# |01111111100000|01110111110001|11110011001000|10100101001110|

# Initialize PRNG to all-ones
my $reg = 0x1FF;

for (1..8) {
    # Initialize 14-bit output word
    my $out = 0;
    for (1..14) {
        # Shift the next bit into the LSB of the output.
        $out = ($out << 1) + !!($reg & 0x100);
        # Advance the PRNG to the next state:
        # XOR bits 4 and 8 together and shift into bit 0.
        $reg = (($reg&0xFF) << 1) + (!!($reg & 0x10) ^ !!($reg & 0x100));
    }
    # In order to get the required pattern, invert the MSB of the output word
    printf "%04X\n", $out^0x2000;
}

La salida es:

1FE0
1DF1
3CC8
294E
1479
1CD8
0A47
26D5

No estoy seguro de dónde viene esa inversión final de la MSB, pero mi primer intento fue correcto, excepto por ese detalle.

Una pregunta interesante es, ¿cómo predice la siguiente palabra cuando solo se le da una palabra arbitraria en la secuencia? Tenga en cuenta que los 9 bits más significativos de la palabra arbitraria (después de deshacer la inversión MSB) son de hecho idénticos al estado del registro PRNG al comienzo de la generación de esa palabra.

Entonces, si toma esos 9 bits para inicializar su verificador y luego ejecuta 14 ciclos, volverá a generar la palabra con la que comenzó. Luego, los siguientes 14 ciclos generarán la siguiente palabra en la secuencia.

    
respondido por el Dave Tweed
1

Aquí hay un comprobador de PRBS configurable que debería poder verificar ambos patrones: enlace . Es posible que deba experimentar un poco con los parámetros para que coincida con el patrón. Pude obtener el generador correspondiente enlace para generar la misma secuencia usando el Los parámetros estándar de PRBS 9 y eludir el valor de inicio hasta que lo alineé (normalmente esto no es necesario, pero aparentemente 14 es un factor de 1022 y, por lo tanto, no se alcanzan todas las compensaciones posibles), excepto el MSB invertido anotado por Dave. No estoy seguro de cuál es la historia con eso.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas