Manual de Labotatorio Organizacion de Computadoras.pdf

Embed Size (px)

Citation preview

  • 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