You are on page 1of 20

UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA

FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES

LABORATORIO Nº2
DISEÑO DE UN PROCESADOR MIPS E IMPLEMENTACION EN FPGA

1. OBJETIVOS
 Comprender la terminología utilizada en el diseño de procesadores: ALU, Memoria
del programa, Banco de registros, Memoria RAM, DataPath, Unidad de control,
Contador del programa etc.
 Comprender la Arquitectura del Set de Instrucciones (ISA) de un procesador.
 Contruir el DataPath y la unidad de control de un procesador a partir de su ISA
 Implementar un procesador básico MIPS de 32 bits con instrucciones lógicas,
aritméticas y de ramificación que permitan hacer programas sencillos
 Diseñar periféricos para el procesador MIPS tales como GPIO, Timers, módulos
PWM, módulos de comunicaciones entre otros.
 Emplear el concepto de periféricos mapeados en memoria para la interconexión de
módulos de tareas específicas.
 Diseñar y ensamblar programas que permitan comprender el funcionamiento del
procesador MIPS diseñado.
 Diseñar programas en lenguaje ensamblador para el procesador MIPS para
aplicaciones prácticas.

2. MATERIALES Y EQUIPOS REQUERIDOS


 Tarjeta de desarrollo DE1 de Terasic Technologies
 Displays, leds, etc
 FPGA Cyclone II EP2C20F484C7
 Computador

3. HERRAMIENTAS DE SOFTWARE REQUERIDO

 Quartus II v13.0 (recomendada) o cualquier versión anterior compatible con su


sistema operativo.
 Modelsim Altera Starter-Edition
 Software para el diseño de diagramas de flujo, esquemáticos, y diagramas de bloques.
Ej. Draw.io

4. DESCRIPCIÓN DEL LABORATORIO

En el desarrollo de esta práctica de laboratorio se tiene como principal objetivo lograr que
el estudiante comprenda los aspectos fundamentales relacionados con el diseño y uso de
procesadores; razón por la cual se plantea el diseño completo del procesador MIPS, el
cual es uno de los procesadores ampliamente utilizado en la industria y en la academia.

Las especificaciones del procesador MIPS pueden encontrarse en diferentes fuentes


Curso de Microprocesadores Escuela de Ingeniería Electrónica.
Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES
bibliográficas. La principal fuente de información recomendada para el desarrollo de esta
práctica de laboratorio es el libro “Computer Organization and Design” escrito por David
Patterson y Jhon Hennesy, el cual presenta de forma detallada los aspectos
fundamentales en el diseño de procesadores RISC, específicamente el procesador MIPS.
Aunque, toda la información sobre el diseño del procesador MIPS se encuentra en dicho
libro, existen leves diferencias o modificaciones realizadas por el docente de la
asignatura. Por tal razón es importante asistir a las clases teóricas ya que en ellas se
profundiza ampliamente sobre el proceso de diseño que debe seguirse.

PARTE I
DISEÑO DE UN PROCESADOR MIPS DE UN SOLO CICLO

En esta práctica de laboratorio se presenta el desarrollo de un procesador MIPS con la


capacidad de ejecutar 12 instrucciones. En la tabla I se presentan las instrucciones y la
micro-operación que realiza cada una de ellas.

Tabla I. Set de instrucciones procesador MIPS Laboratorio.

Para construir un procesador MIPS se requieren diferentes componentes, los cuales


pueden cambiar dependiendo del set de instrucciones que el diseñador haya
seleccionado. Sin embargo, existen algunos módulos los cuales son fundamentales para
el diseño de un MIPS; estos módulos son: El banco de registros, la unidad Lógico
Aritmética (ALU) y la memoria ROM del programa.

Teniendo en cuenta lo anterior realice la descripción en VHDL junto con la simulación


mediante TestBench de cada uno de los módulos ya mencionados con las siguientes
especificaciones.

1. Diseñe mediante lenguaje VHDL el banco de registros del procesador. Este


módulo debe estar compuesto por 32 registros PIPO de 32 bits cada uno. Tenga
presente que el registro 0 es de solo lectura y su valor siempre debe ser 0. Los
demás registros son de lectura escritura. En la figura 1 se presenta la interfaz de
Curso de Microprocesadores Escuela de Ingeniería Electrónica.
Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES
entrada salida de dicho modulo. Este módulo permite la lectura simultánea de dos
registros, los cuales son seleccionados a través de los puertos Read_Register_1 y
Read_register_2. El modulo solo permite la escritura de un registro a la vez.

