Processador Nios II – Desenvolvimento: Parte II

Olá,

Anteriormente publiquei a Parte 1 sobre como iniciar um projeto utilizando o processador Nios II da Altera e agora demonstraremos a Parte 2.

2. Criando periféricos no Qsys

Conforme explicado em post anteriores o Nios II é um processador de 32 bits baseado em Hardware embarcado no FPGA. O projeto possuirá cinco componentes:

  • Seleção do clock (clk50mhz) do processador;
  • CPU (Core do Nios) de 32 bits;
  • Uma memória On-Chip Memory;
  • Três portas PIO (Paralel Input/Output): Uma entrada para chave i_sw0 e duas saídas o_led_blink o_led;
  • Interface JTAG UART para comunicação com o computador.

Para iniciar o software QSYS, devemos clicar em Tool => Qsys como mostra a figura abaixo:

Figura 01
Figura 01: Abrindo Software Qsys.

Em seguida será aberto a janela do Qsys com os periféricos do lado esquerdo que poderão serem adicionado ao projeto do Nios II.

Figura 02
Figura 02: Tela inicial do Qsys.

O processador Nios II necessita de uma frequência de clock para operar e neste exemplo utilizaremos o clock de 50MHz dsponível no kit de desenvolvimento DE1.

Clicamos na aba “Clock Settings” para configurar o valor do clock.

Figura 03
Figura 03: Configurando o clock do Nios II.

Na figura acima verificamos três campos importantes Name, Source e MHz.

  • Name: Nome do periférico (clk50mhz)
  • Source: Fonte de origem  (External)
  • MHz: Valor da frequência (50MHz)
Figura 04
Figura 04: Configurado o clock.

A seguir adicionaremos o processador Nios II ao projeto Qsys. Em Library, selecione a opção “Embedded Processors” e em seguida clica em “Nios II Processor” e depois em “+Add”.

Figura 05
Figura 05: Adicionando o Processador Nios II.

Surge a janela da figura seguinte que mostra os diversos tipos de processadores Nios II disponíveis no software Qsys.

Figura 06: Definindo o Processador Nios II.
Figura 06: Definindo o Processador Nios II.

Selecione a opção Nios II/e que é versão mais simples do Nios II. Clique no botão “Finish”  no lado inferior direito da janela para voltar na tela inicial do Qsys.

OBSERVAÇÃO: Na parte inferior são exibidos algumas informações de erros por não serem configurados alguns parâmetros que ainda não foram exibidos.

O próximo passo será adicionar a memória On-Chip. Em “Library” selecione “Memories and Memory Controllers => On Chip => On-Chip Memory (RAM or ROM)“.

Figura 07: Adicionando On-Chip Memory ao projeto.
Figura 07: Adicionando On-Chip Memory ao projeto.

A tela abaixo exibe a configuração On-Chip Memory. A memória utilizada será de 4k bytes e 32 bits de largura.

Figura 08: Parâmetros On-Chip Memory.
Figura 08: Parâmetros On-Chip Memory.

O próximo passo é adicionar a interface PIO ao projeto. Na biblioteca de componentes, selecione “Peripherals => Microcontrollers Peripherals => PIO (Parallel I/O)”.

Figura 09: Adicionando PIO.
Figura 09: Adicionando PIO.

A tela abaixo demonstra a configuração do PIO. Primeiramente configuramos para a entrada i_sw0, informaremos o comprimento “Width” de 1 bit e em “Direction” seleciona a opção “Input” e em seguida clique em “Finish”.

Figura 10: Configurando o PIO como entrada.
Figura 10: Configurando o PIO como entrada.

O mesmo deverá ser feito para as duas saídas o_led e o_led_blink, porém selecionar “Output” para “Direction” e 1 em “Width”.

A seguir adicionaremos o JTAG UART para realizar a comunicação entre o computador e o processador Nios II.  Em “Library”, selecione “Interface Protocols => JTAG UART” e clique no botão “+Add”. Sendo assim, surge a janela JTAG UART.

Figura 11: Adicionando JTAG UART.
Figura 11: Adicionando JTAG UART.

Não altere os parâmetros “Default” e clique no botão “Finish” e o sistema retornará para o software Qsys. Podemos verificar na figura abaixo o sistema completo com todos os componentes adicionados ao projeto do Qsys.

Figura 12: Periféricos adicionados.
Figura 12: Periféricos adicionados.

A seguir devemos configurar as conexões entre os periféricos na coluna “Connections” como  mostra a Figura 13.

Figura 13: Interligando os Periféricos.
Figura 13: Interligando os Periféricos.

Na coluna “Names” podemos alterar os nomes dos periféricos para facilitar durante a programação do Nios II e no momento de realizar as conexões na instância do componente. Clique em cima do componente e pressione a tecla F2 para renomeá-lo.

  • nios2_qsys_0 = nios2_processor
  • onchip_memory2_0 = onchip_memory
  • pio_0 = i_sw0
  • pio_1 = o_led
  • pio_2 = o_led_blink
  • jtag_uart_0 = jtag_uart

O endereçamento inicial (Base) e final (End) pode ser configurado pelo desenvolvedor ou automaticamente pelo Qsys em “System => Assign Base Address”.

Figura 13
Figura 13: Configuração dos endereços dos periféricos.

O processador Nios II possui um vetor reset definido pelo usuário quando em condição de reset, em seguida o processador busca a próxima instrução e também possui o endereço de memória que o processador busca quando á interrupção.

Para configurar estes parâmetros, clique duas vezes no componente nios2_processor e nos campos “Reset Vector” e “Exception Vector” selecionar a opção “onchip_memory.s1” e em seguida clicar em “Finish”.

Figura 15
Figura 15: Configurando os vetores do Nios II.

 A seguir devemos disponibilizar acesso para o FPGA os pinos PIO (i_swo, o_led e o_led_blink) do Nios II. Na coluna “Export”  devemos clicar duas vezes na linha de “external_connection” para os PIOs citados de acordo com a figura abaixo.

Figura 16
Figura 16: Export Conduit para os PIOs.

O próximo passo é gerar os arquivos do Qsys, na aba “Generation” e clicar em “Generate”.  O software pedirá que salva o arquivo, neste exemplo será nios2_project.

Figura 17
Figura 17: Gerando arquivos do Nios II.

Final do processo sem erros com dois warnings. Não se preocupe neste momento com o warnings, porque não nos impedirá de fazer corretamente o projeto.

Figura 18
Figura 18: Fim do Generate.

O último passo deste tópico é adicionar o arquivo “nios2_project.qip” gerado pelo Qsys ao projeto do Quartus II. Este arquivo fica dentro pasta do projeto o seguinte caminho : nios2_project => synthesis => nios2_project.qip.

Figura 19
Figura 19: Localização do arquivo nios2_project.qip.

No projeto do Quartus em “Assignments =>Settings … =>Files”. Em “File Name” clique nos 3 pontinhos, seleciona o arquivo nios2_project.qip e em seguida clicar em “Add”.

Figura 20
Figura 20: Adicionando o arquivo nios2_project. qip ao projeto.

Em seguida clicar em Apply e OK no fim da página. O próximo post explicarei como adicionar o componente nios2_project no projeto Top Level.

Até mais!

Anúncios

8 comentários sobre “Processador Nios II – Desenvolvimento: Parte II

  1. Pingback: Processador Nios II – Desenvolvimento: Parte III | AGE TECHNOLOGY

  2. Pingback: Processador Nios II – Desenvolvimento: Parte I | AGE TECHNOLOGY

  3. Pingback: VGA (Video Graphics Array) – Parte II – AGE TECHNOLOGY

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s