Altera Excalibur. DOCUMENTAÇÃO!!!! Ambiente de Simulação Ambiente de Hardware Ambiente de...

Preview:

Citation preview

Altera Excalibur

DOCUMENTAÇÃO!!!!

Ambiente deSimulação

Ambiente de Hardware

Ambiente de Software

Sistema de Prototipação Excalibur

Placa de desenvolvimento Excalibur

Dispositivo APEX

Características

• nº de portas - 211.000

• 13KB de RAM

• nios ocupa entre 25% e 35% da lógica do dispositivo

Modo de programação

• conexão JTAG (Quartus II)

• memória flash

Placa de desenvolvimento Excalibur

Memória Flash

Características

• 1Mbyte (512Kb x 16 bits)

Propósito

• usada como memória não volátil pelo Nios (w/r)

• configuração do APEX (controle de configuração)

Placa de desenvolvimento Excalibur

Memória SRAM

Características

• 256Kb (64Kb x 16 bits) em cada chip

• Nios pré-carregado (64Kb x 32 bits)

Placa de desenvolvimento Excalibur

Conectores SODIMM

Características

• socket de 144 pinos SODIMM

• módulo SDRAM (64bits)

• Conectada ao APEX

• nios pré-carregado não faz uso desta memória

Placa de desenvolvimento Excalibur

Pinos de expansão

Características

• 3.3 V e 5 V

• O APEX esta protegido dos pinos de 5V por chaves analógicas

• Para conexão de placas filhas, como Ethernet

Placa de desenvolvimento Excalibur

Conectores PCI (PMC)

Características

• APEX PCI

•padrão IEEE 1386

Placa de desenvolvimento Excalibur

Conectores JTAG

Características

• compatível com ByteBlaster e MasterBlaster

Propósitos

• programar o APEX (Quartus II)

• reprogramar o EPM7064 (Quartus II ou MAX+PLUS II)

Placa de desenvolvimento Excalibur

Chaves

Características

• compatível com ByteBlaster e MasterBlaster

Propósitos

• programar o APEX (Quartus II)

• reprogramar o EPM7064 (Quartus II ou MAX+PLUS II)

• PCM software (host)

Placa de desenvolvimento Excalibur

Controlador de Configuração

Propósito

• configurar o APEX

Dados de configuração

• Quartus hexout flash (ocupa 1/4 da mem. Flash)

• GERMS flash

Configuração de usuário x fábrica

• 512Kb - instruções do Nios e espaço de dados não volátil

• 256Kb - configuração do usuário

•256Kb - configuração de fábrica

Placa de desenvolvimento Excalibur

Entrada/Saída básica

Elementos

• push-button switches

• dip switch

• display de 7 segmentos

Placa de desenvolvimento Excalibur

Chaves especiais

Sw2 (reset)

• flash APEX

Sw3 (clear)

• depende da configuração do APEX

• Nios pré-carregado passa a executar o código a partir do endereço 0

Placa de desenvolvimento Excalibur

Circuito de clock

Elementos

• oscilador (33.333 MHz)

• distribuidor de clock

Placa de desenvolvimento Excalibur

Circuito de clock

Elementos

• oscilador (33.333 MHz)

• distribuidor de clock

Dispositivos com clock

• APEX

• pinos de expansão

• conectores PCM

• conectores SODIMM

Placa de desenvolvimento Excalibur

Processador Nios e Periféricos

Fluxo de projeto

Projeto do processador

(Verilog / VHDL)

Test Bench para simulação

C Header files

Custom Library

Boot monitor

SíntesePlace & Route

Cygnus/Red HatGNUPro

AlteraPLD

JTAGSerial

Ethernet

Projeto do usuário

IP proprietários

Códigoexecutável

Arquivode configuração

de hardware

Configuração do processador

Seleção dos periféricos

Generate

Hardware Software

Download& Debug

Código do usuário

Biblioteca S/W

RTOS

Biblioteca de periféricos

Processador Nios

Processador Nios

• Processador Soft Core Configurável (Firm Core)

• Arquitetura RISC 32-Bit – Instruções de 16-Bit– Maioria das instruções executadas

em1 ciclo de clock– Pipeline de 5 estágios

• Grande Banco de Registradores Internos– 128, 256 or 512 registradores– 32 registradores por janela

• Bloco de Dados Configurável– 16 bits– 32 bits– inclusão ou não de multiplicação

Timer

IRQ

PB

M CPU

UART

Nosso projeto aqui

FLASH

SRAM

Porta Serial

Altera PLD

Processador Nios• Faixa de endereçamento

– 128 kbytes (16 bits)

– 4 Gbytes (32 bits)

• Desempenho : até 50 MIPS

• Otimizado para PLD APEX

– 13% do APEX EP20K200E - 16 bits

– 20% do APEX EP20K200E - 32 bits

• Freqüência Máxima de 50 MHz

• Endereço Base do Vetor de Exceções

– 64 endereços de manipuladores de exceções

– Nios 32 bits = 4 bytes

– Nios 16 bits = 2 bytes

