¿En qué se diferencia el DES canalizado del DES secuencial?

1

Implementé el codificador DES (Data Encryption Standard) en VHDL utilizando ISE IDE de Xilinx en una arquitectura secuencial que fue bastante fácil y directa. Ahora mi tarea es hacer lo mismo utilizando la arquitectura segmentada para que todo funcione con la máxima frecuencia de reloj posible. Leí numerosos artículos del sitio de IEEE relacionados con el desalineado, pero aún así no pude entender completamente el tema. ¿Que es diferente? Hasta ahora entendí que tengo que hacerlo así:

No hay instrucciones complejas en el código de cada módulo. Por ejemplo, si tuviera la instrucción "x < = a * b * c", tendría que dividirla en dos instrucciones para el bucle for y cuando el iterador sea igual a 0, haga "temp < = a * b" y cuando iterador es igual a 1 do "x < = temp * c". Solo un ejemplo, pero muestra la forma de pensar, en lugar de instrucciones complejas, muchas sencillas (con loops o para generar).

Una vez que la entrada A llega a la Ronda 2 de Feistel, la entrada B (por ejemplo, la siguiente palabra de texto simple de 64 bits) se carga inmediatamente a la Ronda 1 de Feistel y así sucesivamente, lo que nos permite procesar 16 palabras "casi simultáneamente". Eso requerirá que tengamos un registro de sincronización antes y después de cada módulo de función de Feistel. También leí algo sobre los módulos para "canalización" y "módulo de control", aunque ninguno de los artículos mencionó cómo funcionaron. Para ser honesto, no tengo ninguna idea sobre cómo implementar esta parte.

¿Mis suposiciones están equivocadas en alguno de los 2 puntos? ¿Podría alguien explicarme en detalle cómo morder este problema? ¿Alguien tiene un ejemplo de trabajo codificado / descodificador DES en FPGA? Estaré agradecido por cada ayuda.

    
pregunta Filip Mazi

1 respuesta

2

una implementación en serie coloca todos los datos en cada etapa y usted tiene que esperar a que la salida se estabilice antes de poder usarla.

simular este circuito : esquema creado usando CircuitLab

con una implementación canalizada hay un registro entre cada etapa, de modo que después de que la primera etapa haya procesado el bloque, su salida se puede almacenar en el registro y el segundo bloque puede ingresar a la tubería. de esta manera, a expensas de algunos resultados de latencia se puede aumentar muchas veces.

La razón por la que la implementación canalizada más baja es más rápida es porque la primera etapa solo se puede sincronizar tan rápido como el inverso del retardo de propagación de F1-F4 en cascada. Si F1-F4 tarda mucho tiempo en calcularse, entonces no puede bombear una gran cantidad de datos a través de él.

La ruta de datos en línea puede cronometrarse tan rápido como el peor de los retrasos de propagación de las etapas lo permiten. Eso significa que, suponiendo que F1-F4 tenga el mismo retardo de propagación, puede bombear 4 veces más datos.

    
respondido por el Jasen

Lea otras preguntas en las etiquetas