1 introduccion a vhdl

130
1 Diseño de Hardware con VHDL Ferney Amaya Fernández [email protected] Universidad Pontificia Bolivariana Medellín - Colombia

Upload: maria-garcia-meneses

Post on 06-Apr-2016

66 views

Category:

Documents


6 download

DESCRIPTION

introduccion a electronica digital y vhdl con un enfoque a procesmaiento digital de señales

TRANSCRIPT

Page 1: 1 Introduccion a vhdl

1

Diseño de Hardware con VHDL

Ferney Amaya Fernández [email protected]

Universidad Pontificia Bolivariana

Medellín - Colombia

Page 2: 1 Introduccion a vhdl

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.

Page 3: 1 Introduccion a vhdl

Evaluacion

• Proyecto 60 puntos

• Actividades y laboratorios 40 puntos

– Laboratorios 7 prácticas – 28 puntos

– Ejercicios diarios 6 ejercicios – 12 puntos

Ferney Amaya 3

Page 4: 1 Introduccion a vhdl

4

Agenda

Conceptos básicos

Procesamiento Digital de Señales

Arquitectura de FPGAs

VHDL

Flujo de diseño empleando FPGAs

Tarjeta Spartan 3

Page 5: 1 Introduccion a vhdl

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

Page 6: 1 Introduccion a vhdl

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

Page 7: 1 Introduccion a vhdl

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

Page 8: 1 Introduccion a vhdl

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.

Page 9: 1 Introduccion a vhdl

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

Page 10: 1 Introduccion a vhdl

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:

Page 11: 1 Introduccion a vhdl

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

Page 12: 1 Introduccion a vhdl

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

Page 13: 1 Introduccion a vhdl

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

Page 14: 1 Introduccion a vhdl

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

Page 15: 1 Introduccion a vhdl

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

Page 16: 1 Introduccion a vhdl

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)

Page 17: 1 Introduccion a vhdl

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

Page 18: 1 Introduccion a vhdl

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

Page 19: 1 Introduccion a vhdl

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

Page 20: 1 Introduccion a vhdl

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)

Page 21: 1 Introduccion a vhdl

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

Page 22: 1 Introduccion a vhdl

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

Page 23: 1 Introduccion a vhdl

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

Page 24: 1 Introduccion a vhdl

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)

Page 25: 1 Introduccion a vhdl

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

Page 26: 1 Introduccion a vhdl

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

Page 27: 1 Introduccion a vhdl

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

Page 28: 1 Introduccion a vhdl

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

Page 29: 1 Introduccion a vhdl

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

Page 30: 1 Introduccion a vhdl

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

Page 31: 1 Introduccion a vhdl

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)

Page 32: 1 Introduccion a vhdl

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

Page 33: 1 Introduccion a vhdl

33

Agenda

Conceptos básicos

Procesamiento Digital de Señales

Arquitectura de FPGAs

VHDL

Flujo de diseño empleando FPGAs

Tarjeta Atlys

Page 34: 1 Introduccion a vhdl

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] π

Page 35: 1 Introduccion a vhdl

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

Page 36: 1 Introduccion a vhdl

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

Page 37: 1 Introduccion a vhdl

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

Page 38: 1 Introduccion a vhdl

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:

Page 39: 1 Introduccion a vhdl

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

Page 40: 1 Introduccion a vhdl

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

Page 41: 1 Introduccion a vhdl

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

Page 42: 1 Introduccion a vhdl

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

Page 43: 1 Introduccion a vhdl

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:

Page 44: 1 Introduccion a vhdl

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)

Page 45: 1 Introduccion a vhdl

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=∆ '

Page 46: 1 Introduccion a vhdl

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?

Page 47: 1 Introduccion a vhdl

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: -π ≤ ω ≤ π

Page 48: 1 Introduccion a vhdl

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.

Page 49: 1 Introduccion a vhdl

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

Page 50: 1 Introduccion a vhdl

50

Filtros analógicos

Butterworth Elíptico

butter() ellip()

Chebyshev tipo I Chebishev tipo II

cheby1() cheby2()

Page 51: 1 Introduccion a vhdl

51

Filtros analógicos

Bessel

Page 52: 1 Introduccion a vhdl

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

Page 53: 1 Introduccion a vhdl

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=

Page 54: 1 Introduccion a vhdl

Diezmado e interpolación

D

ff x

y =Pasa-bajasfx fyD

xy Iff =fx fyI Pasa-bajas

fx I LPF D fy

Page 55: 1 Introduccion a vhdl

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.

Page 56: 1 Introduccion a vhdl

56

Agenda

Conceptos básicos

Procesamiento Digital de Señales

Implementación en FPGAs

VHDL

Flujo de diseño empleando FPGAs

Tarjeta Atlys

Page 57: 1 Introduccion a vhdl

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.

Page 58: 1 Introduccion a vhdl

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/

Page 59: 1 Introduccion a vhdl

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)

Page 60: 1 Introduccion a vhdl

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

Page 61: 1 Introduccion a vhdl

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

