avalon bus, nios ii, sopc builder antonyus pyetro marcelo amorim
Post on 21-Apr-2015
108 Views
Preview:
TRANSCRIPT
Avalon Bus, NIOS II, SOPC BuilderAntonyus Pyetro <apaf@cin.ufpe.br>Marcelo Amorim <mba3@cin.ufpe.br>
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
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]
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
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;
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.
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”
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
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
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]
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.
11/04/23 Soluções GrecO 12
NIOS II – Sistema NIOS II
• Exemplo de um NIOS II Processor System:
11/04/23 Soluções GrecO 13
NIOS II – Sistema NIOS II
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
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;
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;
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):
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.
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:
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.
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.
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
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.
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”;
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:
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:
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.
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;
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”.
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:
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
top related