¿Cuál es el mejor tipo de transferencia USB (transferencias masivas, de interrupción, isócronas) para implementar un osciloscopio USB?

Quiero construir un osciloscopio USB. Estaba leyendo sobre diferentes tipos de transferencia USB . ¿Qué tipo de transferencia es mejor para transferir las muestras de ADC recopiladas desde un osciloscopio USB a una PC?

A continuación se presentan algunos de mis hallazgos. Corríjame y también sería bueno si alguien pudiera sugerir un buen tipo de transferencia.

  1. Transferencia isócrona - Posible pérdida de datos. No es bueno para un osciloscopio ya que cada elemento de datos es valioso. ¿Cuántos datos se pueden perder?
  2. Modo de interrupción: no tengo idea de si inundaría la conexión USB
  3. Modo masivo: me parece lo mejor, ya que no hay pérdida de datos
  4. Transferencia de control: no es adecuado ya que no está diseñado para transferir datos
Por lo que he leído, la mayoría de los osciloscopios con usb usan el modo masivo para enviar capturas de pantalla del osciloscopio.
Presumiblemente, si opta por el modo isócrono, podría reservar un poco de ancho de banda adicional para la corrección de errores.
O para una exageración bruta, PCIe DMA me hace cosquillas.

Respuestas (4)

Las transferencias masivas no pierden datos, pero no tienen un ancho de banda mínimo garantizado. (Por otro lado, pueden alcanzar velocidades más altas, porque pueden usar todo el ancho de banda que no usan otras transferencias).

¿Qué sucede cuando las transferencias de datos de su osciloscopio se retrasan (ya sea por errores o por otros dispositivos) y se acumulan nuevos datos? ¿Detiene el dispositivo hasta que se transmiten los datos antiguos, o tira los datos antiguos para poder transmitir los datos actuales?

Las transferencias isócronas están diseñadas para datos en "tiempo real". No tiene elección sobre el manejo de errores, pero su ancho de banda está reservado en el bus.

  • Si desea visualizar los datos registrados en tiempo real, debe utilizar transferencias isócronas.
  • Si desea transferir los datos registrados a la PC una vez finalizadas las mediciones, debe utilizar transferencias masivas.

La pregunta es casi completamente independiente de su uso como osciloscopio y se rige por completo por los tipos de comunicaciones que le pide al USB que haga. Por ejemplo:

  • Un osciloscopio que tiene un búfer grande (de varios megabytes) internamente y está diseñado para ejecutar una prueba corta primero y luego cargar los datos, usaría una transferencia masiva completa. No necesita ancho de banda garantizado, por lo que el alto volumen con verificación de errores de transferencia masiva será mejor.
  • Un osciloscopio que está diseñado para conectarse continuamente al circuito bajo prueba de manera continua y debe operar en "tiempo real" (léase: tiempo de ejecución determinista) elegiría isócrono. Bulk no ofrece garantías de tiempo de ejecución deterministas, y no puede configurar su tubería para tener ancho de banda reservado. Tendrá que hacer sus propias correcciones de errores, pero al menos se pueden hacer de forma determinista.
  • Un osciloscopio con una transmisión "en vivo" para la visualización humana más una captura de alta velocidad en un disparador puede configurar dos puntos finales, uno isócrono para mantenerse al día con la transmisión en vivo y la transferencia masiva de los datos disparados. Para el consumo humano, perder uno o dos fotogramas no es gran cosa, por lo que no hay razón para preocuparse por la falta de comprobación de errores en isochronus. Sin embargo, cuando se trata de los datos reales, los transfiere de forma masiva para la corrección de errores.
  • Uno podría usar este circuito como parte de un sistema en vivo. Puede que no solo sea el osciloscopio, sino también una protección contra las señales que indican que el circuito está saliendo de los rangos de operación y necesita ser apagado por la computadora. En este caso, puede agregar un punto final de interrupción al sistema para obtener una latencia garantizada (y un manejo de errores bien definido) para asegurarse de que el problema se resuelva antes de que rompa los circuitos.

Una vez que sepa qué tipo de datos está transmitiendo y los términos de calidad de servicio (QoS) bajo los cuales deben llegar los datos, puede decidir qué mecanismo de transferencia USB usar. Sabrá que está listo para tomar estas decisiones cuando la palabra "osciloscopio" ya no sea necesaria para describir los datos y la QoS que necesita. Entonces sabes que es en palabras lo suficientemente objetivas como para comenzar a abordar estos problemas.

Para un osciloscopio, el ancho de banda de la transferencia es el parámetro que desea maximizar. La transferencia masiva está diseñada específicamente para un gran ancho de banda, por lo que es la elección correcta. Si bien las transferencias isócronas y de interrupción imponen límites a la latencia, solo están destinadas a flujos de datos de ancho de banda bajo a medio.

Solo usa transferencias masivas. Un osciloscopio no es en realidad un dispositivo de alta velocidad de datos. A menos que esté planeando hacer un diseño de tipo de fósforo digital, un osciloscopio es realmente solo una ventana a una parte muy pequeña de una forma de onda. Por ejemplo, supongamos que desea mostrar 1000 píxeles horizontales y actualizar la pantalla a unos 30 Hz. Si las muestras son de 8 bits cada una (esto es típico) y hay dos canales, solo verá 60 000 bytes/segundo. El USB de velocidad máxima puede generar alrededor de 1 000 000 de bytes/seg, por lo que está utilizando menos del 6 % de la capacidad de rendimiento del bus. Eso le da mucho tiempo para dejar que el modo de transferencia masiva haga su trabajo (corregir errores, evitar otro tráfico de bus), y es poco probable que alguna vez encuentre una configuración de bus de la vida real que no pueda asignarle suficiente ancho de banda. por tantos datos.