Está en la página 1de 185

Software Defined Radio (SDR) es un sistema de radio

comunicaciones en el cual una parte o la totalidad


de sus componentes pertenecientes a la capa física
(hardware) son implementados por software .

(Ej.: Mezcladores ,moduladores / Demoduladores ,


Filtros,etc.)
La implementación de este tipo de sistemas se
suele realizar mediante Computadoras Personales
, Sistemas embebidos o hardware especializado
(DSP o FPGA).
El concepto de SDR no es algo nuevo pero ha
tenido un gran impulso gracias a la rápida
evolución de la electrónica digital en los últimos
tiempos .
Un sistema básico para implementar SDR puede
ser una computadora personal equipada con una
tarjeta de sonido y precedido por una etapa de RF
(RF Front End). En la computadora se ejecutan
diversos algoritmos de procesamiento de señales

RF A/D DSP D/A


Estos sistemas permiten recibir y transmitir
señales de radio que pueden adaptarse a
diferentes protocolos y sistemas de modulación
con solo cambiar el software que ejecuta el
procesador.

SDR es de gran utilidad en telefonía celular y


aplicaciones militares donde se necesita cambiar
en tiempo real el protocolo usado.
SDR puede ser lo suficientemente flexible para
evitar las limitaciones de ancho de banda
impuestos en los sistemas tradicionales para
evitar interferencias.

Por ejemplo en el caso de spread spectrum y


técnicas de transmisión de gran ancho de banda
pueden coexistir varios transmisores en el mismo
lugar y con la misma frecuencia con un mínimo de
interferencia gracias al uso de correctores de
errores.
SDA (Software Defined Antenas) son antenas que
permiten seguir una transmisión que proviene de
una dirección dada minimizando así la
interferencia generada por emisores cercanos
SDR junto con las SDA (Software Defined Antenas)
es lo que se conoce como “Radio cognitiva”.

En este tipo de sistemas cada receptor mide el


espectro de la señal que recibe y comunica esta
información a los demás transmisores que
cooperan en la red, de manera que estos últimos
puedan evitar interferencia mutua ya sea
reduciendo la potencia o cambiando su frecuencia
de operación
Las bases teóricas de la propagación de ondas
electromagnéticas fueron descritas por primera
vez por James Clerk Maxwell en un documento
dirigido a la Royal Society (1873).
Heinrich Rudolf Hertz, en 1888, fue el primero en
validar experimentalmente la teoría de Maxwell,
En 1895, en Italia, un joven de apenas 20 años,
Guglielmo Marconi, recibía a través del diario la
noticia de los efectos de las ondas
electromagnéticas engendradas por un oscilador
eléctrico inventado por Hertz. En 1896, Marconi
obtuvo la primera patente del mundo sobre la
radio, la patente británica 12039,
Sistema inalámbrico de Guillermo Marconi (1985)
El diodo inventado en 1904 por John Fleming
En 1906, Alexander Lee de Forest modificó el
diodo inventado en 1904 por John Fleming
añadiéndole un tercer electrodo, creando así el
triodo. Posteriormente se encontró que el triodo
tenía la capacidad de amplificar las señales
radioeléctricas y también generarlas,
Alexander Lee de Forest: el triodo.
Primeros Receptores
Homodino o Sincrodino
También llamado Zero-IF o de Conversión Directa.
Invención del Transistor
Primer transistor de silicio Bell Labs (1954)
Primeros Receptores
Homodino o Sincrodino
También llamado Zero-IF o de
Conversión Directa.
Primeros Receptores
Homodino o Sincrodino
Solo útiles cuando el demodulador es
del tipo coherente y la banda agosta
Primeros Receptores
Superheterodino
Primeros Receptores
Superheterodino
Limitaciones del receptor superheterodino:
-Hay que cambiar simultáneamente la frecuencia
del oscilador local y del filtro de RF.
-Un nuevo problema: la influencia de la
frecuencia imagen.
Superheterodino
Concepto de “rechazo a la frecuencia
imagen”, IR, en receptores superheterodinos

Como mejoramos la IR ?
Métodos para mejorar el rechazo a la
frecuencia imagen en receptores
superheterodinos
Métodos para mejorar el
rechazo a la frecuencia imagen
en receptores superheterodinos

Usar estructura de mezcladores con


rechazo de banda imagen (estructura I/Q)

Usar un filtro de RF más agudo

Separar más la frecuencia


imagen
Ejemplos de receptores
Ejemplos de receptores
De lo visto anteriormente en la implementación
de los receptores existen ciertos componentes
Básicos que los forman
Filtros

Estos son algunos de


Osciladores los componentes que se
pueden implementar en
Mezcladores
el campo digital
Sumadores

Amplificadores
Diseño de Filtros Digitales
Filtros Digitales

IIR FIR

Métodos de diseño

Coeficientes de la función de transferencia

08/11/2013 29
Diseño de Filtros Digitales
Definición de la plantilla de un filtro

