¿Cómo 'Cambiar en paralelo' en un registro de desplazamiento?

1

Estoy tratando de diseñar una calculadora básica que pueda agregar, sub, mul y div con Logisim. Para almacenar los operandos voy a utilizar registros de desplazamiento. Recientemente he aprendido sobre ellos y entiendo qué son las entradas en serie y la carga en paralelo. También sé cómo cambiar los bits. He copiado este registro de cambio universal de mi libro de texto. (Diseño digital de Morris Mano) p>

Lacalculadorafuncionarásoloen4dígitos.Poresocombiné4Registrosdecambiosuniversalesdelasiguientemanera

Aquí, cada vez que cambio el valor (Izquierda o Derecha), el registro cambia solo 1 bit. Lo que necesito es poder cambiar 4 bits a la vez. Debido a que estoy almacenando mis dígitos en BCD, necesito poder mover todos los 4 bits a la derecha o a la izquierda juntos en un solo pulso de reloj.

He buscado esto en google y todo lo que pude encontrar fue: Serial In Serial Out Shift Register,
Serial In Parallel Out Shift Register,
Parallel In Serial Out Shift Register,
Parallel In Parallel out Shift Register.

Pero todos estos registros pueden cambiar solo un bit por pulso de reloj. Entonces, para poder almacenar mis representaciones BCD, ¿cómo puedo cambiar los bits en paralelo (4 bits a la vez)?

¿O debería de alguna manera controlar el reloj para que suene solo 4 veces? (Si es así, por favor, explícame cómo)

Indique si hay una mejor manera de almacenar mis operandos.

    
pregunta Sabbir Mollah

2 respuestas

0

No sé qué aspecto tiene el resto de tu diseño, pero los operandos tienen que venir de algún lugar. Supongo que es el bus de 4 bits en la esquina inferior izquierda.

Para desplazar 4 bits hacia atrás y hacia adelante, debe colocar cuatro registros de desplazamiento en paralelo . Los has puesto en serie.

Poner dos registros de desplazamiento en serie duplica la profundidad.
Poner dos registros de desplazamiento en paralelo duplica el ancho.

    
respondido por el Oldfart
0

Solo cambias 4 veces.

Las primeras calculadoras utilizaron una CPU de 4 bits, ya que eso es todo lo que necesitas para las matemáticas BCD.

Pero dentro de esa CPU de 4 bits, utilizaron una unidad de lógica aritmética de 1 bit para hacer los agregados reales. Desplazaron los 4 bits en serie a través de la ALU de 1 bit, haciendo 1 bit de agregar y llevar. (Más tarde, 8 bits de CPU hicieron lo mismo)

Una vez que te das cuenta de esta idea, te das cuenta de que hacer cálculos matemáticos de precisión múltiple no es más difícil en una ALU de 1 bit, que está en una CPU de 32 bits, solo más lento, pero con menos transistores.

Todavía es matemática de precisión múltiple.

Y si está haciendo una calculadora, todavía tendrá que hacer cálculos matemáticos de precisión múltiple, incluso si utiliza un ARM de 32 bits.

Me parece que solo necesita dos registros de desplazamiento unidireccional de 16 bits (operandos X, Y), con un nibble de entrada de carga paralela de 4 bits.

Puede copiar X a Y mediante 16 cambios de bit único. Puedes girar a la izquierda por 15 derechos de rotación. Puedes hacer matemáticas con un ALU de 1 bit con carry. Necesitará un ajuste decimal inteligente cada nibble. Necesita un contador de 4 bits que se pueda cargar para el control de cambios, ya que tendrá cambios de 4 bits, 1 bit, 15 bits y 16 bits

Entonces, realmente no creo que necesites resistencias de cambio de carga bidireccionales o paralelas. La mayoría de las operaciones lógicas y la mezcla sucederán todas de 1 bit de ancho al final de la SR.

    
respondido por el Henry Crun

Lea otras preguntas en las etiquetas