Figura 1. Interfaz de conexión modulo banco de registros Procesador MIPS.

2. Realice la descripción en lenguaje VHDL de una unidad lógico aritmética que


permita realizar las operaciones mostradas en la tabla II. En la figura 2 se presenta
la interfaz de conexión del ALU a diseñar. Como se observa en dicha figura el ALU
tiene dos salidas; la salida Result es el resultado de la operación por lo tanto es un
dato de 32 bits, mientras que la salida Zero es de un solo bit, la cual es 1 cuando
el resultado de cualquier operación realizada por el ALU es igual a 0, de lo
contrario siempre será 0 dicha salida.

Tabla II. Operaciones realizadas por el ALU del procesador MIPS Laboratorio.

Curso de Microprocesadores Escuela de Ingeniería Electrónica.


Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES

Figura 2. Interfaz de conexión ALU MIPS

3. Realice la descripción en lenguaje VHDL de una memoria ROM y una Memoria


RAM. La memoria ROM es la memoria en la cual se pondrán las instrucciones del
programa que debe ejecutar el procesador, la memoria RAM es la memoria de
datos donde se guardara información temporal durante el procesamiento si es el
caso. La memoria ROM debe ser una memoria de 256X32; mientras que la
memoria RAM debe ser de 1KX32. Las memorias deben ser síncronas tal y como
se observa en la Figura 3.

(a) (b)
Figura 3. Memorias requeridas en el diseño. (a) Memoria ROM del programa. (b) Memoria RAM de datos.

4. El formato de Instrucción I del procesador MIPS requiere extender el signo de un dato de


16 bits a un dato de 32 bits, para realizar las operaciones en el ALU. Describa en VHDL un
módulo que cumpla con este requerimiento. En la Figura 4 se presenta un diagrama
conceptual de dicho modulo.

5. El formato de Instrucción R del procesador MIPS requiere extender un dato de 5 bits a 32


bits sin signo. Esta extensión se requiere única y exclusivamente para las instrucciones de
desplazamiento y rotación que se ejecutan en el ALU. Describa en VHDL un módulo que
cumpla con este requerimiento. En la Figura 5 se presenta un diagrama conceptual de

Curso de Microprocesadores Escuela de Ingeniería Electrónica.


Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES
dicho modulo.

Figura 4. Diagrama conceptual del bloque extensor de Signo 16 a 32.

Figura 5. Diagrama conceptual del bloque extensor 5 a 32.

(b)
(a)

(c) (d)
Figura 6. Módulos de Hardware requeridos. (a) Multiplexor 2 a 1. (b) Multiplexor 4 a 1. (c) Sumador de números
con signo. (d) Registro Contador del Programa.
Curso de Microprocesadores Escuela de Ingeniería Electrónica.
Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES

6. Para que el procesador este en la capacidad de ejecutar todas las instrucciones


planteadas en la tabla I es necesario describir en VHDL multiplexores 2a1 y 4a1,
un sumador de números con signo de 32 bits y un registro PIPO el cual se
denomina PC (program counter) y es el que gobierna la ejecución de los
programas. En la figura 6 se presentan la interfaz de conexión para cada bloque.

7. De acuerdo con la documentación del procesador MIPS el contador del programa


se incrementa cada 4 bytes, ya que una instrucción está compuesta por 32 bits (4
bytes) en caso de tener una memoria organizada en bytes. En el caso particular de
este laboratorio la memoria que se emplea está organizada en Words de 32 bits.
Sin embargo para que se mantenga la misma arquitectura de MIPS se requiere
hacer corrimientos a la Izquierda por HW en las instrucciones de ramificación y
salto. Por lo tanto se debe describir en VHDL un módulo que realice dicho
comportamiento. En la figura 7 se presenta un esquema conceptual del módulo a
implementar.

Figura 7. Implementación en hardware del desplazamiento a la izquierda de 2 posiciones. Equivalente a


multiplicar el dato de entrada por 4.

8. Teniendo en cuenta el set de instrucciones seleccionado en la tabla I y los


