Sunteți pe pagina 1din 6

Universidad Distrital, Facultad Tecnolgica

Tecnologa en Electricidad- Tecnologa en Electrnica


Circuitos Digitales
Profesor: Fernando Martnez Santa- Edwar Jacinto Gmez- Holman
Montiel Ariza
Proyecto Final
Procesador Bsico en PLD
Objetivo
Disear en VHDL e Implementar por medio de un CPLD un procesador bsico de
cuatro bits y ejecutar un programa de prueba que corrobore su funcionamiento.
Descripcin
Se debe implementar por medio de VHDL un procesador de acumulador de 4 bits
con arquitectura Harvard. Este est conformado por una unidad aritmtica lgica
ALU, un selector de palabra de 4 bits MUX, por un contador de programa PC, un
registro de instruccin IR, un registro acumulador ACC, una memoria de datos, una
memoria de programa y una unidad de control. El diagrama de bloques del circuito
se muestra en la figura 1.
La ALU es de 4 bits y posee una entrada de seleccin de 3 bits. Si se nombra a la
entrada de la izquierda A y B a la de la derecha, la tabla de funciones de la ALU es
la siguiente:
Seleccin
0
1
2
3
4
5
6
7

Salida
A+B
A-B
A and B
A or B
A xor B
not B
A
No importa

Tabla 1. Funciones de la ALU de cuatro bits


La ALU debe tiene una salida C (carry) para el acarreo de cada operacin y una
salida Z (zero) para indicar cuando un operacin da como resultado todos los bits en
cero.
El contador de programa PC debe ser un contador de 8 bits, debe poseer entradas
de reloj y de reset asncrono, una entrada de incremento que indique cuando se le
suma uno al contador, una entrada de suma y una de resta para sumar o restar un
valor constante el cual corresponde a una entrada de 4 bits.
El registro de instruccin IR es un registro de 8 bits, tiene entradas de reloj y de
reset asncrono, una entrada de carga, una entrada de 8 bits y dos salidas de 4 bits
cada una que separan los 4 bits menos significativos (parte baja) de los 4 bits ms
significativos (parte alta) del dato almacenado de 8 bits.

El selector de palabra debe seleccionar entre la salida de la ALU y la salida de la


parte baja del registro de instruccin IR, por medio de una entrada de seleccin.

4
4

3
AL
U

Memoria de
datos

4
4

MUX

16 x 4

Z C
ACC

4
Z

C
IR

4
Unidad de Control

8
Memoria de

programa
PC

256 x 8

Figura 1. Diagrama de bloque del procesador.


El registro de acumulador ACC es un registro de 6 bits, tiene entradas de reloj y de
reset asncrono, una entrada de carga, una entrada de 4 bits para el resultado de la
ALU y dos de 1 bit para Z y C de la ALU respectivamente. A su vez se tienen las
mismas salidas para el resultado, Z y C. Finalmente se tiene una entrada llamada
reset_flags para poner en cero nicamente los bits de Z y C.
La memoria de datos es un banco de 16 registros de 4 bits cada uno, este banco de
registros debe tener

una entrada de reloj, una entrada de datos de 4 bits, una salida de datos de 4 bits,
una entrada de direccin de cuatro bits y una entrada de habilitacin de escritura
WE (write enable). Los registros del 0 al 7 son registros internos, los del 8 al 11
funcionan como puertos de salida y los del 12 al 1 5 funcionan como puertos de
entrada. Para esto ltimo se requieren cuatro salidas de 4 bits y cuatro entradas de
4 bits para los puertos de salida y de entrada respectivamente (no se muestran en
la figura 1 para simplicidad del esquemtico).
La memoria de programa es de tipo ROM de 256 posiciones de 8 bits cada una y
tiene los valores correspondientes a las instrucciones que el procesador debe
ejecutar, estas instrucciones estn programadas directamente en la descripcin en
VHDL de la memoria. Esta tiene una entrada de direcciones de 8 bits y una salida
de datos de 8bits. este bloque es totalmente asncrono.
La unidad de control es una maquina de estados finitos, que est encargada de
realizar cada uno de los pasos necesarios (micro-instrucciones) para que se
ejecuten las instrucciones programadas, esta debe realizar internamente una
decodificacin de las instrucciones. Este bloque tiene entradas de reloj, de reset, de
Z, de C y la entrada de instruccin de 4 bits que corresponde a la parte alta del IR.
Adems tienen salidas para: las seales de carga de ACC e IR, las seales de
incremento, suma y resta del PC, la seal de reset_flags del ACC, la seal de WE de
la memoria de datos y la seal de seleccin del selector de palabra (ninguna de
estas seales se muestra en el esquemtico de la figura 1).
Juego de instrucciones
El procesador posee un set de 13 instrucciones, 2 aritmticas, 4 lgicas, 3 de
transferencia de memoria, 2 saltos incondicionales y 2 saltos condicionales. las
instrucciones son las siguientes:

Instruccin
ADD Address

Funcin
ACC = DataMem[Address] +
ACC

SUB

ACC = DataMem[Address] ACC

Address

AND Address

ACC = DataMem[Address]
and ACC

OR

ACC = DataMem[Address]
or ACC

Address

Descripcin
Suma el acumulador mas la
posicin de memoria de datos
indicada por Address y carga el
resultado en el acumulador.
Resta el valor del acumulador a la
posicin de memoria de datos
indicada por Address y carga el
resultado en el acumulador.
Hace la operacin AND bit a bit
entre el acumulador y la posicin de
memoria de datos indicada por
Address. Carga el resultado en el
acumulador.
Hace la operacin OR bit a bit entre
el acumulador y la posicin de
memoria de datos indicada por

XOR Address

ACC = DataMem[Address]
xor ACC

NOT

ACC =not ACC

