Métodos simples para sintetizar circuitos [cerrado]

0

Estoy estudiando ingeniería de sistemas y actualmente asisto a un curso de arquitectura de computadoras. En nuestra carrera, no tenemos mucha capacitación con respecto al hardware, por lo que nos resulta muy difícil sintetizar circuitos.

En particular, solo tenemos que sintetizar circuitos aritméticos (en cursos anteriores vimos cosas como la implementación de ROM, unidades de control complejas y modelos basados en autómatas).

Por ejemplo, algunos ejercicios nos preguntan algo como:

  

Realizar un sumador binario secuencial de 8 bits (iteración de tiempo). A   implementar, usar solo registros de desplazamiento, flip-flops y:

     
  1. un sumador completo de 1 bit.
  2.   
  3. un sumador completo de 2 bits.
  4.   
  5. un sumador completo de 4 bits.
  6.   

Entonces, mi pregunta es: ¿Qué debo hacer para implementar cosas como esta? ¿Existen formas sencillas de encontrar la disposición de los registros y sus conexiones con el sumador?

Finalmente, ¿sabe algo de material para leer y puede realizar estos ejercicios amables?

    
pregunta Tomi

1 respuesta

2

No hay un método simple para sintetizar circuitos. Obtener experiencia es el consejo más y menos útil que se me ocurre en este momento. Idealmente, esa experiencia proviene de intentar, fallar, entender por qué ha fallado, enjuagar y repetir, pero eso puede dejarlo en cero. Lo siguiente es observar las implementaciones existentes (ver las respuestas para casos simples) y tratar de entender lo que está pasando.

Veré si puedo darte un vistazo a las respuestas, pero también algunas orientaciones sobre cómo pensaría con esta pregunta.

a) Una secuencia ... ... (iteración de tiempo), use registros de desplazamiento

Eso significa que no hay entradas paralelas, sino algo que funciona en parte de la palabra a la vez. ¿Sabes qué son los registros de turnos y qué hacen? Si no, comienza con esos.

Un registro de desplazamiento es una memoria R / W direccionable implícitamente. Cada ciclo de reloj de turno, una palabra se escribe en un extremo y otra palabra está disponible para leer en el otro. La longitud del registro es un parámetro, al igual que el ancho de la palabra, aunque a menudo se asume que la palabra es un bit de ancho.

b) un sumador

¿Sabe cómo agregar varios dígitos con lápiz y papel? Eso es secuencial, con un acarreo desde el menos significativo hasta el siguiente significativo en cada paso. Entonces, por ejemplo, la suma 456 + 789 en decimal usando lápiz y papel sería sumar 6 y 9, obtener 15, escribir el 5, llevar el 1, agregar 5 y 8 y el 1 transportado, obtener 14, escribir el 4. .. eventualmente produciendo 1245. Es una adición secuencial, comenzando por la palabra menos significativa, propagando el acarreo entre adiciones. Tenga en cuenta que en este caso particular centrado en el ser humano, estamos utilizando un sumador de base 10, que genera el acarreo por encima de 9, un tamaño diferente al de cualquiera de los sumadores binarios que usará en la síntesis.

c) utilizando un sumador completo

Un sumador completo acepta un arrastre y produce un arrastre, esencial para hacer esto un dígito a la vez, o iterativamente

d) Utilizando un sumador completo de 1 bit

Solo podemos agregar un bit a la vez, así que configura la palabra de registro de desplazamiento (ancho) en un bit, y haz que tenga al menos 8 palabras de profundidad. Los registros de desplazamiento presentan la palabra de menor significado para el sumador, y el registro de desplazamiento de respuesta acepta la palabra LS del sumador en cada ciclo de reloj, al igual que la adición de lápiz y papel.

¿Qué hacemos con el acarreo entre dígitos? Necesitamos registrar la salida, por lo que está disponible como entrada para el siguiente bit. ¿Qué necesita una memoria de 1 bit, como un flip flop (o un registro de desplazamiento profundo de 1 bit de ancho de 1 bit!)

e) o utilizando un sumador completo de 2 bits

Podemos usar una palabra de 2 bits en nuestro sumador, por lo que necesitamos registros de cambio profundo de 2 palabras de 2 bits de ancho. ¿Cuántos bits necesitamos para almacenar la ejecución / entrada?

f) o utilizando un sumador completo de 4 bits

Haga que los registros de desplazamiento tengan 4 bits de ancho y al menos 2 palabras de profundidad.

marcas de bonificación)

Esto ha abordado solo la adición, asumiendo que ambos registros de desplazamiento de entrada ya contienen los números que se agregarán. Cualquier implementación práctica deberá incluir algún mecanismo para cargar los números allí. Podría ser que los registros de desplazamiento se carguen en paralelo. Los IC para eso existen, como HC165, y por supuesto, puedes escribir VHDL que haga eso. Sin embargo, si el sumador se está implementando en serie, es muy posible que desee continuar guardando el área de la serie en paralelo al almacenar y mover todos los datos en forma serial. Sólo un pensamiento.

    
respondido por el Neil_UK

Lea otras preguntas en las etiquetas