08/11/2013 30
Diseñó e implementación de FIR

N 1
y ( n) x ( n) h( n) h( k ) x ( n k )
k 0

08/11/2013 Ing Daniel A Jacoby 31


Diseñó e implementación de FIR
Ecuaciones Básicas

N 1
y ( n) x ( n) h( n) h( k ) x ( n k )
k 0

N 1 N 1
n n
Y ( z) H ( z) X ( z) H ( z) h( n) z X ( z) x ( n) z
n 0 n 0

Respuesta en frecuencia

N 1
H (e j T ) H ( z) z e j T h(n)e jn T

n 0

08/11/2013 Ing Daniel A Jacoby 32


 Ejemplo de un filtro FIR

0.5
Phase of the transfer function 4

3.5
Amplitude of the transfer function
[H,f]=freqz(b,a,256,1);
3

Modulo=abs(Hf);
0

2.5
-0.5

-1

1.5

Fase=angle(Hf);
-1.5
1

-2
0.5

-2.5
0.05 0.1 0.15 0.2 0.3 0.35 0.4 0.45 0
0 0.25 0.5 0 0.05 0.1 0.15 0.2
0.25
0.3 0.35 0.4 0.45
0.5
Frequency, FS=1 Frequency, FS=1
 Ejemplo de un filtro FIR

Plot(f,Modulo);
Plot(f,Fase);

1
Phase of the transfer function 4
Amplitude of the transfer function
3.5
0.5

3
0

2.5
-0.5

-1

1.5

-1.5
1

-2
0.5

-2.5
0.05 0.1 0.15 0.2 0.3 0.35 0.4 0.45 0
0 0.25 0.5 0 0.05 0.1 0.15 0.2
0.25
0.3 0.35 0.4 0.45
0.5
Frequency, FS=1 Frequency, FS=1
 Ejemplo de un filtro FIR

X=cos( 2 * pi * f1)+cos(2 * pi *f 2)
Y=filter(b,a.x); plot(X); plot(Y);

3
Input x 6
Output y
2 4

1 2

0 0

-1 -2

-2 -4

-3 -6
0 20 40 60 80 100 0 20 40 60 80 100
Time Time
Diseñó e implementación de FIR

Si se imponen ciertas condiciones a los coeficientes de los


Filtros FIR podemos lograr filtros con fase lineal

( )
h( n) h( N 1 n)
h( n) h( N 1 n) N 1
T
N 1 2
T
2
2

FIR Simétrico FIR Antisimétrico

08/11/2013 Ing Daniel A Jacoby 36


Diseñó e implementación de FIR

Respuesta impulsiva

h(n)
h(n)
N=7
N=7

n
n

FIR Simétrico FIR Antisimétrico

08/11/2013 Ing Daniel A Jacoby 37


Diseñó e implementación de FIR
Respuesta en frecuencia

Simétrico Impar (Tipo 1) Simétrico Par (Tipo 2)


N 1 N
N 1 N 1
j T 2 2
2
j T
2 1
e a k cos(k T ) e bk cos T k
k 0 k 1 2

Antisimétrico Impar (Tipo 3) Antisimétrico Par (Tipo 4)


N 1 N
N 1 N 1
2
j T
2 2
2 j T
2 2 1
e a k sen(k T ) e bk sen T k
k 1 k 1 2

N N 1 N 1T
bk 2h k T ak 2h k T a0 h
2 2 2

08/11/2013 Ing Daniel A Jacoby 38


Diseñó e implementación de FIR
Respuesta en frecuencia

Simétrico Impar (Tipo 1) Simétrico Par (Tipo 2)


Diseño de LP,HP,BP,RB Diseño de LP,BP
Restricciones: Ninguna Restricciones: 0 en fs/2

Antisimétrico Impar (Tipo 3) Antisimétrico Par (Tipo 4)


Diseño de Diferenciadores y Diseño de Diferenciadores y
transformadores de hilbert transformadores de hilbert
Restricciones: 0 en 0 y fs/2 Restricciones: 0 en 0

08/11/2013 Ing Daniel A Jacoby 39


Diseñó e implementación de FIR
Métodos clasicos de diseño

Usando la Serie de Fourier (Ventanas)


Muestreando en el dominio de la frecuencia
Parks McClelan (Minimax, Equiripple o Chebycheff)
Least Squares

08/11/2013 Ing Daniel A Jacoby 40


Diseñó e implementación de FIR
Herramientas de diseño

MATLAB
Filter Design & Analysis Tool

08/11/2013 Ing Daniel A Jacoby 41


Diseñó e implementación de FIR
Ejemplo de uso - Diseño
Sampling Frequency (Fs) = 1.5 MHz
Fstop 1 = 270 KHz
Fpass 1 = 300 KHz
Fpass 2 = 450 Khz
Fstop 2 = 480 KHz
Attenuation on both sides of the passband = 54 dB
Pass band ripple = 1

