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

20

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 de 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 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 adecuada ya que no está diseñada para transferir datos
robomon
fuente
2
Por lo que he leído, la mayoría de los ámbitos con usb usan el modo masivo para enviar capturas de pantalla del alcance.
Passerby
Presumiblemente, si utiliza el modo isócrono, podría reservar un poco de ancho de banda adicional para la corrección de errores.
user253751
O por exceso, PCIe DMA me hace cosquillas.
Mitch

Respuestas:

28

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, ya que pueden usar todo el ancho de banda que en realidad 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 mostrar los datos grabados en tiempo real, debe usar transferencias isócronas.
  • Si desea transferir los datos grabados a la PC después de las mediciones hayan finalizado, debe usar transferencias masivas.
CL.
fuente
10

La pregunta es casi completamente independiente de su uso como osciloscopio, y está completamente regida por los tipos de comunicaciones que le pide a USB que haga. Por ejemplo:

  • Un osciloscopio que tiene un búfer grande (multi-megabyte) internamente y está diseñado para ejecutar primero una prueba corta, luego cargar los datos, usaría una transferencia masiva. No tiene necesidad de ancho de banda garantizado, por lo que será mejor el alto volumen con comprobación de errores de transferencia masiva.
  • Un osciloscopio diseñado para conectarse continuamente al circuito bajo prueba de forma continua y debe funcionar en "tiempo real" (léase: tiempo de ejecución determinista) elegiría isócrono. Bulk no ofrece garantías deterministas de tiempo de ejecución, y no puede configurar su canalización para tener ancho de banda reservado. Tendrá que hacer sus propias correcciones de errores, pero al menos se pueden hacer de manera determinista.
  • Un osciloscopio con una alimentació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 alimentación en vivo y la transferencia masiva de los datos disparados. Para el consumo humano, perder un cuadro o dos no es un gran problema, por lo que no hay razón para preocuparse por la falta de verificación de errores en isochronus. Sin embargo, cuando se trata de los datos reales, los transfiere en masa para la corrección de errores.
  • Uno podría usar este circuito como parte de un sistema en vivo. Es posible que no solo sea el osciloscopio, sino también una protección contra las señales que indican que el circuito está dejando rangos operativos y que la computadora debe apagarlo. 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 sea atendido 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) a los que deben llegar los datos, puede decidir qué mecanismo de transferencia USB debe hacer. 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 lo suficientemente objetivo como para comenzar a abordar estos problemas.

Cort Ammon - Restablece a Monica
fuente
4

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 ancho de banda alto, por lo que es la opción correcta. Si bien las transferencias isócronas y de interrupción ponen límites a la latencia, solo están destinadas a flujos de datos de ancho de banda bajo a medio.

Dave Tweed
fuente
3

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 fósforo digital, un osciloscopio es realmente 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 30Hz. Si las muestras son de 8 bits cada una (esto es típico) y hay dos canales, está buscando solo 60,000 bytes / segundo. La velocidad máxima del USB puede hacer aproximadamente 1,000,000 bytes / seg, por lo que está utilizando menos del 6% de la capacidad de rendimiento del bus. Eso le da suficiente tiempo para dejar que el modo de transferencia masiva haga lo suyo (errores correctos, evite el tráfico de otro bus), y es poco probable que encuentre una configuración de bus de la vida real que no pueda asignarle suficiente ancho de banda por esa cantidad de datos.

Jon
fuente