Necesita ayuda con la implementación del circuito RTL (Nivel de transferencia de registro) - Algoritmo GCD euclidiano

Estoy buscando ayuda con respecto al siguiente algoritmo y la implementación del circuito lógico. Aquí está en pseudocódigo:

if b = 0
    swap values of a and b.  b has the GCD. done. 
if a = 0
    b has the GCD. done.
if a < b
    swap values of a and b.

Loop: a = a - b
    if a >= b
        go back to Loop.
    if a > 0
        swap values of a and b
        go back to Loop

b has the GCD. done.

He escrito algo de código RTL y no parece ser un problema; ¡el verdadero problema es el diseño de mi circuito!

¿Supongo que uno usaría una implementación de división de cambio y resta? Supongo que realmente solo necesito ayuda para decidir qué registros y chips aritméticos usaría. Voy a usar Logisim.

Formatee su código, por favor.
Probablemente no valga la pena volver a encabezar la lista: OP no ha estado aquí desde que hizo la pregunta.

Respuestas (1)

Debido a que este algoritmo involucra un bucle, será mucho más fácil de implementar en un microcontrolador o microprocesador que en lógica digital.

Sin embargo, si tiene alguna buena razón para hacerlo en lógica digital, como si necesita un control absoluto sobre la velocidad de la implementación, o si quiere tener docenas o cientos de procesadores ejecutando el algoritmo en paralelo, por supuesto, puede hacerlo en lógica digital.

En lugar de usar "registros y chips aritméticos" empaquetados individualmente, sería mucho más preferible usar un dispositivo lógico programable. Lo más probable es que use un FPGA; pero también sería posible un CPLD, particularmente con las nuevas familias de CPLD que son realmente pequeños FPGA disfrazados.

Si usa un FPGA, simplemente usará una herramienta de síntesis para convertir su código RTL en un archivo de configuración para el dispositivo. Cargará el archivo de configuración en el dispositivo y comenzará a funcionar.

No hay necesidad de traducir el RTL al nivel de la puerta manualmente; la herramienta de síntesis lo hace por usted.