Diseño y verificación en VHDL de microcontrolador ......1) Leer el dato desde la RAM (posición de...

Post on 07-Aug-2020

4 views 0 download

Transcript of Diseño y verificación en VHDL de microcontrolador ......1) Leer el dato desde la RAM (posición de...

SEMINARIO DE EXTENSIÓN DE ISLD – 2017

Clase inicial: Jueves 24 de Agosto, de 8:15 a 10:15 hs, Aula 32. Total 12 clases, días Jueves subsiguientes.

Sergio Noriega

Diseño y verificación en VHDL de microcontrolador

implementado en FPGA

uC16

Alcance del proyecto

uC

Conversor ADC

Controlador de ADC

ROM RAM

Controlador bus I2C

Controlador Display VGA

FPGA

Controlador Display LCD

Entradas DIGITAL

Salidas DIGITAL

Monitor VGA

Memoria serie

EEPROM

Display 16x2 LCD

Contador Universal

MÓDULO 1

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 .

uP Memoria

+ Periféricos

BUS DE CONTROL

BUS DE DIRECCIONES

BUS DE DATOS

DIAGRAMA EN BLOQUES DE UN SISTEMA BÁSICO DE MICROPROCESADOR

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

BUS DATA MEM IN

BUS DATA MEM OUT

BUS DIR MEM

RAM

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

RAM

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

USE RAM DEDICADA

REGISTROS = 4096 ANCHO PALABRA =16

RAM

RAM CONTENIDO DEL ARCHIVO RAM.HEX PARA ESTE PROYECTO

CONTENIDO EN HEXA DE LA MEMORIA RAM UNA VEZ CREADA.

FILE

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

RAM REPORTE FINAL DEL COMPILADOR

DETECCIÓN DEL COMPILADOR DE MEMORIA RAM

RAM

Descripción del testbench en VHDL 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 Y SE 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 DE ESCRITURA SE LEEN LOS DATOS PREVIAMENTE ESCRITOS.

PROYECTO CU1 Descripción de un control de memoria RAM elemental para escritura-lectura con una máquina de estado y un registro contador.

CU1

clock

BUS DATA MEM IN

BUS DATA MEM OUT

BUS DIR MEM

MEM

OR

IA

RST CLK

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

FPGA PC16

PC

16

clockpc

entradapc

opselecpc (1..0)

16 16

GENERADOR DE ESTÍMULOS

DESDE TEST BENCH salidapc

Descripción en VHDL de un registro-contador de 16 bits preseteable (PC16)

PC16

PC16

PC16

PC16

CU1

INSTANCIACIÓN DE LAS ENTIDADES “RAM” Y “PC16” DESCRIPTAS EN ARCHIVOS SEPARADOS E INVOCADOS AQUÍ COMO “COMPONENTES”

CU1

CU1

CU1 REPORTE DEL COMPILADOR

CU1 DIAGRAMA TEMPORAL MOSTRANDO LA EVOLUCIÓN DE LAS SEÑALES

PROYECTO CU2 Descripción de un control de memoria RAM elemental para escritura-lectura con una máquina de estado y un registro contador y latch para el bus de direcciones.

CU2

BUS DATA MEM IN

BUS DATA MEM OUT

BUS DIR MEM

MEM

OR

IA

BUS CONTROL

RST CLK

CONTROL

PC

16

MA

R

FPGA CU2

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.

Descripción en VHDL de un registro de 16 bits (MAR16)

FPGA MAR

MA

R1

6

clockmar

entradamar

escribirmar

16 16

GENERADOR DE ESTÍMULOS

DESDE TEST BENCH salidamar

MAR

MAR

MAR

MAR

CU2

CU2

CU2

CARGO PC16 CON X”0000” PROGRAMO NUEVO ESTADO

DESACTIVO PC16 PROGRAMO NUEVO ESTADO

CU2

ESCRIBO REGISTRO MAR PROGRAMO COMO NUEVO ESTADO

DESACTIVO REGISTRO MAR PROGRAMO COMO NUEVO ESTADO

INCREMENTO PC16 PROGRAMO NUEVO ESTADO

DESACTIVO REGISTRO PC16 PROGRAMO COMO NUEVO ESTADO

CU2

ESCRIBO REGISTRO MAR PROGRAMO COMO NUEVO ESTADO

DESACTIVO REGISTRO MAR PROGRAMO COMO NUEVO ESTADO

CU2 TEST-BENCH DEL PROYECTO CU2

CU2 TEST-BENCH DEL PROYECTO CU2

CU2

CU2

MEMORIA RAM PREVIAMENTE INICIALIZADA CON DATOS

CU2

CU3

PROYECTO CU3

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

BUS DATA MEM IN

BUS DATA MEM OUT

BUS DIR MEM

MEM

OR

IA

BUS CONTROL

RST CLK

CONTROL

PC

16

MA

R

MD

RO

M

DR

I

FPGA CU3

MEM

OR

IA

RX

X”0

00

0”

MAR: MEMORY ADDRESS REGISTER MDRI: MEMORY DATA-IN REGISTER RX: DATA REGISTER MDRO: MEMORY DATA-OUT REGISTER

Descripción en VHDL de un registro de 16 bits (MDRO)

FPGA

MDRO

MD

RO

clockmdro

entradamdro

escribirmdro

16 16

GENERADOR DE ESTÍMULOS

DESDE TEST BENCH salidamdro

MDRO

MDRO TEST-BENCH DE MDRO

MDRO

Descripción en VHDL de un registro de 16 bits (MDRI)

El mismo diseño que MDRO

FPGA

MDRI

MD

RI

clockmdri

entradamdri

escribirmdri

16 16

GENERADOR DE ESTÍMULOS

DESDE TEST BENCH salidamdri

TEST-BENCH DE MDRI

Descripción en VHDL de un registro-contador de 16 bits preseteable (RX)

FPGA RX

RX

clockrx

entradarx

opselecrx (1..0)

16 16

GENERADOR DE ESTÍMULOS

DESDE TEST BENCH salidarx

resetrx

RX

RX TEST-BENCH DE RX

RX

Diagrama temporal de la prueba del registro de datos RX

INC DEC LATCH LATCH 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.