View
5
Download
0
Category
Preview:
Citation preview
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.
Recommended