exp 3: introdução ao system generatorcardoso/ie3444b2010/exp3-introducao_s… · coml@b –...

57
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 t Dalton S. Arantes DECOM-FEEC-UNICAMP

Upload: haanh

Post on 19-Jul-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

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

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

Blocos Básicos do SimulinkBlocos Básicos do Simulink

ComL@b – Laboratório de Comunicações Digitais

Blocos básicos do SysGenBlocos básicos do SysGen

ComL@b – Laboratório de Comunicações Digitais

Blocos Básicos do SysGenBlocos Básicos do SysGen

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 ContadorConfiguração do Contador

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)

ComL@b – Laboratório de Comunicações Digitais

Configuração do GINConfiguração do GIN

ComL@b – Laboratório de Comunicações Digitais

Configuração GOutConfiguração GOut

ComL@b – Laboratório de Comunicações Digitais

AvaliaçãoAvaliação

Visto do experimento = 10 pontos;