avalon bus, nios ii, sopc builder antonyus pyetro marcelo amorim

31
Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro <[email protected]> Marcelo Amorim <[email protected]>

Upload: internet

Post on 21-Apr-2015

108 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

Avalon Bus, NIOS II, SOPC BuilderAntonyus Pyetro <[email protected]>Marcelo Amorim <[email protected]>

Page 2: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 2

Agenda

• Avalon Bus– Introdução– Características– Interfaces Principais

• NIOS II Processor System– Introdução– Características– Sistema NIOS II

• SOPC Builder

• Projeto de um IP-Core + Sistema NIOS II

Page 3: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 3

Avalon - Introdução

“ Avalon interfaces simplify system design by allowing you to easily connect components in an FPGA. The Avalon interface family defines interfaces for use in both high-speed streaming and memory-mapped applications. These standard interfaces are designed into the components available in the system-on-a–pragrammable-chip (SOPC) environment and the MegaWizard Plug-In Manager. You can also use these standardized interfaces in your custom components. ” [3]

Page 4: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 4

Avalon - Características

• Seis diferentes interfaces:

1. Avalon Memory Mapped: Interface de r/w baseada em endereço típica de conexões mestre-escravo

2. Avalon Streaming: Interface que suporta fluxo unidirecional de dados (streams multiplexados, pacotes, dados DSP)

3. Avalon Memory Mapped Tristate: Interface de r/w baseada em endereço com suporte para periféricos “off-chip”

4. Avalon Clock: Interface que envia ou recebe sinais de clock e reset para sincronizar interfaces

5. Avalon Interrupt: Interface que permite componentes sinalizar eventos para outros componentes

6. Avalon Conduit: Interface que permite que sinais sejam roteados para fora do top level de um sistema SOPC Builder para serem conectados a outros módulos do projeto ou pinos FPGA

Page 5: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 5

Avalon - Características

• Um único componente pode incluir qualquer número dessas interfaces;

• Um único componente pode incluir múltiplas instâncias da mesma interface;

Page 6: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 6

Avalon – Interfaces de Clock

• Usados para definir os clock e reset usados pelo componente;

• Clock Input (Sink):– Usado para prover sincronização e controle de

reset para um componente;– As entradas de reset estão conectadas a uma

porta ‘OR’;– Se interface de clock tem uma entrada de clock e

outra de reset, o sinal de reset é baixado sincronamente com a entrade de clock;

• Clock Output (Source):– Interface que dirige um sinal de clock para fora de

um componente;– Não há sinais de reset.

Page 7: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 7

Avalon – Interfaces Mapeadas em Memória

• Usados entre componentes mestre/escravo como:– Microprocessadores;– Memórias;– UART’s;– Timers

• Interfaces mestre/escravo conectadas pelo “system interconnect fabric”

Page 8: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 8

Avalon – Interfaces Mapeadas em Memória

• Interfaces Master e Slave possuem um conjunto de sinais de controle e dados;

• Largura de dados variáveis: 8, 16, 32, ... 1024;• Geração automática de interconexão;• Liberdade para usar apenas os sinais necessários

Page 9: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 9

Avalon – Interfaces de Interrupção

• Permitem que componentes escravos sinalizem eventos a componentes mestres;

• Interrupt Sender:– Ativa um sinal de interrupção para um receptor da

interrupção;– Síncrono com a subida do clock associado à

interface;

• Interrupt Receiver:– Recebe interrupções de quem envia interrupções;– Suporta dois esquemas:

• Requisições Individuais – O receptor espera receber cada sinal de interrupção como um bit em separado

• Prioridade Codificada – O receptor recebe um bit de interrupção e um vetor de 6 bits para indicar qual interrupção no momento possui a maior prioridade

Page 10: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 10

NIOS II - Introdução

“ A NIOS II processor system is equivalent to a microcontroller or “computer on a chip” that includes a processor and a combination of peripherals and memory on a single chip. The term “Nios II processor system” refers to a Nios II processor core, a set of on-chip peripherals, on-chip memory, and interfaces to off-chip memory, all implemented on a single Altera device. Like a micocontroller family, all Nios II processor systems use a consistent instruction set and programming model. ” [1]

Page 11: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 11

NIOS II - Características

• Processador RISC de propósito geral;• Performance de até 250 DMIPS;• Instruções de 32 bits;• 32 registradores de propósito geral;• 32 fontes de interrupção externa;• Acesso a vários periféricos “on-chip”;• Interface para memórias e periféricos “off-chip”;• Módulo para depuração assistido por HW;• SDE baseada no compilador GNU C/C++ e Eclipse

IDE (NIOS II IDE);• Integração com o SignalTap II logic analyzer da

Altera;• Permite customização de acordo com cada projeto.

Page 12: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 12

NIOS II – Sistema NIOS II

• Exemplo de um NIOS II Processor System:

Page 13: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 13

NIOS II – Sistema NIOS II

Page 14: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 14

SOPC Builder

• System-On-a-Programmable-Chip Builder;• Ferramenta de desenvolvimento para criação de

sistemas em pouco tempo;• Sistemas que incluam processadores, periféricos

e memórias;• Facilita a integração de componentes de HW de

um sistema maior;• Integrado ao Quartus II