módulos de hardware previamente descritos y simulados en VHDL, realice la
interconexión de dichos módulos para construir el DataPath del procesador MIPS.
Construya un archivo VHDL y llámelo Data_path.vhd, haga la instanciación de
cada uno de los módulos de hardware ya descritos empleando descripción
estructural. En la Figura 8 se presenta un diagrama de bloques del DataPath del
procesador MIPS que se empleara en este laboratorio.

NOTA: las memorias ROM y RAM no hacen parte como tal del procesador, son
necesarias para que el procesador funcione pero no hacen parte de la arquitectura del
mismo. Por lo tanto cuando construya eL DataPath en VHDL no incluya aun estos
módulos, lo que debe hacer es crear los puertos de entrada salida para instanciarlos
después en otro archivo de mayor jerarquía. Las líneas de color azul que se muestran en
el diagrama de la figura 8 corresponden a entradas del DataPath las cuales se conectaran
luego a la unidad de control. El bloque con nombre ALU control hace parte de la unidad
de control por lo cual no debe incluirse en el DataPath. Sin embargo, debe ponerse en la
entidad el puerto de conexión que permitirá unir el ALU y el bloque ALUcontrol.

IMPORTANTE: En el DataPath del procesador los únicos módulos que son síncronos
(tienen rst, clk) son el contador del programa y el banco de registros. Los demás módulos
son bloques de lógica combinacional. Asegúrese que ningún bloque está generando
latches ya que si esto ocurre existe alta probabilidad de que el sistema falle.

Curso de Microprocesadores Escuela de Ingeniería Electrónica.


Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES

Curso de Microprocesadores Escuela de Ingeniería Electrónica.


Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES

Shit
Instruction Left 2
1
[25-0]
0
0
+ + 1

branch
Shit
Left 2 Jump
4
Reg_dest shift Reg_Write ALU_src[1-0] Mem Mem
write read Memtoreg
Instruction
[25-21]
Read 0 Read
PC address 1 Register 1 Read
Instruction Data
Data 1
[20-16] Read Zero Memory
Instruction
Register 2
Instruction
0 Registers ALU Read
Write Address 1
[15-11] ALU Data
Instruction 1 Register 0
Memory Result 0
Read 1
Write
Data 2 2 Write
Data
Data
3

Instruction
[15-0] Extender
signo

Instruction
[10-6] Extender 5-
32 bits

Instruction
[5-0] ALU
Control

ALUop[1-0]

Figura 8. DataPath del procesador MIPS Laboratorio.

Curso de Microprocesadores Escuela de Ingeniería Electrónica.


Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES
9. El ControlPath del procesador está compuesto por dos partes, por un lado se
encuentra el control de ALU y por el otro la unidad de control. El control del ALU se
realiza mediante un módulo de hardware denominado ALUcontrol, cuyo
comportamiento está definido en la Tabla III. Las entradas del módulo son: el
opcode y la funciónField provenientes de la instrucción y el Aluop que proviene
de la palabra de control. La salida de dicho modulo corresponde a la operación del
ALU. El comportamiento de la unidad de control está definido en la tabla IV, la
entrada a la unidad de control es el opcode de la instrucción y la salida es la
palabra de control.

Tabla III. Comportamiento del módulo ALUControl de acuerdo con el set de instrucciones seleccionado.

Tabla IV. Comportamiento de la unidad de control de acuerdo con el set de instrucciones seleccionado.

Curso de Microprocesadores Escuela de Ingeniería Electrónica.


Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES

Haga la descripción en VHDL del ControlPath del procesador MIPS teniendo en cuenta
las tablas III y IV. Para esto cree un archivo VHDL y llámelo Control_Unit.vhd. Utilice el
estilo de descripción de su preferencia pero tenga en cuenta que es un circuito
combinacional.

10. Después de tener descritos y simulados en VHDL la ruta de datos y la unidad de


control del procesador MIPS. Construya la CPU uniendo las dos entidades que
fueron diseñadas por separado. Para esto cree un archivo y llámelo
MIPS_CPU.vhd instancie el DataPath y el controlUnit. Hasta aquí se tiene
implementado el núcleo MIPS de 12 instrucciones básicas.

