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.
- 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?
- Modo de interrupción: no tengo idea si inundaría la conexión USB
- Modo masivo: me parece lo mejor ya que no hay pérdida de datos
- Transferencia de control: no es adecuada ya que no está diseñada para transferir datos
usb
oscilloscope
robomon
fuente
fuente
Respuestas:
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.
fuente
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:
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.
fuente
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.
fuente
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.
fuente