08/11/2013 Ing Daniel A Jacoby 42


Diseñó e implementación de FIR
Ejemplo de uso – Respuesta en frecuencia
Sampling Frequency (Fs) = 1.5 MHz
Fstop 1 = 270 KHz
Fpass 1 = 300 KHz
Fpass 2 = 450 Khz
Fstop 2 = 480 KHz
Attenuation on both sides of the passband = 54 dB
Pass band ripple = 1

08/11/2013 Ing Daniel A Jacoby 43


Diseñó e implementación de FIR
Ejemplo de uso – Exportando Coeficientes

08/11/2013 Ing Daniel A Jacoby 44


Diseñó e implementación de FIR
Ejemplo de uso – Creando un bloque en Simulink

08/11/2013 Ing Daniel A Jacoby 45


Diseñó e implementación de FIR
Ejemplo de uso – Cuantizacion de coeficientes

Respuesta en frecuencia
ideal
cuantizada

08/11/2013 Ing Daniel A Jacoby 46


Diseño de Filtros Digitales
IIR

Métodos de diseño
Transformando filtros analógicos en digitales
Método de la respuesta invariante al impulso
Matched Z
Métodos de integración numérica
Backward
Forward
Bilineal
Métodos de optimización numérica
Newton
Minimax

08/11/2013 47
Diseño de Filtros Digitales
Método de la Transformación Bilineal

I - Corregir la frecuencia de corte


del Filtro analógico

2 C T
C tg
T 2
II – Realizar la transformacion
Bilineal

H D ( s) H A ( s) s 2z 1
Tz 1

Ing. Roxana Saint Nom - Ing. Daniel A. Jacoby


08/11/2013 REVISION DE TEORIA DE DSP 48
Diseño de Filtros Digitales

Ing. Roxana Saint Nom - Ing. Daniel A. Jacoby


08/11/2013 REVISION DE TEORIA DE DSP 49
Digital Down/Up Converter Blocks
Los filtros CIC (Cascade-integrator-Comb ) son una
forma computacional eficiente para implementar
filtros digitales de banda angosta en procesos de
interpolación y decimación muy usados en SDR .
Estos filtros son usados como filtros anti alias en
procesos de decimación (reducción de la frecuencia
de muestreo) y como filtros anti-imagen en procesos
de interpolación (aumento de la frecuencia de
muestreo)
Lookup Table : Poco flexible , La frecuencia de salida depende de:

- Frecuencia del clock


- Tamaño del Intervalo de la tabla del seno

Ninguna de estas opciones permite un cambio rápido de la


frecuencia (Ej: Frequency Hopping)
Periodo de sen(x) 2∏ sin embargo para
una Look up table el periodo es la
longitud de la misma dado que la variable
de entrada es un entero.

Es conveniente que el tamaño de la tabla


sea potencia de 2.

Resulta asi que la tabla contiene 2B


valores y las frecuencias que podemos
generar son un múltiplo entero de 1/2B
Ahora si queremos implementar un
sintonizador digital de AM necesitaríamos
una Frecuencia de muestreo de por lo
menos 3.3MHz.

Si usamos una tabla con B=8 nuestra


resolución en frecuencia es 3.3MHz * 1/2B
Es decir 12.89KHz que es insuficiente
pues el espaciado entre estaciones es de
10KHz
Incrementar el tamaño de la tabla puede
servir pero esto tiene un limite pues el
incremento es exponencial con B

Digital Phase Wheel


Una solución posible es avanzar el indice
con un patrón alternado de 1 y 2
muestras . Así la frecuencia efectiva de la
senoidal de salida seria un valor en el
medio de los dos mas una cierta cantidad
de ruido.

Esto introduce el uso de un segundo


contador fraccional que periódicamente
incrementa el contador entero

Digital Phase Wheel


Una solución posible es avanzar el indice con un
patrón alternado de 1 y 2 muestras . Así la
frecuencia efectiva de la senoidal de salida seria un
valor en el medio de los dos mas una cierta cantidad
de ruido.

Esto introduce el uso de un segundo contador


fraccional que periódicamente incrementa el
contador entero
Phase Accumulator
DDS Architecture
D= 30MHz / 3KHz

D=10000
ASICs
Aplication Specific
Integrated Circuits

DSP
Digital signal
Processor

FPGA
Field Programable
Gate Array
REP #(NTAPS-1)

MAC X0,Y0,a X:(r0)+,X0 Y:(r4)+,Y0

Input Samples Filter Coefficients


ASICs
Aplication Specific
Integrated Circuits

DSP
Digital signal
Processor

FPGA
Field Programable
Gate Array
Dispositivos Programables- Funciones
Lógicas Básicas
Dispositivos Programables- PLD
FPGA Evolución y Revolución
CMOS Alternativas de diseño

Field Programmable Gate Arrays a hardware device


