Implementando una función usando decodificador, codificador y algunas puertas

Implemente la función F(A,B,C,D,E) = A'B'C'DE'+ABCD'E utilizando solo los componentes necesarios de los que se indican a continuación:

  • Un decodificador 3:8 con salidas altas activas y una entrada de habilitación alta activa
  • Un codificador de prioridad 8:3 con entrada no. 7 en la prioridad más alta con una habilitación alta activa que, si está deshabilitada, fuerza las salidas a la lógica baja
  • Una puerta XOR de 2 entradas
  • Una puerta OR de 2 entradas
  • Una puerta AND de 2 entradas

Mis intentos:

  • He notado que la función tiene los minitérminos 2 y 29 - 00010 y 11101.
  • Puedo hacer que el decodificador tenga cuatro entradas usando un pin de habilitación (para una variable).
  • Dibujar el K-Map no parece simplificar nada.
  • La aplicación de la ley de De-Morgan no parece simplificar las cosas.
  • Intenté usar B, C y E en el decodificador y A o D en la habilitación. Esto me proporciona 8 minitérminos de B, C y E.

Estoy atascado en cómo implementarlo usando solo estos.

¿Cómo abordo más esta pregunta (y otras preguntas de diseño similares)?

¡Bienvenido a EE.SE! Esta parece ser una pregunta de tarea. Tenga en cuenta que las preguntas de tarea sobre EE.SE disfrutan/sufren un tratamiento especial. No brindamos respuestas completas, solo brindamos sugerencias o preguntas socráticas, y solo cuando ha demostrado suficiente esfuerzo por su cuenta. De lo contrario, le estaríamos haciendo un flaco favor y, al mismo tiempo, nos veríamos abrumados por las preguntas de la tarea. Ver también aquí .

Respuestas (2)

No existe un procedimiento establecido para resolver este tipo de problemas. Requiere mucha creatividad y perspicacia.

Algunas ideas que pueden resultar útiles:

  • Los dos patrones son complementarios entre sí.
  • Los codificadores de prioridad son particularmente buenos para detectar combinaciones de ceros.
  • Los decodificadores son particularmente buenos para detectar combinaciones de unos.

Hay una solución que usa exactamente las puertas enumeradas. (No requiere una salida "válida" en el codificador, aunque esa es una característica normal de dicho chip). Lo publicaré en uno o dos días si todavía está atascado.


La tabla de verdad para un codificador de prioridad se ve así:

      Inputs         Outputs
E 7 6 5 4 3 2 1 0    V C B A
-----------------    -------
0 x x x x x x x x    0 0 0 0   <--
1 1 x x x x x x x    1 1 1 1
1 0 1 x x x x x x    1 1 1 0
1 0 0 1 x x x x x    1 1 0 1
1 0 0 0 1 x x x x    1 1 0 0
1 0 0 0 0 1 x x x    1 0 1 1   <--
1 0 0 0 0 0 1 x x    1 0 1 0
1 0 0 0 0 0 0 1 x    1 0 0 1
1 0 0 0 0 0 0 0 1    1 0 0 0
1 0 0 0 0 0 0 0 0    0 0 0 0

La idea clave aquí es que tanto la primera como la sexta línea de esta tabla son significativas para este problema. Presta atención a la Csalida. Si conecta las entradas correctamente, puede hacer que baje para ABCDE = 000x0o ABCDE = xxx0x. La pregunta restante es, ¿cómo puede usar la puerta XOR para distinguir entre estos dos casos?


solución completa

esquemático

simular este circuito : esquema creado con CircuitLab

Gracias Dave No soy capaz de visualizar como el codificador con la puerta XOR me daría A'B'C'DE'. Si conoce algún recurso que pueda ayudarme a comprender la salida del codificador de prioridad como quiere que la vea, sería de gran ayuda.
¿Ayuda mi edición anterior?
Puedo insertar A,B,C,E en las Entradas 7,6,5,4 respectivamente y 3 se conectaría a 1. D se conectaría a Habilitar. XOR se puede conectar a las salidas B y C para distinguir entre las dos. Así se implementa A'B'C'DE'.
Cerca, pero no. No puede usar la salida B porque las filas 2 a 5 de la tabla también están activadas para varias combinaciones de entradas no válidas. Pero si haces XOR en la salida C con la señal D, obtienes lo que quieres. He puesto mi solución completa en mi respuesta.
Muchas gracias Dave. Ahora entiendo el proceso de pensamiento detrás de tales preguntas.
¿Tiene más preguntas de este tipo (que requieren Mux, DMux, decodificadores, codificadores, sumadores, etc.) que requieren un pensamiento sin procesar?
No, yo personalmente no. Generalmente escribo lo que quiero en Verilog o VHDL y dejo que las herramientas de síntesis se preocupen por la implementación :-) Quizás alguien que esté más cerca de un entorno académico tenga algunos otros.
¿Puedo saber qué herramientas de síntesis usas? Podría resolver problemas al revés usándolos. Tengo un conocimiento muy básico de Verilog.
Uso herramientas de proveedores casi exclusivamente: Quartus para Altera (ahora Intel), Vivado para Xilinx, Libero para Microsemi (anteriormente Actel).

El hecho de que su problema se exprese como una suma de dos productos le da un gran indicador de la solución, ya que tiene dos componentes complejos y una puerta OR disponible. Por lo tanto, solo debería ser una cuestión de obtener un componente para generar uno de los productos, el otro componente para generar el otro producto y luego usar la puerta OR para combinar los dos para obtener el resultado. También tienes dos puertas aparentemente elegidas al azar para ayudarte.

El término ABCD'E es el más fácil. Tiene cuatro entradas que deben ser 1 y una que debe ser 0. Combine dos de las entradas que deben ser 1 usando la compuerta AND y tendrá tres entradas que deben ser 1 y una que debe ser 0, y eso se puede lograr muy fácilmente usando su decodificador 3:8.

El segundo es más difícil, así que dejaré que intentes resolverlo, pero escribe la tabla de verdad y estúdiala para ver cómo puedes combinar el codificador 8:3 con la puerta XOR para obtener el segundo producto.

Gracias. Podría implementar ABCD'E fácilmente después de esa idea. Traté de implementar el otro término. Puedo ver que puedo obtener cuatro de los términos del codificador (usando habilitar (usé D en habilitar) y tendré que ingresar directamente un término en la puerta XOR. Vi la expresión para la salida de codificadores prioritarios y probé para enchufar A'B'C'DE' en la expresión para el LSB. Por golpe y prueba, podría hacer que la salida del codificador sea: A'B'C'D seleccionando las entradas apropiadas. Si combino E con esto usando un XOR. Obtengo un término adicional en el resultado deseado. ¿Alguna pista sobre lo que podría hacer ahora?
No, necesita obtener un solo término de la combinación codificador/XOR. Te daré una pista: ignora los bits de salida codificados y concéntrate en la salida válida. D es ciertamente el correcto para usar para habilitar.
Q0(El LSB) = (m6'(m4'm2'm1+m4'm3+m5)+m7). [sin considerar habilitar] pongo m6 = A, m4 = B, m2 = C, m1 = 1 y resto cero. Esto me da A'B'C'. Con la habilitación como D. La expresión es A'B'C'D. Obtener A'B'C'DE' con un XOR es el desafío para mí. Podría hacerlo con un AND.
Como dije, ignora Q0, Q1 y Q2. Realmente está buscando tratar el codificador como una puerta OR de cuatro entradas con habilitación.
Simplemente no puedo envolver mi cabeza alrededor de este. Soy nuevo en esto.