11. Construya un computador sencillo, el cual debe tener como mínimo la memoria
ROM, la Memoria RAM y el procesador MIPS así como un circuito de
administración de señal de reloj. Para garantizar el funcionamiento correcto del
procesador las Memorias RAM y ROM deben conectarse a una señal de reloj de
50MHz y el procesador a una señal de reloj de 10MHz. En la Figura 9 se presenta
un diagrama conceptual del sistema. Para que el sistema funcione correctamente
la conexión del bus de direcciones de la memoria del programa (ROM) y el
procesador debe realizarse de forma especial. Por lo tanto se requiere que asista
a las clases teóricas o acuda a las tutorías con su profesor o monitor de la
asignatura.
Address
Read address
Write Data
MIPS Read Data
Instruction Processor
WR
Instruction
Memory RD Data
Memory

clk_50MHz
50 MHz
clk_10MHz
CLK manager
clk_50MHz

Figura 9. Sistema básico construido con el procesador MIPS para un computador sencillo.

PARTE II
PERIFERICOS MAPEADOS A MEMORIA (GPIO Y TIMERs)

Para darle funcionalidad al sistema basado en procesador propuesto en la figura 9; es


necesario agregar periféricos al sistema. Estos periféricos corresponden a hardware que
realiza tareas específicas dentro del sistema tales como: Temporizaciones,
comunicaciones bajo algún protocolo (R2323, SPI, I2C, USB, Ethernet, etc), interfaces de
entrada salida paralela (GPIO) entre otras. En esta práctica de laboratorio se plantea el
uso de dos periféricos básicos presentes en cualquier sistema basado en procesador.
Estos periféricos son puertos de entrada salida GPIO y Temporizadores (TIMERS). El
procesador MIPS implementado en esta práctica de laboratorio es un procesador de 32
bits, lo que implica que puede realizar operaciones con datos de ese tamaño y a su vez
permite direccionar hasta 4GB de memoria de datos. Sin embargo, en sistemas digitales
tales como los microcontroladores ésta capacidad de direccionamiento no está enfocada
únicamente a almacenamiento; sino que también se utiliza para acceder a periféricos.
Curso de Microprocesadores Escuela de Ingeniería Electrónica.
Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES
En la figura 10 se presenta el esquema de direccionamiento del procesador MIPS
(personalizado para este curso). En esta figura se puede apreciar que la memoria RAM de
1KX32 se encuentra desde la dirección 0x00000000 hasta la dirección 0x000003FF.
Además se observan dos periféricos correspondientes a un Temporizador (direcciones
0x00010000 hasta 0x00010003) y cuatro puertos de entrada salida de propósito general
(GPIO) (direcciones 0x00020000 hasta 0x00020003). Las regiones que están en gris
corresponden a zonas de direccionamiento que no poseen ningún periférico y en las
cuales el usuario puede agregar más módulos de hardware para aumentar las
potencialidades del sistema. Tenga en cuenta que las zonas de memoria antes
mencionadas fueron seleccionadas para este curso. Sin embargo, esto no le impide que
usted haga las modificaciones que desee.

0xFFFFFFFF

Unimplemented

0x00020004
0x00020003
GPIO
0x00020000
0x0001FFFF

Unimplemented
0x00010004
0x00010003
TIMER
0x00010000
0x0000FFFF

Unimplemented

0x00000400
0x000003FF

1KWord RAM
MEMORY

0x00000000
Figura 10. Direccionamiento de los Periféricos conectados al procesador MIPS.

Para interconectar los módulos de hardware con el procesador se requiere de un


hardware adicional denominado “Decodificador de direcciones” el cual se encarga de
habilitar el periférico que corresponda de acuerdo con la dirección establecida por el
procesador. Por ejemplo si se quiere acceder al temporizador, el procesador envía al
decodificador una dirección que este dentro de la zona de memoria donde se encuentra

Curso de Microprocesadores Escuela de Ingeniería Electrónica.


Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES
ubicado el periférico; por ejemplo 0x00010000 y el decodificador de direcciones habilitara
el TIMER y deshabilitara la memoria y los GPIO. En la Figura 11 se presenta un diagrama
conceptual de la interconexión entre los periféricos y el procesador. Los periféricos Data
Timer y GPIO deben estar todos conectados a la misma señal de reloj del procesador
(10MHz) y la memoria Data Memory a 50MHz

Address Address
Write Data Write Data
Read_Data_mem Read_Data
Read address PC Address Address CS_MEM WR
MIPS Write Data Write Data Read_Data_tmr RD
CPU Read_Data Read_Data CS_TMR CS
Instruction Instruction WR WR
Processor Read_Data_gpio
Data Memory
Instruction RD RD CS_GPIO
Memory WR
RD Address
Address Decoder Write Data
Read_Data
WR
RD
CS
CLK
TIMER

