Diapositiva 1

Report
Introducción al diseño de
sistemas digitales reconfigurables
en FPGA con VHDL y la tarjeta
Spartan-3AN de Xilinx
Autor: Sergio García López
Director: Francesc Josep Sánchez i Robert
1
Spartan-3AN
2
Arquitectura interna
•Lógica de bloques configurable o Configurable
Logic Blocks (CLBs) .
•Entradas y salidas de los bloques o
Input/Output Blocks (IOBs).
•RAM.
•Multiplicador de bloques.
•Control de Reloj o Digital Clock Manager (DCM).
3
Flujo de diseño.
Especificaciones
Crear RTL
Y Código de la aplicación
Especificaciones.
Simulaciones funcionales
Decidir como se han de cumplir las
especificaciones y diseñar el modelo a seguir.
Correcto
Realización.
Correcto.
Configuración de pines para
una FPGA concreta.
Flujo de diseño.
Tras crear el código de la aplicación es
necesario asegurar su correcto
funcionamiento mediante simulaciones
antes de sintetizarlo.
No correcto.
Síntesis del código
Simulación a nivel de
puertas lógicas.
Síntesis del código.
Antes de grabar un programa en la placa de
destino, será necesario simular su
comportamiento, esta vez ya con la
configuración de pines decidida, a fin de
comprobar sus retardos de propagación y su
funcionamiento final.
Correcto
No correcto.
Correcto.
Grabar el codigo en la
FPGA
Correcto
No correcto.
Correcto.
Prototipo de la aplicación.
4
Sistemas combinacionales.
X( n-1 ...0 )
Circuito
Combinacional.
Y( m-1 ...0 )
• Son aquellos sistemas en que las salidas dependen
exclusivamente de las entradas y su respuesta es
constante y deducible matemáticamente.
5
Uso de los Leeds y los
pulsadores.
Se establece una asignación entre los 4 selectores de entrada y 4 leeds
de salida.
SW[0]
SW[1]
SW[2]
SW[3]
LDR[0]
4 Entradas
4 Salidas
LDR[1]
LDR[2]
LDR[3]
entity Prub1 is
Port ( SW : in STD_LOGIC_VECTOR (3 downto 0);
LDR :out STD_LOGIC_VECTOR (3 downto 0));
end Prub1;
architecture Behavioral of Prub1 is
begin
LDR <= NOT(SW);
end Behavioral;
6
Archivo DO para simulaciones.
restart
add wave SW
add wave LDR
Se reinician los registros.
Se definen las variables a utilizar.
Add wave” nombre señal”.
force SW
run 100
force SW
run 100
force SW
run 100
force SW
run 100
force SW
run 100
run 200
Se fuerza un valor de entrada y se espera un tiempo
prudencial de ejecución para observar los resultados.
Forcé “nombre entrada” “valor deseado”
Run “Tiempo deseado”
1011
0011
1100
1001
0101
7
ISE Project Navigator
8
Escritura y Síntesis.
•Añadir un nuevo archivo.
•Introducir el código en este nuevo archivo.
•Sintetizar el documento para comprobar si
se producen errores durante el proceso.
9
Asignación de pines.
• El programa nos permite introducir los datos de forma
manual en el archivo .UCF de configuración, o de forma
automática mediante una aplicación propia, PlanAhead.
1. Archivo .UCF
2. PlanAhead
10
Archivo .UCF
• El formato del documento es el siguiente:
#############################################################################
# Discrete Indicators (LED)
#
#############################################################################
NET "LED<0>" LOC = "R20"
| IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
NET "LED<1>" LOC = "T19"
| IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
• Para este proyecto se
edita manualmente puesto
que la nomenclatura de
salidas no es la misma que
en el Archivo .UCF original.
NET
NET
NET
NET
NET
NET
NET
NET
"LDR[0]" LOC = R20;
"LDR[1]" LOC = T19;
"LDR[2]" LOC = U20;
"LDR[3]" LOC = U19;
"SW[0]" LOC = V8;
"SW[1]" LOC = U10;
"SW[2]" LOC = U8;
"SW[3]" LOC = T9;
11
PlanAhead
•Esta herramienta permite introducir
la asignación de pines manualmente
uno a uno.
12
Comprobación de la asignación
de pines y sintetizado.
• Un método para comprobar la asignación
es mediante el Design Summary.
• Para completar toda la cadena de
sintetizado y generar todos los
archivos necesarios para la simulación
temporal es necesario Generar el
programa a grabar en la Spartan-3AN.
13
Simulación temporal mediante
TestBench (I)
• Este archivo permite integrar la simulación dentro del ISE
Project Navigator y definir las pautas a seguir.
stim_proc: process
begin
SW<="1111";
wait for 100 ns;
SW<="1011";
wait for 100 ns;
SW<="0011";
wait for 100 ns;
SW<="1100";
wait for 100 ns;
SW<="1001";
wait for 100 ns;
SW<="0101";
wait for 100 ns;
wait for 200 ns;
wait;
end process;
14
Simulación temporal mediante
TestBench (II)
• En la simulación temporal se pueden observa los retardos que
se producen durante la ejecución del código.
• Los retardos serán una constante durante
todo el proyecto que oscilan entre 5 y 8 ns.
15
Grabado en la Spartan-3AN
• Conectar la placa y alimentarla.
• Detectar la placa por el programa de grabado (ISE iMPACT).
• Introducción y grabado del código.
16
Sistemas secuenciales.
X
Sistema
combinacional.
Z
Y
Sistema de
memoria.
•
A diferencia de los Sistemas combinacionales, en los sistemas secuenciales, los
valores de las salidas, en un momento dado no dependen exclusivamente de las
entradas.
•
La mayoría de los sistemas secuenciales están gobernados por señales de reloj.
17
Gestión de Reloj
• Para gestionar el reloj de 50 Mhz que nos proporciona la
Espartan-3AN, se utilizará un divisor de frecuencia realizado
manualmente y la herramienta de reloj Digital Clock Manager.
1. Divisor de frecuencia (Manual)
2. Digital Clock Manager (DCM)
18
Divisor de frecuencia (Manual)
Entradas CLK: Es la entrada de 50MHz disponible en la placa.
CD: Reiniciara el contador cuando se active.
CE: Habilitara el contador para que pueda
incrementar en cada iteración.
CD
CE
CLK
freq_divider_10
TC_10
Salida
While CE = ‘0’
TC10 = ‘1’
IF CE = '1' THEN
IF (present_state
future_state <=
ELSE
future_state <=
END IF;
ELSE
future_state <=
END IF;
TC10: Esta salida proporcionara la nueva frecuencia
resultante del divisor.
= "110001") THEN
"000000“;
CE = ‘1’
0
CE = ‘1’
TC10 = ‘0’
While CE = ‘0’
While CE = ‘0’
(Nº - 1)
1
TC10 = ‘1’
TC10 = ‘0’
CE = ‘1’
present_state + 1;
2
TC10 = ‘0’
present_state;
While CE = ‘0’
3
TC10 = ‘0’
CE = ‘1’
While CE = ‘0’
4
TC10 <= '1' WHEN (present_state = "110001" AND CE =
'1') ELSE '0';
CE = ‘1’
TC10 = ‘0’
CE = ‘1’
Nota:
N es el valor por el cual se quiere
dividir la frecuencia de entrada.
While CE = ‘0’
19
Divisor de frecuencia (Manual)
--Simulación-Si definimos un periodo de CLK de 1ns el
resultado de la simulación es el siguiente.
20
Digital Clock Manager (DCM)
CLKDV_OUT
CLKIN_IN
RST_IN
CLKFX_OUT
Bloque_DCM
CLKIN_IBUFG_OUT
CLK0_OUT
LOCKED_OUT
•
Es la herramienta de reloj que nos proporciona el fabricante,
propiedad intelectual (IP).
•
Su uso es mediante formularios.
•
El programa genera automáticamente todo el código necesario para
instanciarlo.
21
Comparación de los sistemas
(I)
• Para comprobar el funcionamiento se implementa un doble
contador.
• Cada una de las salidas estará controlada por un sistema
diferente a fin de evaluar su comportamiento.
CD
CE
CLK
CD
CLKDV_OUT
CLKIN_IN
CLKFX_OUT
CE
CLK
RST_IN
freq_divider_10
Bloque_DCM
CLKIN_IBUFG_OUT
CLK0_OUT
LOCKED_OUT
TC_10
CD
CD
CE
CE
CLK
Contador1
TC_out
( 3 downto 0 )
contador_out
CLK
Contador21
TC_out2
( 3 downto 0 )
contador_out2
22
Comparación de los sistemas
(II)
• Assert o afirmaciones lógicas.
Se introducen ciertas afirmaciones en la simulación para poder seguir el
correcto funcionamiento de cada proceso.
assert “Condición”
report "<Texto que queremos mostrar>"
severity note/warning/error;
Note: Texto simple que notifica del evento.
Warning: Muestra un warning dentro de la ventana
de compilación.
Error: Muestra un error dentro de la ventana de
compilación e interrumpe el flujo del programa.
23
Comparación de los sistemas
(III)
• En las graficas se pueden observar los retardos que se
producen entre un método y otro.
• Las salidas de los dos componentes se harán funcionar a la
misma frecuencia.
24
Aplicación: Reloj en tiempo real
programable.
•
El reloj será capaz de mostrar horas, minutos y segundos.
•
Efectuara las operaciones de parado (CE) o puesta a cero (CD) en un instante
determinado y cuenta adelante o atrás (UD_L).
•
Permitirá aumentar o reducir el valor de horas, minutos o segundos al antojo del
usuario (MODE<=>SETE).
•
Los datos serán visualizados mediante una pantalla LCD integrada en la Spartan3AN, y cuando el usuario decida modificar un dato este parpadeara para facilitar
su uso.
CLK
CD
CE
UD_L
Reloj
Hora
MODE
SETE
25
Esquema de control del sistema.
• El sistema es regido por un controlador que gestiona
el funcionamiento de cada uno de los componentes
de la aplicación contenidos en el DATAPATH.
RELOJ
ENTRADA
DATOS
CONTROL
SEÑALES
Controlador
CONTROL
ENTRADAS
ESTADOS
SEÑALES
DATA
PATH
SALIDA
DATOS
26
Controlador: Maquina Estados
(I)
• Consta de 4 estados controlados por un vector de 2 bits.
• El estado de reposo hace funcionar al reloj normalmente (Estado: “00”).
• Los estados “01”, ”10” y “11” permiten al usuario cambiar la hora
modificando segundos, minutos y horas independientemente.
• Para pasar de un estado a otro se actúa sobre la entrada SETE y para
modificar segundos, minutos y horas dentro de cada estado es mediante
la entrada MODE.
27
Controlador: Maquina Estados(II)
CD
CE
UD_L
STATE
MACHINE
CLK_2Hz
SET
MODE
CD
CE
UD_L
1Hz
En los estados de control, la
entrada CE de los módulos se
gestionan mediante la entrada
MODE.
CH1
Los selectores actúa sobre los
“Count enable” (CE) de los
componentes de control
temporal.
2Hz
Mux2
1
•
CLK_1Hz
CH2
•
La maquina de estados hace
variar el funcionamiento del
sistema mediante 4
selectores.
S
CEHor
CEMin
CESeg
S
•
CLK
S
CH1 Mux2 CH2
2
CEH
S
CE
CH1 Mux2 CH2
3
CEM
TC24
CH1 Mux2 CH2
S
4
CE
TC24
Modulo
12
(Horas)
CD
CD
Modulo
60
(Minutos)
CLK
CLK
UD_L
TC60
T
U
HT(3..0) HU(3..0)
UD_L
CES
TC60m
CE
CD
TC60
TC60s
Modulo
60
(Segundos)
CLK
T
U
MT(3..0) MU(3..0)
UD_L
T
U
ST(3..0) SU(3..0)
CLK
UD_L
CD
28
Gestión de Reloj.
(I)
• Para conseguir las frecuencias deseadas se conectan en
cascada los divisores realizados anteriormente.
Entradas
CE
CD
CLK
CD
CD
CLK
CLK
freq_div_10
CD
CLK
freq_div_100
CE
CE
CE
TC10
freq_div_49999
TC100
TC49999
CE1
CE2
CE3
CLK_1000Hz
CLK_10Hz
CLK_1Hz
Salidas
29
Gestión de Reloj.
(II)
• En el diseño se incorpora el componente DCM para hacer el primer salto
en frecuencia (50 MHz  10 MHz)
• El componente DCM hace un mejor trato de la señal de reloj al
implementar en su diseño la corrección de ciclo.
CD
CLK
CD
CLK_1Hz
CE
CLK
CLKDV_OUT
CLKIN_IN
freq_divider_top
CLKFX_OUT
RST_IN
CLK_10Hz
CLK_1000Hz
DCMclock
CLKIN_IBUFG_OUT
CLK0_OUT
LOCKED_OUT
CLK_10000hez
30
Gestión del tiempo.
• Estos tres componentes son los encargados de
controlar horas, minutos y segundos.
31
LCD
• El LCD es el encargado de mostrar
minutos, segundos y horas por pantalla.
• No todos los datos cargados en la pantalla son
visibles, por esta razón será necesario tabular
los datos para situarlos en la región visible.
• Dentro del código original se ha incorporado un proceso de
adquisición de datos provenientes de la maquina de estados.
begin
process
begin
LCD_CMDS(44) <= entrada5;
LCD_CMDS(45) <= entrada6;
LCD_CMDS(47) <= entrada3;
LCD_CMDS(48) <= entrada4;
LCD_CMDS(50) <= entrada1;
LCD_CMDS(51) <= entrada2;
end process;
32
Convertidor de 4 bits a ASCII
• El periférico LCD necesita los datos a representar en ASCII, pero todas las
salidas de información de la maquina de estados son vectores de 4 bits.
• Este componente convierte los vectores de 4 bits al formato en ASCCI
necesario para el LCD.
El estado 10 (“1010”) codifica un
espacio en blanco a fin de ser
utilizado por el componente
parpadeo.
33
Parpadeo del número
seleccionado.
• El parpadeo se produce haciendo
oscilar el dato a modificar de su
valor real a 10, que corresponde a
un espacio dentro del componente
convertidor de datos.
34
Esquema final completo
Entradas
CLK
CD
SETE
MODE
CLK
DCMclock
CLK_1Hz
CD
CLKIN_IBUFG_OUT
CE
CLK0_OUT
freq_divider_top
LOCKED_OUT
CLK_10Hz
CLK_1000Hz
CLK_10hez
CLK_1hez
CLK_10000hez
CLKFX_OUT
CLKIN_IN
RST_IN
CLK0_OUT
• Este esquema interconecta
todos los componentes
internos y las salidas y
entradas físicas de la
aplicación.
CE
UD_L
CD
HT TENS3sig (3 downto 0)
CE
HU UNIS3sig (3 downto 0)
UD_L
MT TENS2sig (3 downto 0)
MU UNIS2sig (3 downto 0)
CLK
STATE
MACHINE
CLK2
SET
ST TENSsig (3 downto 0)
SU UNISsig (3 downto 0)
MODE
Count
Convnum1
Count
Convnum2
Count
Convnum3
LDR1
LDR1
Convnum4
LDR1
LDR1
Convnum5
LDR1
LDR1
Convnum6
Count
Count
Count
LDR1sig
LDR2sig
LDR3sig
LDR4sig
LDR5sig
LDR6sig
(7 downto 0)
CLK
DB
RS
rst
entrada6
entrada5
entrada4
entrada3
entrada2
entrada1
lcd
RW
ADR1
ADR2
CS
OE
rdone
Salidas
DB (7 downto 0)
RS
RW
ADR1
ADR2
rdone
CS
OE
35
RTL del sistema completo
• El RTL muestra como el programa a la hora de crear el
modelo del circuito sigue el esquema teórico.
36
Comprobación de la aplicación
37
Preguntas.
38

similar documents