NIOS II e On-Chip FIFO

98 views
Skip to first unread message

Davyd Melo

unread,
Oct 11, 2013, 12:10:10 AM10/11/13
to sis_emb...@googlegroups.com
Pessoal,

Alguém já utilizou NIOS II da Altera em conjunto com o periférico On-Chip FIFO?

Por exemplo, seria possível chamar uma interrupção quando o FIFO contiver X palavras e ler essas X palavras dentro da interrupção antes que o FIFO encha?

Abraço

--
Davyd Bandeira de Melo - Instituto Atlântico
Firmware Trainee
Oracle Certified Java Programmer 6.0
Linux User #526110

Email Pessoal: davy...@gmail.com
Atlante Mail: davyd...@atlantico.com.br
Messenger: davy...@hotmail.com
Skype: davydmelo

Luis Filipe Rossi

unread,
Oct 11, 2013, 12:28:10 AM10/11/13
to sis_emb...@googlegroups.com
Por exemplo, seria possível chamar uma interrupção quando o FIFO contiver X palavras


SIm.. leia o documento da On Chip FIFO que explica as interrupções possíveis

 
e ler essas X palavras dentro da interrupção antes que o FIFO encha?


Só você pode dizer isso.. vai depender da velocidade de chegada de dados e do Clock do seu NIOS II

Abs


--
Luís Filipe Rossi
Electrical Engineer
Biomechatronics Lab. / Grupo de Sensores Integráveis e Sistemas
Escola Politécnica
Universidade de São Paulo

Davyd Melo

unread,
Oct 11, 2013, 12:31:11 AM10/11/13
to sis_emb...@googlegroups.com

Nios 2 rodando na versão free a 150MHz e 24 MHz de clock de entrada no FIFO.

--
Você está recebendo esta mensagem porque se inscreveu no grupo "sis_embarcados" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para sis_embarcado...@googlegroups.com.
Para postar neste grupo, envie um e-mail para sis_emb...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/sis_embarcados.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

André Prado

unread,
Oct 11, 2013, 6:34:18 AM10/11/13
to sis_emb...@googlegroups.com

É bem tranqüilo fazer isto , lê a documentação da fifo da altera, vc ta usando o qsys ?

Davyd Melo

unread,
Oct 11, 2013, 6:53:23 AM10/11/13
to sis_emb...@googlegroups.com

Sim, to usando o Qsys. Minha intensão eh deixar o FIFO com uns 4096 bytes e quando interromper o NIOS II ler tudo e jogar numa RAM externa. Minha dúvida é se a latência da interrupção vai me permitir dar vários reads() para sempre esvaziar a FIFO para q eu n precise usar DMA.

Valeu

Davyd Melo

unread,
Oct 11, 2013, 6:54:49 AM10/11/13
to sis_emb...@googlegroups.com

*Intenção

André Prado

unread,
Oct 11, 2013, 7:04:04 AM10/11/13
to sis_emb...@googlegroups.com
Tem que calcular o throughput do NIOS2 e a taxa de entrada de dados na FIFO.
Por cima, no chutômetro eu acredito que dê com folga. Mas se for pra fazer só isto nem precisa do NIOS2, faz um modulo VHDL que acesse a ram externa e leia a FIFO, acho até mais fácil!


2013/10/11 Davyd Melo <davy...@gmail.com>



--
Att
André

Davyd Melo

unread,
Oct 11, 2013, 7:13:29 AM10/11/13
to sis_emb...@googlegroups.com

Obrigado pelas dicas.

Tenho q fazer algumas manipulações com esses dados, por isso pensei em usar o NIOS.

Minha memoria eh uma SDR SDRAM. Você sabe de algum IP para facilitar o acesso a ela?

Abraço

André Prado

unread,
Oct 11, 2013, 7:20:34 AM10/11/13
to sis_emb...@googlegroups.com
Tem o próprio IP da Altera no QSys chamado SDRAM Controller, é só configurar conforme o datasheet do seu fabricante. Já existem algumas SDRAMs pré-configuradas lá.


2013/10/11 Davyd Melo <davy...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "sis_embarcados" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para sis_embarcado...@googlegroups.com.
Para postar neste grupo, envie um e-mail para sis_emb...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/sis_embarcados.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att
André

Davyd Melo

unread,
Oct 15, 2013, 5:02:27 PM10/15/13
to sis_emb...@googlegroups.com
Opa! Valeu pelas dicas. Consegui usar esse SDRAM Controller e liguei o FIFO no NIOS. O FIFO que estou utilizando é de clock duplo pois quero escrever a 24MHz e ler a 100MHz que é a velocidade do clock do NIOS II. Exportei o clock de 24MHz pro Quartus.

Não liguei os dados de entrada nem o clock de entrada do FIFO e fui fazer uns testes no código em C:

int init_input_fifo()
{
int code = ALTERA_AVALON_FIFO_OK;

code = altera_avalon_fifo_init(0x2001838, // Address
  0,   // Disabled interrupts
  100,   // Almost empty
  1000);   // Almost full

if (code == ALTERA_AVALON_FIFO_EVENT_CLEAR_ERROR)
printf("A\n");
else if (code == ALTERA_AVALON_FIFO_IENABLE_WRITE_ERROR)
printf("B\n");
else if (code == ALTERA_AVALON_FIFO_THRESHOLD_WRITE_ERROR)
printf("C\n");

printf("ALMOSTEMPTY = %d\n", altera_avalon_fifo_read_almostempty(0x2001838));
printf("ALMOSTFULL = %d\n", altera_avalon_fifo_read_almostfull(0x2001838));

return code;
}

Obtive o seguinte erro (ALTERA_AVALON_FIFO_EVENT_CLEAR_ERROR):

A
ALMOSTEMPTY = 0
ALMOSTFULL = 

O que estára acontecendo? Será as ligações com o NIOS? Desconfio que o data_master não está ligado correto ao FIFO.

Inline image 1



2013/10/11 André Prado <andrep...@gmail.com>



--
image.png

André Prado

unread,
Oct 15, 2013, 5:09:19 PM10/15/13
to sis_emb...@googlegroups.com
Opa depois vejo com mais calma mas já de cara não é boa prática utilizar o endereço da FIFO assim, utiliza a base dele no system.h



2013/10/15 Davyd Melo <davy...@gmail.com>



--
Att
André
image.png

Davyd Melo

unread,
Oct 15, 2013, 5:19:06 PM10/15/13
to sis_emb...@googlegroups.com
Valeu André. Eu até tentei fazer isso que você falou. No meu caso o #define é FIFO_0_BASE. O system.h tá incluído mas por algum motivo quando tento compilar ele diz que o símbolo não existe. É outro probleminha que tô tentando resolver. ;D

Abraço


2013/10/15 André Prado <andrep...@gmail.com>
image.png
Reply all
Reply to author
Forward
0 new messages