Estoy tratando de diseñar una calculadora básica que pueda sumar, sub, mul y div con Logisim. Para almacenar los operandos voy a usar registros de desplazamiento. Recientemente aprendí sobre ellos y entiendo qué es la entrada en serie y la carga en paralelo. También sé cómo cambiar los bits. He copiado este registro de desplazamiento universal de mi libro de texto. (Diseño digital por Morris Mano)
La calculadora funcionará solo con 4 dígitos. Por eso he combinado 4 Registros Universales de Desplazamiento de la siguiente manera
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 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 debo controlar el reloj de alguna manera para que lata solo 4 veces? (En caso afirmativo, explíqueme cómo)
Mencione si hay una mejor manera de almacenar mis operandos.
No sé cómo se ve el resto de su diseño, pero los operandos tienen que venir de alguna parte. Supongo que es el bus de 4 bits en la esquina inferior izquierda.
Para desplazar 4 bits hacia adelante y hacia atrás, 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.
Solo cambias 4 veces.
Las primeras calculadoras usaban una CPU de 4 bits, ya que eso es todo lo que necesita para las matemáticas BCD.
Pero dentro de esa CPU de 4 bits, usaron una unidad de lógica aritmética de 1 bit para hacer las adiciones reales. Desplazaron los 4 bits en serie a través de la ALU de 1 bit, agregando con acarreo de 1 bit. (posteriormente cpus de 8 bits hizo lo mismo)
Una vez que entiendes esta idea, te das cuenta de que hacer matemáticas 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, simplemente más lento, pero usando muchos menos transistores.
Sigue siendo matemática de precisión múltiple.
Y si está haciendo una calculadora, aún tendrá que hacer cálculos de precisión múltiple, incluso si usa un ARM de 32 bits.
Me parece que solo necesita dos registros de desplazamiento unidireccionales de 16 bits (operandos X, Y), con un nibble de entrada de carga paralela de 4 bits.
Puede copiar X a Y en 16 cambios de un solo bit. Puede desplazar a la izquierda 15 rotaciones a la derecha. Puede hacer operaciones matemáticas con una ALU de 1 bit con acarreo. Necesitará un decimal inteligente para ajustar cada mordisco. Necesita un contador cargable de 4 bits para el control de cambios, ya que tendrá cambios de 4 bits, 1 bit, 15 bits y 16 bits
Así que realmente no creo que necesite resistencias de cambio de carga bidireccionales o paralelas en absoluto. La mayoría de las operaciones lógicas y muxing ocurrirán con un ancho de 1 bit al final del SR.
El circuito que se muestra en la pregunta es un cambio de un solo bit porque A3 alimenta el mux de A2. 3-2 = 1, por lo tanto, un cambio de bit.
Si, en cambio, A6 alimenta el mux de A2, A7 en A3, A5 en A1, y así sucesivamente, admitirá un cambio de 4 bits en una sola operación.
Si está diseñando para una codificación BCD, entonces tener una operación de cambio por 4 es una buena idea, y será un ahorro de tiempo significativo en comparación con repetir un cambio por 1.
usuario39382
sabbir mollah
henry crun
HKOB
usuario253751
DKNguyen