Diseño de Hardware con VHDL
Ferney Amaya Fernández
[email protected] Universidad Pontificia Bolivariana Mede Me dellllín ín - Co Colo lomb mbia ia
1
Agenda Sesión Lectura Tema 1 Introducción al -Procesamiento -Procesamiento Digital de Señales diseño con FPGAs -Arquitectura de FPGAs -VHDL -Flujo de diseño empleando FPGAs -Tarje -Tarjeta ta Spartan 3 2 Herramientas -Práctica 1: Flujo de diseño en FPGAs básicas de diseño y Asignación de pines y restricciones de tiempo flujo de diseño. -Técnicas de síntesis Guía de -Core-Generator laboratorio. -Práctica 2, 3: Unidad MAC y manejo básico de I/O 3 Procesamiento -Empleo de bloques de memoria, inferencia de digital de señales memoria. en FPGAs. Guía de -Práctica 4: Generador de secuencias. laboratorio. -Procesamiento -Procesamiento de señales -Práctica 5: Generador de tonos FPGA -Filtrado FPGA 4
5
Herramientas complementarias. Guía de laboratorio. Herramientas complementarias. Guía de laboratorio.
-Práctica 6: Filtrado FPGAs -ChipS -ChipScop cope e Pro -Práctica -Práctica 7: 7: ChipScope ChipScope Pro -PicoBlaze -Práctica -Práctica:: ChipScope ChipScope Pro -System -System Generato Generatorr -Práctica -Práctica:: System Generato Generatorr
Objetivos Introducir los temas básicos del curso.
Adquirir conocimientos en las herramientas de diseño y el flujo de diseño en FPGAs.
Conocer técnicas de procesamiento procesamiento digital de señales para la generación de soluciones empleando FPGAs. Conocer herramientas complementarias para el diseño en FPGAs. Conocer herramientas complementarias para el diseño en FPGAs. Ferney Amaya 2
Evaluacion • Proyecto 60 puntos • Acti Activi vida dade des s y labo labora rato tori rios os 40 pu punt ntos os – Laboratorios 7 prácticas – 28 puntos – Ejercicios diarios 6 ejercicios – 12 puntos
Ferney Amaya
3
Agenda
Conceptos básicos Procesamiento Digital de Señales Arquitectura de FPGAs VHDL Flujo de diseño empleando FPGAs Tarjeta Spartan 3
4
Sistema DSP en tiempo real
Acondicionamiento analógico
A/D
Procesamiento Digital
D/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 ). 5
Señal analógica y digital Acondicionamiento analógico
A/D
Procesamiento Digital
D/A
Adecuación
señal analógica señal muestreada, señal cuantizada, señal digitalizada +5 V Time –5
6
Comparación analógico - digital Característica Efectos
Analógico Temperatura, humedad, tiempo, ruido
Sensibilidad al ruido
Digital Redondeo, truncamiento,
alta
baja
elevado
Bajo / medio
confiabilidad
media
alta
Calibración
manual
digital
Actualización
Por hardware
Por software
Consumo de potencia
Elevado
Bajo
50 – 60 dB
Mayor a 100 dB
Costo / tamaño
SNR
DSP • Digital Signal Processing • Digital Signal Processor
7
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.
8
Grupo de bits • • • • • •
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 - 19
Binario ↔ Decimal – Entero Decimal a binario: 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 10
Binario ↔ Decimal – Entero Binario a decimal:
A
n −1
×
n −1
r
3
2
A × r + A × r +
+ ...
3
2
1
×
1
r
0
×
0
r
Como pasar el 1 1 0 1 a decimal
1x23 + 1x22 + 0x21 + 1x20 = 10 8
+
4
+
0
+
1
(1 1 0 1)2 = (13)10
11
Binario ↔ Decimal– Fraccional Punto Fijo Como pasar el 0.35 a binario? 0.35 x 2 = 0.70
→
0
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
MSB
(0.35)10 = (0.01011…)2
12
Binario ↔ Decimal– Fraccional Punto Fijo Como pasar el 0.01011 a decimal 0.
0
1
0
1
1
-1
-2
-3
-4
-5
0x2-1
1x2-2
0x2-3
1x2-4
1x2-5
= 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
13
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: HEXA
2
A
8
1 0 1 0 1 0 1 0 0 0 OCTAL
1
2
.
5
0 14
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
-7 -6 -5 -4 -3
1111 1110
+0 0000
1101
+1 +2 0001 0010 0011
1100
0100
1011
-2
1010 1001
-1
+3
0101
1000
-0
0110 0111
+7
+6
+4 +5
Dos representaciones del 0 La suma y resta no es simple: • Circuitos separados • Identificar signo y comparar magnitud Rango de representación con r bits:
0 … ±(2r-1 – 1) 16
Negativos – Complemento a uno • MSB bit de signo, requiere un bit adicional • El negativo es el 1’
-0 -1 -2 -3 -4
1111 1110
+0 0000
1101
+1 +2 0001 0010 0011
1100
0100
1011
-5
1010 1001
-6
+3
0101
1000
-7
0110 0111
Dos representaciones del 0 La suma y resta no es simple: • La resta es suma y 1’ Rango de representación r bits:
+4 +5
0 … ±(2r-1 – 1)
+6
+7 17
Negativos – Complemento a uno • MSB bit de signo, requiere un bit adicional • Rango de representación: 0 … ±(2r-1 – 1) • Dos representaciones del 0 -0 -1 -2 -3 -4
1111 1110
+0 0000
1101
+1 +2 0001 0010 0011
1100
0100
1011
-5
1010 1001
-6
+3
0101
1000
-7
0110 0111
+7
+6
+4 +5
Ejemplo 1: (+1) 0001 (+2) 0010 0011 → (3) No overflow Ejemplo 2: (+4) 0100 (+5) 0101 1001 → overflow 18
Negativos – Complemento a uno • MSB bit de signo, requiere un bit adicional • Rango de representación: 0 … ±(2r-1 – 1) • Dos representaciones del 0 -0 -1 -2 -3 -4
1111 1110
+0 0000
1101
+1 +2 0001 0010 0011
1100
0100
1011
-5
1010 1001
-6
+3
0101
1000
-7
0110 0111
+7
+6
+4 +5
Ejemplo 3: (-1) 1110 (-2) 1101 1 1011 → 1100 (-3) Ejemplo 4: (-4) 1011 (-5) 1010 1 0101 → overflow 19
Negativos – Complemento a uno • MSB bit de signo, requiere un bit adicional • Rango de representación: 0 … ±(2r-1 – 1) • Dos representaciones del 0 -0 -1 -2 -3 -4
1111 1110
+0 0000
1101
+1 +2 0001 0010 0011
1100
0100
1011
-5
1010 1001
-6
+3
0101
1000
-7
0110 0111
+7
+6
+4 +5
Ejemplo 5: (-3) 1100 (+4) 0100 1 0000 → 0001 (+1) Ejemplo 6: (-4) 1011 (+3) 0011 1110 → (-1) 20
Negativos – Complemento a dos • MSB bit de signo • Solo una representación del 0 • Rango de representación:
-2r-1 … (2r-1 – 1) -1 -2 -3 -4 -5
1111 1110
+0 0000
1101
+1 +2 0001 0010 0011
1100
0100
1011
-6
1010 1001
-7
+3
0101
1000
-8
0110 0111
+7
+6
+4 +5
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 21
Negativos – Complemento a dos • MSB bit de signo • Solo una representación del 0 • Rango de representación: -2r-1 … (2r-1 – 1)
-1 -2 -3 -4 -5
1111 1110
+0 0000
1101
+1 +2 0001 0010 0011
1100
0100
1011
-6
1010 1001
-7
+3
0101
1000
-8
0110 0111
+7
+6
+4 +5
Ejemplo 1: (+1) 0001 (+2) 0010 0011 → (3) No overflow Ejemplo 2: (+4) 0100 (+5) 0101 1001 → overflow 22
Negativos – Complemento a dos • MSB bit de signo • Solo una representación del 0 • Rango de representación: -2r-1 … (2r-1 – 1)
-1 -2 -3
1111 1110
+0 0000
1101
-4 -5
+1 +2 0001 0010 0011
1100
0100
1011
-6
1010 1001
-7
+3
0101
1000
-8
0110 0111
+7
+6
+4 +5
Ejemplo 3: (-1) 1111 (-2) 1110 1 1101 → (-3) ignorar carry Ejemplo 4: (-4) 1100 (-5) 1011 1 0111 → overflow 23
Negativos – Complemento a dos • MSB bit de signo • Solo una representación del 0 • Rango de representación: -2r-1 … (2r-1 – 1)
-1 -2 -3
1111 1110
+0 0000
1101
-4 -5
+1 +2 0001 0010 0011
1100
0100
1011
-6
1010 1001
-7
+3
0101
1000
-8
0110 0111
+7
+6
+4 +5
Ejemplo 5: (-3) 1101 (+4) 0100 1 0001 → (+1) ignorar carry Ejemplo 6: (-4) 1100 (+3) 0011 1111 → (-1) 24
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
0 0 1 1 1 0 0 1 0 1 0 El valor es: -917 / 32 = -28.65625 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 FIX_12_9 + FIX_8_3 FIX_8_7 x FIX_8_6
1
1 (2´) 917
FIX_12_11 FIX_12_10 UFIX_10_10 FIX_11_0
Salida full precision
Parte entera 3bits + 5bits => 6 bits => FIX_15_9 FIX_16_13
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 ....
5
4
3
2
1
6
2
2
2
2 2
1
1
1
1
1
-2
0
0
2
1
-1
2
1
2
-2
0
-3
2
1
-4
2
1
-5
2
1
-6
2
1
2
-7
0
2
-8
1
-9
2
0
OVERFLOW - Wrap - Saturate - Flag Error
-10 -11
2
2
0
1
-12 -13
2
0
2
1
....
QUANTIZATION
2
-2 2 1
1
0
0
2
1
-1
2
1
-2
2
0
-3
2
1
-4
2
1
2
-5
1
-6
2
1
-7
2
0
-8
2
1
-9
- Truncate - Round
2
0
FIX_12_9 27
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
1
0
1
1
0
1
1
Full Precision output
- Satura (3.9375), máximo valor
0
1
1
1
1
1
1
FIX_7_4
- Wrap (-2.3125)
1
0
1
1
0
1
1
FIX_7_4
(13.6875)
0
1
28
Restricciones de tiempo De entrada: • Setup time: t setup • Hold time: t hold • Aperture time: t a = t setup + t hold
C LK
D t setup
t hold t a
De salida: • Contaminatio tion delay: t ccq • Propagation delay: t pcq
CLK Q tccq tp cq
29
Restricciones de tiempo El mínimo Tc depende del retardo entre los elementos del circuito C LK
C LK Q1
CL
D2
R1
R2 Tc
C LK Q1 D2 tp cq
tp d
t setup
T c ≥ t pcq + t pd + t setup
Restri Restricci ccione ones s de tiempo tiempo - Ejempl Ejemplo o Para el circuito, hallar la frecuencia de reloj C LK
C LK
A
t pcq = 50 ps
B
t setup = 60 ps
C D
X'
X
t hold = 70 ps
Y'
Y
t pd
t pd = 3*3 3*35 5 ps ps = 105 105 ps T c ≥ t pcq + t pd + t setup T c ≥ (50 + 105 105 + 60 60)) ps = 215 215 ps ps f c ≤ 1/ T Tc = 4.65 GHz
= 35 ps (por (por comp compue uert rta) a)
Clock skew • El reloj no llega a todos los registros al tiempo • Skew: diferencia entre dos flancos de reloj que cumplen el peor caso delay
CLK
CLK1
CLK2 Q1
R1
C L
D2
T c ≥ t pcq + t pd + t setup + t skew
R2
t skew
CLK1 CLK2 CLK
32
Agenda
Conceptos básicos Procesamiento Digital de Señales Arquitectura de FPGAs VHDL Flujo de diseño empleando FPGAs Tarjeta Atlys
33
������� ��������� ������� � ������� ������� ��������� ��������� (����� �� �����)
1, n = 0 δ [n] = 0, otro valor � ���� � ������ ������ ��������� ���������
f 0 x[n] = sen 2 π n f s x[n] = sen 2
n / N mpp
34
Principales momentos estadísticos •
Valor DC DC o pro promed ediio en en el el titiempo
µ x
=
N −1
1
x ∑ N
i
i =0
•
Valor cu cuadrático medio
X [ x 2 ] =
1
N −1
∑ N
xi2
i =0
•
Varianza:
σ
2
=
1
N −1
( x − µ ) ∑ N
2
i
i =0
35
����������� ������� Para dos secuencias x(n), y(n): N −1
R xy
=
∑
Depende del número de datos y del desfase
x ( n ) y ( n )
n=0
R xy
=
R xy ( j )
1
N =
N − 1
∑ x ( n ) y ( n )
Depende del desfase
n=0
1
N −1
x ( n ) y ( n + ∑ N
j)
n=0
Normalizada ρ xy ( j )
=
R xy ( j ) 1
N − 1
∑
N n = 0
N − 1
x 2 ( n )
∑
n=0
y 2 ( n )
1 / 2
Matlab: >>[xc,xi] = xcorr(x1,x2); >>stem(xi,xc) 36
������������ �� �� ����������� ���������� �� �������������� ���������� �������� �� ��� �� �� ����������� ���� ����������� �� ����������� ���� ��� ��� ���������� ����������� �� � �� ���� % ���������� �� �������� �� � � ���� % ���������� �� ��������� �� � � ���� % ���������� �� ����
37
Convolución La convolución discreta se aplica a secuencias causales LTI.
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: y [ n ] =
∞
∞
k = 0
k = 0
∑ x[ n − k ]h[ k ] = ∑ x[ k ]h[ n − k ] 38
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}: y [ n ] = x[ n − k ]h[ k ] ∞
∑
x(2) 5
k = 0
x(1) x(0) 4
1
3
0
0
0
0
1
2
1
0
0
0
0
0
suma
x(n-k) hk x(n-k)*hk
0 y(0) ?
?
? 39
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}: x(3) 6
x(2) x(1) 5
2
4
3
0
0
0
1
2
1
0
3
0
0
0
suma
x(n-k) hk x(n-k)*hk
3 y(0) 3
?
? 40
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}: x(4) 7
x(3) x(2) 6
3
5
4
3
0
0
1
2
1
0
4
6
0
0
suma
x(n-k) hk x(n-k)*hk
10 y(1)
y(0)
10
3
? 41
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}: x(5) 8
x(4) x(3) 7
4
6
5
4
3
0
1
2
1
0
5
8
3
0
suma
x(n-k) hk x(n-k)*hk
16 y(2)
y(1) y(0)
16
10
3 42
Ecuación en Diferencias - ED En general:
x(n)
ak , bk
M
y(n) =
y(n) N
∑ b x(n − k ) − ∑ a y(n − k ) k
k
k =0
k =1
En algunos casos:
x(n)
hk=bk
y(n)
∞
y ( n )
=
∑ b x ( n − k ) k
k = 0
43
Transformada Z ∞
X ( z )
∑
= n
x ( n ) z
−
n
= −∞
z: variable compleja
Propiedades de Z: Linealidad: ax1(n) + bx2(n) => aX1(z) + bX2(z) Desplazamiento; x(n -m) => z-mX(z) Ejemplo: Hallar la transformada z de: y(n) = 0.2x(n) + 0.1x(n-1) – 0.5y(n-1) – 0.8y(n-2)
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 ∆ f ' =
f S N 45
Ejemplo DTF N − 1
Si: x[n] = [ 0 1 5 3 3 2 1 0];
X ( k )
=
∑
x ( n ) e
−
j 2 π kn / N
n=0
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? 46
Filtros Digitales Ideales Rango de frecuencia: -π ≤ ω ≤ π Pasa-altas
Pasa-bajas
-π -0.5fc
π 0.5fc
-π -0.5fc
Pasa-banda
π 0.5fc
-π -0.5fc
π 0.5fc
La ganancia es 1
47
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. 48
asos – spec cac n e Requerimientos δp: desviación banda de paso δs: desviación banda de rechazo fp: frecuencia en el borde de banda pasante fs: frecuencia en el borde de banda rechazo
49
Filtros analógicos Butterworth butter()
Chebyshev cheby1()
Elíptico ellip()
tipo I
Chebishev cheby2()
tipo II
50
Filtros analógicos Bessel
51
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
fx
Multirate
fy
• fx: frecuencia de muestreo de entrada • fy: frecuencia de muestreo de salida • D, I son enteros primos entre si.
f y f x
=
I D
Diezmado e interpolación
fx
fx
D
Pasa-bajas
I
fy
Pasa-bajas
fx
I
LPF
fy
D
fy
f y
=
f y
=
f x D If x
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.
Agenda
Conceptos básicos Procesamiento Digital de Señales Implementación en FPGAs VHDL Flujo de diseño empleando FPGAs Tarjeta Atlys
56
Dispositivos Programables - DSP Evolución • En 1982 TI introduce el primer DSP comercial (TMS32010) para aplicaciones en Telecomunicaciones y[n] = x[n]a0 + x[n-1]a1 + x[n-2]a3
…
• En 1996 TI introduce el primer DSP con tecnología VLIW (Very Large Instruction Word), Familia TMS320C62XX, con 8 unidades de ejecución independientes. Berkeley Design Technology, Inc.
57
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/
58
Filtro FIR en un DSP Señal en el tiempo x(t) x(1)
T x(2)
x(n)
x(3)
y(3) = x(3)C0 + x(2)C1 + x(1)C2
•
Para implementar un filtro FIR de 256 Taps
– 256 operaciones (MAC) por periodo de muestreo •
El proceso secuecial reduce el periodo de muestreo
coeficientes
x(3) x(2)
C0 C1
x(1)
C2
Reg1
Reg2
multiplicador
MAC
+ Registro 59
Filtros Digitales – Implementación (1) y(n) = 0.2 x(n) + 0.1 x(n-1) -0.3 x(n-2) 2 Data Memory blocks
x(n)
coeficients
x(5) = 1 x(4) = 3 x(3) = 4
h0 = 0.2 h1 = 0.1 h2 = -0.3
Register 1
Register 2 multiplicator
MAC ALU Acumulator 60
Filtros Digitales – Implementación (2) y(n) = 0.2 x(n) + 0.1 x(n-1) -0.3 x(n-2)
1 Instruction 1 Acc <- 0 Load R1+,R2+
x(n)
coeficients
x(5) = 1 x(4) = 3 x(3) = 4
h0 = 0.2 h1 = 0.1 h2 = -0.3
1R1
0.2 R2 multiplicator
1 cicle
0 ALU Acc 0 61
Filtros Digitales – Implementación (3) y(n) = 0.2 x(n) + 0.1 x(n-1) -0.3 x(n-2)
2 Instruction 2 MAC Load R1+,R2+
x(n)
coeficients
x(5) = 1 x(4) = 3 x(3) = 4
h0 = 0.2 h1 = 0.1 h2 = -0.3
31R1
0.2 0.1 R2 multiplicator
2 cicles
0.2
0 ALU Acc 0.2 62
Filtros Digitales – Implementación (4) y(n) = 0.2 x(n) + 0.1 x(n-1) -0.3 x(n-2)
3 Instruction 3 MAC Load R1+,R2+
x(n)
coeficients
x(5) = 1 x(4) = 3 x(3) = 4
h0 = 0.2 h1 = 0.1 h2 = -0.3
34R1
0.1 -0.3 R2 multiplicator
3 cicles
0.3
0.2 ALU Acc 0.5 63
Filtros Digitales – Implementación (5) y(n) = 0.2 x(n) + 0.1 x(n-1) -0.3 x(n-2)
4 Instruction 4 MAC
x(n)
coeficients
x(5) = 1 x(4) = 3 x(3) = 4
h0 = 0.2 h1 = 0.1 h2 = -0.3
4R1
-0.3 R2 multiplicator
4 cicles
-1.2
0.5 ALU Acc -0.7 64
Como implementar un oscilador digital? Señal en el dominio del tiempo: sen(2πnfo /fs) = sen(2πn/N) Hay varios métodos: • Look-up-table • Transformada z • CORDIC • Series de Taylor
sen(2πn/N) N = 10
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.
66
NCO, numerical controller oscillator NCO (Numerical Controller Oscillator) basado en LUTs
∆d
b
dirección q ROM dir dato dφi
acumulador
señal coseno
LUT:ROM
Nspp: Muestras por periodo sin (2πn/Nspp) cos (2πn/Nspp) donde: ∆d = floor(2n / Nspsy) 67
Transformadas Z del seno y el coseno a0 + a1 z −1
sin(ωnT), cos(ωnT)
1 − b1 z
−1
− b2 z
−2
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
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)
69
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
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
71
FPGAs para DSP? Razón 1: Alta carga computacional de FPGAs Diseño de un filtro de 256 coeficientes FPGA
DSP Convencional Data In
Data In Reg C0
Reg1
Reg0 C1
Reg2 C2
Reg255
.... C255
MAC unit Data Out
256 ciclos por muestra
Xilinx: “FPGA DSP”
Data Out
256 operaciones MAC en 1 ciclo de reloj 72
FPGAs para DSP? Razón 2: Alta flexibilidad Paralelo
×
+
×
+
Semi-Paralelo
+ +
×
+
×
+
Velocidad
× ×
Serial
+ +
DQ
+ +
Optimizado para?
+ DQ
×
+
Costo
Los FPGAs permiten compromisos Area(costo)/desempeño Xilinx: “FPGA DSP”
73
FPGAs para diseño DSP multicanal LPF
ch1
LPF
ch2
LPF
ch3
LPF
ch4
80MHz Samples LPF Multi Channel Filter
• FPGAs para diseño DSP multicanal – Varios canales con baja tasa de muestreo pueden ser multiplexados (TDM)
Xilinx: “FPGA DSP”
The XtremeDSP Slice Advantage Without XtremeDSP Slice, Parallel Adder Tree Consumes Logic Resources
Parallel Adder Tree Implementation R e g
Data In C0
X
C 1
+
R e g
R e g
C0 X
C2
+
X
C3
R e g
X
C4
+
R e g
X
C 5
+
C0 X
C6
R e g
R e g
R e g
X
C7
X
+
+
+
• 32 TAP filter implementation will consume 1,461 logic cells. FPGA Introduction 75
+ Data Out
R e g
C30
X
C31
+ Variable Latency
X
Agenda • FPGAs – Virtex II – Spartan 3 – Virtex 4 y 5 • VHDL • Herramientas de Xilinx
77
Virtex-II :Arquitectura SelectRAM™
Multiplicadores dedicados
Bloques I/O
Recursos Interconexión
Configurable Logic Blocks (CLBs) Clock Management (DCMs, BUFGMUXes)
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
Virtex II: Slices, CLBs Cada CLB (Configurable Logic Block) tiene 4 Slices • Enrutamiento local: realimentación y conexión entre slices en el mismo CLB y con CLBs vecinos • La matriz de conmutación proporciona acceso a los recursos de interconexión general
COUT
COUT
BUFT BUF T Slice S3
Slice S2 Switch Matrix
SHIFT
Slice S1
Slice S0
CIN
Xilinx: “FPGA DSP”
Local Routing
CIN
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)
Xilinx: “FPGA DSP”
RAM16
SRL16
MUXFx LUT G
LUT
Register CY MUXF5
CY
F
Arithmetic Logic
Register
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
Simplified Slice Structure Slice 0
LUT
Carry
PRE D Q CE CLR
LUT
Carry
D PRE Q CE CLR
– Two independent carry chains per CLB BUFT Xilinx: “FPGA DSP”
T=1; Y=Z T=0; Y=X
LUT Boolean logic is stored in Look-Up Tables (LUTs)
• 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
Combinatorial Logic
A B C D
. Z
.
.
1 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 1
Xilinx: “FPGA DSP”
Multiplexer Logic Dedicated MUXes provided to connect slices and LUTs CLB
8 F
Slice S3
5 F
6 F
Slice S2
Slice S1
Slice S0
7 F
5 F
MUXF8 combines the two MUXF7 outputs (from the CLB above or below)
MUXF6 combines slices S2 and S3
MUXF7 combines the two MUXF6 outputs
5 F
6 F 5 F
MUXF6 combines slices S0 and S1 MUXF5 combines LUTs in each slice
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 Basic Architecture 84
Bloques de Multiplicadores dedicados – Virtex II Saves from having to use LUTs to implement multiplications and increases performance
• 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 Data_A (18 bits)
18 x 18 Multiplier Data_B (18 bits)
Xilinx: “FPGA DSP”
Output (36 bits)
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 Embedded blocks of RAM arranged in columns •
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 multiplier for fast multiply-accumulate operations
18-kb block SelectRAM memory DIA DIPA ADDRA WEA ENA SSRA CLKA
DOA DOPA
DIB DIPB ADDRB WEB ENB SSRB CLKB
DOB DOPB
Virtex II: DCM, DCI DCM
DCI
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. Xilinx: “FPGA DSP”
Left-Hand SLICEM Right-Hand SLICEL COUT
COUT
Slice X1Y1
Slice X1Y0 Switch Matrix
SHIFTIN
Slice X0Y1
Fast Connects
Slice X0Y0
SHIFTOUT
CIN
CIN
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
FPGA Introduction 91
Agenda • FPGAs – Virtex II – Spartan 3 – Virtex 4 y 5 • VHDL • Herramientas de Xilinx
92
Virtex-4 RocketIO™ Multi-Gigabit Transceivers
Smart RAM New block RAM/FIFO
622 Mbps–10.3 Gbps
Xesium Clocking Technology
Advanced CLBs
500 MHz
200K Logic Cells
Tri-Mode Ethernet MAC XtremeDSP™ Technology Slices
10/100/1000 Mbps
256 18x18 GMACs
PowerPC™ 405 with APU Interface 450 MHz, 680 DMIPS
1 Gbps SelectIO™ ChipSync™ Source synch, XCITE Active Termination
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, VCC
Higher 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-ended Up to 1,200 pins per FPGA
1 Gbps differential, 600 Mbps singleended Up to 960 pins per FPGA
Higher bandwidth More multi-standard interfaces
DSP Blocks
25 x 18-bit MAC, 550MHz
18 x 18-bit MAC, 500MHz
Higher performance Up to 352 GMACS
Built-in 10/100/1000 Ethernet MAC
Built-in 10/100/1000 Ethernet MAC
LXT, SXT Platforms Ethernet Media Access Controller
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
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
101
Estructuras de VHDL • Entity: define la vista externa de un modelo I/O y parámetros) • Architecture: define una posible funcionalidad de un modelo
102
Ejemplo simple en VHDL - Concurrencia Entidad ENTITYpvhdl IS Entrada PORT ( in1 : in std_logic_vector(4 downto 0); out1 : out std_logic_vector(4 downto 0)); END pvhdl;
Salida Arquitectura in1 “10101”
out1
-- descripción Arquitectura ARCHITECTURE structural OF pvhdl IS BEGIN OUT1 <= IN1 AND B”10_101”; END structural;
Ejemplo simple en VHDL - Concurrencia Entidad ENTITYpvhdl IS PORT ( s1,s2 : in std_logic_vector(4 downto 0); s3: out std_logic_vector(4 downto 0)); END pvhdl;
Arquitectura s1 s2
s3 st
ARCHITECTURE structural OF pvhdl IS SIGNAL st : std_logic_vector(4 downto 0); BEGIN st <= NOT s2; s3 <= s1 AND st; END structural;
Atributos Atributos predefinidos para señales en VHDL, por ejemplo para la señal S: • S’EVENT: devuelve TRUE si S ha cambiado
105
Proceso •
Los procesos son concurrentes con otros procesos, internamente son secuenciales.
•
Requiere de algún medio de activación (lista de sensibilidad)
Lista de sensibilidad PROCESS (reloj, reset) BEGIN IF reloj’EVENT AND reloj = ‘1’ Sentencias secuenciales END IF; END PROCESS;
Concurrente y secuencial Concurrentes WHEN…ELSE sal <= i0 WHEN sel = “00” i1 WHEN sel = “01” …… ELSE in; WITH…SELECT
Secuenciales IF..THEN…ELSE IF sel = “00” THEN sal <= i0; ELSEIF sel = “01” THEN sal <= i1; ELSE sal <= i2; END IF CASE (inside a process)
WITH sel SELECT sal <= i0 WHEN “00”; i1 WHEN “01”; i2 WHEN “10”; i3 WHEN OTHERS;
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
107
Especificación de multiplexores - Concurrencia sel sal <= bus0 WHEN sel = ‘0’ ELSE bus1;
bus0
0 sal
bus1
1
sel WITH sel SELECT sal <= i0 WHEN “00”; i1 WHEN “01”; i2 WHEN “10”; i3 WHEN OTHERS;
i0 i1 i2 i3
00 01 10 11
sal
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;
sel i0 i1 i2 i3
00 01 10 11
mou
109
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 ENTITY pvhdl s1
ENTITY ins s3
s2 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;
i1 i2
ENTITY pvhdl
o1
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;
Arquitectura ARCHITECTURE
OF 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 ;
112
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’ );
113
TO y DOWNTO ENTITY simp IS PORT ( s_to : IN BIT_VECTOR (0 TO 2); s_do: IN BIT_VECTOR (2 DOWNTO 0)); END simp; ARCHITECTURE logic OF simp IS BEGIN s_do(2), s_so(1), s_do(0) = ‘1’,’1’,’0’ s_do <= B”110”; s_to(0), s_to(1), s_to(2) = ‘1’,’1’,’0’ s_to <= B”110”; END logic; TO y DOWN indican cual bit está a la izquierda y cual a la derecha.
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. 115
Máquina de estado ENTITY maquina IS PORT(clk, insig : IN STD_LOGIC; sal : OUT STD_LOGIC); END ENTITY maquina;
ARCHITECTURE ma OF maquina IS TYPE ESTADO IS (s1,s2) ; SIGNAL est_actual, est_siguiente: ESTADO; BEGIN PROCESS (clk, est_actual) BEGIN CASE est_actual IS WHEN 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; 116
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
Verificación diseño Simulación funcional
Síntesis del diseño Implementación • Mapping • Placement • Routing • Generación bitstream Descarga del bitstream
Análisis temporal estático BA
Simulación temporal
Verificación en circuito
Flujo de diseño FPGAs Esquemático o HDL Solo para HDL
Del diseño a la descripción física Archivo .BIT Puede ser a través de JTAG o cable XChecker a los pines de programación del FPGA
Especificación del diseño
Verificación Simulación funcional
Síntesis del diseño Implementación • Mapping • Placement • Routing • Generación bitstream Descarga del bitstream
Análisis temporal estático BA
Simulación temporal
Verificación en circuito
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 Fuentes •
ISE (Integra grated Synthesi esis Environment)
•
ISE incluye las siguientes herramientas: – – – – –
XST Synthesis Synthesis CORE Generator™ Architecture Wizard Wizard ECS schematic schematic editor StateCAD state diagram editor – HDL Bencher waveform waveform editor (for testbench creation).
Procesos
Sources: Synthesis/Implementation Synthesis/Implementation Archivo fuente en VHDL
Síntesis Translate, Map, Place&Route Generar .BIT
Agenda • FPGAs • VHDL • Herramientas de Xilinx – ISE – Core Generator
125
Flujo de diseño – Core Generator Flujo HDL
Flujo CoreGen
HDL
Behavioral Simulation
Synthesis
Functional Simulation
HDL COREGen
Synthesis
Behavioral Simulation
Functional Simulation
Implementation
Timing Simulation
Implementation
Timing Simulation
Download
In-Circuit Verification
Download
In-Circuit Verification
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
Core Overview: versión y descripción
Parameters: parametrizar el core
Web Links: acceso a páginas Web relacionadas Contact: información del vendedor
Data sheet