DMA é Suficiente?

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

DMA é Suficiente?

Mensagempor Jorge_Francisco » 04 Jun 2009 12:58

Olá Pessoal,

Me surgiu esta dúvida quando estava analisando um projeto. O projeto consiste em um AD de 30MHz, com saída na mesma frequencia do clock, ou seja, a saída paralela de dados é atualizada a uma taxa de 30Mhz. Minha pergunta é, poderia usar algum ARM para ler estes dados diretamente em alguma porta, com DMA ou sei lá o que?


Abraço,
Jorge
Editado pela última vez por Jorge_Francisco em 04 Jun 2009 13:11, em um total de 1 vez.
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor Jorge_Francisco » 04 Jun 2009 13:10

Editei acima. Na verdade,um clock entre 20Mhz e 30Mhz seria razoável para a minha aplicação. Será que ainda que tem ARM que poderia ler o AD diretamente e armazenar este valores(Aproximadamente 10.000 leituras)?
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor tcpipchip » 04 Jun 2009 15:44

um barato...LPC2103
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor MarcusPonce » 04 Jun 2009 19:49

Este é uma pergunta interessante, com nuances não visíveis à primeira vista.

O melhor seria usar mesmo o DMA, pois é rápido e vários ARM7 do mercado certamente conseguiriam transferir 20Msamples/s a 30Ms/s
Mas para usar DMA existe um problema: quase nenhum ARM dispõe de uma entrada com a função de DMA Request. A função desta entrada seria o seguinte: o DMA transfere do AD para a memória uma amostra quando você der um pulso em DMA Request. Portanto, você ligaria nesta entrada o clock do AD. Veja que o clock do ARM só precisaria ser rápido, mas não precisaria ter relação com o clock do AD.

Acontece que na maioria dos ARMs por aí só existe DMA request internamente ao ARM, para conectar uma serial ou outro periférico interno dele. Exemplo: toda vez que chega um dado pela SPI ocorre o disparo do DMA e ele transfere o dado para a memória. Mas não tem como pendurar um AD externo e fazer a mesma coisa...

Agora de memória não lembro qual ARM sugerir, o qual tenha uma entrada DMA request.

Outra abordagem seria transferir usando firmware e você teria que fazer uma rotina bem otimizada. Mas provavelmente não daria tempo de ficar conferindo se tem dado novo disponível, transferindo para a memória, contando se já deu as 10000 amostras e incrementando ponteiro. Então provavelmente você faria a rotina apenas para incrementar ponteiro e transferir amostras. Teria que terminar disparando uma INT. E teria que sincronizar o clock do ARM com o clock do AD, para não precisar ficar esperando o instante certo de pegar a amostra nova. Ou seja: cada clock do AD tem que corresponder exatamente a X clocks do ARM suficientes para uma volta do loop que está transferindo e incrementando o ponteiro.
Não é muito bonito mas funciona.

Outra idéia: Coloca uma memória FIFO que caibam as 10000 amostras, entre o AD e o ARM. Depois transfere mais lentamente usando firmware mesmo. Bem, é mais fácil porém não é barato.
MarcusPonce
Byte
 
Mensagens: 166
Registrado em: 12 Fev 2007 13:58
Localização: Campinas - SP

Mensagempor tcpipchip » 05 Jun 2009 14:27

desculpe...eu nao tinha entendido a pergunta...

Quanto A/D que faz DIRECT MEMORY ACCESS, parece que alguns chips STM32 tem este recurso...

Eu lembro que o ECG que montei para um STM32 (STM32 CIRCLE OS)... lia o A/D e mandava direto para a memoria memoria INTERNA via DMA...

T+

TCPIPCHIP
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor Jorge_Francisco » 07 Jun 2009 13:04

Muito Obrigado MarcusPonce. Estou achando que o jeito será usar uma fifo mesmo. Queria usar ARM e entrar neste mundo, mas já vi que não será dessa vez,hehehe.
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor RobL » 11 Jun 2009 08:01

Dê uma olhada no Xmega da Atmel, apesar de 8 bits, tem velocidade compatível com ARMs em certas aplicações.
DMA:
http://www.atmel.com/dyn/resources/prod ... oc8046.pdf
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56


Voltar para ARM

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x