Sei sulla pagina 1di 13

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/39436660

Diseño de un procesador

Article · January 2007


Source: OAI

CITATIONS READS

0 857

1 author:

Angel Grediaga
University of Alicante
30 PUBLICATIONS   78 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

autonomous sensors for structures View project

All content following this page was uploaded by Angel Grediaga on 28 August 2014.

The user has requested enhancement of the downloaded file.


Proyecto febrero 2008

Ángel Grediaga Olivo

Escuela Politécnica Superior de Alicante


Universidad de Alicante

11 de diciembre de 2007
Tı́tulo The Proyecto febrero 2008
Autores: Ángel Grediaga Olivo, angel.grediaga@ua.es
Este documento ha sido fruto del esfuerzo
de todos sus autores.
Si tiene cualquier notificación que
realizarles póngase en contacto con
ellos en sus respectivas direcciones
electrónicas.
Texto compuesto con TEX (http://www.tug.org) y
LATEX 2ε (http://www.latex-project.org).

2
Proyecto febrero 2008
Diseño de un procesador

1.1. Contexto
El proyecto corresponde a la asignatura de Estructuras de Computadores que pertenece
a la titulación de Ingenierı́a Técnica en Informática de Sistemas. El objetivo general de la
asignatura es que los alumnos adquieran competencia básica en la descripción hardware
de los bloques funcionales de un procesador.
Este trabajo permite a los alumnos aumentar la nota en un punto lineal, para lo cual
deben realizar el proyecto que se propone con todos sus apartados y en el tiempo estable-
cido.

Se recomienda la lectura del capı́tulo 11 del libro (( Diseño de procesadores con VHDL))
y del capı́tulo 1 del libro ((Estructuras de Computadores. Un computador ejemplo:MaNoTaS))

1.2. Descripción del proyecto


El proyecto consiste en el diseño, descripción, y documentación de un procesador cuyas
especificaciones se describirán en la sección 1.3.

De esta forma, el alumno comprenderá los diferentes bloques de un procesador y su


forma de conexión, además le permitirá conocer el VHDL como lenguaje de descripción
hardware y por lo tanto acercarse al diseño de cualquier tipo de dispositivo o bloque es-
tructural que sea necesario para el diseño de procesadores.

La metodologı́a de diseño que se recomienda es la top-down, es decir, partiendo de


bloques grandes bloques descomponer el problema en bloques más pequeños, los cuales
son más fáciles de describir.

3
1.3. Especificaciones
El proyecto consiste en diseñar un procesador capaz de realizar las siguientes instruc-
ciones

Tabla 1.1: Código de las instrucciones


Código de Operación Instrucción
70 Load dir
71 Store dir
45 Add R1
46 Mov R0

dir es la posición de memoria expresada en forma hexadecimal, se debe tener presente


que la Unidad de Control realiza siempre el ciclo de instrucción que se muestra en la
figura 1.1

Figura 1.1: Fases de ejecución de una instrucción

La descripción de las instrucciones es la siguiente:

4
1. Load dir . Carga en el registro R1 el dato contenido en la dirección dir.

R1 ← M (dir)
Esta instrucción se almacena en la memoria ocupando tres bytes de acuerdo a la
siguiente ocupación, primero estará el CO (código de operación), segundo el byte
bajo de la dir y tercero el byte alto de la dir, por ejemplo, si en la posición 1000H
es dónde está la instrucción Load 5000H , en la memoria se colocará de la siguiente
manera:
1000H 70
1001H 00
1002H 50

2. Store dir . Almacena el contenido del registro R1 en la posición de memoria dada


por dir.

M (dir) ← R1
Esta instrucción se almacena en la memoria ocupando tres bytes de acuerdo a la
siguiente ocupación, primero estará el CO (código de operación), segundo el byte
bajo de la dir y tercero el byte alto de la dir, por ejemplo, si en la posición 1000H es
dónde está la instrucción Store 9000H , en la memoria se colocará de la siguiente
manera:
1000H 71
1001H 00
1002H 90

3. Add R1. Guarda en R1 el resultado de sumar R0 y R1

R1 ← R0 + R1

Esta instrucción se almacena en la memoria ocupando un byte, es decir, dispone


de direccionamiento implı́cito y el própio código de operación indica los operandos
con los que hay que trabajar, por ejemplo, si en la posición 1000H es dónde está la
instrucción Addd R1 , en la memoria se colocará de la siguiente manera:
1000H 45

4. Mov R0. Mueve el contenido del registro R1 a R0

R0 ← R1

Esta instrucción se almacena en la memoria ocupando un byte, es decir, dispone


de direccionamiento implı́cito y el própio código de operación indica los operandos
con los que hay que trabajar, por ejemplo, si en la posición 1000H es dónde está la
instrucción Mov R0 , en la memoria se colocará de la siguiente manera:
1000H 46

5
Si hay que ejecutar un programa, se debe guardar en la memoria empezando en la posición
0000H, por ejemplo, si el programa es:
Load 3500H
Mov R0
Load 3501H
Add R1
Store 3502H
Este programa escrito en ensamblador, en la memoria del procesador, se guardará como
indica la figura 1.2. La posición 3502H tendrá el resultado que corresponda después de
la ejecución del programa.

0000H 70H
0001H 00H
0002H 35H
0003H 46H
0004H 70H
0005H 01H
0006H 35H
0007H 45H
0008H 71H
0009H 02H
000AH 35H

3500H 33H
3501H 44H
3502H

Figura 1.2: Contenido de la memoria

1.4. Ruta de datos


La ruta de datos debe ser capaz de realizar las instrucciones de la tabla 1.1, la primera
aproximación a su diseño es la figura 1.3, en que se muestra una entidad que posee
como entradas todas las señales de control de la tabla 1.4 y como salidas, el bus de
datos (BusDatos), código de operación (CO), flag Z (FZ ) y la dirección que permite
leer y escribir en memoria (dir ).La figura 1.4 muestra con más detalle la ruta de datos
propuesta.
Las operaciones que realiza la ALU son las que se indican en la tabla 1.2

6
clear clk
Lpc
Ipc
SelDir
inicia
cs
oe
we
Ruta
LH
de
LL
datos
Lri
SelRegW
wr
RA
SelRegRA
RB
SelRegRB BusDatos
ope FZ
SalAlu CO
dir

Figura 1.3: Ruta de datos

entradaPC

clk
Lpc PC Ipc
Clear
salida
16
0 dir
16

1
16

LH LL
H L
clk
clear Seldir

8 BusDatos
8

8 8
clk

entDat Lri
wr
clk RI
clear
RA
8
SelRegW BR 3 SelRegRA
3 8x8 CO
RB
3 SelRegRB
SalB SalA

ope ALU
FZ

SalAlu

Figura 1.4: Ruta de datos detallada

7
Tabla 1.2: Operaciones que realiza la ALU
ope Operación
000 Transparente a A
001 Transparente a B
010 A and B
011 NOT A
100 A-1
101 A+B
110 A-B
111 A+1

1.5. Memoria
Se desea implementar una memoria de 64Kx8 cuyas señales de funcionamiento son las
que se indican en la tabla 1.3

Tabla 1.3: Señales de control de la RAM


Señal Función
cs
¯ habilitación de la memoria
oe
¯ Lee, si la memoria está habilitada
we Escribe, si la memoria está habilitada
inicia Carga en la memoria el programa a ejecutar

inicia

CS

OE
16 Memoria
dir
64Kx8
WE

datos

Figura 1.5: Memoria de 64Kx8

Para que resulte más sencillo realizar el proyecto, a continuación se describe el bloque
de la memoria, en la cual se incluye el programa ejemplo, que hay que comprobar y que
se carga en la memoria cuando se activa la señal inicia.

8
Memoria RAM (del proyecto)
l i b r a r y IEEE ;
use IEEE . STD LOGIC 1164 . ALL ;
use IEEE . STD LOGIC ARITH . ALL ;
use IEEE . STD LOGIC UNSIGNED . ALL ;
e n t i t y Memoria RAM i s
g e n e r i c (N : i n t e g e r : = 8 ; n d i r : i n t e g e r : = 1 6 ) ;
Port ( e n t r a d a : i n s t d l o g i c v e c t o r (N−1 downto 0 ) ;
we : in s t d l o g i c ;
cs : in s t d l o g i c ;
oe : in s t d l o g i c ;
inicia : in s t d l o g i c ;
dir : i n s t d l o g i c v e c t o r ( n d i r −1 downto 0 ) ;
salida : INout s t d l o g i c v e c t o r (N−1 downto 0 ) ) ;
end Memoria RAM ;

a r c h i t e c t u r e Comportamiento o f Memoria RAM i s

SUBTYPE r e g i s t r o i s s t d l o g i c v e c t o r (N−1 downto 0 ) ;


TYPE banco i s a r r a y ( 0 to ( 2 ∗ ∗ n d i r ) −1) o f r e g i s t r o ;
s i g n a l c o n t e n i d o : banco ;

begin
e s c r i t u r a : p r o c e s s ( i n i c i a , cs , we , d i r , e n t r a d a )
begin
i f i n i c i a = ’ 1 ’ then
c o n t e n i d o ( 0 ) <= x ” 70 ” ;
c o n t e n i d o ( 1 ) <= x ” 00 ” ;
c o n t e n i d o ( 2 ) <= x ” 35 ” ;
c o n t e n i d o ( 3 ) <= x ” 46 ” ;
c o n t e n i d o ( 4 ) <= x ” 70 ” ;
c o n t e n i d o ( 5 ) <= x ” 01 ” ;
c o n t e n i d o ( 6 ) <= x ” 35 ” ;
c o n t e n i d o ( 7 ) <= x ” 45 ” ;
c o n t e n i d o ( 8 ) <= x ” 71 ” ;
c o n t e n i d o ( 9 ) <= x ” 02 ” ;
c o n t e n i d o ( 1 0 ) <= x ” 35 ” ;
c o n t e n i d o ( 1 1 ) <= x ”FF” ;
c o n t e n i d o ( 3 5 0 0 ) <= x ” 33 ” ;
c o n t e n i d o ( 3 5 0 1 ) <= x ” 44 ” ;
c o n t e n i d o ( 3 5 0 2 ) <= x ” 99 ” ;
e l s i f ( c s= ’ 0 ’ and we = ’ 1 ’ ) then
c o n t e n i d o ( c o n v i n t e g e r ( d i r ) ) <= s a l i d a ;
end i f ;
end p r o c e s s ;

9
Memoria RAM (del proyecto)...
l e c t u r a : p r o c e s s ( oe , cs , d i r )
begin
i f ( oe = ’ 0 ’ and c s = ’0 ’) then
s a l i d a <= c o n t e n i d o ( c o n v i n t e g e r ( d i r ) ) ;
else
s a l i d a <=(o t h e r s =>’Z ’ ) ;
end i f ;
end p r o c e s s ;
end Comportamiento ;

1.6. Unidad de Control


El proyecto consiste en realizar la Unidad de Control que gobierne la ruta de datos de
la figura ??. Las señales que debe generar la UC se describen en la tabla 1.4

rst clk clear


Lpc
Ipc
SelDir
inicia
cs
oe
Unidad we
de LH
Control LL
Lri
SelRegW
wr
RA
SelRegRA
RB
SelRegRB
ope
SalAlu
FZ
CO

Figura 1.6: Unidad de control

Para diseñar la Unidad de Control se debe tener en cuenta la figura 1.1 y que debemos
diseñar una máquina de estado que responda a la figura 1.6 La unidad de control debe
realizar los siguientes pasos:

1. Se pondrá en marcha cuando se de el pulso de rst

2. En dicho momento se debe activar la señal clear e inicia, de manera que se inicializa
la memoria con el programa que se quiere ejecutar.

3. Se busca el CO y mientras sea uno de la tabla 1.1 se ejecutan las instrucciones.

4. Si el CO es FFH, entonces se detiene la ejecución.

10
Tabla 1.4: Descripción de las señales de control
Señal Función
clk Reloj del sistema
clear Ası́ncrona, coloca todos los registros a 0
Lpc Sı́ncrona, carga el PC con entrada
Ipc Sı́ncrona, incrementa una unidad el contenido del PC
SelDir Selecciona la dir que ataca a la memoria
inicia Ası́ncrona, activa por 1, inicializa la memoria
cs Ası́ncrona, activa por cero, habilita la memoria
oe Ası́ncrona, activa por cero, permite la lectura de memoria
we Ası́ncrona, activa por uno, permite la escritura de memoria
LH Sı́ncrona, carga en la parte alta del regHL lo que haya en el bus de datos
LL Sı́ncrona, carga en la parte baja del regHL lo que haya en el bus de datos
Lri Sı́ncrona, carga el registro RI lo que haya en el bus de datos
SelRegW Indica el registro en el cual se quiere escribir
wr Sı́ncrona con el flanco subida de clk, permite la escritura de acuerdo a SelReg
RA Ası́ncrona, activa por 1, permite la sacar por SalA el registro indicado por SelReRA
SelRegRA Indica el registro que se quiere leer y sacar por la salida SalA
RB Ası́ncrona, activa por 1, permite la sacar por SalB el registro indicado por SelReRB
SelRegRB Indica el registro que se quiere leer y sacar por la salida SalB
ope Indica la operación a realizar por la ALU según la tabla 1.2
SalAlu Ası́ncroniza, coloca en el bus de datos el resultado de la operación
FZ Ası́ncrona, se pone a 1 cuando el resultado de la operación ha sido cero
CO Salida de la ruta de datos hacia la UC, es el código de la instrucción a ejecutar

1.7. Descripción
Para describir completamente el proyecto se recomienda hacerlo de forma estructural
y realizando los siguientes bloques:
Memoria, figura 1.5
Ruta de Datos, figura 1.3 y 1.4
Unidad de Control, figura 1.6
Hay que realizar la descripción estructural de la figura 1.7

1.8. Entregables
La fecha de entrega es: las 0h del dı́a del examen de teorı́a, y se debe entregar
lo siguiente:

11
rst clk

rst clk clear clear clk cs


Lpc Lpc
Ipc Ipc oe
dir 16
SelDir Memoria
SelDir dir
64Kx8
inicia we
cs
inicia
oe
Unidad we
datos
de Ruta
LH LH
Control de 8
LL LL
datos
Lri Lri
SelRegW SelRegW
wr wr
RA RA
SelRegRA SelRegRA
RB RB
SelRegRB SelRegRB BusDatos
ope ope
SalAlu SalAlu
FZ FZ
CO CO
procesador

salida

Figura 1.7: Procesador

1. Proyecto completo realizado con el ISE 8.2. en modo estructural

2. Testbench de todos los componentes y de todo el proyecto

3. Documento explicando el procedimiento de diseño

4. Cálculo aproximado del número de horas dedicadas a la realización del proyecto

12 View publication sta

Potrebbero piacerti anche