Práctica 5. Banco de registros Diseñar un banco de registros con 32 registros de 32 bits. Tendrá dos puertos de salida de datos de 32 bits, busA y busB; dos puertos de direcciones para lectura de 5 bits, RA y RB, que indican cuál es el registro cuyo contenido se muestra en busA y busB; un puerto de direcciones de escritura de 5 bits, RW, y otro de datos de escritura de 32 bits, busW. También tendrá una señal RegWrite que cuando este a 1 permitirá que coincidiendo con el flanco de bajada del reloj CLK se almacene en el registro deterrminadopor RW los datos que se encuentren en busW. El diseño deberá hacerse de dos modos: a) Con un diseño algorítmico basado en un único Process. b) Con un diseño estructural en el que se definirán: a. 32 registros de 32 bits. b. Para la operación de lectura, se diseñarán dos multiplexores de “32 a 1” en los que cada una de las entradas y la salida tendrán 32 bits. Para diseñar estos multiplexores se modelará de modo algorítmico un multiplexor en el que se dan como genéricos el números de entradas de control y el número de bits de anchura de la salida (por supuesto igual al de las entradas). Nota: El operador exponenciación es **. c. Para la escritura se necesitará diseñar un decodificador de “5 a 32”. Diseñar uno algorítmico en el que el número de entradas sea genérico. d. También para la escritura se necesitará usar puertas and. Por comodidad a la hora de realizar el interconexionado puede definirse una puerta super_and, que internamente conste de 32 puertas, en las que una de las dos entradas es común (la señal RegWrite). c) Definir un banco de pruebas que lea y escriba varios valores. RA Registro 0 Registro 1 .... Registro 32 Registro 31 M U bus A RB M U bus B RA RB RW bus W RegW r RW Ban co de regi bus A bus B RegW r 0 Deco 1 difica dor 5a 32 31 32 C Registro 0 D C Registro 1 D C Registro 30 D C Registro 31 Bus W D