with programmable logic, routing, memory, and I/O
FPGA: Look Up Table (LUT)
FPGA interconnect
FPGA: Interconnect
FPGA: DSP Blocks
Virtex-II Platform FPGA (1)
Active Interconnect™ Powerful CLB

Slice S3

CLB, Slice S2
Switch
IOB, Switch
Matrix
DCM Matrix Slice S1

• Fully buffered Slice S0

• Fast, predictable
BRAM
• 8 LUTs
• 128b distributed RAM
Block RAM
• Wide input functions (32:1)
• 18KBit True Dual Port Multipliers • Support for slices based
• Up to 3 Mbits / device • 18b x 18b multiplier multipliers
• 200+ MHz pipelined
Virtex-II Platform FPGA (2)
16 Global Clocks
• Eight clocks to any quadrant
• Switch glitch-free between clocks

16 Clocks DCM

DCI
• Zero delay clock
• Precision phase shift
• Frequency synthesis
• Duty cycle correction
• On-chip termination • Clock multiply and divide
• Guaranteed signal integrity
• Eliminates 100s of resistors
Virtex-II Memory Hierarchy
Distributed RAM High-Performance
External Memory Interfaces
16x1 16x1
DDR
16x1 16x1
SDRAM
16x1 16x1
16x1 16x1

16k x 1
8k x 2 ZBT®
4k x 4 SRAM
2k x 9
1k x 18
512 x 36
QDR
True-Dual Port™ SRAM
Synchronous Block RAM
Virtex-II CLB

• Flexible resources COUT COUT


— Wide-input functions TBUF
TBUF
• 16:1 multiplexer in 1 CLB Slice S3

— Fast arithmetic functions


• Two dedicated carry chains Slice S2
— Cascadable shift registers in LUT Switch SHIFT
• 128-b shift register in 1 CLB Matrix

• Ease of Performance Slice S1

— Direct routing enabling high speed


Slice S0

CIN CIN Fast


Connects
Virtex-II Slice
 Each slice contains two:
RAM16
—Four inputs lookup tables
—16-bit distributed SelectRAM
SRL16
—16-bit shift register
MUXFx • Each register:
LUT CY Register — D flip-flop
G MUXF5 — Latch
• Dedicated logic:
LUT CY Register — Muxes
F — Arithmetic logic
Arithmetic Logic — MULT_AND
— Carry Chain
Unique Distributed RAM
 LUTs used as memory inside the 64b
64b Dual Port
fabric RAM

 Flexible, can be used as RAM, 1 CLB


ROM, or shift register
128b Single Port
 Distributed memory with fast RAM16 RAM

access time 16b


1 CLB
 Cascadable with built-in CLB SRL16
routing
 Applications LUT Shift register
– Linear feedback shift register 128b
– Distributed arithmetic
– Time-shared registers
– Small FIFO 16b 1 CLB

– Digital delay lines (Z-1)


The SRL16E
• The 16 SRAM cells have been organized into a shift register
– The ‘CE’ is used, in conjunction with the clock, to write data into the first flip-flop
and for all other data to move right by one position
– Because this is a predictable operation, no address is required for writing

• The SRL16E is excellent in implementing efficient DSP Functions


– A very efficient way to delay data samples
– Shifting samples and scanning at faster rate
D Q15
CE
A Q D Q SRLC16E
Cascadable
CE
CE CE CE CE CE CE CE CE CE CE CE CE CE CE CE CE Q15
D D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q

A[3:0] 0000 1111

Q
Multiplier Unit
 Embedded 18-bit x 18-bit multiplier
 Quantity:
 Virtex-II : up to 168 18 Bit
 2V40 : 4 36 Bit
 2V8000 : 168
18 Bit
 Virtex-II Pro : up to 556
 2VP2 : 12
 2VP125 : 556
 2s complement signed operation Signed Multiply Performance
 4- to 18-bit operands Virtex-II
 Combinational & pipelined options 18 x 18 245 MHz
 Operates with block RAM and fabric Virtex-II Pro
to implement MAC function 18x18 300 MHz
Pipelined multiplier with registered
Preliminary inputs
V1.60 Speeds and outputs
File
Virtex-II Family
Virtex-II
Part Number
XC2V
40
XC2V
80
XC2V
250
XC2V
500
XC2V
1000
XC2V
1500
XC2V
2000
XC2V
3000
XC2V
4000
XC2V
6000
XC2V
8000
LUTs + FFs 512 1,024 3,072 6,144 10,240 15,360 21,504 28,672 46,080 67,584 93,184
BRAM (kb) 72 144 432 576 720 864 1,008 1,728 2,160 2,592 3,024
Multipliers 4 8 24 32 40 48 56 96 120 144 168
DCM Units 4 4 8 8 8 8 8 12 12 12 12
Package Available SelectIO
CS144 88 92 92
FG256 88 120 172 172 172
FG456 200 264 324
FG676 392 456 484
FF896 432 528 624
FF1152 720 824 824 824
FF1517 912 1,104 1,108
BG575 328 392 408
BG728 456 516
BG957 624 684 684 684 684
Virtex-II Pro versus Virtex-II
 Lower cost
 Up to 24 RocketIO™  More block RAMs and