Address
RST Write Data
Read_Data
WR
RD
CS

GPIO

Figura 11. Interconexion entre los perifericos y el procesador MIPS (Decodificador de direcciones).

Para darle flexibilidad al procesador en esta práctica de laboratorio se plantea la


incorporación de un módulo TIMER y un módulo GPIO. Para lo cual se plantea el
desarrollo de los siguientes ítems:

1. Realice la descripción en VHDL de un módulo GPIO con 2 puertos de entrada y


dos puertos de salida cada uno de 32 bits. Los puertos de salida deberán
conectarse a un display 7 segmentos y 8 LEDs, los puertos de entrada deben
conectarse a los pulsadores y a los switches de la tarjeta de desarrollo DE1. En la
figura 12 se presenta un diagrama conceptual del periférico GPIO. Los bloques
que están conectados al display 7 segmentos y a los LEDs son registros de salida,
y los bloques que están conectados a los pulsadores y a los switch son registros
de entrada. Para que el procesador acceda a estos registros se debe diseñar una
interfaz de conexión entre el bus del procesador y los registros, a esta interfaz la
llamaremos lógica de control. La función de la lógica de control es seleccionar el
registro al que se desea acceder teniendo en cuenta la transacción solicitada por
el procesador (lectura o escritura). En la Tabla V se presentan el mapa de registros
de acceso al periférico GPIO.

2. Haga la descripción en VHDL de un temporizador de 32bits siguiendo el mismo


procedimiento del punto anterior. Un temporizador (TIMER) está compuesto por 5
componentes fundamentales: Un contador ascendente, un registro para configurar
el TIMER, un registro para cargar el periodo de comparación y un registro de
STATUS. En las tablas VI se presenta el mapa de registros de acceso al periférico
Curso de Microprocesadores Escuela de Ingeniería Electrónica.
Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES
TIMER y las configuraciones que se pueden realizar desde el procesador.

Address
Write Data
Read_Data
WR
RD
CS
Logic Control

Figura 12. Diagrama conceptual del modulo GPIO.

Tabla V. Mapa de registros del periférico GPIO conectados al bus del procesador MIPS.
Nombre del
Dirección R/W Descripción
registro
0x00020000 GPIOA R Puerto de entrada conectado a los switches de la tarjeta DE1
Puerto de entrada conectado a los pulsadores de la tarjeta
0x00020001 GPIOB R
DE1
0x00020002 GPIOC W Puerto de salida conectado a los LEDS de la tarjeta DE1
Puerto de salida conectado a un dispaly 7 Segmentos de la
0x00020003 GPIOD W
tarjeta DE1

en rst
Address
Counter
Write Data
Read_Data
=
WR
RD Period
CS
Logic Control

Config

Status

Figura 13. Diagrama conceptual del modulo TIMER.

Curso de Microprocesadores Escuela de Ingeniería Electrónica.


Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES
Tabla VI. Mapa de registros del periférico TIMER conectados al bus del procesador MIPS.
Descripción de bits
Dirección Nombre del registro R/W
31 … 1 0
0x00010000 TMR_STATUS R/W Reservado TMR_FLAG
0x00010001 TMR_CONFIG R/W Reservado TMR_ON
0x00010002 TMR_PERIODO R/W PERIODO
0x00010003 TMR_COUNTER R/W COUNTER

Como se observa el mapa de registros de la Tabla VI, la dirección 0x00010000


corresponde al registro de STATUS del TIMER. Cuando el valor del registro CONTADOR
es igual al valor del registro PERIODO, el CONTADOR se reinicia a 0 y el bit TMR_FLAG
se pone en 1 indicando que se ha cumplido una temporización. La única forma de poner a
0 ese bit es desde el procesador. El bit TMR_ON del registro CONFIG permite activar o
desactivar el funcionamiento del TIMER; cuando es 1 el CONTADOR se incrementa y
cuando es 0 el Contador se detiene.

3. Haga la descripción en lenguaje VHDL del decodificador de direcciones mostrado


