¿Cuál es el mejor tipo de transferencia USB (bulk, interrupt, Isochronous Transfers) que se utilizará para implementar un osciloscopio USB?

19

Quiero construir un osciloscopio USB. Estaba leyendo sobre diferentes tipos de transferencia de 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. Por favor, corrígame 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 podrían perderse?
  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
pregunta robomon

4 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 no es realmente usado por 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 opció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 que las mediciones hayan finalizado, debe utilizar transferencias masivas.
respondido por el CL.
10

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

  • Un osciloscopio que tiene un gran búfer interno (de varios megabytes) internamente y está diseñado para ejecutar primero una prueba corta, luego cargar los datos, usaría una transferencia totalmente masiva. No tiene necesidad de ancho de banda garantizado, por lo que será mejor el alto volumen con la comprobación de errores de la transferencia masiva.
  • Un osciloscopio que esté diseñado para conectarse continuamente al circuito bajo prueba de forma continua y debe operar en "tiempo real" (leer: tiempo de ejecución determinístico) elegiría isocronus. Bulk no ofrece garantías de tiempo de ejecución deterministas, 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 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 activados. Para el consumo humano, perder uno o dos fotogramas no es un gran problema, por lo que no hay razón para preocuparse por la falta de comprobación de errores en los isócronos. Sin embargo, cuando se trata de los datos reales, lo transfieres en masa para corregir los 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á abandonando los rangos de funcionamiento y 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 reparado 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, entonces 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 sabrá que es lo suficientemente objetivo como para comenzar a abordar estos problemas.

    
respondido por el Cort Ammon
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 gran ancho de banda, por lo que es la elecció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 medio y bajo.

    
respondido por el Dave Tweed
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 de 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, solo está viendo 60,000 bytes / segundo. La velocidad máxima del USB puede ser de aproximadamente 1,000,000 de bytes por segundo, por lo que está usando menos del 6% de la capacidad de rendimiento del bus. Eso le da suficiente tiempo para dejar que el modo de transferencia masiva haga su trabajo (corregir errores, solucionar el tráfico de otros buses) 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 esa cantidad de datos.

    
respondido por el Jon

Lea otras preguntas en las etiquetas