Page 62: 1 Introduccion a vhdl

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

Page 63: 1 Introduccion a vhdl

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

Page 64: 1 Introduccion a vhdl

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

Page 65: 1 Introduccion a vhdl

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

Page 66: 1 Introduccion a vhdl

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.

Page 67: 1 Introduccion a vhdl

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)

Page 68: 1 Introduccion a vhdl

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

Page 69: 1 Introduccion a vhdl

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)

Page 70: 1 Introduccion a vhdl

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

Page 71: 1 Introduccion a vhdl

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

Page 72: 1 Introduccion a vhdl

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”

Page 73: 1 Introduccion a vhdl

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”

Page 74: 1 Introduccion a vhdl

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”

Page 75: 1 Introduccion a vhdl

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

Page 76: 1 Introduccion a vhdl

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

Page 77: 1 Introduccion a vhdl

Agenda

• FPGAs

– Virtex II

– Spartan 3

– Virtex 4 y 5

• VHDL

• Herramientas de Xilinx

77

Page 78: 1 Introduccion a vhdl

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

Page 79: 1 Introduccion a vhdl

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”

Page 80: 1 Introduccion a vhdl

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”

Page 81: 1 Introduccion a vhdl

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”

Page 82: 1 Introduccion a vhdl

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”

Page 83: 1 Introduccion a vhdl

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

Page 84: 1 Introduccion a vhdl

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

Page 85: 1 Introduccion a vhdl

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

Page 86: 1 Introduccion a vhdl

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

Page 87: 1 Introduccion a vhdl

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

Page 88: 1 Introduccion a vhdl

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.

Page 89: 1 Introduccion a vhdl

Agenda

• FPGAs

– Virtex II

– Spartan 3

– Virtex 4 y 5

• VHDL

• Herramientas de Xilinx

89

Page 90: 1 Introduccion a vhdl

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”

Page 91: 1 Introduccion a vhdl

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

Page 92: 1 Introduccion a vhdl

Agenda

• FPGAs

– Virtex II

– Spartan 3

– Virtex 4 y 5

• VHDL

• Herramientas de Xilinx

92

Page 93: 1 Introduccion a vhdl

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

Page 94: 1 Introduccion a vhdl

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

Page 95: 1 Introduccion a vhdl

Agenda

• FPGAs

• VHDL

• Herramientas de Xilinx

95

Page 96: 1 Introduccion a vhdl

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

Page 97: 1 Introduccion a vhdl

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 (‘_’)

Page 98: 1 Introduccion a vhdl

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???

Page 99: 1 Introduccion a vhdl

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;

Page 100: 1 Introduccion a vhdl

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

Page 101: 1 Introduccion a vhdl

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

Page 102: 1 Introduccion a vhdl

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

Page 103: 1 Introduccion a vhdl

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;

Page 104: 1 Introduccion a vhdl

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;

Page 105: 1 Introduccion a vhdl

105

Atributos

Atributos predefinidos para señales en VHDL, por ejemplo para la señal S:

• S’EVENT: devuelve TRUE si S ha cambiado

Page 106: 1 Introduccion a vhdl

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)

Page 107: 1 Introduccion a vhdl

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

Page 108: 1 Introduccion a vhdl

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

Page 109: 1 Introduccion a vhdl

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

Page 110: 1 Introduccion a vhdl

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

Page 111: 1 Introduccion a vhdl

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

Page 112: 1 Introduccion a vhdl

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

Page 113: 1 Introduccion a vhdl

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’ );

Page 114: 1 Introduccion a vhdl

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.

Page 115: 1 Introduccion a vhdl

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.

Page 116: 1 Introduccion a vhdl

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;

Page 117: 1 Introduccion a vhdl

Agenda

• FPGAs

• VHDL

• Herramientas de Xilinx

– ISE

– Core Generator

117

Page 118: 1 Introduccion a vhdl

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

Page 119: 1 Introduccion a vhdl

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

Page 120: 1 Introduccion a vhdl

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

Page 121: 1 Introduccion a vhdl

Agenda

• FPGAs

• VHDL

• Herramientas de Xilinx

– ISE

– Core Generator

121

Page 122: 1 Introduccion a vhdl

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

Page 123: 1 Introduccion a vhdl

Sources: Synthesis/Implementation

Archivo fuente en VHDL

Síntesis

Translate, Map, Place&Route

Generar .BIT

Page 124: 1 Introduccion a vhdl
Page 125: 1 Introduccion a vhdl

Agenda

• FPGAs

• VHDL

• Herramientas de Xilinx

– ISE

– Core Generator

125

Page 126: 1 Introduccion a vhdl

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

Page 127: 1 Introduccion a vhdl

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

Page 128: 1 Introduccion a vhdl

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

Page 129: 1 Introduccion a vhdl

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

Page 130: 1 Introduccion a vhdl

130

Diseño de Hardware con VHDL

Ferney Amaya Fernández [email protected]

Universidad Pontificia Bolivariana

Medellín - Colombia