embedded multi-gigabit multiplier blocks
transceivers  556 embedded multipliers
 Up to four PowerPC  556 Block RAMs
 More Memory  Smaller technology
 10 MBits in block RAM  0.13 µm Nine-Layer Copper
 1,738 KBits in Distributed Process with 90 nm high-
RAM speed transistors
 More I/O pins per package
(up to 1704)
Virtex-II Pro Family
Virtex-II Pro 2VP2 2VP4 2VP7 2VP20 2VP30 2VP40 2VP50 2VP70 2VP100 2VP125
Logic Cells 3,168 6,768 11,088 20,880 30,816 43,632 53,136 74,448 99,216 125,136
PPC405 0 1 1 2 2 2 2 2 2 4
MGT3.125Gb 4 4 8 8 8 12* 16* 20 20* 24*
BRAM (kb) 216 504 792 1,584 2,448 3,456 4,176 5,904 7,992 10,008
Multipliers 12 28 44 88 136 192 232 328 444 556
DCM Units 4 4 4 8 8 8 8 8 12 12
Package MGT Available SelectIO
FG256 4 140 140

FG456 8 156 248 248


FF672 8 204 348 396
FF896 8 396 556 556
FF1152 12 564 692 692 692
FF1148* 0 804 812
FF1517 16 804 852 964
FF1704 20 996 1040 1040
FF1696* 0 1164 1200
* FF1148 and FF1696 special bond option: No MGT with Maximum SelectIO
Essence of a DSP Processor
Fixed bit width.
Algorithm may
not require all
Program Counter and Program Instruction bits
Control Memory Decode

I/O Registers ALU Memory

Cycles expended All values currently


communicating with not in use must be
ALU supports many retained
outside world or other operations but only
processors one or a few can be ALU contains a fixed set of
used at one time operations and multiple
operations (cycles) required
to achieve desired effect
Why FPGA?
FPGAs
Reason Mean
1: FPGAs handle highParallelism
computational workloads

Conventional DSP Device FPGA

Data In Data In
Reg Reg0 Reg1 Reg2 Reg255

C0 C1 C2 .... C255
MAC unit

Data Out Data Out

256 Loops needed to process samples All 256 MAC operations in 1 clock cycle
256 Tap FIR Filter Example
Multiply Accumulate
Multiple Engines
 Parallel processing
maximizes data throughput
Data In
 Support any level of Reg0 Reg1 Reg2 Reg255

parallelism
 Optimal performance/cost C0 C1 C2
.... C255
tradeoff
 256 Tap FIR Filter
 256 multiply and All 256 MAC
accumulate (MAC) operations in one Data Out
operations per data sample clock cycle
 One output every clock
cycle
 Flexible architecture
 Distributed DSP resources
(LUT, registers, multipliers,
& memory)
FPGAs are Ideal for:
Multi-channel DSP designs
20MHz ch1 80MHz
LPF Samples
Samples
LPF ch2
LPF
LPF ch3
Multi Channel
ch4 Filter
LPF

 FPGAs are also ideally suited for multi-channel DSP designs


 Many low sample rate channels can be multiplexed (e.g. TDM) and processed
in the FPGA, at a high rate
 Interpolation (using zeros) can also drive sample rates higher
Why FPGAs for DSP? (2)
Reason 2: Tremendous Flexibility

A
Q = (A x B) + (C x D) + (E x F) + (G x H) B
× +
C
can be implemented in parallel
D
× + +
Q
E +
F
× +
G
H
× +

But is this the only way in the FPGA?


Customize Architectures to Suit Your Ideal
Algorithms
Parallel Semi-Parallel Serial

× +

+
× + +
× + DQ
+
+ DQ
+
× + × + × +

× +

Speed Optimized for? Cost

FPGAs allow Area (cost) / Performance tradeoffs


Sequential Processing
Limits System Performance
Sample Rate
(MSamples/s)
40

35 Single 300 MHz Processor


Two 300 MHz Processor
30

25
Channel Fixed Processor Clock Rate = Max Sample Rate
Density 20 Number of operations per sample
or
Sample 15

Rate
10

No. of
2 46 8 16 24 32 40 48 56 64 72 80 88 96 104 coefficients
Algorithmic Complexity
HDL : Hardware Description Languages

-VHDL
-VERILOG
VHDL

V Very High Speed Integrated Circuit


H Hardware
D Description
L Language

Lab. Microprocesadores - VHDL D.


08/31/13 Jacoby C.Muñoz 138
VHDL Historia
 En 1980 el departamento de defensa de los Estados Unidos
