Aula 7: Implementação no System Generatorcardoso/ie344b/Aula7-Implementacao.pdf · ComL@b –...
Transcript of Aula 7: Implementação no System Generatorcardoso/ie344b/Aula7-Implementacao.pdf · ComL@b –...
ComL@b – Laboratório de Comunicações Digitais
Aula 7: Implementação no System Generator
Fabbryccio Cardoso
Marcelo Fernandes
Dalton S. Arantes
DECOM-FEEC-UNICAMP
www.decom.fee.unicamp.br/~cardoso
ComL@b – Laboratório de Comunicações Digitais
Agenda
Otimização do tipo do sinal, visando faixa
dinâmica, precisão e consumo de área.
Condições para que os blocos possam ser
implementados em HW.
Compensar a latência dos blocos.
Blocos Reinterpret, Convert, Concat e Slice.
Exercícios.
ComL@b – Laboratório de Comunicações Digitais
Representação do Sinal em Ponto Fixo
TimeScopehistogram
Fix_8_5[ -4, 3.9688 ]
passo = 0.03125
DSP
Sine Wave
fpt dblGateway Out
dbl fptGateway In
|u|
Abs
SystemGenerator
originalFix_8_5saida
erro
Aula7_01.mdl
Escolha do tipo do sinal visando a faixa dinâmica do sinal, a precisão e o consumo de área.
ComL@b – Laboratório de Comunicações Digitais
Referência: Tipo Fix_8_5
-4 -3 -2 -1 0 1 2 3 40
0.010.020.030.040.050.060.070.080.090.1
Amostra
Freq
uenc
ia
Fix 8 5
histogramFix_8_5
[ -4, 3.9688 ]passo = 0.03125
Faixa não utilizada
Faixa não utilizada
ComL@b – Laboratório de Comunicações Digitais
Ajuste do Ponto Binário: Tipo Fix_8_7
histogramFix_8_7
[ -1, 0.99219 ]passo = 0.0078125
-1 -0.5 0 0.5 10
0.02
0.04
0.06
0.08
0.1
Amostra
Freq
uenc
ia
Fix 8 7
Ajustou a faixa dinâmica, aumentou a precisão e manteve o consumo de área.
ComL@b – Laboratório de Comunicações Digitais
Ajuste do número de bits: Fix_6_5
histogramFix_6_5
[ -1, 0.96875 ]passo = 0.03125
Ajustou a faixa dinâmica, manteve a precisão e diminuiu o consumo de área.
-1 -0.5 0 0.5 10
0.02
0.04
0.06
0.08
0.1
Amos tra
Freq
üênc
ia
Fix 6 5
ComL@b – Laboratório de Comunicações Digitais
Consumo de área
Fix_6_5
Aula7_02.mdl
Adicionou-se o bloco Cmult com parâmetro de ganho de 0.8 vezes no modelo de referência do Slide 2 (aula7_01.mdl).
Fix_8_7 e Fix_8_5
ComL@b – Laboratório de Comunicações Digitais
Exemplo: equação de diferenças
freq1 = 2/200 = 1/100 : 100 amostras por ciclo : 1e-6 s : 1 MHzfreq2 = 20/200 =1/10 : 10 amostras por ciclo : 0.1e-6 : 10 MHz
y(n) = x(n) + a x(n-N)
x y
sim_filtro
TimeScope
x y
Sys_filtroDSP
Sine Wave1
DSP
Sine Wave
fpt dbl
Gateway Outdblfpt
Gateway In|u|
SystemGenerator
Fix_8_6
sysgen
simulink
double
fonte
fontedouble
double
Fix_17_10
erro
N = 5
Aula7_03.mdl
Tclk = 10 nsTs = 1
ComL@b – Laboratório de Comunicações Digitais
Faixa Dinâmica na Saída do Multiplicador
Aula7_03.mdl
Sinal de saída Fix_16_10 (Full precision), max(erro) ~ 3e-2
ComL@b – Laboratório de Comunicações Digitais
Faixa Dinâmica na Saída do Multiplicador
Aula7_03.mdl
Sinal de saída Fix_8_6, max(erro) ~ 3e-2
ComL@b – Laboratório de Comunicações Digitais
Estimativa do Erro (3e-2)histogramFix_8_6
[ -2, 1.9844 ]passo = 0.015625
1y
xlmultz-3
a
b(ab)
Mult
z-2
Delay
k =1
Constant
xladdsuba+ba
b
a
AddSub
1x
Fix_17_10
Fix_8_6
Fix_8_6
Fix_8_4
Fix_16_10
Erro = 0.0156
Erro = 0.0156
Erro = 0.032
Aula7_03.mdl
ComL@b – Laboratório de Comunicações Digitais
Blocos Implementáveis
Aula7_04.mdl
Although the behavior of this block, as configured, could be simulated, itwill not be possible to target it to hardware because:
--- Cannot be synthesized because no synthesizable multiplier code is provided and it does not map to a core because the block does not allow enough latency. To use a core, latency must be increased to atleast 2
1y
xlmulta
b(ab)
Mult
z -2
Delay
k =1
Constant
xladdsuba+ba
b
a
AddSub
1x
Fix_17_10Fix_8_6
Fix_8_6
Fix_8_4
Fix_16_10
Latência = 0
ComL@b – Laboratório de Comunicações Digitais
Blocos Implementáveis
Aula7_04.mdl
Although the behavior of this block, as configured, could be simulated, it will not be possible to target it to hardware because:
--- Cannot be synthesized because no synthesizable multiplier codeis provided and it does not map to a core because multiplier input port bit-widths must be between 2 and 64 (inclusive) for coreinstantiation
1y
xlmultz-3
a
b(ab)
Mult
z -2
Delay
k =1
Constant
xladdsuba+ba
b
a
AddSub
1x
Fix_10_6Fix_8_6
Fix_8_6
UFix_1_0
Fix_9_6
ComL@b – Laboratório de Comunicações Digitais
Implementar atrasos menores que a latência dos blocos
Aula7_05.mdl
To use a core, latency must be increased to at least 4.
Implementar: y(n) = x(n) + a x(n-2)Problema: Mult deve ter latência de pelo menos 4.
1y
xlmultz-3
a
b(ab)
Mult
z -2
Delay
k =1
Constant
xladdsuba+ba
b
a
AddSub
1x
Fix_65_32Fix_32_16
Fix_32_16
UFix_32_16
Fix_64_32
ComL@b – Laboratório de Comunicações Digitais
Implementar atrasos menores que a latência dos blocos
Aula7_05.mdl
Solução: Alinhar todos os ramos paralelos.
Resultado: o filtro é implementado com atraso de 4 amostras (ciclos de clock)
1y
xlmultz-4
a
b(ab)
Mult
z -2
Delay
k =1
Constant
z -4
Alinhamentoxladdsuba+ba
b
a
AddSub
1x
Fix_65_32Fix_32_16
Fix_32_16
UFix_32_16
Fix_64_32
double
ComL@b – Laboratório de Comunicações Digitais
Implementar atrasos menores que a latência dos blocos
Aula7_05.mdl
y(n) = x(n) + x(n-2)
x y
sim_filtro
TimeScope
x y-4Z
Sys_filtro
DSP
Sine Wave1
DSP
Sine Wave
ResourceEstimator
fpt dbl
Gateway Out
dbl fpt
Gateway In
Erro
z-4
Alinhamento
|u|
SystemGenerator
Fix_32_16
sysgen
double
fonte
double
double
Fix_65_32
erro
double
max(erro) ~ 3e-5
ComL@b – Laboratório de Comunicações Digitais
Bloco Reinterpret
O objetivo é reinterpretar o valor inteiro alterando-
se Pb ou o sinal.
Resultado: valor real é modificado enquanto o valor
inteiro é mantido.
InteiroValor 2 RealValor ×= −Pb
ComL@b – Laboratório de Comunicações Digitais
Bloco Convert
Altera-se o tipo Ufix_Nb_Pb ou Fix_Nb_Pb,
mudando-se Nb e Pb.
O objetivo é manter o valor real na conversão.
Resultado: o valor inteiro é modificado de forma a
preservar o valor real.
InteiroValor 2 RealValor ×= −Pb
ComL@b – Laboratório de Comunicações Digitais
Exemplo de Reinterpret e Convert
Aula7_06.mdl
1001.00 = 9
10010.0 = -14
01001.0 = 9
100100 = -28
001001 = 9
-28
x_reinterpreted3
fpt dbl
-14
x_reinterpreted1
fpt dbl
9
x_out
dbl fptx_in
9
x_converted3
fpt dbl
9
x_converted1
fpt dbl
fpt dbl
9
Signal FromWorkspace
xlcastforce
Reinterpret1
xlcastforce
Reinterpret
xlconvertcast
Convert1
xlconvertcast
Convert
SystemGenerator
UFix_6_2doublefonte
Fix_6_1
double
Fix_6_1
Fix_6_0
Fix_6_0
ComL@b – Laboratório de Comunicações Digitais
Blocos Slice e Concat
fpt dbl
xOut1
fpt dbl
xOut
dbl fpt
xIn1
dbl fpt
xIn
xlslice[a:b]
slice1
xlslice[a:b]
slice
fpt dbl
sinal1
fpt dbl
sinal
fix_6_1Valor Real = -1
Valor Inteiro = -2
Valor Binario =11111.0
fix_6_1Valor Real = 15
Valor Inteiro = 30
Valor Binario =01111.0
xlslice[a:b]
Slice_Sinal1
xlslice[a:b]
Slice_Sinal
-1
15
xlcastforce
xlcastforce
15
-1
1
0
k =1
k =0xlconcathi
locat
Concat1
xlconcathi
locat
Concat
SystemGenerator
double
double
Fix_6_1 UFix_1_0
Fix_6_1 UFix_1_0
double
double
UFix_5_0
UFix_1_0 UFix_6_0double
UFix_6_0UFix_5_0
UFix_1_0double
Fix_6_1
Fix_6_1
Aula7_07.mdl
ComL@b – Laboratório de Comunicações Digitais
Laboratório 1
Converter a representação binária do valor real 0.5
do tipo fix_8_6
no valor real 32/2048 = 0.015625 do tipo
fix_12_11
Usar blocos Concat e Reinterpret
Aula7_ex1.mdl
01
ComL@b – Laboratório de Comunicações Digitais
Laboratório 2
Implementar a conversão inversa do Exercício 1,
ou seja, do valor 0.015625 (fix_12_11) para o
valor 0.5 (fix_8_6)
Use os blocos slice e reinterpret
Aula7_ex2.mdl
ComL@b – Laboratório de Comunicações Digitais
Laboratório 3
Implemente o modelo seguinte e justifique os
resultados
Aula7_ex3.mdl
fix_8_0[ -128, 127 ]
passo = 1Valor Real = 32
Valor Inteiro = 32Valor Binario =00100000.
fix_8_0[ -128, 127 ]
passo = 1Valor Real = 0.5
Valor Inteiro = 0Valor Binario =00000000.
fix_8_6[ -2, 1.9844 ]
passo = 0.015625Valor Real = 0.5Valor Inteiro = 32
Valor Binario =00.100000
0.5Signal FromWorkspace
xlcastforce
Reinterpret
fpt dbl
Gateway Out1
fpt dbl
Gateway Out
dbl fpt
Gateway In
32Display1
0Display
xlconvertcast
Convert
SystemGenerator
Fix_8_6 doubledouble
double
Fix_8_0
Fix_8_0
ComL@b – Laboratório de Comunicações Digitais
Laboratório 4
Implemente o modelo abaixo.
Use os blocos Mult, Reinterpret e Convert (apenas
um de cada) e estime os recursos de lógica.
Analise a faixa dinâmica do sinal z a partir do bloco
Histogram.
Ts = 1 Tclk = 10 nsfreq1 = 2/200 = 1/100 : 100 amostras por ciclo : Tseno = 1000 ns : 1 MHzfreq2 = 20/200 =1/10 : 10 amostras por ciclo : Tseno = 100 ns : 10 MHz
z(n) = x(n)*y(n)*4
fpt dbl
z
dbl fpt
y
dbl fpt
x
scope_z
x
yzz(n) = x(n)*y(n)*4
Sys_filtro
DSP
Sine Wave1
DSP
Sine Wave
ResourceEstimator
SystemGenerator
Fix_10_8
doublez
Fix_10_7
Fix_10_8
Aula7_ex4.mdl