Qual é o melhor tipo de transferência USB (granel, interrupção, transferências isócronas) a ser usado para implementar um osciloscópio USB?


20

Eu quero construir um osciloscópio USB. Eu estava lendo sobre diferentes tipos de transferência USB . Qual tipo de transferência é melhor para transferir as amostras ADC coletadas de um osciloscópio USB para um PC?

Abaixo estão algumas das minhas descobertas. Por favor, corrija-me e também seria bom se alguém pudesse sugerir um bom tipo de transferência.

  1. Transferência isócrona - Possível perda de dados. Não é bom para um osciloscópio, pois cada item de dados é valioso. Quantos dados podem ser perdidos?
  2. Modo de interrupção - não faço ideia se inundaria a conexão USB
  3. Modo em massa - Parece o melhor para mim, pois não há perda de dados
  4. Transferência de controle - não é adequado, pois não se destina à transferência de dados

2
Pelo que li, a maioria dos escopos com usb usa o modo em massa para enviar capturas de tela do escopo.
transeunte

Presumivelmente, se você optar pelo modo isócrono, poderá reservar um pouco de largura de banda extra para correção de erros.
user253751

Ou, para um exagero total, o PCIe DMA agrada minha imaginação.
Mitch

Respostas:


28

As transferências em massa não perdem dados, mas não têm largura de banda mínima garantida. (Por outro lado, eles podem atingir velocidades mais altas porque são capazes de usar toda a largura de banda que não realmente usada por outras transferências).

O que acontece quando as transferências de dados do seu osciloscópio estão atrasadas (devido a erros ou devido a outros dispositivos) e novos dados estão se acumulando? Você para o dispositivo até que os dados antigos sejam transmitidos ou joga fora os dados antigos para poder transmitir os dados atuais?

As transferências isócronas são projetadas para dados 'em tempo real'. Você não tem escolha sobre o tratamento de erros, mas sua largura de banda é reservada no barramento.

  • Se você deseja exibir os dados gravados em tempo real, use transferências isócronas.
  • Se você deseja transferir os dados gravados para o PC após o término das medições, use transferências em massa.

10

A questão é quase completamente independente do seu uso como osciloscópio e é completamente governada pelos tipos de comunicação que você está solicitando à USB. Por exemplo:

  • Um osciloscópio que possui um buffer grande (de vários megabytes) internamente e é projetado para executar um teste curto primeiro e depois fazer o upload dos dados, usaria transferência totalmente em massa. Como não é necessário largura de banda garantida, o melhor volume com verificação de erros da transferência em massa será o melhor.
  • Um osciloscópio projetado para ser continuamente conectado ao circuito em teste continuamente e deve operar em "tempo real" (leia-se: tempo de execução determinístico) escolheria isócrono. Em massa, não há garantias determinísticas de tempo de execução, e você não pode configurar seu pipe para ter largura de banda reservada. Você precisará fazer suas próprias correções de erros, mas pelo menos elas podem ser feitas de forma determinística.
  • Um osciloscópio com um feed "ao vivo" para visualização humana mais uma captura de alta velocidade em um gatilho pode configurar dois pontos finais, um isócrono para acompanhar o feed ao vivo e a transferência em massa dos dados acionados. Para o consumo humano, perder um quadro ou dois não é grande coisa, então não há razão para se preocupar com a falta de verificação de erros no isócrono. No entanto, quando se trata dos dados reais, você os transfere em massa para correção de erros.
  • Pode-se usar esse circuito como parte de um sistema ativo. Pode ser não apenas o osciloscópio, mas também uma proteção contra sinais que indicam que o circuito está saindo da faixa de operação e precisa ser desligado pelo computador. Nesse caso, você pode adicionar um ponto de extremidade de interrupção ao sistema para obter uma latência garantida (e alguma manipulação de erro bem definida) para garantir que o problema seja atendido antes de interromper os circuitos.

Depois de saber em que tipo de dados você está transmitindo e os termos de Qualidade de Serviço (QoS) em que os dados precisam chegar, você pode decidir qual mecanismo de transferência USB deve ser feito. Você saberá que está pronto para tomar essas decisões quando a palavra "osciloscópio" não for mais necessária para descrever os dados e a QoS de que você precisa. Então você sabe que é suficiente em palavras objetivas para começar a resolver esses problemas.


4

Para um osciloscópio, a largura de banda da transferência é o parâmetro que você deseja maximizar. A transferência em massa foi projetada especificamente para alta largura de banda, de modo que é a escolha correta. Embora as transferências isócronas e de interrupção coloquem limites na latência, elas destinam-se apenas a fluxos de dados de baixa a média largura de banda.


3

Basta usar transferências em massa. Um osciloscópio não é realmente um dispositivo de alta taxa de dados. A menos que você esteja planejando criar um projeto do tipo fósforo digital, um osciloscópio é realmente apenas uma janela para uma parte muito pequena de uma forma de onda. Por exemplo, digamos que você queira mostrar 1000 pixels horizontais e atualizar a exibição em torno de 30Hz. Se as amostras tiverem 8 bits cada (isso é típico) e houver dois canais, você estará visualizando apenas 60.000 bytes / segundo. O USB de velocidade total pode gerar cerca de 1.000.000 bytes / s, portanto, você está usando menos de 6% da capacidade de transferência de barramento. Isso dá tempo de sobra para permitir que o modo de transferência em massa funcione (corrigir erros, contornar o tráfego de outros ônibus) e é improvável que você encontre uma configuração de barramento da vida real que não consiga alocar largura de banda suficiente por tantos dados.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.