Página 1 de 1

ajuda FIFO.

MensagemEnviado: 29 Mai 2007 14:09
por fabim
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

Re: ajuda FIFO.

MensagemEnviado: 29 Mai 2007 14:23
por andre_luis
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.

+++

MensagemEnviado: 29 Mai 2007 16:24
por fabim
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

MensagemEnviado: 29 Mai 2007 21:01
por barboza
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.

MensagemEnviado: 30 Mai 2007 12:17
por fabim
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

MensagemEnviado: 22 Mai 2008 17:39
por Jorge_Francisco
Revivendo este tópico também, e aí fabim, consegui fazer o ad+fifo funcionar?

MensagemEnviado: 10 Mai 2009 11:48
por kaoalex
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);
   }
}