Professional Documents
Culture Documents
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.
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.
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
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.
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_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.
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_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
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.
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:
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.