Documente Academic
Documente Profesional
Documente Cultură
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
EXTENSIÓN TUNJA
CURSO DE ELECTRONICA DIGITAL II
LABORATORIO Nº3
DISEÑO DE PROCESADORES EN VHDL E IMPLEMENTACION EN FPGAs
(MIPS Processor)
1. OBJETIVOS
Aplicar los conceptos de diseño digital con VHDL en el diseño e implementación de
procesadores
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 un programa básico que permita comprender el funcionamiento
del procesador MIPS diseñado.
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.
PARTE I
DISEÑO DE UN PROCESADOR MIPS DE UN SOLO CICLO
Tabla II. Operaciones realizadas por el ALU del procesador MIPS Laboratorio.
(a) (b)
Figura 3. Memorias requeridas en el diseño. (a) Memoria ROM del programa. (b) Memoria RAM de datos.
(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.
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 en 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 mucha probabilidad de que el sistema falle.
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]
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.
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.
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)
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.
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).
Address
Write Data
Read_Data
WR
RD
CS
Logic Control
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
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.
Address
RST Write Data
Read_Data
WR
RD
CS
GPIO
PARTE III
LENGUAJE ENSAMBLADOR Y CODIGO MAQUINA
Para que el microcontrolador uC_Uptc2017 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.
Figura 16. Programa 1 en lenguaje ensamblador para el procesador MIPS implementado en esta practica de
laboratorio.
Figura 17. Programa 2 en lenguaje ensamblador para el procesador MIPS implementado en esta practica de
laboratorio.
Figura 18. Programa 3 en lenguaje ensamblador para el procesador MIPS implementado en esta practica de
laboratorio.
PARTE IV
COMPILADOR Y ADICION DE PERIFERICOS AL MICROCONTROLADOR
uC_Uptc2017
NOTA: Esta última parte es opcional; ideal para aquellos estudiantes que son dinámicos y
quieren profundizar el tema desarrollando aplicaciones más complejas, o para quienes
requieren un bonus extra porque sus calificaciones son bajas. En cualquier caso se
proponen los siguientes retos usted puede elegir cual desarrolla. (EL docente es libre de
elegir la forma más idónea en la asignación del valor del bonus, y la forma como se
aplicara dicho bonus).
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
Diagrama de bloques donde se haga una explicación de cada uno de los módulos
de hardware diseñados
Simulaciones – Modelsim
Diagrama de flujo de los programas desarrollados para el microcontrolador
uC_Uptc2017
Código en lenguaje ensamblador para el microcontrolador uC_Uptc2017
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)
METODOLOGÍA DE EVALUACIÓN:
Funcionamiento: 40%
Sustentación: 20%
Informe de laboratorio: 40%
1. RECOMENDACIÓN:
# Semana Actividad
9 Fundamentos de diseño de procesadores.
10 Formato de instrucción del procesador MIPS
11 Construcción del DataPath y unidad de control procesador MIPS
12 Construcción de un microcontrolador básico
13 Sustentación de la práctica de laboratorio.
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,