74181 ALU no funciona correctamente en cascada para agregar números de 8 bits

0

Estoy tratando de hacer una CPU casera, pero tengo problemas con la ALU 74LS181, que simulo en el software Logisim antes de sumergirme en circuitos integrados y tablas reales.

He colocado en cascada dos 74181 siguiendo las instrucciones que se encuentran en muchos sitios, como this .

Esto funciona bien con la mayoría de los complementos que probé, pero algunos no funcionan.

Por ejemplo:

0010 0111 (39 en decimal) + 0000 0001 (1)

conduce a un resultado 0010 0000 (32).

Sé que debería tener algo que ver con el hecho de que 74181 utiliza números con signos representados en el complemento de dos. El nibble menos significativo en el ejemplo (0111) representa el número positivo máximo con 4 bits, por lo que cuando se incrementa en uno, va a cero ...

¿Hay alguna manera de hacer que 74181 funcione solo con números positivos? O resuelva este problema de otra manera.

Estoy frustrado porque con este problema, la ALU es completamente inútil.

vínculo para la hoja de datos 74181

enlace para el proyecto (tiene una imagen de error en la ALU simulada) - enlace en el comentario a continuación

    
pregunta André Baptista

4 respuestas

0

Todas las respuestas me ayudaron a encontrar el error. En realidad, el error estaba en la implementación de 74181 ALU en Logisim, como supuse. Hay 3 versiones de archivo del chip, pero la correcta es (extrañamente) la v2 no la v3. Pondré un comentario en la página del autor para advertir a otros en el futuro.

Además de esto, la conexión de salida / entrada Carry se invirtió, debe ser desde la ALU de Low Nibble (4 bits menos significativos) hasta High Nibble. Hice lo contrario. Mi error.

Gracias a todos.

    
respondido por el André Baptista
1

Indique cómo está interconectando los dos dispositivos, particularmente el transporte desde el LSB al dispositivo MSB. Parece que puede que no esté conectado correctamente.

El 74LS181 no trata con números firmados, solo enteros sin signo. Depende de usted interpretar los valores en la forma que necesita.

Los dos dispositivos deben estar interconectados de manera similar a esto:

    
respondido por el Kevin White
0

Primero, deshazte de la segunda 181. Concéntrate en obtener un resultado de 4 bits y entenderlo.

Segundo, combinar 0111 y 0001 para obtener 0000 es muy extraño, pero, por ejemplo, si está aplicando 0001 a las entradas A, y 0111 a la B, y una selección de Modo de 1111, obtendrá A - 1 , o 0000. Así que volvería a revisar sus líneas de selección y sus entradas. Compruebo especialmente cosas como un intercambio entre los pines 2 y 3, lo que confundiría A0 y S0.

    
respondido por el WhatRoughBeast
0

Según su ejemplo del error, no tiene Cn y Cn + 4 conectados correctamente. Su entrada Cn está flotando e ingresando un acarreo fantasma y agregando un +1 no deseado a la etapa baja. Y la etapa superior, que debería recibir un equipaje de mano, parece que está atada en su lugar.

Su problema no está relacionado con números binarios firmados o sin firmar. El sumador funciona de la misma manera en cada etapa de bits, independientemente de su interpretación de lo que representa el binario. Esa es la belleza de los complementos de 2. Los circuitos lógicos para cada etapa de bit es el mismo (generalmente). Simplemente interpretas los valores de manera diferente.

    
respondido por el Entrepreneur

Lea otras preguntas en las etiquetas