Universidad Distrital, Facultad Tecnológica Tecnología en Electricidad- Tecnología en Electrónica Circuitos Digitales Profesor: Fernando Fernando Martínez Santa- Edar !acinto "ó#ez- $ol#an Montiel %riza Pro&ecto Final Procesador '(sico en P)D *+etivo Diseñar en VHDL e Implementar por medio de un CPLD un procesador básico de cuatro bits y ejecutar un programa de prueba que corrobore corrobore su funcionamiento. fun cionamiento. Descrición e debe implementar por medio de VHDL un procesador de acumulador de ! bits con arquitectura Har"ard. #ste está conformado por una unidad aritm$tica l%gica &L'( un selector de palabra de ! bits )'*( por un contador de programa PC( un registro de instrucci%n I+( un registro acumulador &CC( una memoria de datos( una memoria de programa y una unidad de control. #l diagrama de bloques del circuito se muestra en la ,gura -.
La &L' es de ! bits y posee una entrada de selecci%n de bits. i se nombra a la entrada de la i/quierda & y 0 a la de la derec1a( la tabla de funciones de la &L' &L' es la siguiente2 Selección 3 6 ! 8 9 :
Salida &40 &50 & and 0 & or 0 & 7or 0 not 0 & ;o importa
carry? para el acarreo de cada operaci%n y una salida @ >/ero? para indicar cuando un operaci%n da como resultado todos los bits en cero. #l contador de programa PC debe ser un contador de A bits( debe poseer entradas de reloj y de reset asBncrono( una entrada de incremento que indique cuando se le suma uno al contador( contador( una entrada de suma y una de resta para sumar o restar un "alor constante el cual corresponde a una entrada de ! bits. #l registro de instrucci%n I+ es un registro de A bits( tiene entradas de reloj y de reset asBncrono( una entrada de carga( una entrada de A bits y dos salidas de ! bits cada una que separan los ! bits menos signi,cati"os signi,cati"os >parte baja? de los ! bits más signi,cati"os >parte alta? del dato almacenado de A bits.
#l selector de palabra debe seleccionar entre la salida de la &L' y la salida de la parte baja del registro de instrucci%n I+( por medio de una entrada de selecci%n.
! ! !
&L '
)emoria de datos
! !
!
)'*
-9 7 !
!
. C
&CC !
! . C
I+
! 'nidad de Control
A )emoria de
!
programa A
689 7 A
PC
=igura -. Diagrama de bloque del procesador. #l registro de acumulador &CC es un registro de 9 bits( tiene entradas de reloj y de reset asBncrono( una entrada de carga( una entrada de ! bits para el resultado de la &L' y dos de - bit para @ y C de la &L' respecti"amente. & su "e/ se tienen las mismas salidas para el resultado( @ y C. =inalmente se tiene una entrada llamada resetags para poner en cero Enicamente los bits de @ y C. La memoria de datos es un banco de -9 registros de ! bits cada uno( este banco de registros debe tener
una entrada de reloj( una entrada de datos de ! bits( una salida de datos de ! bits( una entrada de direcci%n de cuatro bits y una entrada de 1abilitaci%n de escritura F# >Grite enable?. Los registros del 3 al : son registros internos( los del A al -funcionan como puertos de salida y los del -6 al - 8 funcionan como puertos de entrada. Para esto Eltimo se requieren cuatro salidas de ! bits y cuatro entradas de ! bits para los puertos de salida y de entrada respecti"amente >no se muestran en la ,gura - para simplicidad del esquemático?. La memoria de programa es de tipo +) de 689 posiciones de A bits cada una y tiene los "alores correspondientes a las instrucciones que el procesador debe ejecutar( estas instrucciones están programadas directamente en la descripci%n en VHDL de la memoria. #sta tiene una entrada de direcciones de A bits y una salida de datos de Abits. este bloque es totalmente asBncrono. La unidad de control es una maquina de estados ,nitos( que está encargada de reali/ar cada uno de los pasos necesarios >micro5instrucciones? para que se ejecuten las instrucciones programadas( esta debe reali/ar internamente una decodi,caci%n de las instrucciones. #ste bloque tiene entradas de reloj( de reset( de @( de C y la entrada de instrucci%n de ! bits que corresponde a la parte alta del I+. &demás tienen salidas para2 las señales de carga de &CC e I+( las señales de incremento( suma y resta del PC( la señal de resetags del &CC( la señal de F# de la memoria de datos y la señal de selecci%n del selector de palabra >ninguna de estas señales se muestra en el esquemático de la ,gura -?. !uego de instrucciones
#l procesador posee un set de - instrucciones( 6 aritm$ticas( ! l%gicas( de transferencia de memoria( 6 saltos incondicionales y 6 saltos condicionales. las instrucciones son las siguientes2
/nstrucción %DD Address
Función &CC Data)emJ AddressK 4 &CC
SU' Address
&CC Data)emJ AddressK 5 &CC
%0D Address
&CC Data)emJ AddressK and &CC
*1
&CC Data)emJ AddressK or &CC
Address
Descrición uma el acumulador mas la posici%n de memoria de datos indicada por Address y carga el resultado en el acumulador. +esta el "alor del acumulador a la posici%n de memoria de datos indicada por Address y carga el resultado en el acumulador. Hace la operaci%n &;D bit a bit entre el acumulador y la posici%n de memoria de datos indicada por Address. Carga el resultado en el acumulador. Hace la operaci%n + bit a bit entre el acumulador y la posici%n de memoria de datos indicada por
2*1 Address
0*T
&CC Data)emJ AddressK xor &CC
&CC not &CC
)*%D Address
&CC Data)emJ AddressK
ST*1E Address
Data)emJ AddressK &CC
)*%D3 Constant "*UP Jump
&CC Constant
"*D4 Jump
PC PC 4 Jump
PC PC 5 Jump
!/C Jump
i > carry -M? entonces PC PC 4 Jump
!/. Jump
i > /ero -M? entonces PC PC 4 Jump
Address. Carga el resultado en el acumulador. Hace la operaci%n *+ bit a bit entre el acumulador y la posici%n de memoria de datos indicada por Address. Carga el resultado en el acumulador. ;iega el "alor del acumulador bit a bit y carga el resultado en $l mismo. Carga el acumulador con el "alor contenido en la posici%n de memoria de datos indicada por Address. Carga la posici%n de memoria de datos indicada por Address con el "alor del acumulador. Carga el acumulador con el "alor Constant . alta 1acia arriba en el programa( restándole el "alor jump al contador de programa. alta 1acia abajo en el programa( sumándole el "alor jump al contador de programa. alta 1acia abajo en el programa( sumándole el "alor jump al contador de programa siempre y cuando el bit de carry sea -M. alta 1acia abajo en el programa( sumándole el "alor jump al contador de programa siempre y cuando el bit de zero sea -M.
Address Address Address Address Address
Código de oeración 56 MS's7 3333 33333-3 33-3-33
*erando 56 )S's7 & &6 &- &3 & &6 &- &3 & &6 &- &3 & &6 &- &3 & &6 &- &3
0*T )*%D Address ST*1E Address )*%D3 Constant "*UP Jump "*D4 Jump !/C Jump !/. Jump
3-33--3
**** & &6 &- &3
-333
& &6 &- &3
-33-
O O6 O- O3
-3-3 -3---33
N N6 N- N3 N N6 N- N3 N N6 N- N3
--3-
N N6 N- N3
operando? se conecta al bus de direcciones de la memoria de datos. La instrucci%n ;< no requiere operando( por lo tanto se ignoran estos cuatro bits. La instrucci%n L&DO tiene como operando los bits O( O6( O- y O3 que 1acen referencia al dato de ! bits que se debe cargar al acumulador( por esta ra/%n la parte baja del I+ se conecta tambi$n a una de las entradas del selector de palabra. Las instrucciones de salto condicional e incondicional tienen como operando los bits N( N6( N- y N3( que corresponden al "alor del salto que se "a a 1acer >el "alor que se le suma o resta al PC? por este moti"o la parte baja del I+ se conecta tambi$n a la entrada del PC. Microinstrucciones
Las microinstrucciones son cada uno de los pasos que debe cumplir la unidad de control para ejecutar cada una de las instrucciones( esto depende del tipo de instrucci%n. #7isten microinstrucciones comunes para todas las instrucciones( y microinstrucciones especi,cas para cada instrucci%n. Las microinstrucciones se di"iden en Búsqueda( Decodifcación y Ejecución. Las microinstrucciones de bEsqueda y decodi,caci%n son comunes para todas las instrucciones pero la ejecuci%n es especB,ca para cada una. Las microinstrucciones para la bEsqueda son2 •
•
incrementar el contador de programa para buscar la siguiente instrucci%n poner en -M la señal de carga del registro I+
;<&2 el incremento del contador de programa se puede 1acer al principio o al ,nal de cada instrucci%n( depende del orden que se le d$ a la máquina de estados
La decodi,caci%n consiste en un estado central de la máquina de estados en donde se salta a diferentes partes del diagrama de estados dependiendo de la instrucci%n a ejecutar. Para todas las instrucciones de la &L' > &DD( '0( &;D( +( *+ ;< y L&D? la ejecuci%n tiene las siguientes microinstrucciones2 • •
poner en 3M la señal de selecci%n del selector de palabra poner en -M la señal de carga del registro &CC >cargar el resultado?
#sto basta debido a que cuando se 1ace la bEsqueda la parte baja del I+ direcciona la memoria y a la salida de esta se muestra el "alor del registro del operando. Para la instrucci%n L&DO las microinstrucciones son2 • •
poner en -M la señal de selecci%n del selector de palabra poner en -M la señal de carga del registro &CC >cargar el resultado?
Para las instrucciones de salto incondicional >'P y DF? las microinstrucciones son2 •
poner en -M la señal de suma >o de resta? del PC
Para las instrucciones de salto condicional >NIC y NI@? las microinstrucciones son2 •
poner en -M la señal de suma del PC si el bit C >o @? es -M
)a+oratorio
e debe implementar todos los bloques a e7cepci%n de la memoria de programa y la memoria de datos( cuyos c%digos en VHDL serán entregados por el profesor. e debe implementar todo el diseño en la tarjeta de CPLD. el programa establecido utili/a los display y los botones de la tarjeta. Condiciones
#l proyecto debe ser entregado como pla/o má7imo el dBa - de eptiembre( en grupos de má7imo ! personas. La cali,caci%n será la siguiente2 83Q c%digo yRo simulaci%n 3Q funcionamiento 63Q sustentaci%n