Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Codificador de Prioridad Que Detecta Segunda Prioridad
Codificador de Prioridad Que Detecta Segunda Prioridad
El proyecto que ahora se propone es el diseño de un codificador de prioridad con la capacidad de codificar,
además de la prioridad más alta, la siguiente prioridad que ocurre. Las ocho líneas a las que se les asigna
prioridad son Y7, Y6, …, Y0, donde Y7 tiene la máxima prioridad, seguida de Y6, etc., hasta Y0, que tiene
la prioridad mínima. Esas ocho señales son activas altas, es decir, Y7 estará activa cuando se encuentre en el
nivel lógico 1 y así con las otras siete. Existe un entrada más, Gi, que habilita al codificador cuando está en
el nivel bajo. Se debe usar la GAL22V10 y ABEL-HDL.
Las salidas son ocho, todas activas en alto, subdivididas en dos grupo: el primer grupo son las salidas V2, V1
y V0 a las que designamos con el nombre V y que codifican el número que identifica a la entrada en 1 lógico
(de 0 a 7) que tiene la prioridad mayor. La otra señal de este grupo es G1 que cuando está en 1 indica que si
hay una entrada activa por lo menos.
El segundo grupo estará formado por las salidas W2, W1 y W0 al que designamos con el nombre W y que
codifican a la línea activa con el segundo valor de prioridad. La otra señal del segundo grupo es G0 que
cuando está en alto indica que se detectó una segunda línea activa. Si el permisivo de entrada Gi está en alto
las ocho salidas deben tomar el nivel bajo.
X = .x.;
" entradas
truth_table
([Gi,Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0]->[V,G1,W,G0])
[1, X, X, X, X, X, X, X, X]->[0,0,0,0]; " 512
[0, 1, 1, X, X, X, X, X, X]->[7,1,6,1]; " 64
[0, 1, 0, 1, X, X, X, X, X]->[7,1,5,1]; " 32
[0, 1, 0, 0, 1, X, X, X, X]->[7,1,4,1]; " 16
[0, 1, 0, 0, 0, 1, X, X, X]->[7,1,3,1]; " 8
[0, 1, 0, 0, 0, 0, 1, X, X]->[7,1,2,1]; " 4
[0, 1, 0, 0, 0, 0, 0, 1, X]->[7,1,1,1]; " 2
[0, 1, 0, 0, 0, 0, 0, 0, 1]->[7,1,0,1]; " 1
[0, 0, 1, 1, X, X, X, X, X]->[6,1,5,1]; " 32
[0, 0, 1, 0, 1, X, X, X, X]->[6,1,4,1]; " 16
[0, 0, 1, 0, 0, 1, X, X, X]->[6,1,3,1]; " 8
[0, 0, 1, 0, 0, 0, 1, X, X]->[6,1,2,1]; " 4
[0, 0, 1, 0, 0, 0, 0, 1, X]->[6,1,1,1]; " 2
[0, 0, 1, 0, 0, 0, 0, 0, 1]->[6,1,0,1]; " 1
[0, 0, 0, 1, 1, X, X, X, X]->[5,1,4,1]; " 16
[0, 0, 0, 1, 0, 1, X, X, X]->[5,1,3,1]; " 8
[0, 0, 0, 1, 0, 0, 1, X, X]->[5,1,2,1]; " 4
[0, 0, 0, 1, 0, 0, 0, 1, X]->[5,1,1,1]; " 2
[0, 0, 0, 1, 0, 0, 0, 0, 1]->[5,1,0,1]; " 1
[0, 0, 0, 0, 1, 1, X, X, X]->[4,1,3,1]; " 8
[0, 0, 0, 0, 1, 0, 1, X, X]->[4,1,2,1]; " 4
[0, 0, 0, 0, 1, 0, 0, 1, X]->[4,1,1,1]; " 2
[0, 0, 0, 0, 1, 0, 0, 0, 1]->[4,1,0,1]; " 1
[0, 0, 0, 0, 0, 1, 1, X, X]->[3,1,2,1]; " 4
[0, 0, 0, 0, 0, 1, 0, 1, X]->[3,1,1,1]; " 2
[0, 0, 0, 0, 0, 1, 0, 0, 1]->[3,1,0,1]; " 1
[0, 0, 0, 0, 0, 0, 1, 1, X]->[2,1,1,1]; " 1
[0, 0, 0, 0, 0, 0, 1, 0, 1]->[2,1,0,1]; " 1
[0, 0, 0, 0, 0, 0, 0, 1, 1]->[1,1,0,1]; " 1
[0, 1, 0, 0, 0, 0, 0, 0, 0]->[7,1,0,0]; " 1
[0, 0, 1, 0, 0, 0, 0, 0, 0]->[6,1,0,0]; " 1
[0, 0, 0, 1, 0, 0, 0, 0, 0]->[5,1,0,0]; " 1
[0, 0, 0, 0, 1, 0, 0, 0, 0]->[4,1,0,0]; " 1
[0, 0, 0, 0, 0, 1, 0, 0, 0]->[3,1,0,0]; " 1
[0, 0, 0, 0, 0, 0, 1, 0, 0]->[2,1,0,0]; " 1
[0, 0, 0, 0, 0, 0, 0, 1, 0]->[1,1,0,0]; " 1
[0, 0, 0, 0, 0, 0, 0, 0, 1]->[0,1,0,0]; " 1
[0, 0, 0, 0, 0, 0, 0, 0, 0]->[0,0,0,0]; " 1
END
En la práctica 5 se deben conectar dos GALs en cascada para detectar prioridad en doce líneas,
según se ilustra en la figura siguiente.