Você está na página 1de 25

PROYECTO FINAL

Micro-Procesador

DATOS:
Nombre:
Becerra Guzmn Miguel Alejandro
Cdigo:
212452306
Profesor:
Jorge Ernesto Lpez Arce Delgado
Materia:
Programacin De Sistemas
Reconfigurables

16 DE MAYO DE 2016
UNIVERSIDAD DE GUADALAJARA
Cucei

ndice
1. OBJETIVO ......................................................................................................................................... 2
2. Marco Terico ................................................................................................................................. 3
3. Resumen .......................................................................................................................................... 3
4. Conceptos Bsicos ........................................................................................................................... 4
6. Introduccin .................................................................................................................................... 5
7. Desarrollo ........................................................................................................................................ 6
7. Resultados....................................................................................................................................... 9
7.1 Memoria ROM .............................................................................................................................. 9
7.2 Memoria RAM ............................................................................................................................ 13
7.3 Banco de Registros ..................................................................................................................... 16
7.4 A.L.U ........................................................................................................................................... 20
8. Co-Relacin de las Partes .............................................................................................................. 22
9. Conclusiones.................................................................................................................................. 24
10. Referencias .................................................................................................................................. 24

1. OBJETIVO

El alumno conocer la estructura del decodificador de


instrucciones, utilizando estructuras condicionales de lgica
combinaciones, if.., case.
Se desea un proyecto final que consiste en poder integrar
tres elementos especiales, banco de registros, ALU y una
memoria.con seal de control enable obtener un valor de
salida de 32 bits, habilitada por una seal clk

2. Marco Terico
Qu es un Micro-Procesador?
En esta seccin hablare sobre el
microprocesador y su funcionamiento en
una computadora. Tambin hablare de
como este dispositivo ha ido
evolucionando y permitiendo aligerar ms
y ms los procesos que realizamos a diario
en una computadora.
Los microprocesadores han sido uno de los logros ms importantes del siglo xx y
con el pasar de los aos han ido mejorando de manera tal que han cambiado la
forma de vivir de hombres, nios y mujeres que utilizan una computadora,
telfono celular o algn dispositivo informativo.

3. Resumen
Este reporte habla sobre , como cree la lgica un microprocesador, el anlisis de
su funcionamiento y la manera en la que lo hice; as como tambin, la aclaracin
de ciertas dudas con respecto a sus fases, instanciamientos y dems formas del
proyecto.

4. Conceptos Bsicos

CIRCUITOS INTEGRADOS
REGISTROS
RAM
ROM
FLIP-FLOPS
A.L.U

5. Palabras Clave

IDE:

Es una aplicacin informtica que proporciona servicios integrales para


facilitarle al desarrollador o programador el desarrollo de software.

Flanco de Subida:

Se denomina flanco de subida a la transicin del nivel bajo al alto


Al pasar la seal A de bajo a alto, tras el retardo, t1, propio por la puerta NO, su
salida, B, conmutar a bajo. Pero durante dicho retardo, ambas entradas de la
puerta NO Y quedan a alto, lo que har que, transcurrido su tiempo de retardo,
t2, su salida proporcione un impulso negativo de duracin t1. De este modo se
indica que en la entrada A se ha producido un flanco de subida.
Bits ms y menos significativos:
Un conjunto o grupo de bits, como por ejemplo un byte, representa un conjunto de
elementos ordenados. Se llama bit ms significativo (MSB) al bit que tiene un mayor peso
(mayor valor) dentro del conjunto, anlogamente, se llama bit menos significativo (LSB) al
bit que tiene un menor peso dentro del conjunto.

6. Introduccin

En la actualidad, los entornos de programacin son muy importantes, en esta


materia, lo que se realiz a lo largo del semestre fue programacin de
Hardware, as como tambin, el diseo de diferentes circuitos elctricos
basados en diferentes tipos de abstraccin, pero qu plataforma, o lenguaje
usamos a lo largo del semestre?

Usamos VIVADO, empleando Verilog


