Exp 3: Introdução ao System Generatorcardoso/ie3444b2010/Exp3-Introducao_S… · ComL@b –...
Transcript of Exp 3: Introdução ao System Generatorcardoso/ie3444b2010/Exp3-Introducao_S… · ComL@b –...
ComL@b – Laboratório de Comunicações Digitais
www.decom.fee.unicamp.br/~cardoso
Exp 3: Introdução ao System Generator
Fabbryccio Cardoso
D lt S A tDalton S. Arantes
DECOM-FEEC-UNICAMP
ComL@b – Laboratório de Comunicações Digitais
MATLABMATLAB
MATLAB™, mais popular ferramenta de projeto de
sistemas, é uma linguagem de programação,
interpretador e ambiente de modelagem.
Extensas bibliotecas para funções matemáticas, p ç
processamento de sinais, comunicações, entre muitas
outras
Visualização: grande número de funções para plot e
visualização de dados.
Arquitetura aberta: modelo de software baseado em
plug-ins (mexfiles ou dll) padrões.
ComL@b – Laboratório de Comunicações Digitais
MATLABMATLAB
Resposta em frequência de um sinal de fala.
ComL@b – Laboratório de Comunicações Digitais
SimulinkSimulink
Simulink™ - Ambiente visual de fluxo de dados
para modelagem e simulação de sistemas
dinâmicos.
Totalmente integrado com o núcleo do MATLAB.g
Editor gráfico de blocos.
Simulador guiado por eventos -> callbacks.g p
Paralelismo de modelos.
Bibliotecas extensas de funções parametrizáveis:ç p
Simulink Blockset - math, sinks, sources
DSP Blockset - filters, transforms, etc.
Communications Blockset - modulation, DPCM, etc.
ComL@b – Laboratório de Comunicações Digitais
MATLAB/SimulinkMATLAB/Simulink
Resposta em frequência de tempo real de um microfone: enfatiza a natureza dinâmica do Simulink
ComL@b – Laboratório de Comunicações Digitais
System Generator (1)System Generator (1)
Ambiente de projeto em nível de sistema para FPGAs:
Fluxo de projeto integrado do Simulink ao binário.
Alavanca tecnologias existentes:Matlab/Simulink da MathWorks.
Síntese HDL.
Bibliotecas de IP CoreBibliotecas de IP Core.
Ferramentas de implementação de FPGA.
Xilinx Blockset – bibliotecas de aritmética, operadores lógicos e funções DSP
Implementação FPGA bit true e cycle true
Ab t ã it étiAbstração aritméticaPrecisão de ponto fixo definido pelo usuário, incluindo quantização e overflow.q ç
Simulação em precisão double ou ponto fixo.
ComL@b – Laboratório de Comunicações Digitais
System Generator (2)System Generator (2)
Geração de código VHDL para dispositivos Virtex-4™, Virtex-II Pro™, Virtex™-II, Virtex™-E, Virtex™, , , , ,Spartan™-3E, Spartan™-3, Spartan™-IIE and Spartan™-II:
Mapeamento e expansão de hardware;Mapeamento e expansão de hardware;
VHDL sintetizável com hierarquia de modelo preservada;Suporte a Verilog;Suporte a Verilog;Chamada automática do CORE Generator para utilizar IP cores;
ã d j i lifi fl d jGeração de projeto ISE para simplificar o fluxo de projeto;Geração de vetores de teste e HDL testbench;Geração de arquivos de restrição ( xcf) e de simulação Geração de arquivos de restrição (.xcf) e de simulação ‘.do’;
Co-Simulação HDL;
Aceleração da verificação usando Hardware in theLoop.
ComL@b – Laboratório de Comunicações Digitais
LimitaçõesLimitações
Não possibilita gerenciar e distribuir sinais de clockclock.
Não possui portas bidirecionais.
Li it õ i l t ã d i t f Limitações na implementação de interfaces sofisticadas que envolvam, por exemplo, restrições de tempo precisas e eventos de clock nas bordas de tempo precisas e eventos de clock nas bordas de subida e de descida.
Caso de uso: utilizar o SysGen para desenvolver componentes de PDS para serem integrados em componentes de PDS para serem integrados em projetos VHDL.
ComL@b – Laboratório de Comunicações Digitais
Iniciando MatlabIniciando Matlab
4. Inicia o Simulink
1 Defina a pasta de trabalho1. Defina a pasta de trabalho
2 Variáveis do Matlab2. Variáveis do MatlabWorkspace3 B Hi tó i d3. Browser e Histórico de comandos
ComL@b – Laboratório de Comunicações Digitais
Iniciando o SimulinkIniciando o Simulink
1 Criar novo modelo1. Criar novo modelo.
2. Bibliotecas/Blocksets.
3. Blocos.
ComL@b – Laboratório de Comunicações Digitais
Criando um projeto SysGenCriando um projeto SysGen
Construa um projeto SysGenarrastando blocos do blocksetXilinx para o modelo. Construção do projeto é similar Construção do projeto é similar a um editor de esquemático.
Conecte blocos puxando setas nas laterais dos blocos.
ComL@b – Laboratório de Comunicações Digitais
Encontrando blocosEncontrando blocos
Use o campo Find para procurar por blocos nas p pbibliotecas
Os blockset Xilinx têm nove seções principais:seções principais:
Basic elements: Counters, delays
Communication: Error correctionblocks
Control Logic: MCode, Black Box
Data Types: Convert, Sliceyp
DSP: FDATool, FFT, FIR
Index: All Xilinx blocks – quick way to view all blocks
Math: Multiply, accumulate, inverter
Memory: Dual Port RAM, Single PortRAM
Tools:ModelSim, Resource Estimator
ComL@b – Laboratório de Comunicações Digitais
Configurando BlocosConfigurando Blocos
Duplo click ou Block Parameters para ver os parâmetros configuráveis:p g
Arithmetic Type: Unsigned ou twoscomplementGenerate Core: Implemente com Xilinx Smart-Generate Core: Implemente com Xilinx SmartIP Core (se possível)Latency: Especifica o atraso de processamento dos blocosdos blocosOverflow e Quantization: Em overflow –saturar ou wrap. Em quantization – truncar ou arredondararredondarOverride with Doubles: apenas para simulaçãoPrecision: Full ou pode-se definir o número de bi bi á ibits e o ponto binárioSample Period: Pode ser herdado com “-1” ou definido explicitamente.Obs.: mesmo podendo ser simulados, nem sempre os parâmetros são realizáveis.
ComL@b – Laboratório de Comunicações Digitais
Valores podem ser equaçõesValores podem ser equações
Pode-se entrar equações nos parâmetros dos blocos, que podem ajudar nos , q p jcálculos ou no melhor entendi-mento dos parâmetros.As equações são calculadas noAs equações são calculadas noinício da simulação.Operadores matemáticos úteis:p
+ soma- subtração
* multiplicação/ divisão^ tê i^ potênciapi π (3.1415926535897.…)
exp(x) exponencialexp(x) exponencial
ComL@b – Laboratório de Comunicações Digitais
Modelo Básico para o System GeneratorModelo Básico para o System GeneratorNavegador de BibliotecasInterface de Configuração
do System Generator
Simulação: converte tipos double, integer ou ponto-fixo do Simulink para o ponto-fixo da Xilinx;Hardware: o bloco é mapeado para portas de entrada do componente em HDL.
Simulação: converte do tipo ponto-fixo da Xilinxpara double do Simulink;p ;Hardware: o bloco é mapeado para portas de saída do componente em HDL.
ComL@b – Laboratório de Comunicações Digitais
Navegador de ModelosNavegador de ModelosNavegador do modeloCriar nova variável
Configura a fonte de dados do modelo
Hierarquia do modelo Conteúdo do componente do modelo
Propriedade do componente do modelo
ComL@b – Laboratório de Comunicações Digitais
Blocos BásicosBlocos Básicos
• Possibilita gerar código VHDL, netlists, componentes e binários.P ibilit i l bl d S G Si li k• Possibilita simular os blocos do SysGen no Simulink.
• Possibilita gerar binário para co-simulação.• Possibilita co-simulação com HW e ModelSim.
SystemGenerator
• Faz o mapeamento dos períodos de simulação para clock e clockenable do componente em hardware.
DSPfpt dbldbl fpt
originaldouble Fix_8_8 double
id
Sine Wave
pGateway Out
pGateway In
|u|
saida
erro
TimeScope
AbsDefinem as fronteiras do projeto.E t t bl d tili bl XiliEntre estes blocos pode-se utilizar apenas blocos Xilinx.
ComL@b – Laboratório de Comunicações Digitais
Conceito Importante 1: O jogo dos númerosConceito Importante 1: O jogo dos números
Simulink usa números do tipo “double” nas
simulações. O double é um número de 64 bits,
complemento de dois e de ponto flutuante
Como o ponto binário pode mover, o double pode
representar qualquer número entre +/- 9.223 x 1018
com uma resolução de 1.08 x 10-19 … um range
desejável, mas não eficiente ou realístico para FPGAs
Blockset Xilinx usa ponto fixo
-22 21 20 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 2-10 2-11 2-12 2-13Value = -2 261108
1 0 1 1 0 1 1 1 1 0 1 0 0 1 0 1
I t F ti
Value = -2.261108…
Format = Fix_16_13
Integer Fraction (Sign: Fix = Signed Value UFix = Unsigned value) Format = Sign_Width_Binary point a partir do LSB
ComL@b – Laboratório de Comunicações Digitais
O que acontece na conversão?O que acontece na conversão?
Os blocos Gateway In e Out suportam parâmetros
t l ã d d bl tpara controlar a conversão de double para ponto
fixo de N bits
DOUBLE22 21 20 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 2-102-11 2-122-13232425-26
. . . . 1 0 1 1 0 1 1 1 1 0 1 0 0 1 0 11 1 1 1 . . . .
QUANTIZATIONOVERFLOW
-22 21 20 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9
- Truncate- Round
-Saturate- Wrap- Flag as Error
1-2
02
12
12
02
12
12
12
12
02
12
02
FIX_12_9
ComL@b – Laboratório de Comunicações Digitais
Tipo BooleanTipo Boolean
O tipo Boolean é apropriado para controlar portas
CE RESET como CE e RESET
O tipo Boolean é uma variação
do unsigned 1-bit que sempre
está definido (High or Low).
O número Ufix_1_0 pode se
tornar inválido enquanto o
Boolean não.
ComL@b – Laboratório de Comunicações Digitais
Criando um Projeto SysGenCriando um Projeto SysGen
Fontes VisualizaçãoDiagrama SysGen (fluxo de dados) FontesSimulink
VisualizaçãoSimulink
g y ( )e blocos auxiliares
Blocos Gateway utilizados parainterfacear blocos Simulink e
SysGen
ComL@b – Laboratório de Comunicações Digitais
System Generator DesignSystem Generator Design
Botão Playinicia ainicia a
simulação
• Projetos podem ter níveis • Todo projeto SysGen deve
conter um bloco SysGen• Usado para setar os
de hierarquia• Duplo click ou look under
mask para abrir Usado para setar os parâmetros de geração HDL e síntese
subsistema
ComL@b – Laboratório de Comunicações Digitais
Conceito Importante 2: Período de amostraConceito Importante 2: Período de amostra
Todo sinal SysGen está amostrado; transições
t t d í d d tentre amostas ocorrem a cada período de amostra.
Cada bloco no Simulink tem um período de amostra
que corresponde à frequência com que saídas são
produzidas.
Este período de amostra deve ser explicitado por
blocos:Gateway in
Blocos sem entrada
Período de amostra pode ser derivado dos sinais de
entrada provenientes de outros blocos.
ComL@b – Laboratório de Comunicações Digitais
Conceito Importante 2: Período de amostraConceito Importante 2: Período de amostra
Lembre do Teorema de Nyquist (Fs ≥ 2fmax)
quando for configurar períodos de amostra em
operações de conversão dos mesmos
O período de amostra está DIRETAMENTE
relacionado a como os sinais de clock e clock
enable serão gerados no hardware.
ComL@b – Laboratório de Comunicações Digitais
Configurando o Período Global de Amostra• Estabelece como os
sinais de clock e
Configurando o Período Global de Amostra
clock enable serãogerados;
• No caso da figura,No caso da figura, blocos com períodode amostra = 1 irãoutilizar CLOCK de 10ns (100 MHz) e CE sempre ativo.
Período de amostra = 1
ComL@b – Laboratório de Comunicações Digitais
Bloco SysGenBloco SysGen
Controles ControlesEscravosMestres Escravos
“Simulink System Period” deve ser configurado corretamente para simulação
ComL@b – Laboratório de Comunicações Digitais
Interface do System GeneratorInterface do System Generator
Pode ser:• HDL Netlist (projeto ISE)
Tipo de compilação(p j )
• NGC Netlist (componente)• Bitstream (binário p/ prog)• EDK Export Tool (EDK)• HW Cosimulation
Família do dispositivo
Síntese para VHDL ou Verilog:• XST, Leonardo Spectrum,• Synplify Synplify ProSynplify, Synplify Pro
Mapeamento do período de simulação para clock na FPGA (freq = 100MHz, T = 10 ns).
Período de amostragem base do modelo.
ComL@b – Laboratório de Comunicações Digitais
Gateway InÉ boa prática trabalhar Gateway InÉ boa prática trabalhar com Sample Time normalizado:
Sample Time = 1 para o menor sample time do modelomodelo.
Lembre: menor sampletime é mapeado para o
Truncar ou Arredondar
Wrap, Saturar ou Flag as Error.Implementações de
time é mapeado para o clock do sistema.
Wrap, Saturar ou Flag as Error.Implementações de Arredondar e Saturar consomem área.
Localização dos pinos:
Para barramento de 8 bits é necessário especificar 8 pinos
ComL@b – Laboratório de Comunicações Digitais
Usando o ScopeUsando o Scope
Click Properties para mudar o
ú d i t h d número de eixos e o tamanho da
janela de tempo de visualização
Use a Aba Data History para
controlar quantas amostras serão
armazenadas no scope
Também pode direcionar saída para
o workspace
Click Autoscale para ajuste rápido
das escalas dos eixos
Right-click no scope para setar a
escala do eixo Y manualmente
ComL@b – Laboratório de Comunicações Digitais
Projete e Simule no SimulinkProjete e Simule no Simulink
Pressione “play” para simular o projeto. Vá em“Simulation Parameters” sob o menu“Simulation Parameters” sob o menu “Simulation” para controlar o comprimento das simulações
ComL@b – Laboratório de Comunicações Digitais
Gere o código HDLGere o código HDLTerminado o modelo, dê duplo-click no token System Generator
Selecione o dispositivo alvo.
Selecione a ferramenta de sínteseSelecione a ferramenta de síntese.
Configure o clock da FPGA.
Selecione gerar testbench.
Gere o VHDL.
ComL@b – Laboratório de Comunicações Digitais
Arquivos de saída do SysGenArquivos de saída do SysGenArquivos de projeto
<design>.VHD/ .V : arquivos de projeto HDLg / q p j
<design>_clk_wrapper.VHD/.V: Top-level HDL wrapper que contém os circuitos de geração de clock e CE
EDN e NGC: arquivo de implementação do Core.EDN e .NGC: arquivo de implementação do Core
<design>_clk_wrapper.XCF : arquivo de restrições de tempo e de localização (pinos)
Arquivos de projeto<design>_clk_wrapper.ISE : arquivo de projeto ISE
.PRJ: arquivo de projeto de síntese para XST e Synplify.PRJ: arquivo de projeto de síntese para XST e Synplify
.TCL : Scripts for Synplify and Leonardo project creation
Arquivos de simulação.DO : Scripts de simulação para MTI
.DAT : arquivos de dados com vetores de testes do sysGen
<design> tb VHD/ V : Testbench de simulação<design>_tb.VHD/.V : Testbench de simulação
ComL@b – Laboratório de Comunicações Digitais
Parte Experimental: ObjetivosParte Experimental: Objetivos
Introdução a Matlab, Simulink e System Generator;
Explorar a relação entre período de simulação,
clock e clock enable;
Familiarização com blocos básicos do System Familiarização com blocos básicos do System
Generator.
ComL@b – Laboratório de Comunicações Digitais
Configuração do ExperimentoConfiguração do Experimento
Apenas a placa Digilent XUP Virtex II Pro
Botões e leds
ComL@b – Laboratório de Comunicações Digitais
D l i t dDesenvolvimento passo-a-passo do modelo em System Generator
Parte 1
ComL@b – Laboratório de Comunicações Digitais
Modelo de SimulaçãoModelo de Simulação
xlrelationalz-1
a
ba=b
R l ti l
199999999
Constant1Sy stem
Generator Relational
xlregisterz-1d
qxlinv not out
rst
en1 dbl fpt
Generator
xlregisterzen
q
Register
Inverter en
CounterConstant Btn_center
xlinv not
xlregisterz-1d
enq fpt dbl
Led 0
xlinv not
I t 1 ScopeRegister2Led_0Inverter1
ComL@b – Laboratório de Comunicações Digitais
Configuração da SimulaçãoConfiguração da Simulação
Menu Simulation – Configuration ParametersMenu Simulation Configuration Parameters
ComL@b – Laboratório de Comunicações Digitais
Visualização de Características de Sinais e PortasT = 1
Tclk = 10ns
xlrelationalz-1
a
ba=b
199999999
Constant1Sy stem
UFix_28_0
Bool
Relational
1dxlinv not out
rst1 dbl fpt
Sy stemGenerator
double Bool UFix_28_0Bool
xlregisterz-1
enq
Register
Inverterout
en
CounterConstant Btn_center
Bool
T = 1
xlinv notBool
Menu Format – Port / Signal DisplaySample Time Colors
xlregisterz-1d
enq fpt dbl
L d 0
xlinv not doubleBoolBool
Port Data Types
ScopeRegister2Led_0Inverter1
ComL@b – Laboratório de Comunicações Digitais
Cores para períodos de simulaçãoCores para períodos de simulação
ComL@b – Laboratório de Comunicações Digitais
Configuração System GeneratorConfiguração System Generator
ComL@b – Laboratório de Comunicações Digitais
Configuração dos Blocos GIn e GOutConfiguração dos Blocos GIn e GOut
ComL@b – Laboratório de Comunicações Digitais
Mapeamento de pinos (manual do usuário)Mapeamento de pinos (manual do usuário)
ComL@b – Laboratório de Comunicações Digitais
Configuração do Comparador e ConstanteConfiguração do Comparador e Constante
ComL@b – Laboratório de Comunicações Digitais
D l i t dDesenvolvimento passo-a-passo do modelo em System Generator
Parte 2
ComL@b – Laboratório de Comunicações Digitais
Segundo Experimento: temporizador2.mdlSegundo Experimento: temporizador2.mdl
T = 1Tclk = 10ns
T = 100e6Tce = 1s
xlinv notUFix 1 0
Tclk = 10ns Tce = 1s
xlregisterz-1d qxlregisterz-1d
q fpt dblxlinvnot
Inverter1
xlconvertcast
Sy stemGenerator
doubleUFix_1_0UFix_1_0
_ _
UFix_1_0
UFix_1_0
Scope
xlregisterzd q
Register2
xlregisterzen
q
Register
fpt dbl
Led_1
xlinvnot
Inverter2Convert
_ __ _ _ _
Ts = 100e6dblfpt
btn_enterxlregisterz-1
d
enq
xlinv not
Inverter3xldsamp 100000000z-1
0
Constant
Bool double
Bool Bool
Bool
Register1Down Sample
Ts = 1Sampling rate = 100e6p g
ComL@b – Laboratório de Comunicações Digitais
Configuração SysGenConfiguração SysGenLocalização do NGC do componente top-level: pasta de trabalho do modelo temporizador2 mdlmodelo temporizador2.mdl
ComL@b – Laboratório de Comunicações Digitais
Configuração do Down SampleConfiguração do Down Sample
ComL@b – Laboratório de Comunicações Digitais
Configuração do Registrador (Register)Configuração do Registrador (Register)
ComL@b – Laboratório de Comunicações Digitais
Configuração do Registrador (Register1)Configuração do Registrador (Register1)