(DoD) fundo un proyecto para crear un lenguaje estándar para la
descripción del hardware.
 En 1983 se contrata a IBM , Intermetrics y Texas Instuments para
desarrollar el lenguaje.
 En 1985 se crea la versión 7.2 del lenguaje
 En 1987 la IEEE formalizo dicho lenguaje en un estándar
conocido como IEEE Standard 1076’87.
 En 1988 se convierte en un estándar ANSI
 En 1993 el lenguaje fue actualizado y revisado quedando asi el
estándar IEEE Standart 1076’93 .

Lab. Microprocesadores - VHDL D.


08/31/13 Jacoby C.Muñoz 139
Terminología básica
 HDL – (Hardware Description Language) es un software utilizado
para modelar hardware.

 Behavior Modeling -- (Modelado por comportamiento) Un


componente es descrito por su relación salida /entrada. Mediante
este modelado se especifica QUE tiene que hacer el componente

 Structural Modeling – (Modelado estructural) Un componente es


modelado por su interconexión con componentes de menor nivel.
Mediante este modelado se especifica CON QUE se realiza el
componente

Lab. Microprocesadores - VHDL D.


08/31/13 Jacoby C.Muñoz 140
Behavior Modeling
 Solo modela la funcionalidad del sistema no su estructura

 No se hace referencia a un hardware especifico

 Sirve para la síntesis a si como para la simulación

Lab. Microprocesadores - VHDL D. Jacoby


08/31/13 C.Muñoz 143
Structural Modeling
 Modela la estructura del sistema

 Hace una aproximación a un hardware especifico

 Sirve para la síntesis.

Lab. Microprocesadores - VHDL D. Jacoby


08/31/13 C.Muñoz 144
Unidades de Diseño

 ENTITY : Sirve para definir


una visión externa de un
modelo. Equivale al símbolo
usado para un componente en
un esquemático.
 ARCHITECTURE : Sirve para
especificar el funcionamiento
de un modelo. Equivale al
esquemático de un circuito

Lab. Microprocesadores - VHDL D.


08/31/13 Jacoby C.Muñoz 145
Entity:Generic

 GENERIC : Sirve para pasar nuevos parámetros de funcionamiento


durante la compilación.
Lab. Microprocesadores - VHDL D.
08/31/13 Jacoby C.Muñoz 146
Entity: Port

 Port : Sirve para describir las entradas y salidas de la entidad.


Es un canal de comunicación entre un bloque y su entorno.

Lab. Microprocesadores - VHDL D.


08/31/13 Jacoby C.Muñoz 147
Port Declaration
Port(<signal> List of interface signals : Mode Type <: = initial value> ;
<signal> List of interface signals : Mode Type <: = initial value> ;
………………………………………….
<signal> List of interface signals : Mode Type <: = initial value>
);

ENTITY cosa IS -- Defino una cosa !!


PORT(data_in : IN BIT;
data_out : OUT BIT);
END cosa;

08/31/13 148
Port Declaration
Mode:
 in: La señal es una entrada de la entidad. Solo se puede LEER
dentro de la arquitectura.

 Out: La señal es una entrada de la entidad. Solo se puede


ESCRIBIR dentro de la arquitectura no se puede leer dentro
de la arquitectura.
 InOut : Bidireccional . Se puede leer o escribir

 Buffer: Es una salida pero se puede leer dentro de la arquitectura


(internal feedback)

Lab. Microprocesadores - VHDL D.


08/31/13 Jacoby C.Muñoz 149
Arquitectura (Architecture)

Behavior !!!

Lab. Microprocesadores - VHDL D.


08/31/13 Jacoby C.Muñoz 150
Arquitectura-Entidad

Lab. Microprocesadores - VHDL D. Jacoby


08/31/13 C.Muñoz 151
Ejemplo
ENTITY cosa IS -- Defino una cosa !!
PORT(data_in : IN BIT;
data_out : OUT BIT);
END cosa;

ARCHITECTURE inversor OF cosa IS -- La cosa se comporta como un inversor !!


BEGIN
data_out <= NOT data_in; -- La salida esta invertida respecto de la entrada
END inversor;

COSA
Data_in Data_out

Lab. Microprocesadores - VHDL D.


08/31/13 Jacoby C.Muñoz 152
Operadores

Lab. Microprocesadores - VHDL D.


08/31/13 Jacoby C.Muñoz 153
Signals
La Asignación de señales se hace con <=
Cada asignación es un proceso implícito
Cada proceso es concurrente con los demás

ENTITY cosa IS -- Defino una cosa !!


PORT(r,t,g,h : IN BIT;
qb : OUT BIT);
qa END cosa;

ARCHITECTURE comportamiento OF cosa IS


SIGNAL qa :BIT;
BEGIN
qa <= r or t;
qb <= (qa and not(g xor h));
END comportamiento;
Lab. Microprocesadores - VHDL D.
08/31/13 Jacoby C.Muñoz 154
Sentencias Concurrentes
 Asignaciones simples