en la Figura 14. Este es un componente combinacional por lo que no requiere de
señal de reloj ni reset. El funcionamiento de este componente es simple: cuando el
procesador envía una dirección dentro de la zona de un periférico este
componente envía una señal de habilitación al periférico correspondiente. Por
ejemplo si se envía desde el procesador cualquier dirección desde la 0x00010000
hasta la 0x00010003 el decodificador de direcciones pone a 0 las líneas CS_MEM
y CS_GPIO y pone a 1 la línea CS_TMR. Adicionalmente, envía el contenido del
puerto Read_Data_tmr hacia el puerto Read_Data.

Address
Write Data
Read_Data_mem
Address CS_MEM
Write Data Read_Data_tmr
Read_Data CS_TMR
WR Read_Data_gpio
RD CS_GPIO
WR
RD
Address Decoder
Figura 14. Interfaz de conexión del decodificador de direcciones.

4. Modifique el sistema básico de la Figura 9 e incluya los periféricos que acabó de


describir en los pasos 1 al 3. El sistema debe interconectarse como se muestra en
la Figura 15. Tenga en cuenta que los periféricos TIMER y GPIO deben estar
todos conectados a la misma señal de reloj del procesador (10MHz) y la memoria
Data Memory a 50MHz. De aquí en adelante el sistema se llamara uC_Uptc2018.

Curso de Microprocesadores Escuela de Ingeniería Electrónica.


Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES
Address Address
Write Data Write Data
Read_Data_mem Read_Data
Read address PC Address Address CS_MEM WR
MIPS Write Data Write Data Read_Data_tmr RD
CPU Read_Data Read_Data CS_TMR CS
Instruction Instruction WR WR
Processor Read_Data_gpio
Data Memory
Instruction RD RD CS_GPIO
Memory WR
RD Address
Address Decoder Write Data
Read_Data
WR
RD
CS
CLK
TIMER

Address
RST Write Data
Read_Data
WR
RD
CS

GPIO

Figura 15. Microcontrolador basico basado en procesador MIPS uC_Uptc2018.

PARTE III
LENGUAJE ENSAMBLADOR Y CODIGO MAQUINA
Para que el microcontrolador uC_Uptc2018 pueda ser utilizado requiere un programa
almacenado en la memoria ROM. Dicho programa puede estar desarrollado en cualquier
lenguaje; en este caso se utilizara el lenguaje ensamblador del procesador MIPS
implementado en las dos primeras partes de esta guía de laboratorio. Sin embargo, dicho
lenguaje se debe convertir a código máquina que es el lenguaje que entiende el
procesador. Para obtener el código maquina (proceso que normalmente se hace utilizado
compiladores y ensambladores) manualmente se debe tener en cuenta el ISA utilizado y
el set de instrucciones seleccionado.

1. Obtenga el código máquina del programa en lenguaje ensamblador mostrado en la


figura 16. Cree un archivo con extensión *.MIF e inserte en orden las 6
instrucciones del programa de ejemplo 1. Agregue el archivo al proyecto, compile y
descárguelo sobre la tarjeta.

Figura 16. Programa 1 en lenguaje ensamblador para el procesador MIPS implementado en esta practica de
laboratorio.

2. Analice el programa de la figura 16 y compárelo con el funcionamiento obtenido en


la tarjeta. ¿Qué hace este programa?
Curso de Microprocesadores Escuela de Ingeniería Electrónica.
Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES
3. Obtenga el código máquina del programa en lenguaje ensamblador mostrado en la
figura 17. Cree un archivo con extensión *.MIF e inserte en orden las 16
instrucciones del programa del ejemplo 2. Agregue el archivo al proyecto, compile
y descárguelo sobre la tarjeta.

4. Analice el programa de la figura 17 y compárelo con el funcionamiento obtenido en


la tarjeta. ¿Qué hace este programa?

Figura 17. Programa 2 en lenguaje ensamblador para el procesador MIPS implementado en esta practica de
laboratorio.

5. Obtenga el código máquina del programa en lenguaje ensamblador mostrado en la


figura 18. Cree un archivo con extensión *.MIF e inserte en orden las 22
instrucciones del programa del ejemplo 3. Agregue el archivo al proyecto, compile
y descárguelo sobre la tarjeta.

6. Analice el programa de la figura 18 y compárelo con el funcionamiento obtenido en


la tarjeta. ¿Qué hace este programa? ¿Qué diferencias percibe con el
comportamiento del programa de la figura 17?

7. Diseñe un programa para el Microcontrolador uC_Uptc2018 que permita realizar la