LOAD
Address

ACC = DataMem[Address]

STORE
Address

DataMem[Address] = ACC

LOADK
Constant
GOUP
Jump

ACC = Constant

GODW

PC = PC + Jump

Jump

PC = PC - Jump

JIC
Jump

Si ( carry = 1) entonces
PC = PC + Jump

JIZ
Jump

Si ( zero = 1) entonces
PC = PC + Jump

Address. Carga el resultado en el


acumulador.
Hace la operacin XOR bit a bit
entre el acumulador y la posicin de
memoria de datos indicada por
Address. Carga el resultado en el
acumulador.
Niega el valor del acumulador bit a
bit y carga el resultado en l
mismo.
Carga el acumulador con el valor
contenido en la posicin de
memoria de datos indicada por
Address.
Carga la posicin de memoria de
datos indicada por Address con el
valor del acumulador.
Carga el acumulador con el valor
Constant.
Salta hacia arriba en el programa,
restndole el valor jump al contador
de programa.
Salta hacia abajo en el programa,
sumndole el valor jump al
contador de programa.
Salta hacia abajo en el programa,
sumndole el valor jump al
contador de programa siempre y
cuando el bit de carry sea 1.
Salta hacia abajo en el programa,
sumndole el valor jump al
contador de programa siempre y
cuando el bit de zero sea 1.

Tabla 2. Juego de instrucciones del procesador.


La codificacin de todas las instrucciones es de 8 bits y consta de 4 bits de cdigo
de operacin y 4 bits de operando. Los bits ms significativos son el cdigo de
operacin y los bits menos significativos hacen referencia al operando. La siguiente
tabla muestra la codificacin de cada instruccin.
Instruccin
ADD Address
SUB Address
AND Address
OR
Address
XOR Address

Cdigo de operacin
(4 MSBs)
0000
0001
0010
0011
0100

Operando (4
LSBs)
A3 A2 A1 A0
A3 A2 A1 A0
A3 A2 A1 A0
A3 A2 A1 A0
A3 A2 A1 A0

NOT
LOAD
Address
STORE
Address
LOADK
Constant
GOUP
Jump
GODW Jump
JIC
Jump
JIZ
Jump

0101
0110

XXXX
A3 A2 A1 A0

1000

A3 A2 A1 A0

1001

K3 K2 K1 K0

1010
1011
1100

J3 J2 J1 J0
J3 J2 J1 J0
J3 J2 J1 J0

1101

J3 J2 J1 J0

Tabla 3. Codificacin de las instrucciones.


Para las instrucciones de la ALU como: ADD, SUB, AND, OR, XOR y LOAD se tiene un
cdigo de operacin especifico para cada una y cuatro bits A3, A2, A1 y A0 que
hacen referencia a una posicin de la memoria de datos, por esta razn la parte
baja del IR (operando) se conecta al bus de direcciones de la memoria de datos. La
instruccin NOT no requiere operando, por lo tanto se ignoran estos cuatro bits.
La instruccin LOADK tiene como operando los bits K3, K2, K1 y K0 que hacen
referencia al dato de 4 bits que se debe cargar al acumulador, por esta razn la
parte baja del IR se conecta tambin a una de las entradas del selector de palabra.
Las instrucciones de salto condicional e incondicional tienen como operando los bits
J3, J2, J1 y J0, que corresponden al valor del salto que se va a hacer (el valor que se
le suma o resta al PC) por este motivo la parte baja del IR se conecta tambin 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
instruccin. Existen microinstrucciones comunes para todas las instrucciones, y
microinstrucciones especificas para cada instruccin. Las microinstrucciones se
dividen en Bsqueda, Decodificacin y Ejecucin. Las microinstrucciones de
bsqueda y decodificacin son comunes para todas las instrucciones pero la
ejecucin es especfica para cada una.
Las microinstrucciones para la bsqueda son:

incrementar el contador de programa para buscar la siguiente


instruccin
poner en 1 la seal de carga del registro IR

NOTA: el incremento del contador de programa se puede hacer al principio o al final


de cada instruccin, depende del orden que se le d a la mquina de estados

La decodificacin consiste en un estado central de la mquina de estados en donde


se salta a diferentes partes del diagrama de estados dependiendo de la instruccin
a ejecutar.
Para todas las instrucciones de la ALU ( ADD, SUB, AND, OR, XOR NOT y LOAD) la
ejecucin tiene las siguientes microinstrucciones:

poner en 0 la seal de seleccin del selector de palabra


poner en 1 la seal de carga del registro ACC (cargar el resultado)

Esto basta debido a que cuando se hace la bsqueda la parte baja del IR direcciona
la memoria y a la salida de esta se muestra el valor del registro del operando.
Para la instruccin LOADK las microinstrucciones son:

poner en 1 la seal de seleccin del selector de palabra


poner en 1 la seal de carga del registro ACC (cargar el resultado)

Para las instrucciones de salto incondicional (GOUP y GODW) las microinstrucciones


son:

poner en 1 la seal de suma (o de resta) del PC

Para las instrucciones de salto condicional (JIC y JIZ) las microinstrucciones son:

poner en 1 la seal de suma del PC si el bit C (o Z) es 1

Laboratorio
Se debe implementar todos los bloques a excepcin de la memoria de programa y
la memoria de datos, cuyos cdigos en VHDL sern entregados por el profesor. Se
debe implementar todo el diseo en la tarjeta de CPLD. el programa establecido
utiliza los display y los botones de la tarjeta.
Condiciones
El proyecto debe ser entregado como plazo mximo el da 1 de Septiembre, en
grupos de mximo 4 personas. La calificacin ser la siguiente:
50%
30%
20%

cdigo y/o simulacin


funcionamiento
sustentacin

S-ar putea să vă placă și