Qual è il miglior tipo di trasferimento USB (bulk, interrupt, Isochronous Transfer) da utilizzare per implementare un oscilloscopio USB?


20

Voglio costruire un oscilloscopio USB. Stavo leggendo di diversi tipi di trasferimento USB . Quale tipo di trasferimento è il migliore per trasferire i campioni ADC raccolti da un oscilloscopio USB a un PC?

Di seguito sono riportati alcuni dei miei risultati. Per favore, correggimi e sarebbe bene se qualcuno potesse suggerire un buon tipo di trasferimento.

  1. Trasferimento isocrono - Possibile perdita di dati. Non va bene per un oscilloscopio poiché ogni elemento di dati è prezioso. Quanti dati potrebbero andare persi?
  2. Modalità di interruzione: non ho idea di inondare la connessione USB
  3. Modalità Bulk: mi sembra la migliore in quanto nessuna perdita di dati
  4. Controllo del trasferimento - non adatto poiché non è pensato per il trasferimento di dati

2
Da quello che ho letto, la maggior parte degli ambiti con USB utilizza la modalità bulk per inviare schermate dell'ambito.
Passerby

Presumibilmente se si utilizza la modalità isocrona, è possibile riservare un po 'di larghezza di banda aggiuntiva per la correzione degli errori.
user253751

O per eccessivo eccesso, PCIe DMA solletica la mia fantasia.
Mitch,

Risposte:


28

I trasferimenti di massa non perdono dati, ma non hanno una larghezza di banda minima garantita. (D'altra parte, possono raggiungere velocità più elevate, perché sono in grado di utilizzare tutta la larghezza di banda non effettivamente utilizzata da altri trasferimenti.)

Cosa succede quando i trasferimenti di dati dell'oscilloscopio vengono ritardati (a causa di errori o di altri dispositivi) e si stanno accumulando nuovi dati? Arrestate il dispositivo fino a quando non vengono trasmessi i vecchi dati o buttate via i vecchi dati per poter trasmettere i dati attuali?

I trasferimenti isocroni sono progettati per dati "in tempo reale". Non puoi scegliere la gestione degli errori, ma la larghezza di banda è riservata sul bus.

  • Se si desidera visualizzare i dati registrati in tempo reale, è necessario utilizzare i trasferimenti isocroni.
  • Se si desidera trasferire i dati registrati sul PC al termine delle misurazioni, è necessario utilizzare trasferimenti di massa.

10

La domanda è quasi completamente indipendente dal tuo uso come oscilloscopio ed è completamente governata dai tipi di comunicazioni che stai chiedendo all'USB di fare. Per esempio:

  • Un oscilloscopio che ha un ampio buffer (multi-megabyte) internamente ed è progettato per eseguire prima un breve test, quindi caricare i dati, utilizzerebbe il trasferimento completo. Non ha bisogno di una larghezza di banda garantita, quindi l'alto volume con controllo degli errori del trasferimento di massa sarà il migliore.
  • Un oscilloscopio progettato per essere continuamente collegato al circuito in prova su base continua e deve funzionare in "tempo reale" (leggi: tempo di esecuzione deterministico) sceglierebbe isocronico. Bulk non offre garanzie di runtime deterministiche e non è possibile impostare la pipe in modo che abbia larghezza di banda riservata. Dovrai apportare le tue correzioni di errori, ma almeno possono essere fatte in modo deterministico.
  • Un oscilloscopio con un feed "live" per la visualizzazione umana più una cattura ad alta velocità su un trigger può impostare due endpoint, uno isocronico per tenere il passo con il feed live e il trasferimento di massa per i dati attivati. Per il consumo umano, perdere un frame o due non è un grosso problema, quindi non c'è motivo di preoccuparsi della mancanza di errori nel controllo degli isocroni. Tuttavia, quando si tratta dei dati effettivi, li trasferisci in blocco per la correzione degli errori.
  • Si potrebbe usare questo circuito come parte di un sistema live. Potrebbe non essere solo l'oscilloscopio, ma anche una protezione contro i segnali che indicano che il circuito sta abbandonando i limiti operativi e deve essere spento dal computer. In questo caso, è possibile aggiungere un endpoint di interruzione al sistema, per ottenere una latenza garantita (e una gestione degli errori ben definita) per assicurarsi che il problema venga risolto prima che rompa i circuiti.

Una volta che conosci il tipo di dati che stai trasmettendo e i termini di qualità del servizio (QoS) in base ai quali i dati devono arrivare, puoi decidere quale meccanismo di trasferimento USB fare. Saprai che sei pronto a prendere queste decisioni quando la parola "oscilloscopio" non è più necessaria per descrivere i dati e il QoS di cui hai bisogno. Allora sai che è in parole abbastanza oggettive per iniziare a risolvere questi problemi.


4

Per un oscilloscopio, la larghezza di banda del trasferimento è il parametro che si desidera massimizzare. Il trasferimento di massa è progettato specificamente per un'elevata larghezza di banda, quindi questa è la scelta corretta. Mentre i trasferimenti isocroni e di interruzione impongono limiti alla latenza, sono destinati esclusivamente a flussi di dati con larghezza di banda da bassa a media.


3

Usa solo trasferimenti di massa. Un oscilloscopio non è in realtà un dispositivo ad alta velocità di trasmissione dati. A meno che non si stia progettando di progettare un tipo di fosforo digitale, un oscilloscopio è in realtà solo una finestra su una parte molto piccola di una forma d'onda. Ad esempio, supponiamo che tu voglia mostrare 1000 pixel orizzontali e aggiornare il display a circa 30Hz. Se i campioni sono 8 bit ciascuno (questo è tipico) e ci sono due canali, si stanno visualizzando solo 60.000 byte / secondo. L'USB a piena velocità può fare circa 1.000.000 di byte / sec, quindi stai utilizzando meno del 6% della capacità di throughput del bus. Ciò offre un sacco di tempo per consentire alla modalità di trasferimento di massa di fare la propria cosa (errori corretti, aggirare il traffico di altri autobus), ed è improbabile che incontrerai mai una configurazione di bus della vita reale che non sarà in grado di allocare sufficiente larghezza di banda per tanti dati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.