¿Cómo hacer un codificador de prioridad 7 a 3?

0

Estoy tratando de hacer un codificador de prioridad 7 a 3 para un diagrama de circuito para una clase. El problema es que tenemos que tomar un número de 7 bits y generar una respuesta de 3 bits que represente el número máximo de números consecutivos en la entrada.

Ejemplo:

0011100 = 011 (3)
1111111 = 111 (7)
0000000 = 000 (0)

El problema en este momento es que, independientemente de la entrada, siempre genera 111 (7).

Tengo circuitos para manejar todas las combinaciones posibles de combinaciones consecutivas en la entrada, y luego lo coloco en un codificador de prioridad 7 a 3, pero por alguna razón el codificador no funciona como debería. ¿Qué estoy haciendo mal? ¿O hay una mejor manera de hacerlo?

Diagrama del circuito original:

Intento2:

    
pregunta PseudoPsyche

2 respuestas

2
  • en tu diagrama, ¿confundiste las salidas PE2 y PE3 ?
  • para 1111111 , PE1..PE7 van a ser 1 , por lo que el último diagrama sería incorrecto.
  • NAND es una función mucho más fácil para jugar con 1 s consecutivos.

Así es como lo haría:

LEN1 = AND(OR(a,b,c,d,e,f,g),NOR(NAND(a,b),NAND(b,c),NAND(c,d),NAND(d,e),NAND(e,f),NAND(f,g)))
LEN2 = AND(OR(NAND(a,b),NAND(b,c),NAND(c,d),NAND(d,e),NAND(e,f),NAND(f,g)),
           NOR(NAND(a,b,c),NAND(b,c,d),NAND(c,d,e),NAND(d,e,f),NAND(e,f,g)))
LEN3 = AND(OR(NAND(a,b,c),NAND(b,c,d),NAND(c,d,e),NAND(d,e,f),NAND(e,f,g)),
           NOR(NAND(a,b,c,d),NAND(b,c,d,e),NAND(c,d,e,f),NAND(d,e,f,g)))
LEN4 = AND(OR(NAND(a,b,c,d),NAND(b,c,d,e),NAND(c,d,e,f),NAND(d,e,f,g)),
           NOR(NAND(a,b,c,d,e),NAND(b,c,d,e,f),NAND(c,d,e,f,g)))
LEN5 = AND(OR(NAND(a,b,c,d,e),NAND(b,c,d,e,f),NAND(c,d,e,f,g)),
           NOR(NAND(a,b,c,d,e,f),NAND(b,c,d,e,f,g))
LEN6 = AND(OR(NAND(a,b,c,d,e,f),NAND(b,c,d,e,f,g)),
           NOT(NAND(a,b,c,d,e,f,g)))
LEN7 = NOT(NAND(a,b,c,d,e,f,g))

ANS1 = OR(LEN1,LEN3,LEN5,LEN7)
ANS2 = OR(LEN2,LEN3,LEN6,LEN7)
ANS3 = OR(LEN4,LEN5,LEN6,LEN7)
    
respondido por el dnozay
1

Bien, así que finalmente lo puse en funcionamiento. Usé mis circuitos originales que determinan el número de bits consecutivos, pero luego usé parte de la solución de dnozay para construir la respuesta final de 3 bits.

    
respondido por el PseudoPsyche

Lea otras preguntas en las etiquetas