que es un lenguaje de descripcin de
hardware (HDL, del Ingls Hardware
Description Language) usado para
modelar sistemas electrnicos.
El lenguaje tiene un preprocesador
como C, y la mayora de palabras
reservadas de control como "if", "while",case, etc., son similares. El
mecanismo de formateo en las rutinas de impresin y en los operadores del
lenguaje (y su precedencia) son tambin similares

Las dificultades que se presentan al momento de emplear esta plataforma de


desarrollo fueron mnimas, debido a nuestro basto conocimiento previo en la
programacin, de manera contraria, puede llegar a ser complicado tomar esta
HDL como punto de partida para desarrollar Hardware, pero bastante completo,
en el sentido de las herramientas que puedes usar, inclusive simular tu circuito
una vez hecho.

Extras que hacen de esta plataforma de trabajo, una herramienta de trabajo


muy completa y altamente recomendada.

7. Desarrollo
Descripcin del Proyecto

Nuestro procesador, es un conjunto de instancias, lo que hace en general, es


recibir una direccin dada en 32 bits, y los descompone en diferentes
direcciones, como, dos datos (de 8 bits cada uno), una direccin de
almacenamiento (de 12 bits), la operacin que se realizara (4 bits), en total
suman 32 bits de entrada, que darn un resultado de 32 bits de salida, todo esto
en base de un cdigo binario dado al inicio
Consta de 4 partes primordiales, una memoria RAM, una memoria ROM, una
A.L.U (Unidad Aritmtico Lgica) y un Banco de Registros, cada de uno de ellos
est conectado de manera que es primordial uno del otro.
Pero comenzaremos a desarrollar sus partes y funcionamiento dentro del
proyecto de cada uno de los componentes:

Memoria RAM:

DEFINICION Y FUNCIONALIDAD:
La memoria RAM lo que hace es almacenar temporalmente los programas que
se estn ejecutando y los datos que se estn usando. Este tipo de memoria es
muy rpida de acceder/leer por ende se utiliza para estos fines y no
directamente el disco duro.

USO EN NUESTRO PROYECTO:


La funcin de la memoria RAM, era almacenar los datos de manera que, se
mantena guardada en una posicin, dada desde la ROM, y almacenaba la el
resultado dado, en base de las operaciones e instrucciones dadas en la
direccin.

Memoria ROM
DEFINICION Y FUNCIONALIDAD:
La memoria ROM, (read-only memory) o memoria de slo lectura, es la
memoria que se utiliza para almacenar los programas que ponen en marcha el
ordenador y realizan los diagnsticos. La mayora de los ordenadores tienen una
cantidad pequea de memoria ROM (algunos miles de bytes).

USO EN NUESTRO PROYECTO:


Como lo dice en la definicin, contiene los datos que inicializan el sistema que
creamos, en pocas palabras almacena el contenido de donde, como y que se
har con el dato, anidados en diferentes espacios de memoria.

Banco de Registros

DEFINICION Y FUNCIONALIDAD:
Es una coleccin de registros con un puerto de entrada y uno o ms puertos de
salida. La seal de escritura de direccin, Direccin, especfica donde guardar
el dato, y la seal de direccin de lectura, indica de donde se leer el dato.
USO EN NUESTRO PROYECTO:
El banco de registros, tomara el dato de lectura de la ROM, y tomara los
primeros 16 bits, y los dividir en dos, para despus poder leer esos dos datos, y
asignarle la salida a los datos en la direccin de entrada.

A.L.U

DEFINICION Y FUNCIONALIDAD:
En computacin, la unidad aritmtica lgica o unidad aritmtico-lgica,
tambin conocida como ALU es un circuito digital que calcula operaciones
aritmticas (como suma, resta, multiplicacin, etc.) y operaciones lgicas (si, y,
o, no), entre valores (generalmente uno o dos) de los argumentos.
USO EN NUESTRO PROYECTO:
Lo que la A.L.U hace en nuestro proyecto, es toma los bits del 0 al 3, y buscar la
operacin bajo ese cdigo binario, y lo lleva a la salida, que despus ira a la
entrada de la RAM.

