ajuda FIFO.

Circuitos eletrônicos, topologias, diagramas elétricos, etc...

Moderadores: 51, Renie, gpenga

ajuda FIFO.

Mensagempor fabim » 29 Mai 2007 14:09

Pessoal .

Depois do turbilhão ja ter ido embora, retomei o projeto de aparelho de teste multifunção.

Seguinte.

Estou pesquisando na net sobre o osciloscopio USB usando PIC com comunicação HID. manda 64 bytes espera 1mS....

São 64KBps.

Nestes projetos os camaradas utilizam uma FIFO ligada diretamente a saida digital de um conversor AD. Até aí eu entendi bem como funciona.

Mais aí entrou uma dúvida cruel.

Suponha que vou usar um AD 8 bits paralelo de 100msps.
E uma fifo de 8 bits de 8k*8.

Se eu fizer 100 000 000 de conversões por segundo, para eu estourar o ultimo byte da fifo vai demorar.
1/100 000 000 * 8000 = 80uS... bla bla bla.

Alguem teria uma idéia de como funciona a técnica para utilização da fifo neste tipo de sistema ?

abraços

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Re: ajuda FIFO.

Mensagempor andre_luis » 29 Mai 2007 14:23

Até onde sei, os osciloscópios digitais realizam conversoes na velocidade máxima do conversor A/D, porém eles aumentam a quantidade de conversores rodando em paralelo ( defazados entre si ), e assim conseguem multiplicar a taxa de amostragem com quantos conversores tiverem sido usados. É uma tecnica análoga à solução adotada para expandir a capacidade do barramento PCI.

+++
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor fabim » 29 Mai 2007 16:24

até aí eu ja estudei sobre o funcionamento.

Eu queria saber sobre a tecnica empregada no acumulo de dados na fifo sem perder informações..

Abraços

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor barboza » 29 Mai 2007 21:01

Me corrijam se estiver errado!

Se seu canal de comunicação (USB) é de 64KBps por que amostrar com taxa maior que 64K se seu AD é de 8bits (1byte) ?

Se amostrar a 100M por 1 segundo, você teria 100MB.
Em um canal de de 64KBps, você levará 1562,5 segundos (~26 min) para transferir 1 segundo de amostragem.

Me diga onde não entendi seu duvida.
Se estou certo, não tem como você não perder amostras.
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor fabim » 30 Mai 2007 12:17

vc pensou exatamente como eu..

Acesse este site. www.bitscope.com
Se cadastre e veja os circuitos

Ta dando até dor de barriga pra compreender esse maledito..

abração

fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Jorge_Francisco » 22 Mai 2008 17:39

Revivendo este tópico também, e aí fabim, consegui fazer o ad+fifo funcionar?
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor kaoalex » 10 Mai 2009 11:48

Se for útil para alguém...

FIFO.H
Código: Selecionar todos
#include<stdlibm.h>

struct no
{
   int16 adc;
   struct no *prox;
};

struct no *inicio = NULL;
struct no *fim = NULL;

int insere(int16 adc)
{
   struct no *p;

  // p = new struct no;
   p = malloc(sizeof (struct no));

   if(p==NULL)
    return(0); //memoria insuficiente
   else
   {
      p->adc = adc;
      p->prox = NULL;

      if(inicio == NULL)
      {
         inicio = fim = p;
      }
      else
      {
         fim->prox = p;
         fim = p;
      }
   }
return(1);
}

int16 remove(void)
{
   int16 adc=0;
   struct no *temp;

   if(inicio==NULL)
   {
   return(0); //se a lista estiver vazia
   }
   else
   {
      adc = inicio->adc;
      temp = inicio;
      inicio = inicio->prox;
      free(temp);

      return(adc);
   }
}
Avatar do usuário
kaoalex
Byte
 
Mensagens: 237
Registrado em: 12 Out 2006 01:52


Voltar para Circuitos Diversos

Quem está online

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

x