secuencia de LEDS conocida como Knight Rider. La secuencia se debe hacer con
pasos de 250ms.
a. Realice un diagrama de flujo donde se evidencie la solución al problema
planteado.
b. Escriba el código en lenguaje ensamblador teniendo en cuenta el diagrama
de flujo diseñado en el numeral (a) y el set de instrucciones de la tabla I.
c. Obtenga el código máquina del programa en lenguaje ensamblador del
numeral b.
d. Implemente el programa en el microcontrolador uC_Uptc2018 y
descárguelo sobre la tarjeta DE1.

Curso de Microprocesadores Escuela de Ingeniería Electrónica.


Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES

Figura 18. Programa 3 en lenguaje ensamblador para el procesador MIPS implementado en esta practica de
laboratorio.

8. Diseñe un programa para el Microcontrolador uC_Uptc2018 que permita visualizar


la secuencia de Fibonacci en los LEDS conectados al sistema. El programa debe
mantener en los LEDS cada dato de la secuencia durante 2 segundos, para esto
usted debe hacer uso del periférico TIMER.
a. Realice un diagrama de flujo donde se evidencie la solución al problema
planteado.
b. Escriba el código en lenguaje ensamblador teniendo en cuenta el diagrama
de flujo diseñado en el numeral (a) y el set de instrucciones de la tabla I.
c. Obtenga el código máquina del programa en lenguaje ensamblador del
numeral b.
d. Implemente el programa en el microcontrolador uC_Uptc2018 y
descárguelo sobre la tarjeta DE1.

Curso de Microprocesadores Escuela de Ingeniería Electrónica.


Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES

PARTE IV
COMPILADOR Y ADICION DE PERIFERICOS AL MICROCONTROLADOR
uC_Uptc2018
Primer Reto: Modifique el procesador del Microcontrolador desarrollado en la presente
practica de tal forma que incluya las siguientes instrucciones. Defina el nemónico y el
formato de la instrucción en lenguaje ensamblador. Seleccione el formato de la
arquitectura MIPS (ISA) que mejor se acomode a las instrucciones. Realice las
modificaciones respectivas a la arquitectura propuesta.

Instrucción Descripción
Mover el contenido de un registro a otro R[rd ]  R[rs], PC  PC  4
registro
Salto incondicional a una dirección
establecida por cualquier registro del PC  R[rs]
procesador
Compara dos registros, si son diferentes
salta a una dirección relativa al PC, si if ( R[rs]!  R[rt ]) : PC  PC  4  (inmediato  2)
son iguales ejecuta la siguiente
instrucción
Saltar a una dirección de memoria de
programa y al mismo tiempo guarda en
el registro 31 la siguiente instrucción PC  ( Direccion), R[31]  PC  4
relativa a la que se encontraba el
contador del programa

Segundo Reto: Empleando lenguaje C o cualquier otro lenguaje de programación diseñe


un cross-compilador básico que realice el ensamblado (convertir lenguaje ensamblador a
código maquina) de un programa escrito en lenguaje ensamblador con las instrucciones
presentadas en la Tabla I más las instrucciones del primer reto de la presente guía. El
compilador que usted realice debe hacer la lectura de un archivo de texto (programa en
ensamblador) y lo debe convertir a un archivo *.mif (código maquina).
Tercer Reto: Haga el diseño de un periférico UART (Universal Asynchronous Receiver-
Transmitter) y agréguelo al sistema desarrollado denominador uC_Uptc2018. De tal forma
que permita realizar comunicación serial full-duplex entre el Microcontrolador y un
Computador mediante el protocolo de comunicación RS232. Haga un programa en
lenguaje ensamblador que permita probar el funcionamiento del periferico.

Cuarto Reto: agregue puertos GPIO y TIMERS al sistema uC_Uptc2018, necesarios para
implementar el segundo punto de la guía de laboratorio 1. Diseñe un programa en
lenguaje ensamblador para el procesador MIPS desarrollado. Debe ser coherente con la
implementación previamente realizada para el microcontrolador PIC. Utilice el compilador
del Segundo Reto para crear el código máquina de su programa y los archivos *.mif
necesarios.

Curso de Microprocesadores Escuela de Ingeniería Electrónica.


Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES
EL INFORME DEBE CONTENER

Las partes I y II de la presente practica de laboratorio no se deben incluir en el informe, ya