7. Resultados
Nota: Se describir el proyecto en general mediante la explicacin de cada uno de sus
componentes, para despus explicar el instanciamiento e integracin de todos los componentes en
s.

7.1 Memoria ROM


Tal como lo describimos en la descripcin de esta, la memoria ROM contiene los
datos que harn que el sistema se inicialic, e otras palabras, es lo que echa a
andar nuestro proyecto, sin ella, no tendramos datos de entrada de ningn
tipo, por lo tanto no habra bits que tomar, y la simulacin fallara.

Este mdulo contendr lo que se har con todos los dems mdulos, por eso es
de suma importancia llenarlo de manera que los datos coincidan con los de los
dems mdulos, de lo contrario, veras datos de alta impedancia en la
simulacin.

La memoria ROM estar llena con 16 instrucciones, que fueron previamente


cargadas por el programador, cada instruccin tiene 32 bits de longitud, las
cuales se mostraran en la siguiente tabla:

Ubicacin
Binaria en la
ROM
4'b0000
4'b0001
4'b0010
4'b0011
4'b0100
4'b0101
4'b0110
4'b0111
4'b1000
4'b1001
4'b1010
4'b1011
4'b1100
4'b1101
4'b1110
4'b1111
default

Ubicacin
Decimal en la
ROM
1ra posicin
2da posicin
3ra posicin
4ta posicin
5ta posicin
6ta posicin
7ma posicin
8va posicin
9na posicin
10 posicin
11va posicin
12va posicin
13va posicin
14va posicin
15va posicin
16 va posicin
17va posicin

Dato Escrito en la Ubicacin

32'b00000001000000000000000000000000
32'b01000101001001110000000000010001
32'b10001000001010110000000000100010
32'b11000001111011110000000000110011
32'b11111110110111000000000001000100
32'b10000101010100110000000001010101
32'b11001001000000100000000001100110
32'b01101101111111000000000001110111
32'b10000001101100100000000000101000
32'b00001100011111000000000000011001
32'b00110010011101100000000010101010
32'b01000000010000000000000010110000
32'b01010101100111100000000011000101
32'b01101011000010010000000011011001
32'b00011111001001010000000011100010
32'b10001111010110100000000001011001
32'b0110110111111100000000000111011

El dato escrito contiene as instrucciones de lo que se har, y en donde se


almacenar, a continuacin te presento la distribucin de bits, tomando como
ejempl el dato en la sexta posicin:

32'b10000101 01010011 000000000101 0101

Los 8 bits ms
significativos,
sern los
correspondientes
al dato no. 1

Los siguientes 8
bits, sern
asignados al dato
no. 2

Los 12 bits
aledaos, sern
para la direccin
de
almacenamiento

10000101

01010011

000000000101

Los 4 bits menos


significativos,
sern el cdigo
de operacin que
se efectuara con
el dato 1 y 2.
0101

Composicin de la Memoria ROM

La memoria ROM est compuesta por 3 entradas:

en_ROM
Lectura
Clk
En_ROM:
Cuando esta entrada esta activa, se puede leer el dato que est dentro de la
ROM, en caso contrario, el dato no podr ser ledo, y te dar una X en la
simulacin.
Lectura:
Esta entrada es la que elige el dato escrito, esta entrada debe de ser de 4 bits
(3:0) para que elija una ubicacin dentro de las 16 que estn en la ROM, de no
ser ninguna de las 16 disponibles, pasara al default.
Clk:
Es la entrada por medio de un pulso de reloj, cuando esta entrada tenga un
flanco de subida (posedge) y en_ROM este activa, se podr leer el dato que se
requiere.

Y solo tiene una salida:


Salida
Salida:
Lo que recibe esta salida, es el dato seleccionado, por lo tanto debe de tener el
mismo ancho de palabra que los datos dentro.

Codigo de la memoria ROM

7.2 Memoria RAM

La memoria RAM, a diferencia de la ROM, puede ser modificada y leda cuantas