• Operações de deslocamento com número de ciclos parametrizável

– 1, 3, 7, 15 or 31 Bits/Clock

Parâmetros do Nios

• Data Path (32 or 16)• Tamanho do Barramento de Endereços (10 a 33-bits)• Tamanho do Bloco de Registradores (128, 256 or 512)• Endereço de Reset• Endereço Base do Vetor de Exceções

– 64 endereços de manipuladores de exceções– Nios 32 bits = 4 bytes– Nios 16 bits = 2 bytes

• Bit Shift Speed (1, 3, 7, 15 or 31 Bits/Clock)• Opções de Multiplicação

Diagrama de Blocos do Nios

Banco de Registradores por Janela• Até 512 registradores de propósito geral

• Janela móvel permite acesso a 32 registradores por janela

– 8 registradores globais (fixos)

– 24 registradores (móveis)

• Automaticamente usado pelo compilador (C)

• Vantagens:

– passagem de parâmetros

– chamada rápida a subrotinas

• Múltiplos deslocamentos em um único ciclo de clock

– Incrementos de até 3, 5, 7, 15, ou 31 Bits por clock

– Caro (área ocupada)

• Exemplo:

– Bit Shift Speed configurado para 7:

i << 9; /* Shift Left by 9 Bits */

– Executa em 2 Clocks

Bit Shift Speed

0

Clock 1 (Shift 7 bits)

Clock 2 (Shift 2 bits)

• Software – Usa a biblioteca matemática do GNU

• MSTEP– Hardware Multiplicador– multiplicação de 1 bit por clock– Aumento de ~ 4X sobre a rotina de multiplicação (software)

• MUL– Hardware Multiplicador– 16 x 16 32 em 2 Clocks

Multiplicador

Software

MSTEP

MUL

Ciclos de Clock16x16>32

Ciclos de Clock32x32>32

LEs Adicionais

80

18

2

0

+200

+400

250

80

16

Opções de Multiplicação

Avalon:Especificação do

Barramento

Hardware Externo

Introdução

• Objetivos do Avalon:

– simplicidade

– operações síncronas

– baixo consumo de área (LE)

• Para uso “on-chip”

• Barramento multimestre mestre (nios 2.0)

• Periféricos mapeados em memória

Funções do Barramento

• Decodificação de endereço

– Geração de chip-select

• Multiplexação de barramento de dados

– Transferência de dados do mestre para o periférico escolhido

• Geração de wait-state

– Ciclos de clock extra

• Dimensionamento dinâmico de barramento

– Suporta periféricos com barramento de dados menor que o tamanho do

barramento de dados do avalon

• Controle de interrupção

– Com prioridade

Sistema

Nios

CPUA

valo

n B

us

User

I/FNios System

Module

I/O

I/O

Altera PLD

User

HW

User

I/F

Perif. Interno (timer)

Perif. Interno (UART)

Perif. Externo (memória)

Perif. Externo (hardware do usuário)

Temporização do Barramento

• Sinais “registered” (sem atraso comb.)

• Sinais combinacionais (com atraso comb.)

• Informações IMPORTANTES para construção de um wrapper entre avalon e HW do usuário

Lógica D Q

clock

D Q

clock

Lógica

Cíclos de Leitura do Nios• 0 wait-state, 0 setup/hold time (asinc. perif)

• 1 wait-state, 1 setup/hold time (sinc. perif)

NIOS

HW

Nios

Avalon

Hw

Address, readn

CS Data

Cíclos de Escrita do Nios• 0 wait-state, 0 setup/hold time (asinc. perif)

• 0 wait-state, 1 setup/hold time (sinc. perif)

Nios

CPUA

valo

n B

us

User

I/FNios System

Module

I/O

I/O

Altera PLD

User

HW

User

I/F

User-Defined Interface• Criação de portas para interface com outros periféricos

– On-Chip & Off-Chip

• Configuração de temporização do barramento

Criando um Projeto• Agora vamos criar um projeto com uma

interface para ligar um hardware do usuário• Copie o projeto minimal_32 do diretório de

exemplos do excalibur para o seu diretório• Abra o seu projeto• Dê um duplo click em no bloco

nios_system_module

Adicionando um Novo Periférico

Interface do Usuário

1. Código do usuário mais wrapper2. Seleciona o top3. Varre o VHDL para as portas - scan files4. Manualmente escolhe o tipo da porta no

barramento Avalor (Type)5. Finish

1

23

4

Temporização

• Neste caso, 1 wait state

Gerar o hw

Finalizando a integração• Atualize o símbolo do processador com os sinais recém-

criados – selecione o símbolo e com o botão da direita “update symbol

or block”

– crie um símbolo para o hw externo

• file--> open para abrir o VHDL e depois em tools criar o símbolo– selecione wr_880

• conecte o wr_880 ao processador

SintetizandoSintetize o SOC!

Realizando o download1

2

3

4

Executando o Nios SDK• Ir para o diretório do projeto (...minimal_32/cpu_sdk/src)• Coloque o fonte • Compile o fonte “nb lfsr32.c”• Execute nr lfsr32.srec