que son comprobaciones y procedimentales. Sin embargo, las partes III y IV si deben
incluirse en el informe ya que es el trabajo de diseño independiente del estudiante.

 Diagramas de bloques del hardware diseñado


 Simulaciones del hardware diseñado
 Diagrama de flujo de los programas desarrollados para el microcontrolador
uC_Uptc2018
 Código en lenguaje ensamblador para el microcontrolador uC_Uptc2018
 Análisis de resultados
 Conclusiones
 Bibliografía

Para el registro del informe se debe utilizar el formato dispuesto por el docente. Revisar
formato en Aula virtual. La extensión del informe no debe superar 10 PÁGINAS. (Por favor
no usar marca de agua en los informes que se ven muy mal presentados)

 Fecha de entrega PRÁCTICA: semana 8 de II periodo académico de 2018.


 Fecha de entrega INFORME: semana 8 de II periodo académico de 2018 (impreso el
día de la sustentación).

METODOLOGÍA DE EVALUACIÓN:

 Funcionamiento: 40%
 Sustentación: 20%
 Informe de laboratorio: 40%

Observación: Para la sustentación el docente elegirá a uno de los integrantes del


grupo, quien debe responder a las preguntas que se le hagan. Adicionalmente, se le
pedirá al grupo hacer una modificación de cualquier ejercicio de laboratorio para el
cual dispondrán de 1 a 10 minutos.

1. RECOMENDACIÓN:

N/A

2. BIBLIOGRAFÍA
[1] P. J. Ashenden, The Designer’s Guide to VHDL. Elsevier Science, 2010.
[2] S. Brown and Z. Vranesic, Fundamentals of Digital Logic with VHDL Design with CD-ROM,
2nd ed. New York, NY, USA: McGraw-Hill, Inc., 2005.
[3] T. L. Floyd, Digital Fundamentals, Global Edition. Pearson Education Limited, 2015.
[4] W. A. Kester and inc Analog Devices, Data Conversion Handbook. Elsevier, 2005.
[5] S. Kilts, Advanced FPGA Design: Architecture, Implementation, and Optimization. Wiley,
2007.
Curso de Microprocesadores Escuela de Ingeniería Electrónica.
Profesor: Juan David Guerrero Balaguera.
UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE MICROPROCESADORES
[6] W. Kleitz, Digital Electronics: A Practical Approach with VHDL. Pearson Education, Limited,
2013.
[7] M. M. Mano and M. D. Ciletti, Digital Design. Pearson Prentice-Hall, 2007.
[8] M. M. Mano, C. R. Kime, J. A. H. Camacho, M. Eckert, and B. V Lozano, Fundamentos de
dise{ñ}o l{ó}gico y de computadoras. Pearson Educaci{ó}n, 2005.
[9] F. Ohnhäuser, Analog-Digital Converters for Industrial Applications Including an Introduction
to Digital-Analog Converters. Springer Berlin Heidelberg, 2015.
[10] Á. G. Olivo and J. P. Mart’\inez, Dise{ñ}o de procesadores con VHDL. Publicaciones de la
Universidad de Alicante, 2007.
[11] D. A. Patterson and J. L. Hennessy, Computer Organization and Design: The
Hardware/software Interface. Morgan Kaufmann, 2012.
[12] V. A. Pedroni, Finite State Machines in Hardware: Theory and Design (with VHDL and
SystemVerilog). MIT Press, 2013.
[13] B. Prince, Emerging Memories: Technologies and Trends. Springer US, 2007.
[14] F. Tappero and B. Mealy, Free Range VHDL. Libro Hobby, 2005.
[15] R. Tocci, N. Widmer, and G. Moss, Digital Systems, Global Edition. Pearson Education,
Limited, 2016.
[16] F. Vahid, Digital Design with RTL Design, Verilog and VHDL. John Wiley & Sons, 2010.
[17] J. F. Wakerly, Digital Design: Principles and Practices. Pearson Education, 2017.
[18] W. Wolf, FPGA-Based System Design. Pearson Education, 2004.
[19] R. Woods, J. McAllister, Y. Yi, and G. Lightbody, FPGA-based Implementation of Signal
Processing Systems. Wiley, 2008.

Curso de Microprocesadores Escuela de Ingeniería Electrónica.


Profesor: Juan David Guerrero Balaguera.

You might also like