Page 15: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 15

Projeto de um IP-Core + Sistema NIOS II

• Descrição do IP:– Módulo que contém 3 registradores para leitura e

escrita;– Contém uma interface para comunicação com o

NIOS II através do Avalon;

Page 16: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 16

Projeto de um IP-Core + Sistema NIOS II

• Copiar o diretório Standard para o diretório onde se encontra o projeto do IP:– C:\altera\72\nios2eds\examples\vhdl\

niosII_cycloneII_2c35– C:\altera\72\nios2eds\examples\verilog\

niosII_cycloneII_2c35

• Abrir o projeto;• Abrir o SOPC Builder;

Page 17: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 17

Projeto de um IP-Core + Sistema NIOS II

• O SOPC Builder exibe o sistema NIOS II Standard;• Possui o core Nios II mais alguns periféricos

necessários para se executar o código C;• Adicione novo componente (seu IP):

Page 18: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 18

Projeto de um IP-Core + Sistema NIOS II

• Na aba “HDL Files” adicione o top-level (1) do seu IP e defina quem é o top-level (2);

1.

2.

Page 19: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 19

Projeto de um IP-Core + Sistema NIOS II

• Na aba “Signals” configure a interface Avalon do seu módulo de acordo com os sinais do barramento Avalon:

Page 20: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 20

Projeto de um IP-Core + Sistema NIOS II

• Na aba “Interfaces” clique em “Remove interfaces with no signals” (1);

• Em “Avalon” selecione o clock associado à interface (2);

• Em “Avalon Slave Settings” selecione o endereçamento como “NATIVE” (3);

• Finish;• Confirme a

solicitação de salvar alterações;

1.

2.

3.

Page 21: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 21

Projeto de um IP-Core + Sistema NIOS II

• Adicione seu IP ao sistema NIOS II clicando duas vezes na instância do IP (1);

• A instância do seu IP encontra-se agora integrado ao NIOS II (2);

1.

2.

Page 22: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 22

Projeto de um IP-Core + Sistema NIOS II

• Feche o SOPC Builder;• Existe um bug do SOPC Builder na geração do Span do

endereçamento do IP adicionado;• Para corrigir adicione a seguinte linha no arquivo niosII_ide_hw.tcl:

– set_interface_property "Avalon" "addressSpan" "32“• O valor 32 vem da seguinte fórmula:

– 2^(number of address lines) * (width of data bus in bytes) – No caso do nosso IP temos 3 bits de endereço e o número do

barramento de dados em bytes é 4– 2^3 * 4 = 32

Page 23: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 23

Projeto de um IP-Core + Sistema NIOS II

• Abra novamente o SOPC Builder e verifique se o range de endereço do seu IP foi modificado;

• Clique em “Generate”;• O SOPC Builder criará o top-level que contém o

core do NIOS II, seus periféricos e o IP adicionado interconectados;

• Após gerar, saia do SOPC Builder e compile o projeto.

Page 24: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 24

Projeto de um IP-Core + Sistema NIOS II

• Abra o NIOS II IDE;

• File -> New -> Nios II C/C++ Application;

• Selecione o projeto “Hello World”;

• Em “SOPC Builder System PTF File” selecione o arquivo .ptf gerado pelo SOPC Builder no diretório do projeto Standard;

• Clique em “Finish”;

Page 25: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 25

Projeto de um IP-Core + Sistema NIOS II

• Adicione o seguinte código ao arquivo hello_world.c:

Page 26: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 26

Projeto de um IP-Core + Sistema NIOS II

• Com o botão direito do mouse clique em “Build Project”;

• Após terminar, temos o arquivo system.h que contém os endereços dos periféricos do sistema e do IP adicionado;

• O system.h encontra-se em:

Page 27: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 27

Projeto de um IP-Core + Sistema NIOS II

• Baixando o sistema na placa:– No Quartus II clique em “Programmer” (1);– Certifique-se que o USB-Blaster esteja selecionado

(2);– Clique em “Start” (3).

1.

2.3.

Page 28: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 28

Projeto de um IP-Core + Sistema NIOS II

• Baixando o software a ser executado no Nios II:– No Nios II IDE com o botáo direito no projeto e

selecione Run As -> Nios II Hardware;

Page 29: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 29

Projeto de um IP-Core + Sistema NIOS II

• Caso o terminal acusar algum erro de JTAG basta ir em Run -> Run... Selecionar a aba “Target Connection”, selecionar “USB-Blaster” e clicar no botão “Run”.

Page 30: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 30

Projeto de um IP-Core + Sistema NIOS II

• Ao final o terminal do Nios II IDE mostrará o teste de loopback:

Page 31: Avalon Bus, NIOS II, SOPC Builder Antonyus Pyetro Marcelo Amorim

11/04/23 Soluções GrecO 31

Referências

• [1] Altera – NIOS II Processor Reference HandbookURL: http://www.altera.com/literature/hb/nios2/n2cpu_nii5v1.pdf

• [2] Altera – NIOS II Hardware Development TutorialURL: http://www.altera.com/literature/tt/tt_nios2_hardware_tutorial.pdf

• [3] Altera – Avalon Interface Specifications

URL: www.altera.com/literature/manual/mnl_avalon_spec.pdf