1 introduccion a vhdl
DESCRIPTION
introduccion a electronica digital y vhdl con un enfoque a procesmaiento digital de señalesTRANSCRIPT
1
Diseño de Hardware con VHDL
Ferney Amaya Fernández [email protected]
Universidad Pontificia Bolivariana
Medellín - Colombia
Agenda
Ferney Amaya 2
Sesión Lectura Tema Objetivos1 Introducción al
diseño con FPGAs-Procesamiento Digital de Señales-Arquitectura de FPGAs-VHDL-Flujo de diseño empleando FPGAs-Tarjeta Spartan 3
Introducir los temas básicos del curso.
2 Herramientas básicas de diseño y flujo de diseño. Guía de laboratorio.
-Práctica 1: Flujo de diseño en FPGAsAsignación de pines y restricciones de tiempo-Técnicas de síntesis-Core-Generator-Práctica 2, 3: Unidad MAC y manejo básico de I/O
Adquirir conocimientos en las herramientas de diseño y el flujo de diseño en FPGAs.
3 Procesamiento digital de señales en FPGAs. Guía de laboratorio.
-Empleo de bloques de memoria, inferencia de memoria.-Práctica 4: Generador de secuencias.-Procesamiento de señales-Práctica 5: Generador de tonos FPGA-Filtrado FPGA
Conocer técnicas de procesamiento digital de señales para la generación de soluciones empleando FPGAs.
4 Herramientas complementarias. Guía de laboratorio.
-Práctica 6: Filtrado FPGAs-ChipScope Pro-Práctica 7: ChipScope Pro-PicoBlaze
Conocer herramientas complementarias para el diseño en FPGAs.
5 Herramientas complementarias. Guía de laboratorio.
-Práctica: ChipScope Pro-System Generator-Práctica: System Generator
Conocer herramientas complementarias para el diseño en FPGAs.
Evaluacion
• Proyecto 60 puntos
• Actividades y laboratorios 40 puntos
– Laboratorios 7 prácticas – 28 puntos
– Ejercicios diarios 6 ejercicios – 12 puntos
Ferney Amaya 3
4
Agenda
Conceptos básicos
Procesamiento Digital de Señales
Arquitectura de FPGAs
VHDL
Flujo de diseño empleando FPGAs
Tarjeta Spartan 3
5
Sistema DSP en tiempo real
Acondicionamiento
analógico A/DProcesamiento
DigitalD/A Adecuación
Procesamiento: convolución, correlación, modulación, transformación.
Dispositivos para el procesamiento digital: PC, microprocesadores, microcontroladores, DSPs (Digital
Signal Processors), ASICs (Application Specific
Integrated Circuit), FPGAs (Field Programmable Gate
Array).
6
Señal analógica y digital
Acondicionamiento
analógico A/DProcesamiento
DigitalD/A Adecuación
señal analógica señal muestreada, señal cuantizada, señal digitalizada
+5
V
–5
T ime
7
Comparación analógico - digital
Característica Analógico Digital
Efectos Temperatura, humedad,
tiempo, ruido
Redondeo, truncamiento,
Sensibilidad al ruido alta baja
Costo / tamaño elevado Bajo / medio
confiabilidad media alta
Calibración manual digital
Actualización Por hardware Por software
Consumo de
potencia
Elevado Bajo
SNR 50 – 60 dB Mayor a 100 dB
DSP• Digital Signal Processing• Digital Signal Processor
8
Dispositivos Procesamiento
• GPP, General Purpose Processor
(microprocesadores)
• DSP, Digital Signal Processor
• FPGA, Field Programmable Gate Array
• ASIC, Application Specific Integrated Circuit
Cada uno con unas características propias para determinadas aplicaciones.
El mejor dispositivo depende de la aplicación.
Grupo de bits
9
• Bit : un dígito binario
• Nibble : 4 bits
• Byte : 8 bits
• Word : grupo de 8, 16, 32, o 64 bits
• LSB - Least Significant Bit
• MSB - Most Significant Bit
Ejemplos
• 1010
• 0010 1011
• 1010 1010 1011
• Cuántos símbolos se pueden representar con r bits?
2r = N, rango de representación: desde el 0 hasta el 2r - 1
10
Binario ↔ Decimal – Entero
Como pasar el (13)10 a binario?
13 ÷ 2 = 6 → 1 LSB
6 ÷ 2 = 3 → 0
3 ÷ 2 = 1 → 1
1 ÷ 2 = 0 → 1 MSB
(13)10 = (1 1 0 1)2
Decimal a binario:
11
Binario ↔ Decimal – Entero
Como pasar el 1 1 0 1 a decimal
rArArArArAn
n
0
0
1
1
2
2
3
3
1
1... ××+×+×+×
−
−
Binario a decimal:
1x23 + 1x22 + 0x21 + 1x20 = 10
8 + 4 + 0 + 1
(1 1 0 1)2 = (13)10
12
Binario ↔ Decimal– Fraccional Punto Fijo
Como pasar el 0.35 a binario?
0.35 x 2 = 0.70 → 0 MSB
0.70 x 2 = 1.40 → 1
0.40 x 2 = 0.80 → 0
0.80 x 2 = 1.60 → 1
0.60 x 2 = 1.20 → 1 LSB
(0.35)10 = (0.01011…)2
13
Binario ↔ Decimal– Fraccional Punto Fijo
Como pasar el 0.01011 a decimal
= 0x2-1 + 1x2-2 + 0x2-3 + 1x2-4 + 1x2-5
= 0 + 0.25 + 0 + 0.0625 + 0.03125
= 0.34375
Error de cuantización: 0.0062
110100.
1x2-51x2-40x2-31x2-20x2-1
-5-4-3-2-1
Binario – Octal - Hexadecimal
• Octal: base 8
– Dígitos = 0,1,2,3,4,5,6,7
• Hexadecimal: base 16
– Dígitos = 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
• Facilidad de conversión entre las diferentes bases:
14
1 0 1 0 1 0 1 0 0 0
HEXA 2 A 8
OCTAL 1 2 . 5 0
Representación de números negativos
• MSB es el bit de signo:
• 0: positivo
• 1: negativo
• Los números positivos tienen la misma
representación en la mayoría de sistemas
• Para los números negativos hay 3 esquemas:
– Magnitud y signo
– Complemento a uno (1’)
– Complemento a dos (2’)
15
Negativos – Magnitud y signo
• MSB bit de signo, requiere un bit adicional
16
+0+1
+2
+3
+4
+5
+6
+7
00010000
0010
0011
0100
0101
0110
01111000
1100
1001
1010
1011
1101
1110
1111
-7
-6
-5
-4
-3
-2
-1-0
Dos representaciones del 0
La suma y resta no es simple:
• Circuitos separados
• Identificar signo y compararmagnitud
Rango de representación con r bits:
0 … ±(2r-1 – 1)
Negativos – Complemento a uno
• MSB bit de signo, requiere un bit adicional
• El negativo es el 1’
17
Dos representaciones del 0
La suma y resta no es simple:
• La resta es suma y 1’
Rango de representación r bits:
0 … ±(2r-1 – 1)
+0+1
+2
+3
+4
+5
+6
+7
00010000
0010
0011
0100
0101
0110
01111000
1100
1001
1010
1011
1101
1110
1111
-0
-1
-2
-3
-4
-5
-6-7
Negativos – Complemento a uno
• MSB bit de signo, requiere un bit adicional
• Rango de representación: 0 … ±(2r-1 – 1)
• Dos representaciones del 0
18
+0+1
+2
+3
+4
+5
+6
+7
00010000
0010
0011
0100
0101
0110
01111000
1100
1001
1010
1011
1101
1110
1111
-0
-1
-2
-3
-4
-5
-6-7
Ejemplo 1:
(+1) 0001
(+2) 0010
0011 → (3) No overflow
Ejemplo 2:
(+4) 0100
(+5) 0101
1001 → overflow
Negativos – Complemento a uno
• MSB bit de signo, requiere un bit adicional
• Rango de representación: 0 … ±(2r-1 – 1)
• Dos representaciones del 0
19
Ejemplo 3:
(-1) 1110
(-2) 1101
1 1011 → 1100 (-3)
Ejemplo 4:
(-4) 1011
(-5) 1010
1 0101 → overflow
+0+1
+2
+3
+4
+5
+6
+7
00010000
0010
0011
0100
0101
0110
01111000
1100
1001
1010
1011
1101
1110
1111
-0
-1
-2
-3
-4
-5
-6-7
Negativos – Complemento a uno
• MSB bit de signo, requiere un bit adicional
• Rango de representación: 0 … ±(2r-1 – 1)
• Dos representaciones del 0
20
+0+1
+2
+3
+4
+5
+6
+7
00010000
0010
0011
0100
0101
0110
01111000
1100
1001
1010
1011
1101
1110
1111
-0
-1
-2
-3
-4
-5
-6-7
Ejemplo 5:
(-3) 1100
(+4) 0100
1 0000 → 0001 (+1)
Ejemplo 6:
(-4) 1011
(+3) 0011
1110 → (-1)
Negativos – Complemento a dos
• MSB bit de signo
• Solo una representación del 0
• Rango de representación:
-2r-1 … (2r-1 – 1)
21
Conversión de N (negativo) a 2’:
Método 1: 2’ = N’ + 1
Método 2: 2’ = 2r - N
Ejemplo 4 bits:
(+5) : 0 1 0 1
(-5) : 1 0 1 1
+0+1
+2
+3
+4
+5
+6
+7
00010000
0010
0011
0100
0101
0110
01111000
1100
1001
1010
1011
1101
1110
1111
-1
-2
-3
-4
-5
-6
-7-8
Negativos – Complemento a dos
• MSB bit de signo
• Solo una representación del 0
• Rango de representación: -2r-1 … (2r-1 – 1)
22
+0+1
+2
+3
+4
+5
+6
+7
00010000
0010
0011
0100
0101
0110
01111000
1100
1001
1010
1011
1101
1110
1111
-1
-2
-3
-4
-5
-6
-7-8
Ejemplo 1:
(+1) 0001
(+2) 0010
0011 → (3) No overflow
Ejemplo 2:
(+4) 0100
(+5) 0101
1001 → overflow
Negativos – Complemento a dos
• MSB bit de signo
• Solo una representación del 0
• Rango de representación: -2r-1 … (2r-1 – 1)
+0+1
+2
+3
+4
+5
+6
+7
00010000
0010
0011
0100
0101
0110
01111000
1100
1001
1010
1011
1101
1110
1111
-1
-2
-3
-4
-5
-6
-7-8
Ejemplo 3:
(-1) 1111
(-2) 1110
1 1101 → (-3) ignorar carry
Ejemplo 4:
(-4) 1100
(-5) 1011
1 0111 → overflow23
Negativos – Complemento a dos
• MSB bit de signo
• Solo una representación del 0
• Rango de representación: -2r-1 … (2r-1 – 1)
+0+1
+2
+3
+4
+5
+6
+7
00010000
0010
0011
0100
0101
0110
01111000
1100
1001
1010
1011
1101
1110
1111
-1
-2
-3
-4
-5
-6
-7-8 24
Ejemplo 5:
(-3) 1101
(+4) 0100
1 0001 → (+1) ignorar carry
Ejemplo 6:
(-4) 1100
(+3) 0011
1111 → (-1)
Negativos – Complemento a dos
Ejercicio:
Pasar a 2’ en el formato 6.4 los siguientes valores:
• +0.5
• -0.5
• +1.0
• -1.0
• +0.35, Error de cuantización?
Ferney Amaya 25
Ejercicio
Definir el formato del siguiente valor en binario
1 1 0 0 0 1 1 0 1 0 1 1
Qué formato se requiere para representar:
a) Max: +0.9, Min: -1, 12 bits
b) Max: +1, Min: -1, 12 bits
c) Max: 0.8, Min: 0.2, 10 bits
d) Max: 278, Min: -138, 11 bits
operación Salida full precision
FIX_12_9 + FIX_8_3
FIX_8_7 x FIX_8_6
0 0 1 1 1 0 0 1 0 1 0 1 (2´) 917
El valor es: -917 / 32 = -28.65625
FIX_12_11
FIX_12_10
UFIX_10_10
FIX_11_0
Parte entera 3bits + 5bits => 6 bits => FIX_15_9
FIX_16_13
27
Punto fijo
• Matlab y Simulink usan el formato “double”: punto flotante 64-bits
• En procesamiento digital de señales generalmente se emplea el formato en punto fijo
. . . .
DOUBLE
1
-22
0
21
1
20
1
2-1
0
2-2
1
2-3
1
2-4
1
2-5
1
2-6
0
2-7
1
2-8
0
2-9
FIX_12_9
1
22
0
21
1
20
1
2-1
0
2-2
1
2-3
1
2-4
1
2-5
1
2-6
0
2-7
1
2-8
0
2-9
0
2-10
1
2-11
0
2-12
1
2-13
1 1 1 1. . . .
23
24
25
-26
QUANTIZATIONOVERFLOW
- Truncate
- Round
- Wrap
- Saturate
- Flag Error
Overflow
• Ocurre cuando un valor queda fuera del rango de representación.
• Hay varias opciones:
– Saturate: al máximo positivo o negativo
– Wrap; descarta los bits que sobran
– Flag as error: genera un error durante la simulación
0 1 1 1 1 1 1
FIX_7_4
- Satura (3.9375), máximo valor
- Wrap (-2.3125)
1 0 1 1 0 1 1 Full Precision output
1 0 1 1 0 1 1
FIX_7_4
0 1(13.6875)
28
Restricciones de tiempo
De entrada:
• Setup time: tsetup
• Hold time: thold
• Aperture time:
ta = tsetup + thold
29
CLK
tsetup
D
thold
ta
C L K
tc c q
tp c q
Q
De salida:
• Contamination delay: tccq
• Propagation delay: tpcq
Restricciones de tiempo
El mínimo Tc depende del retardo entre los
elementos del circuito
CLK
Q 1
D 2
Tc
tpcq
tpd
tsetup
CL
CLKCLK
Q 1 D2
R1 R2 Tc ≥ tpcq + tpd + tsetup
Restricciones de tiempo - Ejemplo
Para el circuito, hallar la frecuencia de reloj
tpd = 3*35 ps = 105 ps
Tc ≥ tpcq + tpd + tsetup
Tc ≥ (50 + 105 + 60) ps = 215 ps
fc ≤ 1/Tc = 4.65 GHz
CLK CLK
A
B
C
D
X'
Y '
X
Y
tpcq = 50 ps
tsetup = 60 ps
thold = 70 ps
tpd = 35 ps (por compuerta)
Clock skew
• El reloj no llega a todos los registros al tiempo
• Skew: diferencia entre dos flancos de reloj que cumplen el peor caso
32
tskew
CLK1
CLK2
CL
CLK2CLK1
R1 R2
Q1 D2
CLKdelay
CLK
Tc ≥ tpcq + tpd + tsetup + tskew
33
Agenda
Conceptos básicos
Procesamiento Digital de Señales
Arquitectura de FPGAs
VHDL
Flujo de diseño empleando FPGAs
Tarjeta Atlys
Señales discretas básicas
34
• Impulso unitario: (delta de Dirac)
=
= valorotro ,0
0n 1,][ nδ
• Seno y coseno discretas
( )mppNnsenx / 2[n] π=
=
sf
fnsenx 0 2[n] π
35
Principales momentos estadísticos
• Valor DC o promedio en el tiempo
• Varianza:
∑−
=
=1
0
1 N
i
ix xN
µ
∑−
=
−=1
0
22 )(1 N
i
ixN
µσ
• Valor cuadrático medio
∑−
=
=1
0
22 1][
N
i
ixN
xX
Correlación cruzada
36
Matlab: >>[xc,xi] = xcorr(x1,x2);>>stem(xi,xc)
∑−
=
=1
0
)()(N
n
xy nynxR
∑−
=
=1
0
)()(1 N
n
xy nynxN
R
Para dos secuencias x(n), y(n):
Depende del número de datos y del
desfase
Depende del desfase
∑−
=
+=1
0
)()(1
)(N
n
xy jnynxN
jR
2/11
0
1
0
22 )()(1
)()(
=
∑ ∑−
=
−
=
N
n
N
n
xy
xy
nynxN
jRjρ
Normalizada
Aplicaciones de la Correlación
37
Receptores en comunicaciones digitales: estudiar
el uso de la correlación para implementar un
demodulador BPSK con los siguientes parámetros:Fs = 64 kHz; % Frecuencia de muestreo
Fc = 2 kHz; % Frecuencia de portadora
Fb = 1 kHz; % Frecuencia de bits
38
Convolución
La convolución discreta se aplica a secuencias causales LTI.
∑∑∞
=
∞
=
−=−=00
][][][][][kk
knhkxkhknxny
x(n) h(n) y(n)
x(n): secuencia de entrada
h(n): respuesta del sistema al impulso
y(n): secuencia de salida
La convolución discreta:
39
Convolución discreta (1)
Ejemplo: Sistema con hk= 1, 2, 1, 0, hallar la salida para la
entrada x(n) = 3, 4 , 5, 6, 7, 8:
1 2 1 0 hk
0 0 0 0 x(n-k)
0 0 0 0 x(n-k)*hk
0suma
5 4 3
x(0)x(1)x(2)
? ? ?
y(0)
1
∑∞
=
−=0
][][][k
khknxny
40
Convolución discreta (2)
Ejemplo: Sistema con hk= 1, 2, 1, 0, hallar la salida para la
entrada x(n) = 3, 4 , 5, 6, 7, 8:
1 2 1 0 hk
3 0 0 0 x(n-k)
3 0 0 0 x(n-k)*hk
3suma
6 5 4
x(1)x(2)x(3)
3 ? ?
y(0)
2
41
Convolución discreta (3)
Ejemplo: Sistema con hk= 1, 2, 1, 0, hallar la salida para la
entrada x(n) = 3, 4 , 5, 6, 7, 8:
1 2 1 0 hk
4 3 0 0 x(n-k)
4 6 0 0 x(n-k)*hk
10suma
7 6 5
x(2)x(3)x(4)
10 3 ?
y(0)y(1)
3
42
Convolución discreta (4)
Ejemplo: Sistema con hk= 1, 2, 1, 0, hallar la salida para la
entrada x(n) = 3, 4 , 5, 6, 7, 8:
1 2 1 0 hk
5 4 3 0 x(n-k)
5 8 3 0 x(n-k)*hk
16suma
8 7 6
x(3)x(4)x(5)
16 10 3
y(1)y(2) y(0)
4
43
Ecuación en Diferencias - ED
En general:
∑∑==
−−−=N
k
k
M
k
k knyaknxbny10
)()()(
x(n) y(n)ak , bk
∑∞
=
−=0
)()(k
k knxbny
x(n) hk=bk y(n)
En algunos casos:
Transformada Z
Ejemplo: Hallar la transformada z de:
y(n) = 0.2x(n) + 0.1x(n-1) – 0.5y(n-1) – 0.8y(n-2)
∑∞
−∞=
−=n
nznxzX )()(
z: variable
compleja
Propiedades de Z:
Linealidad: ax1(n) + bx2(n) => aX1(z) + bX2(z)
Desplazamiento; x(n -m) => z-mX(z)
45
DFT Transformada Discreta de Fourier
• La DTF tiene periodo N
• La frecuencia angular discreta Ωo se trabaja en el
rango (periodo 2π):
-π ≤ Ωo ≤π
• La frecuencia discreta fo se calcula como:
fo =Ωo /(2π)
• La frecuencia discreta fo tiene el rango:
-0.5 ≤ fo ≤ 0.5
N
ff S=∆ '
46
Ejemplo DTF
Si: x[n] = [ 0 1 5 3 3 2 1 0]; ∑−
=
−=1
0
/2)()(N
n
NknjenxkX
π
En el tiempo
• x[0] = 0
• x[1] = 1
• x[2] = 5
• x[3] = 3
• x[4] = 3
• x[5] = 2
• x[6] = 1
• x[7] = 0
DTF
• X[0] = 15
• X[1] = -5.83 – 5.41j
• X[2] = -3.00
• X[3] = -0.17 + 2.59j
• X[4] = 3.00
• X[5] = -0.17 - 2.59j
• X[6] = -3
• X[7] = -5.83 – 5.41j
Cómo hallar la magnitud y la fase?
47
Filtros Digitales Ideales
-π π -π π -π π-0.5fc 0.5fc -0.5fc 0.5fc -0.5fc 0.5fc
Pasa-bajas Pasa-altas Pasa-banda
La ganancia es 1
Rango de frecuencia: -π ≤ ω ≤ π
48
Filtros FIR IIR
• Los filtros FIR pueden tener respuesta en fase lineal. Importante en transmisión de datos, imágenes. Los IIR tienen respuesta en fase no lineal especialmente cerca de los bordes.
• Los FIR siempre son estables. La estabilidad de los IIR no está garantizada.
• FIR requiere mas coeficientes, entonces mayor memoria, tiempo de procesamiento que los filtros IIR: recursos computacionales.
• Filtros análogos pueden transformarse a IIR logrando especificaciones similares. Esto no es posible con FIR.
49
Pasos – Especificación de
Requerimientos
δp: desviación banda de pasoδs: desviación banda de rechazofp: frecuencia en el borde de banda pasante
fs: frecuencia en el borde de banda rechazo
50
Filtros analógicos
Butterworth Elíptico
butter() ellip()
Chebyshev tipo I Chebishev tipo II
cheby1() cheby2()
51
Filtros analógicos
Bessel
Ejercicios
• Diseñar un filtro FIR pasa-banda con fs=1000Hz y frecuencias de corte desde 200 a 300 Hz. Emplee la función fir1().
• Diseñe un filtro IIR pasabanda con las características anteriores, emplee las funciones:
– Butterworth (butter)
– Chebycheb (cheby1): ripple de 0.5dB
– Elíptico (ellip): banda de rechazo menor a 30dB.
52
Múltiples tasas de procesamiento
• Cuando se tienen señales a diferentes tasas de muestreo:
– Hacer conversión D/A y A/D a la nueva tasa (distorsión introducida por los conversores)
– Hacer conversión en el dominio digital
Multiratefx fy
• fx: frecuencia de muestreo de entrada
• fy: frecuencia de muestreo de salida
• D, I son enteros primos entre si.
D
I
f
f
x
y=
Diezmado e interpolación
D
ff x
y =Pasa-bajasfx fyD
xy Iff =fx fyI Pasa-bajas
fx I LPF D fy
Ejercicios de Diezmado
• Una señal de audio debe procesarse inicialmente
a una frecuencia de muestreo de 48 kHz y luego
debe procesarse a 8 kHz, dibujar el diagrama de
bloques requerido.
56
Agenda
Conceptos básicos
Procesamiento Digital de Señales
Implementación en FPGAs
VHDL
Flujo de diseño empleando FPGAs
Tarjeta Atlys
57
Dispositivos Programables - DSP
Evolución
• En 1982 TI introduce el primer DSP comercial
(TMS32010) para aplicaciones en
Telecomunicaciones
• En 1996 TI introduce el primer DSP con
tecnología VLIW (Very Large Instruction Word),
Familia TMS320C62XX, con 8 unidades de
ejecución independientes.
y[n] = x[n]a0 + x[n-1]a1 + x[n-2]a3 …
Berkeley Design Technology, Inc.
58
Comparación FPGA - DSP
• Stratix – High Performance– Stratix III
• 65-nm, competidor Virtex-5 de Xilinx
• 384 multiplicadores de 18x18 a 550 MHz (211 GMACS)
http://www.altera.com/products/devices/stratix3/
59
Filtro FIR en un DSP
x(n) coeficientes
x(3) C0x(2) C1x(1) C2
Reg1
multiplicador
+
Registro
MAC
Reg2• Para implementar un filtro FIR de 256 Taps
– 256 operaciones (MAC) por periodo de muestreo
• El proceso secuecial reduce el periodo de muestreo
y(3) = x(3)C0 + x(2)C1 + x(1)C2
T
x(3)x(2)
x(1)
Señal en el tiempo x(t)
60
Filtros Digitales – Implementación (1)
y(n) = 0.2 x(n) + 0.1 x(n-1) -0.3 x(n-2)
x(n) coeficients
x(5) = 1 h0 = 0.2
x(4) = 3 h1 = 0.1
x(3) = 4 h2 = -0.3
Register 1 Register 2
multiplicator
ALU
Acumulator
2 Data
Memory
blocks
MAC
61
x(5) = 1 h0 = 0.2
x(4) = 3 h1 = 0.1
x(3) = 4 h2 = -0.3
Filtros Digitales – Implementación (2)
y(n) = 0.2 x(n) + 0.1 x(n-1) -0.3 x(n-2)
x(n) coeficients
R1 R2
multiplicator
ALU
Acc
1 cicle
Acc <- 0
Load R1+,R2+
Instruction 1
1 0.2
0
0
1
62
x(5) = 1 h0 = 0.2
x(4) = 3 h1 = 0.1
x(3) = 4 h2 = -0.3
Filtros Digitales – Implementación (3)
y(n) = 0.2 x(n) + 0.1 x(n-1) -0.3 x(n-2)
x(n) coeficients
R1 R2
multiplicator
ALU
Acc0.2
0.22 cicles
MAC
Load R1+,R2+
Instruction 2
0
1 0.23 0.1
2
63
x(5) = 1 h0 = 0.2
x(4) = 3 h1 = 0.1
x(3) = 4 h2 = -0.3
Filtros Digitales – Implementación (4)
y(n) = 0.2 x(n) + 0.1 x(n-1) -0.3 x(n-2)
x(n) coeficients
R1 R2
multiplicator
ALU
Acc0.5
0.3
MAC
Load R1+,R2+
Instruction 3
0.2
3 0.14 -0.3
3 cicles
3
64
x(5) = 1 h0 = 0.2
x(4) = 3 h1 = 0.1
x(3) = 4 h2 = -0.3
Filtros Digitales – Implementación (5)
y(n) = 0.2 x(n) + 0.1 x(n-1) -0.3 x(n-2)
x(n) coeficients
R1 R2
multiplicator
ALU
Acc-0.7
-1.2
MAC
Instruction 4
0.5
4 -0.3
4 cicles
4
Como implementar un oscilador digital?
Hay varios métodos:
• Look-up-table
• Transformada z
• CORDIC
• Series de Taylor
Señal en el dominio del tiempo:
sen(2πnfo/fs) = sen(2πn/N)
sen(2πn/N)
N = 10
66
Look-up-table, LUT
Consiste en acumular incrementos de fase para
emplearlos como dirección de una ROM.
• ROM completa: la ROM almacena los 360°de las
señales seno y coseno. Emplea mucha memoria y
pocos elementos lógicos.
• ROM pequeña: almacena solo una porción de los
valores de las señales seno y coseno. Los demás
valores son derivados.
67
NCO, numerical controller oscillator
NCO (Numerical Controller Oscillator) basado en LUTs
señal cosenob q dir
acumulador LUT:ROM
dirección
ROM dato
dφi
∆d
Nspp: Muestras por periodo
sin (2πn/Nspp)
cos (2πn/Nspp)
donde:
∆d = floor(2n/ Nspsy)
Transformadas Z del seno y el coseno
2
2
1
1
1
10
1 −−
−
−−
+
zbzb
zaasin(ωnT), cos(ωnT)
Ecuación en diferencias de la señal seno y coseno:
y(n) = a0 x(n) + a1 x(n-1) + b1 y(n-1) + b2 y(n-2)
coseno seno
a0 1 0
a1 -cos(ω0T) sen(ω0T)
b1 2cos(ω0T) 2cos(ω0T)
b2 -1 -1
69
Algoritmo CORDIC
Empleado cuando no se dispone de suficiente memoria para implementar una tabla.
Algoritmo iterativo que emplea las ecuaciones CORDIC:
xi+1 = xi ± yi.2-I
yi+1 = yi ± xi.2-I
zi+1 = zi ± tan-1 (2-i)
Se emplea un sumador/restador, desplazamiento de bits y la tangente se almacena en una tabla (10-20 posiciones de memoria)
Ejercicio
Un codec de audio emplea una frecuencia de
muestreo de 48 kHz.
Realizar el diseño de un NCO que permita generar
una señal a 20 y a 10 kHz.
Ferney Amaya 70
71
Estructura básica de un FPGA
recursos de
interconexión
bloque lógico
configurable
bloque
entrada/salida (I/O)
Berkeley Design Technology http://www.BDTI.com
72
FPGAs para DSP?
DSP Convencional
Data Out
RegData In
MAC unit
....C0
Data Out
C1 C2 C255
FPGA
Reg0 Reg1 Reg2 Reg255Data In
256 operaciones MAC en 1 ciclo de reloj256 ciclos por muestra
Diseño de un filtro de 256 coeficientes
Razón 1: Alta carga computacional de FPGAs
Xilinx: “FPGA DSP”
73
FPGAs para DSP?
Razón 2: Alta flexibilidad
×
×
×
× +
+
+
+
+
+×
+
+
D Q
×
×
+
+
+
+
D Q
Paralelo Semi-Paralelo Serial
Los FPGAs permiten compromisos Area(costo)/desempeño
Optimizado para?Velocidad Costo
Xilinx: “FPGA DSP”
FPGAs para diseño DSP multicanal
LPF
Multi Channel
Filter
80MHz
Samplesch1
ch2
ch3
ch4
LPF
LPF
LPF
LPF
• FPGAs para diseño DSP multicanal– Varios canales con baja tasa de muestreo pueden ser
multiplexados (TDM)
Xilinx: “FPGA DSP”
FPGA Introduction 75
The XtremeDSP Slice Advantage
• 32 TAP filter implementation will consume 1,461 logic cells.
Parallel Adder Tree Implementation
Data In
X
+
C0 C0XC1
XC2 XC3
++
XC4 C0XC5
XC6 XC7 XC30 XC31
++ ++
Data Out
+
+ Variable Latency
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Without XtremeDSP Slice, Parallel Adder Tree Consumes Logic Resources
FPGA Introduction 76
Parallel Adder Cascade Implementation
Data In
X
+
X
+
X
+
Data Out
X
+
X
+
X
+
X
+
X
+
X
+
32 TAP filter implementation implemented entirely with XtremeDSP Slices
C0 C1
C2 C3 C5
C6 C7 C30 C31C4 X
+
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
With XtremeDSP Slice, Parallel Adder Tree Consumes Zero Logic Resources
The XtremeDSP Slice Advantage
Agenda
• FPGAs
– Virtex II
– Spartan 3
– Virtex 4 y 5
• VHDL
• Herramientas de Xilinx
77
Virtex-II :Arquitectura
Todos los FPGAs de Xilinx contienen
– Slices (agrupados en CLBs): Contiene la lógica combinatoria y secuencial
– IOBs: Interface entre el FPGA y el mundo externo
– Recursos de interconexión
– Otros recursos: Memoria, Multiplicadores, Global clock buffers
Todos los FPGAs de Xilinx contienen
– Slices (agrupados en CLBs): Contiene la lógica combinatoria y secuencial
– IOBs: Interface entre el FPGA y el mundo externo
– Recursos de interconexión
– Otros recursos: Memoria, Multiplicadores, Global clock buffers
Bloques I/OBloques I/O
ConfigurableLogic Blocks (CLBs)
ConfigurableLogic Blocks (CLBs)
Clock Management (DCMs, BUFGMUXes)Clock Management (DCMs, BUFGMUXes)
SelectRAM™SelectRAM™
Multiplicadores dedicadosMultiplicadores dedicados
Recursos InterconexiónRecursos Interconexión
Virtex II: Slices, CLBs
Cada CLB (Configurable Logic Block) tiene 4 Slices
• Enrutamiento local: realimentación y conexiónentre slices en el mismo CLB y con CLBs vecinos
• La matriz de conmutaciónproporciona acceso a los recursos de interconexióngeneral
CIN
Switch
Matrix
BUFT
BUF T
COUTCOUT
Slice S0
Slice S1
Local Routing
Slice S2
Slice S3
CIN
SHIFT
Xilinx: “FPGA DSP”
Slice
Cada CLB tiene 4 Slices
Cada Slice contiene:– 2 LUTs (Look-up tables) de 4
entradas– 16 bits de RAM distribuida
SelectRAM– 16 bits de registros de
desplazamiento• 2 Registros: flop flop, latch• Lógica dedicaca:
– Multiplexores (MUXF5, MUXF6, MUXF7, MUXF8): unen y realimentan slices
– Carry chain (cin, cout)– MULT_AND: permite 1 MAC de
1 bit en una LUT (antes 2)
LUT
Register
Register
LUT CY
CY
SRL16
RAM16
G
F
MUXF5
Arithmetic Logic
MUXFx
Xilinx: “FPGA DSP”
Slice 0
LUTLUT CarryCarry
LUTLUT CarryCarry D QCE
PRE
CLR
DQCE
PRE
CLR
Slice
• Each slice has four
outputs:– Two registered outputs,
two non-registered outputs
– Two BUFTs associated with each CLB, accessible by all 16 CLB outputs
• Carry logic runs
vertically,
up only– Two independent
carry chains per CLB
Simplified Slice Structure
BUFT T=1; Y=ZT=0; Y=X
Xilinx: “FPGA DSP”
Combinatorial Logic
AB
CD
Z
LUT
• Also called Function Generators (FGs)
• Capacity is limited by the number of inputs, not by the complexity
• Delay through the LUT is constant
A B C D Z
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 1
0 1 0 0 1
0 1 0 1 1
. . .
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 1
Boolean logic is stored in Look-Up Tables (LUTs)
Xilinx: “FPGA DSP”
Multiplexer Logic
F5
F8
F5
F6
CLB
Slice S3
Slice S2
Slice S0
Slice S1
F5
F7
F5
F6
MUXF8 combines the two
MUXF7 outputs (from the
CLB above or below)
MUXF6 combines slices
S2 and S3
MUXF7 combines the two
MUXF6 outputs
MUXF6 combines slices S0 and S1
MUXF5 combines LUTs in each slice
Dedicated MUXes provided to connect slices and LUTs
Basic Architecture 84
Dedicated Logic
• Multiplexer Logic– Connect Slices and LUTs
• Carry Chains– Speed up arithmetic operations
• Multiplier AND gate– Speed up LUT-based multiplication
• Shift Register LUT– LUT-based shift register
• Embedded Multiplier– 18x18 Multiplier
Bloques de Multiplicadores dedicados – Virtex II
• Multiplicadores de 18x18 para operaciones en complemento a dos
• La Virtex-II hasta 168, Virtex-II Pro hasta 556 • Optimizados para operaciones MAC• Localizados cerca de los bloques dedicados de RAM
18 x 18Multiplier18 x 18Multiplier
Output (36 bits)
Data_A (18 bits)
Data_B (18 bits)
Xilinx: “FPGA DSP”
Saves from having to use LUTs to implement multiplications and increases performance
Resumen
• Características de un Slice
– LUTs (2 por slice, 8 por CLB)
– Registros (2 por slice, 8 por CLB)
– Multiplexores dedicados (MUXF5, MUXF6, MUXF7, MUXF8)
– Lógica de acarreo
– Compuertas MULT_AND
• Los LUT pueden ser configurados como
– Lógica combinatoria
– Shift register (SRL16CE)
– Memoria distribuida
Block RAM
• Up to 3.5 Mb of RAM in 18-kb blocks
– Synchronous read and write
• True dual-port memory
– Each port has synchronous read and
write capability
– Different clocks for each port
• Supports initial values
• Synchronous reset on output latches
• Supports parity bits
– One parity bit per eight data bits
• Situated next to embedded multiplierfor fast multiply-accumulate operations
DIA
DIPA
ADDRA
WEA
ENA
SSRA
CLKA
DIB
DIPB
WEB
ADDRB
ENBSSRB
DOA
CLKB
DOPA
DOPBDOB
18-kb block SelectRAM memory
Embedded blocks of RAM arranged in columns
Virtex II: DCM, DCI
DCI
DCM DCM (Digital Control Manager)• Eliminación de “clock-skew”
• Síntesis de frecuencia (x2, división)
• Desplazamiento de fase (90º,180º,270º)
DCI (Digitally Controlled Impedance)
• Evita colocar R para acoplar impedancias
• Ajusta la impedancia de salida para emparejarla con RREF.
Agenda
• FPGAs
– Virtex II
– Spartan 3
– Virtex 4 y 5
• VHDL
• Herramientas de Xilinx
89
SLICEM and SLICEL
• Cada CLB de la Spartan™-3 tiene 4 slices, similar a la Virtex™-II
• Los slices son agrupados en pares– SLICEM (Memory) a
la izquierda• LUTs que pueen ser
configurados como memoria o SRL16
– SLICEL (Logic) a la derecha
• LUT que solo puede ser usado como lógica. CIN
Switch
Matrix
COUTCOUT
Slice X0Y0
Slice X0Y1
Fast Connects
Slice X1Y0
Slice X1Y1
CIN
SHIFTIN
Left-Hand SLICEM Right-Hand SLICEL
SHIFTOUT
Xilinx: “FPGA DSP”
FPGA Introduction 91
Spartan-3A DSP
• Incorporates the primary features from earlier Virtex family DSP48 blocks
• The DSP48A block supports full MAC support with a pre-adder stage, multiplier, and add/accumulate state
• Dedicated DSP block offer the lowest cost/MAC in a FPGA
Agenda
• FPGAs
– Virtex II
– Spartan 3
– Virtex 4 y 5
• VHDL
• Herramientas de Xilinx
92
1 Gbps SelectIO™ChipSync™ Source synch, XCITE Active Termination
Smart RAM New block RAM/FIFO
Xesium ClockingTechnology
500 MHz
PowerPC™ 405with APU Interface450 MHz, 680 DMIPS
Tri-ModeEthernet MAC
10/100/1000 Mbps
RocketIO™ Multi-GigabitTransceivers
622 Mbps–10.3 Gbps
XtremeDSP™ Technology Slices
256 18x18 GMACs
Advanced CLBs200K Logic Cells
Virtex-4
Virtex 5 Vs Virtex 4
Feature/Capability Virtex-5 Family Virtex-4 Family Virtex-5 Advantages
Process technology 65nm, 1.0V, VCC 90nm, 1.2V, VCCHigher density, performance, lower power and cost
Distributed RAM 256 bits per CLB 64 bits per CLB More memory
Shift registers (SRL) 128 bit in one CLB 64 bit in one CLB Deeper pipelines
Clock Management 550 MHz 500 MHz Higher speed
SelectIO™ technology
1.25 Gbps differential,800 Mbps single-endedUp to 1,200 pins per FPGA
1 Gbps differential,600 Mbps single-endedUp to 960 pins per FPGA
Higher bandwidthMore multi-standard interfaces
DSP Blocks 25 x 18-bit MAC, 550MHz18 x 18-bit MAC, 500MHz
Higher performanceUp to 352 GMACS
LXT, SXT Platforms
Ethernet Media Access Controller
Built-in 10/100/1000 Ethernet MAC
Built-in 10/100/1000 Ethernet MAC
Agenda
• FPGAs
• VHDL
• Herramientas de Xilinx
95
Usos de un HDL
Especificación
HDL Especificar el Sistema
Diseño ASIC, FPGA, PLD
Implementación Tarjetas, chips
• Herramienta para especificar el sistema• Herramienta de diseño
– Facilidad de reutilización de código
– Portabilidad, independencia tecnológica
• Herramienta de simulación– Permite integrar componentes de diferentes fabricantes en la simulación
VHDL
• HDL de alto nivel• Estandarizado por IEEE• Creado por iniciativa del DoD de USA
• Actualizado en 1993• VHDL para síntesis solo comprende un subconjunto de
VHDL
Generalidades• Los objetos deben ser definidos antes de ser usados.• No diferencia entre mayúsculas y minúsculas• Comentarios con - -
Identificadores• Deben comenzar con una letra del alfabeto• Solo pueden contener letras del alfabeto, números o el
carácter underscore (‘_’)
Caracteres - Strings
Caracteres: se encierran en comillas simples:
‘1’, ‘o’, ‘’
bit_strings: primero debe se indicarse la base:
(B, O, X) y luego se especifica el número.
Pueden incluirse underscores:
B”101_110_100”
B”11”, O“3”, X”3”, son diferentes???
Objetos en VHDL
• Constante: objeto que mantiene siempre su valor:
CONSTANT conval: integer := 15;
• Variable: objetos temporales sin analogía con el
hardware. Solo pueden ser declaradas en
estructuras secuenciales (process)
VARIABLE varval: integer := 15;
• Signal: representa uno o varios cables, se
analizan al final del ciclo de simulación.
SIGNAL sigval: integer := 15;
Operadores VHDL
• Lógicos:
AND, OR, NAND, NOR, XOR, XNOR, NOT.
• Relacionales con resultado booleano:
=,/=,<,<=,>,>=
• Desplazamiento:
SLL, SRL, SLA, SRA, ROL, ROR
• Suma y resta para enteros: + -
• Multiplicación y división para enteros y reales:
*,/, MOD, REM
• Miscelaneos:
exponenciación (**) y valor absoluto ABS
101
E/S
E/S corresponden a señales físicas. Modo de
operación:
• in: puede ser leída pero no escrita
• out: puede ser modificada pero no leída
• inout: pueden ser leídas y modificadas
102
Estructuras de VHDL
• Entity: define la vista externa de un modelo I/O y parámetros)
• Architecture: define una posible funcionalidad de un modelo
Ejemplo simple en VHDL - Concurrencia
ENTITYpvhdl IS
PORT (
in1 : in std_logic_vector(4 downto 0);
out1 : out std_logic_vector(4 downto 0));
END pvhdl;
Entidad
Entrada
Salida
in1“10101”
out1
Arquitectura-- descripción Arquitectura
ARCHITECTURE structural OF pvhdl IS
BEGIN
OUT1 <= IN1 AND B”10_101”;
END structural;
Ejemplo simple en VHDL - Concurrencia
ENTITYpvhdl ISPORT (
s1,s2 : in std_logic_vector(4 downto 0);s3: out std_logic_vector(4 downto 0));
END pvhdl;
Entidad
s3s1
s2 st
ArquitecturaARCHITECTURE structural OF pvhdl IS
SIGNAL st : std_logic_vector(4 downto 0);
BEGIN
st <= NOT s2;
s3 <= s1 AND st;
END structural;
105
Atributos
Atributos predefinidos para señales en VHDL, por ejemplo para la señal S:
• S’EVENT: devuelve TRUE si S ha cambiado
Proceso
PROCESS (reloj, reset) BEGIN
IF reloj’EVENT AND reloj = ‘1’
END IF;
END PROCESS;
Lista de sensibilidad
Sentencias secuenciales
• Los procesos son concurrentes con otros procesos, internamente son secuenciales.
• Requiere de algún medio de activación (lista de sensibilidad)
107
Concurrente y secuencialConcurrentes Secuenciales
WHEN…ELSE
sal <= i0 WHEN sel = “00”
i1 WHEN sel = “01”
……
ELSE in;
IF..THEN…ELSE
IF sel = “00” THEN
sal <= i0;
ELSEIF sel = “01” THEN
sal <= i1;
ELSE sal <= i2; END IF
WITH…SELECT
WITH sel SELECT
sal <= i0 WHEN “00”;
i1 WHEN “01”;
i2 WHEN “10”;
i3 WHEN OTHERS;
CASE (inside a process)
CASE sel IS
WHEN B”00” => sal <= i0;
WHEN B”01” => sal <= i1;
WHEN B”10” => sal <= i2;
WHEN B”11” => sal <= i3;
WHEN OTHERS => sal <= ‘0’;
END CASE;
Asignación variables Asignación variables
PROCESS
Especificación de multiplexores - Concurrencia
sal <= bus0 WHEN sel = ‘0’
ELSE bus1;
WITH sel SELECT
sal <= i0 WHEN “00”;
i1 WHEN “01”;
i2 WHEN “10”;
i3 WHEN OTHERS;
0
1
bus0
bus1
sel
sal
00i0
sel
01i110i211i3
sal
109
CASE - Secuencial
CASE es mas conveniente que IF:
• No implica prioridad
• Deben definirse todos los casos evitando inferencia de memoria
ENTITY mux4 IS PORT (
i0,i1,i2,i3 : IN BIT; sel : IN BIT_VECTOR (1 DOWNTO 0); mou : OUT BIT);
END mux4;
ARCHITECTURE logic OF mux4 IS BEGIN
PROCESS (sel) BEGIN
CASE sel IS
WHEN B”00” => mou <= i0;
WHEN B”01” => mou <= i1;
WHEN B”10” => mou <= i2;
WHEN B”11” => mou <= i3;
WHEN OTHERS => mou <= ‘0’;
END CASE;
END PROCESS;
END logic;
00i0
sel
01i1
10i2
11i3
mou
Especificación de Flip flops
ARCHITECTURE pvhdl OF pent IS
BEGIN
--Flip-flop D, flanco subida
PROCESS (reloj) BEGIN
IF reloj’EVENT AND reloj = ‘1’
THEN q <= d;
END IF;
END PROCESS;
--Flip-flop Toggle, flanco subida
PROCESS (reloj) BEGIN
IF reloj’EVENT AND reloj = ‘1’
THEN q <= NOT q;
END IF;
END PROCESS;
END pvhdl;
Señal reloj:
reloj’EVENT
reloj’EVENT AND reloj = ‘1’
Especifica la detección del flanco de subida
Instanciar componentes
ENTITYpvhdl IS
PORT (
s1,s2 : in std_logic_vector(4 downto 0);
s3: out std_logic_vector(4 downto 0));
END pvhdl;
ARCHITECTURE structural OF pvhdl IS
BEGIN
s3 <= s1 AND (NOT s2);
END structural;
ARCHITECTURE str OF ins IS
COMPONENT pvhdl
PORT (
s1,s2 : in std_logic_vector(4 downto 0);
s3: out std_logic_vector(4 downto 0));
END COMPONENT;
BEGIN
S1 : pvhdl
PORT MAP (
s1 => i1, s2 => i2, s3 => o1);
END ins;
s3s1
s2
ENTITY pvhdl
o1i1i2
ENTITY pvhdl
ENTITY ins
112
Arquitectura
ARCHITECTURE <identificador> OF <entidad> IS
Declaración de señales locales
Declaración de constantes locales
Declaración de componentes
BEGIN
Instanciación de componentes
Asignaciones concurrentes a señales
Procesos
END ARCHITECTURE <identificador>;
113
Señales
• Comunican procesos concurrentes y son creadas por: entity(al definir ports), architecture (al definir señales internas)
• Ejemplos:
– SIGNAL temp : STD_LOGIC_VECTOR (7 DOWNTO 0);
– temp <= “1010_1010”; -- temp <= x”AA”
– temp(7) <= ‘1’;
– temp(7 downto 4) <= “1010”;
– temp(others => ‘1’);
– temp(7 => ‘0’, 4 => ‘0’, others => ‘1’ );
TO y DOWNTO
ENTITY simp ISPORT (s_to : IN BIT_VECTOR (0 TO 2);
s_do: IN BIT_VECTOR (2 DOWNTO 0));END simp;
ARCHITECTURE logic OF simp ISBEGIN
s_do <= B”110”;s_to <= B”110”;
END logic;
s_do(2), s_so(1), s_do(0) = ‘1’,’1’,’0’
s_to(0), s_to(1), s_to(2) = ‘1’,’1’,’0’
TO y DOWN indican cual bit está a la izquierda y cual a la derecha.
115
Máquinas de estado Finito - FSM
Deben seguirse los siguientes pasos:
• Definir los estados usando tipo por enumeración:
TYPE tipo_estado IS (est1,est2,est3…)
• Definir dos señales tipo_estado que almacenan el
estado actual y el futuro.
• Usar un PROCESS activado por el estado actual
con un CASE. Usar IF para definir el estado futuro
en función de las entradas.
• MORE: Salida dentro del CASE en cada estado.
• MEALY: Salida dentro del CASE en cada estado
luego de evaluar la entrada.
116
Máquina de
estado
ARCHITECTURE ma OF maquina ISTYPE ESTADO IS (s1,s2) ;
SIGNAL est_actual, est_siguiente: ESTADO;BEGIN
PROCESS (clk, est_actual)
BEGIN
CASE est_actual ISWHEN s0 => sal <= ‘0’;
est_siguiente <= s1’;
WHEN s1 => sal <= ‘1’; IF insig = ‘1’ THEN
est_siguiente <= s0;
ELSE est_siguiente <= s1;END IF;
END CASE;
END IF;
END PROCESS;PROCESS
BEGIN
wait until clk’event and clk = ’1’;est_actual <= est_siguiente;
END PROCESS;END ARCHITECTURE ma;
ENTITY maquina ISPORT(clk, insig : IN STD_LOGIC;
sal : OUT STD_LOGIC);END ENTITY maquina;
Agenda
• FPGAs
• VHDL
• Herramientas de Xilinx
– ISE
– Core Generator
117
Flujo de diseño FPGAs
El flujo de diseño para FPGAs consiste en 3 pasos:
1. Especificación del diseño (Design entry)
2. Implementación del diseño
3. Verificación del diseño
Especificación del diseño
Implementación
• Mapping
• Placement
• Routing
• Generación bitstream
Síntesis del diseño
Descarga del bitstream
Verificación diseñoSimulación
funcional
Análisis temporal estático
Simulación temporal
Verificación en circuito
BA
Flujo de diseño FPGAs
Especificación del diseño
Implementación
• Mapping
• Placement
• Routing
• Generación bitstream
Síntesis del diseño
Descarga del bitstream
Verificación
Simulación funcional
Análisis temporal estático
Simulación temporal
Verificación en circuito
BA
Esquemático o HDL
Solo para HDL
Del diseño a ladescripción física
Puede ser a través de JTAGo cable XChecker a lospines de programación del
FPGA
Archivo .BIT
Implementación del diseño
• Hay varias salidas de la implementación
– Reportes
– Timing simulation netlists
– Floorplan files
• La implementation incluye varias fases:
– Translate: multiples archivos de diseño en un único netlist
– Map: del netlist (gates) a componentes físicos (slices, IOBs)
– Place & Route: coloca y conecta los componentes en el chip. Extrae reportes de tiempos
Agenda
• FPGAs
• VHDL
• Herramientas de Xilinx
– ISE
– Core Generator
121
ISE Project Navigator
• ISE (Integrated Synthesis Environment)
• ISE incluye las siguientes herramientas:
– XST Synthesis
– CORE Generator™
– Architecture Wizard
– ECS schematic editor
– StateCAD state diagram editor
– HDL Bencher waveform
editor (for testbench creation).
Fuentes
Procesos
Sources: Synthesis/Implementation
Archivo fuente en VHDL
Síntesis
Translate, Map, Place&Route
Generar .BIT
Agenda
• FPGAs
• VHDL
• Herramientas de Xilinx
– ISE
– Core Generator
125
BehavioralSimulation
Synthesis
Implementation
Download
Functional Simulation
TimingSimulation
In-Circuit Verification
COREGen
HDL
Flujo de diseño – Core Generator
HDL
Synthesis
Implementation
Download
HDL
Functional Simulation
TimingSimulation
In-Circuit Verification
BehavioralSimulation
Flujo HDL Flujo CoreGen
Qué son los Cores?
• Core: función prediseñada (IP, Intellectual Property).
• Ahorran tiempo de diseño: Creados por expertos, funcionalidad garantizada
CORE Generator usa dos tipos de Cores
• LogiCORE™ solutions– Muchos son pre-placed: tiempo predecible
– Típicamente parametrizables
– Muchos son no-licenciados (distribuidos con Xilinx)
• AllianceCORE™ solutions – Típicamente no parametrizables
– Soportados por partners de Xilinx
Empleando CORE Generator
• Desde Project Navigator: Project → New Source
• Seleccionar:
IP (CoreGen & Architecture Wizard)
• Entrar un nombre:
nombre_archivo
• Click Next y luego seleccione type of core
Empleando CORE Generator
Parameters:
parametrizar
el core
Data sheet
Web Links:
acceso a
páginas Web
relacionadas
Core Overview: versión y descripción
Contact: información del
vendedor
130
Diseño de Hardware con VHDL
Ferney Amaya Fernández [email protected]
Universidad Pontificia Bolivariana
Medellín - Colombia