veces sea necesaria, hacindola voltil, de esta manera, podemos escribir en
ella mediante nuestro proyecto trabaja, esto quiere decir que recibir un dato, y
la direccin donde se guardara, y durante la simulacin, se guardaran mientras
haya un flanco de subida en su entrada clk, o de reloj.
Tambin, esta memoria escribir o leer dependiendo de lo que tenga en la
entrada Lec_Esc, si contiene un 0, leer lo que este en ella, o mostrara, de lo
contrario (que tenga un 1) esta escribir los datos que recibe.
Este mdulo contendr los datos que fueron procesados al final de la simulacin
y los mostrara.

Composicin de la Memoria RAM

La memoria RAM, se compone de 4 entradas:

Dato_Entrada
Direccion
Clk
Lec_Esc

Dato_Entrada:
Esta entrada tomara el dato del resultado entre el dato uno y dos, dados por la
ROM.
Direccin:
Aqu tomara los 12 dgitos que vimos en la ROM, y el dato de entrada lo pondr
dentro de la direccin que tiene como entrada
Clk:
Entrada de reloj universal
Lec_Esc:
Solo es de 1 bit, definir si la memoria escribe los valores con respecto a los
datos de entrada, o solamente lee los valores que estn almacenados en ese
momento.

La memoria RAM, consta de 1 salida:


Salida
Salida:
Esta salida mostrara el resultado, de todos sus registros almacenados, una vez
terminada la escritura.

Cdigo de la RAM

7.3 Banco de Registros


En el banco de registros tendremos almacenados de manera precargada, los datos que estarn
operando durante las operaciones del proyecto, y debe de ser de suma importancia que estos
coincidan con los de la ROM, de lo contrario, tendrs problemas en la simulacin, ya que no sabr
que hacer con que, y donde guardarlo.
La estructura del Banco de Registros, se dividir en dos, dato1 y dato2, por lo tanto sern dos
cases los que tendrn accin en este mdulo.
A diferencia de los dems mdulos, este no cuenta con una entrada de reloj, ya no solo leern, y
resulta intil ponerle un clk, debido a que solo se realiza una accin, sin ninguna secuencia dentro
de s.
Los datos almacenados en el banco de registros son los siguientes:

Ubicacin Binaria
00000001
01000101
10001000
11000001
11111110
10000101
11001001
01101101
10000001
00001100
00110010
01000000
01010101
01101011
00011111
10001111
default

Dato 1
Valor Binario
00000000000000000000000000001010
00000000000000000000000000010100
00000000000000000000000000011110
00000000000000000000000000101000
00000000000000000000000000110010
00000000000000000000000000111100
00000000000000000000000001000110
00000000000000000000000001010000
00000000000000000000000001011010
00000000000000000000000001100100
00000000000000000000000001101110
00000000000000000000000001111000
00000000000000000000000010000010
00000000000000000000000010001100
00000000000000000000000010010110
00000000000000000000000010100000
00000000000000000000000000000001

Valor Decimal
10
20
30
40
50
60
70
80
90
100
110
120
130
140
150
160
1

Ubicacin Binaria
00000000
00100111
00101011
11101111
11011100
01010011
00000010
11111100
10110010
01111100
01110110
01000000
10011110
00001001
00100101
01011010
default

Dato 2
Valor Binario
0000000000000000000000000000101
0000000000000000000000000001010
0000000000000000000000000001111
0000000000000000000000000010100
0000000000000000000000000011001
0000000000000000000000000011110
0000000000000000000000000100011
0000000000000000000000000101000
0000000000000000000000000101101
0000000000000000000000000110010
0000000000000000000000000110111
0000000000000000000000000111100
0000000000000000000000001000001
0000000000000000000000001000110
0000000000000000000000001001011
0000000000000000000000001010000
0000000000000000000000000000001

Valor Decimal
5
10
15
20
25
30
35
40
45
50
55
60
65
70
75
80
1

Composicin del Banco de Registros

El Banco de Registros se compone de dos entradas:

Lectura1
Lectura2

Lectura1:
Esta entrada se encargara de leer los 8 primeros bits mas significativos, y los relacionara con los
datos dentro de los cases del dato1.
Lectura2:
Esta entrada se encargara de leer los 8 bits despus de la 1ra lectura, y los relacionara con los
datos dentro de los cases del dato2.
Una vez encontrados los dos datos, los mandara a las salidas correspondientes:

Dato1
Dato2

Estas salidas almacenan los dos datos correspondientes a los seleccionados desde la ROM.

Cdigo del Banco de Registros

Ilustracin PARTE 1

Ilustracin PARTE 2

7.4 A.L.U
Nuestra A.L.U se compone de dos partes, un Multiplexor, y un bloque de
operaciones, que bajo un cdigo dado, har la operacin que escribi en los 4
bits menos significativos de nuestra ROM, haciendo la operacin con los datos1
y dato2.
Como recordamos, el multiplexor har la funcin de depurador, para solo
mandar a la salida un dato, de 32 bits, que ira a la RAM, a ser almacenado.
Las operaciones en la A.L.U, se encuentran en un mdulo llamado OP, que
contiene las siguientes operaciones:

Modulo Operaciones
Cdigo de Operacin
Operacin a Realizar
0000
A&B
0001
A|B
0010
~(A|B)
0011
~(A&B)
0100
A^B
0110
~(A^B)
0101
A+B
0111
A-B
1000
A*B
1001
A/B

Composicin de A.L.U

Nuestra A.L.U est compuesta por un total de 2 entradas:

A
B

A y B harn el papel del dato1, y del dato2, y lo que realizaran ser la operacin dada en la
instruccin de la ROM
Las 9 salidas de la A.L.U, son los resultados que nos podra dar, pero estas nueve pasan por el
multiplexor, que hace que solo 1 sea la salida, la que coincida con el cdigo de entrada.

Cdigo de la A.L.U

8. Co-Relacin de las Partes


Como haba dicho al inicio, hare la explicacin de cmo funciona nuestro proyecto final,
Primero nos basaremos en este diagrama para poder seguir el camino de una instruccin,
dicha instruccin ser la siguiente

32'b10000101 01010011 000000000101 0110

Lo primero que pasa, es que los 8 bits del final, los usara para el primer dato, los
siguientes sern para el dato 2, si relacionamos o buscamos ese nmero en
nuestro banco de registros, veremos que el dato1 con el numero 10000101 es el
nmero 6, que tiene asignado el valor de 70 (memoriza eso), y despus, vemos
que el dato2, tiene el serial 01010011, buscamos ese valor en el case del dato2,
y lo que tenemos en que tiene asignada la cantidad de 35 (memoriza esto
tambin), y se guardara en la ubicacin 000000000101, pero que hara con un
70 y un 35?, para eso vemos los primeros 4 digitos, que son 0110, vamos a
nuestra A.L.U, y vemos que la operacin con el cdigo 0110es la suma de A+B,
teniendo en cuenta que A=70 y B=35, A+B=105, veamos si en la simulacin lo
guarda en el lugar 6, y con un resultado de 105

Ilustracin 1 MAGIA!!

Como podemos ver, todo sali de la manera esperada, la suma de 70+35,


efectivamente es un 105, y lo guardo en el lugar deseado.
Mis principales problemas, fueron la distribucin de los bits, y que no acomode
las direcciones, pens que tena que llenar los bancos y las memorias con datos
diferentes, caso que me ocasiono problemas, pero al final se finiquitaron.
Con esto concluye, lo que para m fue algo increble, que no cre llegar a hacer
cuando tuve mi primer da de clases, profe si est leyendo esto, gracias por
ensearme a hacer esto.

9. Conclusiones

La programacin de harware puede ser tediosa, pero siempre resulta mas visible, y con
mas provecho, dado que programas fsico, para mi fue algo mas fcil de comprender, que
programacin de software.

Para tener los resultados deseados en la simulacin, recomiendo mucho usar el


esquemtico, ya que te ayuda a ver las conexiones fallidas, y bits faltantes o sobrantes en
proyectos con diferentes asignaciones.

10. Referencias

http://arantxa.ii.uam.es/~jgonzale/fco/curso07-08/download/seminarios-vhdl.pdf

https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-28%3AMemoria-RAM

https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Verilog/Introducci%C3%B3n

Você também pode gostar