diseño y verificación en vhdl de microcontrolador...

75
SEMINARIO DE EXTENSIÓN DE ISLD 2016 Clase inicial: Jueves 18 de Agosto, de 8:15 a 10:15 hs, Sala de Conferencias 1. Siguientes clases: Jueves 25 de Agosto y 1, 8 y 15 de Septiembre. Sergio Noriega Diseño y verificación en VHDL de microcontrolador implementado en FPGA uC16

Upload: others

Post on 13-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

  • SEMINARIO DE EXTENSIÓN DE ISLD – 2016

    Clase inicial: Jueves 18 de Agosto, de 8:15 a 10:15 hs, Sala de Conferencias 1.Siguientes clases: Jueves 25 de Agosto y 1, 8 y 15 de Septiembre.

    Sergio Noriega

    Diseño y verificación en VHDL de microcontrolador

    implementado en FPGA

    uC16

  • Sergio Noriega - 2014

    MÓDULO 1

  • Sergio Noriega - 2014

    OBJETIVOS

    EL PRESENTE SEMINARIO TIENE COMO OBJETIVO, INTRODUCIR A LOS ALUMNOS AL DISEÑO Y VERIFICACIÓN DE CIRCUITOS DIGITALES COMPLEJOS, EMPLEANDO TÉCNICAS BASADAS EN LENGUAJE DE DESCRIPCIÓN DE ALTO NIVEL DE ABSTRACCIÓN ,COMO ES EL VHDL Y EN PARTICULAR, ADENTRARSE EN EL DESARROLLO DE UN SISTEMA MICROPROCESADOR, EL CUAL ESTARÁ TOTALMENTE CONTENIDO DENTRO DE UNA FPGA.

    A DIFERENCIA DE LOS ESQUEMAS TRADICIONALES DE ENSEÑANZA PARA ENCARAR EL DISEÑO DE UN MICRO, AQUÍ SE EMPLEARÁ UNA FILOSOFÍA BASADA EN DISEÑAR HARDWARE PARA EL CONTROL DE UNA MEMORIA RAM, LA CUAL IRÁ EVOLUCIONANDO PASO A PASO. EN FORMA SECUENCIAL SE IRÁ INCREMENTANDO LA CAPACIDAD DE PROCESAMIENTO DE DICHA UNIDAD DE CONTROL, PUDIENDO SER EXTENSIVO PARA EL CONTROL DE OTROS PERIFÉRICOS, TALES COMO CONVERSORES DE DATOS, GENERADORES PWM, PLL’S, ETC.

    SE TRABAJARÁ EN BASE A UN MICRO CON ARQUITECTURA TIPO “CISC” DONDE LA CPU SE DISEÑARÁ EN BASE A MÁQUINA DE ESTADOS.

    DADO QUE EL DISEÑO SE DESARROLLARÁ DE MANERA SECUENCIAL, INCREMENTANDO EN CADA PROYECTO LA COMPLEJIDAD DE FUNCIONES, NO SE CONSIDERARÁN OPTIMIZACIONES EN CUANTO AL REORDENAMIENTO DE ESTADOS REQUERIDOS, (SALVO ALGUNA EXCEPCIÓN) A FIN DE SIMPLIFICAR EL SEGUIMIENTO DE LA EVOLUCIÓN DE LA MÁQUINA DE ESTADOS .

  • uPMemoria

    +Periféricos

    BUS DE CONTROL

    BUS DE DIRECCIONES

    BUS DE DATOS

    Sergio Noriega - 2014

    DIAGRAMA EN BLOQUES DE UN SISTEMA BÁSICO DE MICROPROCESADOR

  • Sergio Noriega - 2014

    PROYECTO RAM

    Descripción en VHDL de una memoria SRAM de simple puerto (RAM)

  • MEM

    OR

    IA

    FPGA

    RAM

    MEM

    OR

    IA

    RA

    M

    clock

    wren

    data

    address

    q

    12

    16

    GENERADOR DE ESTÍMULOS

    DESDE TEST BENCH

    BUSDATAMEMIN

    BUS DATAMEMOUT

    BUS DIRMEM

  • RAM

    ESTA ES UNA DE LAS POSIBLES MANERAS DE DESCRIBIR MEMORIA RAM SINCRÓNICA PARA QUE LUEGOEL COMPILADOR RECONOZCA Y SELECCIONE LOS BLOQUES DERAM DEDICADOS PARA SUIMPLEMENTACIÓN.VENTAJA: DISEÑO OPTIMIZADO.DESVENTAJA: NO ES PORTABLE A OTRAS FPGA QUE NO TENGAN RAMDEDICADA.

  • RAM

    MODELO DE RAM CONFIGURADA:ADDRESS, DATA IN, WREN = SINCRO.DATA OUT = ASINCRO.

    USE RAM DEDICADA

    REGISTROS = 4096ANCHO PALABRA =16

  • RAM

  • RAMCONTENIDO DEL ARCHIVO RAM.HEX PARA ESTE PROYECTO

    CONTENIDO EN HEXADE LA MEMORIA RAMUNA VEZ CREADA.

    FILE

    EN FILE NEW MEMORY FILES:SE ELIGE EN ESTE CASO,HEXADECIMAL FILE.

  • RAMREPORTE FINAL DEL COMPILADOR

    DETECCIÓN DEL COMPILADOR DE MEMORIA RAM

  • RAM

    Descripción del testbench enVHDL de la memoria SRAM especificada anteriormente.

  • RAM

    Después de declarar e instanciar la entidad de la memoria a probar, se generan dos procesos concurrentes:

    1 – El del reloj, denominado “gen_reloj”.

    2 – El de las señales estímulo, denominado “estimulos”.

  • RAM

    LECTURA DE LA RAM ESCRITURA DE LA RAM LECTURA

    SE LEEN LAS 10 PRIMERAS POSICIONES DE MEMORIA RAM,LUEGO SE LAS ESCRIBE CON NÚMEROS CONCECUTIVOS YSE VUELVEN A LEER DESDE EL INICIO LAS 20 PRIMERAS.

    Diagrama temporal del TEST de la memoria RAM

  • RAM

    SECUENCIA DE INICIAL DE LECTURA DE DATOS:SE LEEN TODOS X”FFFF” SEGÚN LA INICIALIZACIÓN DE LA MEMORIA.

  • RAM

    LUEGO DE LA SECUENCIA DEESCRITURA SE LEEN LOS DATOSPREVIAMENTE ESCRITOS.

  • Sergio Noriega - 2014

    PROYECTO CU1

    Descripción de un control de memoriaRAM elemental para escritura-lecturacon una máquina de estado y un registrocontador.

    CU1

  • clock

    BUSDATAMEMIN

    BUS DATAMEMOUT

    BUS DIRMEM

    MEM

    OR

    IA

    RSTCLK

    CONTROL

    PC

    16

    FPGA

    CU1

    MEM

    OR

    IA

    RA

    M

    X“0

    00

    0”

    clock

    wren

    data

    address

    q

    X“0

    00

    0”

    opselecpc,clockpc

    12

    16

    16

    VALORES CONSTANTES

  • FPGAPC16

    PC

    16

    clockpc

    entradapc

    opselecpc (1..0)

    1616

    GENERADOR DE ESTÍMULOS

    DESDE TEST BENCH salidapc

  • Sergio Noriega - 2014

    Descripción en VHDL de unregistro-contador de 16 bitspreseteable (PC16)

  • PC16

  • PC16

  • PC16

    Sergio Noriega - 2014

  • PC16

  • CU1

    INSTANCIACIÓN DE LASENTIDADES “RAM” Y “PC16”DESCRIPTAS EN ARCHIVOSSEPARADOS E INVOCADOSAQUÍ COMO “COMPONENTES”

  • CU1

  • CU1

  • CU1REPORTE DEL COMPILADOR

  • CU1DIAGRAMA TEMPORAL MOSTRANDO LA EVOLUCIÓN DE LAS SEÑALES

  • Sergio Noriega - 2014

    PROYECTO CU2

    Descripción de un control de memoriaRAM elemental para escritura-lecturacon una máquina de estado y un registrocontador y latch para el bus de direcciones.

    CU2

  • BUSDATAMEMIN

    BUS DATAMEMOUT

    BUS DIRMEM

    MEM

    OR

    IA

    BUS CONTROL

    RSTCLK

    CONTROL

    PC

    16

    MA

    R

    FPGACU2

    MEM

    OR

    IA

    X”0

    00

    0”

    dat

    a

  • CU2

    Trabajos a realizar en este proyecto:

    1) Leer el dato desde la RAM (posición de memoria X”0000”).2) Incrementar en ‘1’ el contenido de contador PC16.3) Leer el dato desde la RAM de la siguiente posición de memoria.4) Incrementar en ‘1’ el contenido de contador PC16.5) Leer el dato desde la RAM.

    Sergio Noriega - 2014

  • Sergio Noriega - 2014

    Descripción en VHDL de unregistro de 16 bits (MAR16)

  • FPGAMAR

    MA

    R1

    6

    clockmar

    entradamar

    escribirmar

    1616

    GENERADOR DE ESTÍMULOS

    DESDE TEST BENCH salidamar

  • MAR

  • MAR

  • MAR

  • MAR

  • CU2

  • CU2

  • CU2

    CARGO PC16 CON X”0000”PROGRAMO NUEVO ESTADO

    DESACTIVO PC16PROGRAMO NUEVO ESTADO

  • CU2

    ESCRIBO REGISTRO MARPROGRAMO COMO NUEVO ESTADO

    DESACTIVO REGISTRO MARPROGRAMO COMO NUEVO ESTADO

    INCREMENTO PC16PROGRAMO NUEVO ESTADO

    DESACTIVO REGISTRO PC16PROGRAMO COMO NUEVO ESTADO

  • CU2

    ESCRIBO REGISTRO MARPROGRAMO COMO NUEVO ESTADO

    DESACTIVO REGISTRO MARPROGRAMO COMO NUEVO ESTADO

  • CU2TEST-BENCH DEL PROYECTO CU2

  • CU2TEST-BENCH DEL PROYECTO CU2

  • CU2

  • CU2

    MEMORIA RAM PREVIAMENTEINICIALIZADA CON DATOS

  • CU2

  • CU3

    PROYECTO CU3

    DISEÑO EN VHDL DE CONTROLADOR DE ESCRITURA Y LECTURA DE UNA MEMORIA RAM.

    Sergio Noriega - 2014

  • BUSDATAMEMIN

    BUS DATAMEMOUT

    BUS DIRMEM

    MEM

    OR

    IA

    BUS CONTROL

    RST

    CLK

    CONTROL

    PC

    16

    MA

    RM

    DR

    OM

    DR

    I

    FPGACU3

    MEM

    OR

    IA

    RX

    X”0

    00

    0”

    MAR:MEMORY ADDRESS REGISTER

    MDRI:MEMORYDATA-INREGISTER

    RX:DATAREGISTER

    MDRO:MEMORYDATA-OUTREGISTER

  • Sergio Noriega - 2014

    Descripción en VHDL de unregistro de 16 bits (MDRO)

  • FPGA

    MDRO

    MD

    RO

    clockmdro

    entradamdro

    escribirmdro

    1616

    GENERADOR DE ESTÍMULOS

    DESDE TEST BENCH salidamdro

  • MDRO

  • MDROTEST-BENCH DE MDRO

  • MDRO

  • Sergio Noriega - 2014

    Descripción en VHDL de unregistro de 16 bits (MDRI)

  • Sergio Noriega - 2014

    El mismo diseño que MDRO

  • FPGA

    MDRI

    MD

    RI

    clockmdri

    entradamdri

    escribirmdri

    1616

    GENERADOR DE ESTÍMULOS

    DESDE TEST BENCH salidamdri

  • Sergio Noriega - 2014

    TEST-BENCH DE MDRI

  • Sergio Noriega - 2014

    Descripción en VHDL de unregistro-contador de 16 bitspreseteable (RX)

  • FPGARX

    RX

    clockrx

    entradarx

    opselecrx (1..0)

    1616

    GENERADOR DE ESTÍMULOS

    DESDE TEST BENCH salidarx

    resetrx

  • RX

  • RXTEST-BENCH DE RX

  • RX

  • Diagrama temporal de la prueba del registro de datos RX

    INC DEC LATCHLATCH RESET SINCR.

    RX

  • CU3

  • CU3

  • CU3

  • CU3

    Carga PC con 0x0000

    Habilita MAR

  • CU3

    Escribe en MDRI

  • CU3

    Carga Rx contenido de MDRI

    Incrementa contenido de RX

  • CU3

    Modo escritura de RAM

    Carga Rx contenido de MDRI

  • CU3

  • CU3

  • CU3

    1) Se lee la posición de memoria 0x000 que contiene dato = 0x0000 en MDRI.2) Se escribe el RX con dicho valor.3) Se incrementa el contenido de RX.4) Se transfiere el contenido de RX a MDRO.5) Se configura la RAM para escritura.