manual de labotatorio organizacion de computadoras.pdf
TRANSCRIPT
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
1/32
Universidad Tecnológica Centroamericana
Facultad de Ingenierías
Manual de Laboratorio de Organización de Computadoras
Diseñado por Iván de Jesús Deras Tábora
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
2/32
Introducción
La clase de Organización de Computadoras estudia la micro-arquitectura (organización), así
como los detalles de implementación de una computadora moderna. El enfoque de la clase
esta en los siguientes componentes:
1. Procesador
2. Memoria
3. Dispositivos de E/S
En este manual se detallan una serie de Laboratorios diseñados para enriquecer los
conocimientos adquirido durante la clase, utilizando el esquema de aprender haciendo
(aprendizaje activo). Los laboratorios enfatizan el uso de componentes de software tales
como Verilog un lenguaje de descripción de hardware y de hardware tales como FPGA (Field
Programmable Gate Arrays).
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
3/32
Objetivo
EL objetivo principal de estos laboratorios es involucrar al estudiante en el diseño e
implementación de un procesador de 8 bits que ejecuta 13 instrucciones. De esta manera el
estudiante se involucra con tecnologías del mundo real utilizadas para implementar
procesadores modernos, por otro lado le ayuda a poner en práctica los conceptos aprendidos
durante la clase.
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
4/32
Componentes de Laboratorio
A continuación se detallan los componentes que se utilizarán en el laboratorio, asi como su
respectiva utilización:
1. Verilog : Este es un lenguaje de descripción de hardware, el cual se utilizará para escribir
describir descripciones de los diferentes circuitos que implementemos en cada laboratorio.
2. Xilinx ISE WebPack : Este es un conjunto de herramientas de Xilinx, las cuales incuyen
las siguientes:
I. ISE Project Navigator: Este un entorno de desarrollo (IDE), el cual se utilizará para
editar descripciones en Verilog, asi como sintetizador de Verilog para implementarlo
en la FPGA. Ver Figura 1.
Figura 1: Xilinx ISE Project Navigator.
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
5/32
II. ISim: Este es un simulador de Verilog, el cual permite depurar y probar los circuitos
antes de sintetizarlos en hardware. Ver Figura 2.
Figura 2: Xilinx ISIM
III. IMPact: Esta es una herramienta que permite cargar una descripción de un circuito ya
sintetizado en una FPGA. Figura 3.
Figura 3: Xilinx IMPact
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
6/32
3. Tarjeta FPGA de National Instruments : Es una placa de circuitos que incluye un FPGA de
Xilinx y varios componentes tales como switches, pulsadores, LEDs los cuales son muy útiles
para probar los circuitos. Esta tarjeta se utilizará para probar los circuitos. Ver Figura 4.
Figura 4: Tarjeta FPGA de National Instruments
4. ChipKit Uno32 o Max32: Esta es una plataforma basado en el microcontrolador PIC32 de
Microchip, la cual utilizaremos en estos laboratorios para la adquisición de datos, esto es
enviar y recibir señales de los circuitos que implementemos en la placa FPGA. Ver Figura 5.
Figura 5: chipKit Uno32
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
7/32
Descripción de los Laboratorios
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
8/32
Laboratorio 1: Modelando Compuertas Lógicas
Objetivo El objetivo de este laboratorio es conocer los operadores lógicos de Verilog utilizados paramodelar compuertas lógicas. Para ello desarrollaremos un ejercicio para probar 6
compuertas lógicas. Al finalizar este laboratorio el estudiante deberá ser capaz de:
1. Modelar circuitos combinatorios utilizando los operadores lógicos de Verilog.
2. Declarar señales de entrada y salida
3. Modelar componentes básicos
4. Declarar arreglos de señales
ImplementaciónEl circuito que vamos a realizar consiste de 2 entradas a, b , las cuales serán alimentadas a
compuertas AND, NAND, OR, NOR, XOR y XNOR, de esta manera el circuito tendrá 6
salidas (r[5:0]) . Para generar las entradas utilizaremos 2 de los switches que incluye la
placa FPGA, y para desplegar las salidas de las compuertas utilizaremos 6 LEDs, también
incluidos en la placa FPGA.
Diagrama del Circuito
Tareas a realizar
1. Iniciar ISE Project Navigator y crear un proyecto nuevo.
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
9/32
2. Crear un nuevo archivo fuente llamado gates.v , asegúrese de seleccionar Verilog como
lenguaje de descripción.
3. Copiar el siguiente código en el archivo gates.v :
4. Crear un nuevo archivo fuente, esta vez elegir “Implementation Constraint File ” en el
“Source Type” . En el nombre colocar gates.ucf , en este archivo incluiremos el mapeo de los
pines con las variables que tenemos en nuestra descripción de Verilog.
5. Copiar el siguiente código en el archivo gates.ucf
6. Compile el proyecto y cárguelo al FPGA utilizando la herramienta Xilinx IMPact . Una vez
cargado pruebe el proyecto utilizando los switches y observe como cambia el estado de los
LEDs en el FPGA.
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
10/32
Laboratorio 2: Contador Síncrono de 4 bits
Objetivo
El objetivo de este laboratorio es utilizar construcciones de Verilog para
implementar circuitos digitales secuenciales, para ello implementaremos un
contador síncrono de 4 bits. Al finalizar el laboratorio el estudiante será capaz
de:
1. Utilizar la sentencia always de Verilog para describir circuitos
secuenciales.
2. Utilizar la sentencia if-else para modelar multiplexores.3. Utilizar la sentencia case para modelar multiplexores.
4. Utilizar reg para modelar registros de estado.
5. Implementar e Integrar múltiples componentes en un mismo proyecto.
Implementación
El circuito que vamos a implementar incrementará el valor del contador en cada
pulso positivo del reloj. El valor del contador será mostrado en un Display de 7segmentos , el cual está incluido en la placa FPGA. Para generar las señales
de reloj y reset del contador utilizaremos dos pulsadores, los cuales también
están incluidos en la FPGA.
Diagrama del Circuito
RESET y CLK son entradas, las cuales serán generadas mediantes pulsadores incluidos en
la placa FPGA. La salida del decodificador de 7 segmentos será conectada al display de 7
segmentos incluido en el FPGA.
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
11/32
Tareas a Realizar
5. Iniciar Xilinx Project Navigator y crear un nuevo proyecto llamado SCounter .
6. Crear un nuevo archivo fuente llamado SCounter.v , seleccionar “Verilog Module ” en el
“Source Type ”.
7. Copiar el siguiente código de Verilog en el archivo SCounter.v
8. Crear otro archivo fuente llamada SevenSegmentDec.v , seleccionar “Verilog Module ”
en el “Source Type ”.
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
12/32
9. Copiar el siguiente código de Verilog en el archivo SevenSegmentDec.v
10. Crear un archivo fuente llamado SCounter_Main.v , seleccionar “Verilog Module ” en el
“Source Type ”.
11. Copiar el siguiente código de Verilog en el archivo SCounter_Main.v :
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
13/32
12. Crear un nuevo archivo fuente llamado SCounter.ucf , seleccionar “Implementation
Constraint File” en el “Source Type ”.
13. Copiar el siguiente código en el archivo SCounter.ucf
Nota: Este no es código de Verilog, este archivo contiene el mapeo de pines de la
FPGA con las señales definida en la descripción de Verilog.
14. Compile el proyecto y cárguelo al FPGA utilizando la herramienta Xilinx IMPact . Una vez
cargado pruebe el proyecto utilizando los pulsadores para generar señales de RESET y el
CLOCK. Recordar que el valor del contador se incrementará cada vez que ocurre un
pulso positivo en la señal de reloj.
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
14/32
Laboratorio 3: Modelando una memoria ROM síncrona
ObjetivoEl objetivo de este laboratorio es modelar una memoria ROM de 16 palabras, cada una de 4bits.
Al finalizar este laboratorio el estudiante será capaz de:
1. Utilizar la sentencia case de Verilog para modelar memorias ROM.
2. Utilizar la sentencia reg para definir un almacenamiento temporal.
Implementación
El circuito que vamos a implementar será una memoria ROM síncrona. Utilizaremos los
switches disponibles en la FPGA para generar la dirección a leer, y al igual que en
laboratorios anteriores utilizaremos un pulsador para generar la señal de reloj. El contenido
de la memoria será desplegado en 4 LEDs, también disponibles en la FPGA.
Diagrama del Circuito
Tareas a Realizar
1. Iniciar Xilinx ISE Project Navigator y crear un nuevo proyecto llamado MemROM .
2. Crear un nuevo archivo llamado SyncROM.v , seleccionando “Verilog Module” en el
“Source Type”
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
15/32
3. Copiar el siguiente código de Verilog , en el archivo SyncROM.v
4. Crear un nuevo archivo llamado SyncROM_Main.v , seleccionando “Verilog Module” en
el “Source Type”
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
16/32
5. Copiar el siguiente código de Verilog , en el archivo SyncROM_Main.v
6. Crear un nuevo archivo fuente llamado SyncROM.ucf , seleccionar “ImplementationConstraint File” en el “Source Type ”
7. Copiar el siguiente código en el archivo SyncROM.ucf
8. Compilar el proyecto y cargarlo al FPGA. Probar el circuito utilizando los switches del 0-
4, para generar la dirección a leer, luego con el pulsador 0 generar pulsos de reloj y
observar el valor desplegado en los LEDs.
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
17/32
Laboratorio 4: Modelando una memoria RAM Síncrona
ObjetivoEl objetivo de este laboratorio es modelar una memoria RAM síncrona de 16 palabras, cadauna de 4 bits cada una (16x4).
Al finalizar este laboratorio el estudiante será capaz de:
1. Utilizar arreglos de 2 dimensiones para modelar memorias RAM.
Implementación
El circuito que vamos a implementar será una memoria RAM síncrona 16x4, 16 palabras de4 bits. Para probar este laboratorio será necesario implementar un programa en ChipKit que
escriba una serie de 16 palabras aleatorias, y luego lea las palabras y compruebe que los
valores son correctos. La interfaz de ChipKit mostrará los resultados de la prueba utilizando
la interfaz serial. Las señales de entrada/salida del circuito serán mapeadas a pines de
propósito general de la FPGA (GPIO0 … GPIO13 ), de la siguiente manera:
Pin(es) SeñalGPIO0 Write EnableGPIO1 Clock
GPIO2 … GPIO5 AddressGPIO6 … GPIO9 Data InGPIO10 …GPIO13
Data Out
Diagrama del Circuito
Tareas a Realizar
1. Iniciar Xilinx ISE Project Navigator y crear un nuevo proyecto llamado MemRAM .
2. Crear un nuevo archivo llamado SyncRAM.v , seleccionando “Verilog Module” en el
“Source Type”
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
18/32
3. Copiar el siguiente código de Verilog , en el archivo SyncRAM.v
4. Crear un nuevo archivo llamado SyncRAM_Main.v , seleccionando “Verilog Module” en
el “Source Type” 5. Copiar el siguiente código de Verilog , en el archivo SyncRAM_Main.v
6. Crear un nuevo archivo fuente llamado SyncRAM.ucf , seleccionar “Implementation
Constraint File” en el “Source Type ”
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
19/32
7. Copiar el siguiente código en el archivo SyncRAM.ucf
Compilar el proyecto y cargarlo al FPGA. Hacer las conexiones correspondientes entre
ChipKit y la FPGA, luego ejecute el programa de prueba desde ChipKit y compruebe que
los resultados mostrados son correctos.
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
20/32
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
21/32
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
22/32
Laboratorio 6: Modelando un Archivo de Registros
ObjetivoEl objetivo de este laboratorio es modelar un archivo de registros el cual contendrá 4registros de 8 bits cada uno. El archivo de registro proveerá dos puertos de lectura y un
puerto de escritura para su acceso. Al finalizar este laboratorio el estudiante deberá ser
capaz de:
1. Modelar un archivo de registros como parte del almacenamiento de un procesador.
Implementación
El archivo de registros es el almacenamiento más cercano al procesador, por esta razóntambién es el más limitado y a la vez el más rápido. El archivo de registros es diferente de la
memoria caché.
En este laboratorio implementaremos un archivo de registros, el cual más adelante
integraremos junto con la ALU y otros componentes para formar un procesador de un solo
ciclo. El archivo de registros contendrá las siguientes señales:
Señal DescripciónRead Address1
Dirección del primer registro a leer
Read Address1
Dirección del segundo registro aleer
Write Address Dirección del registro a escribirWrite Data Datos a escribir en el registro
especificado por Write AddressRead Data 1 Datos del primer puerto de lecturaRead Data 2 Datos del segundo puerto de
lecturaWrite Enable Activar escritura. Si esta señal es
‘1’, el archivo de registro escribirá elvalor especificado en el puerto deescritura, en el pulso positivo delreloj.
Clock Señal de reloj
Para probar el circuito se deberá implementar una aplicación de prueba en ChipKit utilizando
la interfaz serial. La aplicación deberá ejecutar una serie de escrituras y lecturas en el
archivo de registros, cualquier error deberá ser reportado utilizando la interfaz serial de
ChipKit.
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
23/32
Diagrama del Circuito
Tareas a Realizar
Este proyecto deberá ser implementado llevando a cabo las acciones de la manera que el
implementador juzgue apropiado, como parte del proyecto deberá tener un módulo para el
Archivo de Registros , el cual contendrá el siguiente código de Verilog:
Los módulos restantes quedan a criterio del implementador. Se deberá tener en cuenta que
para implementar el proyecto en la FPGA hay que crear un archivo con el mapeo de pines,
para decidir el mapeo de pines se puede utilizar el “Anexo 1: Mapeo de pines en la placa
FPGA de National Instruments ”
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
24/32
Laboratorio 7: Modelando la unidad de control para el procesador MIPS8
ObjetivoEl objetivo de este laboratorio es modelar una unidad de control para el procesador MIPS8,el conjunto de instrucciones soportadas por MIPS8 se resume en la Tabla 1. Al finalizar este
laboratorio el estudiante deberá ser capaz de:
1. Conocer el conjunto de instrucciones de MIPS8
2. Diseñar e Implementar la unidad de control de MIPS8 utilizando Verilog.
Implementación
La unidad de control de control es la última pieza para completar nuestro diseño de un
procesador de un solo ciclo. La siguiente imagen muestra el diagrama del procesador, elcual ejecuta las instrucciones detalladas en la Tabla 1.
El objetivo del último laboratorio, será integrar todos estos componentes (incluyendo la
unidad de control) para lograr una implementación de nuestro procesador de un solo ciclo.
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
25/32
Conjunto de Instrucciones de MIPS8
Formato de Instrucción Operación
nop
00000 00000000000No operación
add rd, rs00001 rd rs 0000000
rd ← rd + rsActualiza el registro Flags
sub rd, rs00010 rd rs 0000000
rd ← rd - rsActualiza el registro Flags
or rd, rs00011 rd rs 0000000
rd ← rd | rsActualiza el registro Flags
and rd, rs00100 rd rs 0000000
rd ← rd & rsActualiza el registro Flags
xor rd, rs00101 rd rs 0000000
rd ← rd ^ rsActualiza el registro Flags
mov rd, rs00110 rd rs 0000000
rd ← rs
lw rd, rs00111 rd rs 0000000
rd ← M[rs
sw rd, rs01000 rd rs 0000000
M[rs ← rd
li rd, N01001 rd N 0
rd ← N
addi rd, N01010 rd N 0
rd ← rd + NActualiza el registro Flags
subi rd, N01011 rd N 0
rd ← rd ! NActualiza el registro Flags
cmp rd, rs01100 rd rs 0000000
te"p ← rd - rsActualiza el registro Flags
jz #01101 # 000
i$ %Flags'ero()* ← #
jnz #01110 # 000
i$ %Flags'ero()* ← #
jg #01111 # 000 i$ %FlagsignFlags./$ and Flags'ero(
)* ← #
jl #10000 # 000
i$ %Flagsign Flags./$( )* ← #
jump #10001 # 000
)* ← #
Tabla 1: Conjunto de Instrucciones de MIPS8
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
26/32
Señales de la Unidad de Control
Señal DescripciónRegWrite Indica si el archivo de registros escribirá un registro al final del
ciclo de reloj.IsMove Indica si la instrucción actual es un “mov”IsMemAccess Indica si la instrucción actual es “lw” (Load Word from Memory) IsImm Indica si la instrucción actual es un “li”(Load Immediate)ALU Function Indica la operación que la ALU debe ejecutarWrite Flags Indica si el registro Flags se debe escribir al final del ciclo de reloj.DM Write Enable Indica si el Data Memory debe ejecutar una escritura al final del
ciclo de reloj.IsJz Indica si la instrucción actual es un “jz”(Jump if zero)
IsJnz Indica si la instrucción actual es un “jnz”(Jump if not zero)IsJl Indica si la instrucción actual es un “jl”(Jump if less)IsJg Indica si la instrucción actual es un “jg”(Jump if greater)IsJump Indica si la instrucción actual es un “jump”(Jump)
Tareas a Realizar
La tarea en este laboratorio es implementar la unidad de control utilizando Verilog. El
módulo tendrá como entrada el código de la instrucción , el cual es de 5 bits y la salida serán
todas las señales de control. Se recomienda utilizar la sentencia case de Verilog.
La declaración del módulo será la siguiente:
module *ontrolnit%
input [20 opcode,
output reg reg34rite,
output reg is3"o/e,
output reg is3"e"3access,
output reg is3i"",
output reg [520 alu3$unction,
output reg $lags34rite,
output reg d"34rite3ena6le,
output reg is37z,output reg is37nz,
output reg is37l,
output reg is37g,
output reg is37u"p
(8
99 :.;.
endmodule8
La última parte de este laboratorio consiste en diseñar un test bench , para
depurar y asegurar el funcionamiento correcto de la unidad de control.
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
27/32
Laboratorio 8: Implementación del procesador MIPS8
ObjetivoEl objetivo de este último laboratorio es integrar todos modelar una unidad de control para el
procesador MIPS8, el conjunto de instrucciones soportadas por MIPS8 se resume en la
Tabla 1. Al finalizar este laboratorio el estudiante deberá ser capaz de:
1. Implementar un procesador de un solo ciclo (MIPS8).
2. Crear programas en ensamblador y en lenguaje de máquina para MIPS8.
3. Ejecutar programas en MIPS8 y verificar su correcto funcionamiento en modo desimulación y en implementación.
Implementación
MIPS8 es un procesador de un solo ciclo, lo que significa que cada instrucción se ejecutará
en un ciclo de reloj. Para la implementación de MIPS8 hay que utilizar como referencia el
diagrama del procesador, presentado en el laboratorio 7.
Tareas a realizar
Las tareas a realizar en este laboratorio son:
1. Crear un módulo que será el principal, en este se instanciarán y se interconectarán todos
los módulos del procesador, como ser el “Instruction Memory”, “Register File”, “ALU”, “Data
Memory”, “Control Unit”, etc.
2. Utilizar la herramienta mips8asm , el cual es un ensamblador para MIPS8. Con esta
herramienta generamos el contenido del Instruction Memory , la cual es una ROM y tendrá el
programa a ejecutar.
3. Diseñar un test-bench para comprobar el funcionamiento del procesador.
4. Implementar el procesador en la FPGA y diseñar una interfaz con Arduino/ChipKit, para
ejecutar pruebas sobre el procesador.
Enlaces
Herramienta MIPS8 Assemblerhttps://dl.dropboxusercontent.com/u/21821636/Clases/Org.%20de%20Computadoras/Resources/mips8asm.exe
Código fuente de MIPS8 Assemblerhttps://github.com/ideras/MIPS8ASM
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
28/32
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
29/32
Anexo 1: Mapeo de Pines en la placa FPGA de National Instruments
Net 3pin< LOC
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
30/32
Net
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
31/32
Net
-
8/18/2019 Manual de Labotatorio Organizacion de Computadoras.pdf
32/32
Net