y <= a AND b;

 Asignaciones Condicionales
 Asignaciones con Select

Lab. Microprocesadores - VHDL D.


08/31/13 Jacoby C.Muñoz 155
Asignación Condicional

Esta sentencia concurrente se ejecuta si ocurre algún evento en alguna de las señales o en
alguna de las condiciones. Si dos expresiones son validas a la vez se ejecuta la asignación
correspondiente a la primera de ellas.
Las expresiones son evaluadas en el orden de aparición. Prioridad!!!

Lab. Microprocesadores - VHDL D.


08/31/13 Jacoby C.Muñoz 156
Asignación con Select

Esta sentencia concurrente se ejecuta si ocurre algún evento en alguna de las señales
o en la expresión entre el with y el select. Deben aparecer TODOS los valores posibles.
Las expresiones que aparecen después del when deben ser mutualmente exclusivas.
Nótese que las sentencias NO son evaluadas en orden de aparición.

Lab. Microprocesadores - VHDL D.


08/31/13 Jacoby C.Muñoz 157
Asignaciones Concurrentes
Architecture logic OF mux IS
BEGIN
-- Simple signal assignment
X<=(a AND NOT sel) OR (b AND sel);
-- Conditional signal assignment
y<= a WHEN sel =‘0’ ELSE
b;

-- Selected Signal assignment


WITH sel SELECT Recordemos que el orden de las
sentencias no es importante
z<= a WHEN ‘0’, pues se ejecutan en paralelo !!!!!
b WHEN ‘1’;
END logic;

Lab. Microprocesadores - VHDL D.


08/31/13 Jacoby C.Muñoz 158
Procesos Explícitos
Habíamos dicho que expresiones como:

Y<=A and B;
Z<=C or D;

eran sentencias concurrentes y a su vez procesos implícitos.

La expresión a la derecha de la asignación contiene lo que se conoce como


lista de sensibilidad implícita.

Y= Función (A,B) , Z = Función (C,D) .

Los procesos pueden ser implícitos o explícitos

Lab. Microprocesadores - VHDL D.


08/31/13 Jacoby C.Muñoz 159
Procesos Explícitos
Los procesos explícitos o directamente procesos tienen su lista en forma explicita.
Sintaxis:

[Label:] PROCESS (Lista de sensibilidad)

--Declaración de constantes

--Declaración de tipos

--Declaración de variables

BEGIN

--Sentencias secuénciales

END PROCESS [Label] ;

Lab. Microprocesadores - VHDL D.


08/31/13 Jacoby C.Muñoz 160
Procesos Equivalentes
LIBRARY ieee;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_1164.all;
ENTITY simp_prc IS
ENTITY simp IS
PORT(a,b : IN STD_LOGIC;
PORT(a, b : IN STD_LOGIC;
y : OUT STD_LOGIC);
y : OUT STD_LOGIC);
END simp_prc;
END simp;
ARCHITECTURE logic OF simp_prc IS
ARCHITECTURE logic OF simp IS
SIGNAL c : STD_LOGIC;
SIGNAL c : STD_LOGIC;
BEGIN
BEGIN
c <= a and b; process1: PROCESS(a, b)
BEGIN
y <= c; c <= a and b;
END logic; END PROCESS process1;
process2: PROCESS(c)
BEGIN
y <= c;
END PROCESS process2;
END logic;
Lab. Microprocesadores - VHDL D.
08/31/13 Jacoby C.Muñoz 161
Procesos Explícitos-simulación
Inicializa Señales
Fase de
inicialización
Ejecuta todos los procesos

Avanza el tiempo

Ciclo de
Ejecuta simulación
procesos sensibles
Δ

Actualiza Señales

08/31/13 162
Procesos Explícitos
 Un proceso se comporta como una UNICA sentencia y se ejecuta en
forma CONCURRENTE con los demás procesos.
 Dentro del proceso las sentencias se ejecutan en forma SECUENCIAL.
 Los procesos son loops infinitos que se detienen solamente frente a
una LISTA DE SENSIBILIDAD o una sentencia WAIT .
 Las señales recién se actualizan al FINALIZAR el proceso.

Proceso 1 Proceso 2 Proceso N


Sentencias Sentencias Sentencias
Secuénciales Secuénciales Secuénciales

- Lista de Sensibilidad
- Sentencias Wait

08/31/13 163
Procesos Equivalentes???
LIBRARY ieee;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_1164.all;
ENTITY simp_prc IS
ENTITY simp IS
PORT(a,b : IN STD_LOGIC;
PORT(a, b : IN STD_LOGIC;
y : OUT STD_LOGIC);
y : OUT STD_LOGIC);
END simp_prc;
END simp;
ARCHITECTURE logic OF simp_prc IS
ARCHITECTURE logic OF simp IS
SIGNAL c : STD_LOGIC;
SIGNAL c : STD_LOGIC;
BEGIN
BEGIN
process: PROCESS(a, b)
c <= a and b; BEGIN
y <= c;
c <= a and b;
END logic;
y <= c;
END PROCESS process;
END logic;

