38
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

Autor: Sergio García López Director: Francesc Josep Sánchez i Robert

  • Upload
    ralph

  • View
    25

  • Download
    0

Embed Size (px)

DESCRIPTION

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. Spartan-3AN. Arquitectura interna. - PowerPoint PPT Presentation

Citation preview

Page 1: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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

Page 2: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

2

Spartan-3AN

Page 3: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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).

Page 4: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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.

Page 5: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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 )

Page 6: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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;

Page 7: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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”

Page 8: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

8

ISE Project Navigator

Page 9: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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.

Page 10: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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

Page 11: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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;

Page 12: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

12

PlanAhead

•Esta herramienta permite introducir la asignación de pines manualmente uno a uno.

Page 13: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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.

Page 14: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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;

Page 15: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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.

Page 16: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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.

Page 17: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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.

Page 18: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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)

Page 19: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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';

Page 20: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

20

Divisor de frecuencia (Manual)--Simulación--

Si definimos un periodo de CLK de 1ns el resultado de la simulación es el siguiente.

Page 21: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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

Page 22: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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

Page 23: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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;

Page 24: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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.

Page 25: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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

Page 26: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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

Page 27: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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.

Page 28: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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.

Page 29: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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

Page 30: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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

Page 31: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

31

Gestión del tiempo.

• Estos tres componentes son los encargados de controlar horas, minutos y segundos.

Page 32: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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;

Page 33: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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.

Page 34: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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.

Page 35: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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.

Page 36: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

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.

Page 37: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

37

Comprobación de la aplicación

Page 38: Autor:  Sergio García López Director:  Francesc Josep Sánchez  i  Robert

38

Preguntas.