Post on 12-Jan-2016
description
1
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
2
Spartan-3AN
3
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).
4
Flujo de diseño. Especificaciones
Crear RTLY Código de la aplicación
Simulaciones funcionales
Simulación a nivel de puertas lógicas.
Configuración de pines para una FPGA concreta.
Grabar el codigo en la FPGA
Prototipo de la aplicación.
No correcto.
Flu
jo d
e di
seño
.
Síntesis del código
Correcto
Correcto
Correcto
No correcto.
No correcto.
Correcto.
Correcto.
Correcto.
Especificaciones.Decidir como se han de cumplir las
especificaciones y diseñar el modelo a seguir.
Realización.Tras crear el código de la aplicación es
necesario asegurar su correcto funcionamiento mediante simulaciones antes de sintetizarlo.
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.
5
Sistemas combinacionales.
• Son aquellos sistemas en que las salidas dependen exclusivamente de las entradas y su respuesta es constante y deducible matemáticamente.
Circuito Combinacional.
X( n-1 ...0 ) Y( m-1 ...0 )
6
Uso de los Leeds y los pulsadores.
4 Entradas4 Salidas
LDR[0]SW[0]SW[1]SW[2]
SW[3]
LDR[1]LDR[2]LDR[3]
Se establece una asignación entre los 4 selectores de entrada y 4 leeds de salida.
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
beginLDR <= NOT(SW);
end Behavioral;
7
Archivo DO para simulaciones.
restartadd wave SWadd wave LDR force SW 1011run 100force SW 0011run 100force SW 1100run 100force SW 1001run 100force SW 0101run 100run 200
Se reinician los registros.Se definen las variables a utilizar.
Add wave” nombre señal”.
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”
8
ISE Project Navigator
9
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.
10
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
11
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 "LDR[0]" LOC = R20;NET "LDR[1]" LOC = T19;NET "LDR[2]" LOC = U20;NET "LDR[3]" LOC = U19;NET "SW[0]" LOC = V8;NET "SW[1]" LOC = U10;NET "SW[2]" LOC = U8;NET "SW[3]" LOC = T9;
12
PlanAhead
•Esta herramienta permite introducir la asignación de pines manualmente uno a uno.
13
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.
14
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;
15
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.
16
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.
17
Sistemas secuenciales.
• 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.
Sistema combinacional.
Sistema de memoria.
ZX
Y
• La mayoría de los sistemas secuenciales están gobernados por señales de reloj.
18
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)
19
Divisor de frecuencia (Manual)
0TC10 = ‘0’
4TC10 = ‘0’
(Nº - 1)TC10 = ‘1’
1TC10 = ‘0’
3TC10 = ‘0’
2TC10 = ‘0’
Nota:N es el valor por el cual se quiere dividir la frecuencia de entrada.
While CE = ‘0’TC10 = ‘1’
While CE = ‘0’
While CE = ‘0’ While CE = ‘0’
While CE = ‘0’
While CE = ‘0’
CE = ‘1’
CE = ‘1’
CE = ‘1’
CE = ‘1’
CE = ‘1’CE = ‘1’
freq_divider_10
CD
CE
CLK
TC_10
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.
Salida TC10: Esta salida proporcionara la nueva frecuencia resultante del divisor.
IF CE = '1' THEN
IF (present_state = "110001") THEN future_state <= "000000“;ELSE future_state <= present_state + 1;END IF;ELSE future_state <= present_state;END IF;
TC10 <= '1' WHEN (present_state = "110001" AND CE = '1') ELSE '0';
20
Divisor de frecuencia (Manual)--Simulación--
Si definimos un periodo de CLK de 1ns el resultado de la simulación es el siguiente.
21
Digital Clock Manager (DCM)
• 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.
Bloque_DCM
CLKIN_IN
RST_IN
CLKDV_OUT
CLKFX_OUT
CLKIN_IBUFG_OUT
CLK0_OUT
LOCKED_OUT
22
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.
freq_divider_10 Bloque_DCM
CD
CE
CLK
TC_10
CLKIN_IN
RST_IN
CLKDV_OUT
CLKFX_OUT
CLKIN_IBUFG_OUT
CLK0_OUT
LOCKED_OUT
CD
CLK
Contador1
CD
CE
CLK
contador_out
Contador21
CD
CE
CLK
contador_out2
CE
( 3 downto 0 ) ( 3 downto 0 )
TC_out TC_out2
23
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.
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.
assert “Condición”report "<Texto que queremos mostrar>"
severity note/warning/error;
24
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.
25
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 Spartan-3AN, y cuando el usuario decida modificar un dato este parpadeara para facilitar su uso.
RelojCE
CLK
CD
MODESETE
Hora
UD_L
26
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.
Controlador DATAPATH
RELOJ
CONTROLENTRADAS
CONTROLSEÑALES
ESTADOSSEÑALES
ENTRADA DATOS
SALIDADATOS
27
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.
28
Controlador: Maquina Estados(II)
Mux22
Modulo12
(Horas)
Modulo60
(Minutos)
Modulo60
(Segundos)
Mux23
Mux24
CH1
TC60CECE
CH2 CH1 CH2 CH1 CH2S S S
CD
CLK
UD_L
CD
CLK
UD_L
TC60TC24
UD_L
STATE MACHINESET
MODE
HT(3..0)
CEHor CEMin CESeg
T
HU(3..0)
U
CEH
MT(3..0) MU(3..0)
T U
ST(3..0) SU(3..0)
T U
Mux21
CH
1
CH
2
S
CLK_1Hz
CLK_2Hz
CD
CE
S2Hz1HzUD_LCECD
CE
CD
UD_L
CLK
CLK
CD
CLK
UD_L
TC24TC60sTC60m
CEM CES
• La maquina de estados hace variar el funcionamiento del sistema mediante 4 selectores.
• Los selectores actúa sobre los “Count enable” (CE) de los componentes de control temporal.
• En los estados de control, la entrada CE de los módulos se gestionan mediante la entrada MODE.
29
Gestión de Reloj. (I)
• Para conseguir las frecuencias deseadas se conectan en cascada los divisores realizados anteriormente.
freq_div_10
TC10
CD
CE
CLKfreq_div_100
TC100
CD
CE
CLKfreq_div_49999
TC49999
CD
CE
CLK
CD
CLK
CE
CLK_1000Hz
CLK_10Hz
CLK_1Hz
CE2CE3
CE1
Entradas
Salidas
30
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.
freq_divider_top DCMclock
CD
CE
CLK
CLK_1Hz
CLK_10Hz
CLK_1000Hz
CLKIN_IN
RST_IN
CLKDV_OUT
CLKFX_OUT
CLKIN_IBUFG_OUT
CLK0_OUT
LOCKED_OUT
CLK_10000hez
CD
CLK
31
Gestión del tiempo.
• Estos tres componentes son los encargados de controlar horas, minutos y segundos.
32
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;
33
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.
34
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.
35
Esquema final completo
lcd
CLKDB
RS
RW
ADR1
ADR2
CS
OE
rdone
(7 downto 0)
Convnum1Count LDR1
freq_divider_topDCMclock
CLK_1Hz
CLK_10Hz
CLK_1000Hz
CLKIN_IN
RST_IN
CLK_10000hez
CLKFX_OUT
CLKIN_IBUFG_OUT
CLK0_OUT
LOCKED_OUT
UD_L
STATE MACHINESET
MODE
CLK
CLK2
CD
CEHT
HU
MT
MU
ST
SU
CLK
CD
CE
UD_L
SETE
MODE
OE
CS
rdone
ADR2
ADR1
RW
RS
DB (7 downto 0)
Salidas
Entradas
rst
CLK
CD
CE
CL
K0
_O
UT
CL
K_
1h
ez
CL
K_
10
he
z
Convnum2Count LDR1
Convnum3Count LDR1
Convnum4CountLDR1
Convnum5CountLDR1
Convnum6CountLDR1
TENS3sig (3 downto 0)
UNIS3sig (3 downto 0)
TENS2sig (3 downto 0)
UNIS2sig (3 downto 0)
TENSsig (3 downto 0)
UNISsig (3 downto 0)
LDR1sigLDR2sigLDR3sigLDR4sigLDR5sigLDR6sig
entrada1entrada2entrada3entrada4entrada5entrada6
• Este esquema interconecta todos los componentes internos y las salidas y entradas físicas de la aplicación.
36
RTL del sistema completo
• El RTL muestra como el programa a la hora de crear el modelo del circuito sigue el esquema teórico.
37
Comprobación de la aplicación
38
Preguntas.