08/31/13 164
Inferencia

data
q
gate Transparent Latch

La lista de sensibilidad incluye a ambas entradas

Que ocurre cuando GATE =0 ?

RTA: Memoria Implícita

08/31/13 165
Inferencia

La lista de sensibilidad SOLO incluye una


señal (trigger)

clk=‘1’ significa disparo por flanco positivo !!!

08/31/13 166
Synthesize, Implement, Download
Design Verification

HDL Behavioral
Simulation
COREGen

Functional
Synthesis Simulation
Synthesize,
Implement,
Timing and Download
Implementation Simulation the bitstream,
similar to the
original design
Download In-Circuit flow
Verification
Xilinx IP Solutions
DSP Functions Math Functions Memory Functions

$P Additive White Gaussian Noise (AWGN) P Multiplier Generator P Asynchronous FIFO


$P Reed Solomon - Parallel Multiplier P Block Memory modules
$ 3GPP Turbo Code - Dyn Constant Coefficient Mult P Distributed Memory
$P Viterbi Decoder - Serial Sequential Multiplier P Distributed Mem Enhance
P Convolution Encoder - Multiplier Enhancements P Sync FIFO (SRL16)
$P Interleaver/De-interleaver P Pipelined Divider P Sync FIFO (Block RAM)
P LFSR P CORDIC P CAM (SRL16)
P 1D DCT P CAM (Block RAM)
P 2D DCT Base Functions
P DA FIR
P MAC P Binary Decoder
P MAC-based FIR filter P Twos Complement
Fixed FFTs 16, 64, 256, 1024 points P Shift Register RAM/FF
P FFT 16- to 16384- points P Gate modules
P FFT - 32 Point P Multiplexer functions
P Sine Cosine Look-Up Tables P Registers, FF & latch based
P Adder/Subtractor
IP CENTER
$P Turbo Product Code (TPC)
P Direct Digital Synthesizer P Accumulator http://www.xilinx.com/ipcenter
P Cascaded Integrator Comb P Comparator
P Bit Correlator P Binary Counter
P Digital Down Converter
Key: $ = License Fee, P = Parameterized, S = Project License Available,
BOLD = Available in the Xilinx Blockset for the System Generator for DSP
Xilinx CORE Generator
List of available IP from or

Fully
Parameterizable
Xilinx CORE Generator
Xilinx CORE Generator
Xilinx CORE Generator

Mi_filtro.coe
Xilinx CORE Generator

Habilita directivas para el


posicionamiento de la MAC
Xilinx Smart-IP Technology
Fixed Placement Fixed Placement &
Relative Placement
I/Os Pre-defined Routing

Other logic has no Guarantees I/O and Guarantees


effect on the core Logic Predictability Performance

200 MHz 200 MHz

Core Placement
Number of Cores
Device Size

200 MHz
200 MHz
The SysGen Design Flow

DSP Development Flow


1. Develop Algorithm &
System Model

Simulink MDL

2. Automatic Code
Generation

RTL VHDL & Cores HDL Test Bench

3. Xilinx Implementation Simulation


Flow
ISIM
Bitstream

Download to FPGA
System Generator Based Design
Flow
MATLAB/Simulink
HDL
System Generator System Verification

Synthesis Functional Simulation

Implementation Timing Simulation

Download In-Circuit Verification


Finding Blocks
 Use the Find feature to search ALL
Simulink libraries
 Xilinx blockset has nine major
sections
 Basic elements
 Counters, delays
 Communication
 Error correction blocks
 Control Logic
 MCode, Black Box
 Data Types
 Convert, Slice
 DSP
 FDATool, FFT, FIR
 Index
 All Xilinx blocks – quick way to view all blocks
 Math
 Multiply, accumulate, inverter
 Memory
 Dual Port RAM, Single Port RAM
 Tools
 ModelSim, Resource Estimator
Creating a System
Generator Design
 Build the design by dragging and dropping blocks
from the Xilinx blockset onto your new sheet.
 Design Entry is similar to a schematic editor
Connect up blocks by
pulling the arrows on the
sides of each block
Design and Simulate
in Simulink
Push “play” to simulate the design. Go to “Simulation
Parameters” under the “Simulation” menu to control
the length of simulations
System Generator for DSP Platform
Designs

ISIM
Hardware Co-simulation
(5) The post-generation
script creates a new
library containing a
parameterized run-time
co-simulation block.

(7) The hardware output


(6) The co-simulation run- is bit and cycle accurate
time block is copied into when compared to the
the original model. original model.
Other Resources
http://opencores.org
http://www.4dsp.com/DDC.php $$$$
http://fpgalibre.sourceforge.net/
http://www.fpga4fun.com/

También podría gustarte