Quel est le meilleur type de transfert USB (vrac, interruption, transfert isochrone) à utiliser pour implémenter un oscilloscope USB?

20

Je veux construire un oscilloscope USB. Je lisais sur différents types de transfert USB . Quel type de transfert est le meilleur pour transférer les échantillons ADC collectés d'un oscilloscope USB vers un PC?

Voici quelques-unes de mes conclusions. Veuillez me corriger et ce serait bien si quelqu'un pouvait suggérer un bon type de transfert.

  1. Transfert isochrone - Perte possible de données. Pas bon pour un oscilloscope car chaque élément de données est précieux. Combien de données pourraient être perdues?
  2. Mode d'interruption - je ne sais pas si cela pourrait inonder la connexion USB
  3. Mode Bulk - Semble le meilleur pour moi car aucune perte de données
  4. Transfert de contrôle - ne convient pas car il n'est pas destiné au transfert de données
robomon
la source
2
D'après ce que j'ai lu, la plupart des étendues avec USB utilisent le mode en vrac pour envoyer des captures d'écran de la portée.
Passerby
Vraisemblablement, si vous optez pour le mode isochrone, vous pouvez réserver un peu de bande passante supplémentaire pour la correction des erreurs.
user253751
Ou pour une exagération flagrante, PCIe DMA chatouille ma fantaisie.
Mitch

Réponses:

28

Les transferts en masse ne perdent pas de données, mais ils n'ont pas de bande passante minimale garantie. (D'un autre côté, ils peuvent atteindre des vitesses plus élevées, car ils sont capables d'utiliser toute la bande passante qui n'est pas réellement utilisée par d'autres transferts.)

Que se passe-t-il lorsque les transferts de données de votre oscilloscope sont retardés (soit à cause d'erreurs, soit à cause d'autres appareils), et que de nouvelles données s'accumulent? Arrêtez-vous l'appareil jusqu'à ce que les anciennes données soient transmises, ou jetez-vous les anciennes données pour pouvoir transmettre les données actuelles?

Les transferts isochrones sont conçus pour les données «en temps réel». Vous n'avez pas le choix sur la gestion des erreurs, mais votre bande passante est réservée sur le bus.

  • Si vous souhaitez afficher les données enregistrées en temps réel, vous devez utiliser des transferts isochrones.
  • Si vous souhaitez transférer les données enregistrées vers le PC une fois les mesures terminées, vous devez utiliser des transferts en masse.
CL.
la source
10

La question est presque complètement indépendante de votre utilisation en tant qu'oscilloscope et est complètement régie par les types de communications que vous demandez à USB de faire. Par exemple:

  • Un oscilloscope qui a un grand tampon (multi-mégaoctets) en interne et est conçu pour exécuter un court test d'abord, puis télécharger les données, utiliserait un transfert entièrement en masse. Il n'a pas besoin de bande passante garantie, donc le volume élevé avec vérification des erreurs de transfert en masse sera le meilleur.
  • Un oscilloscope qui est conçu pour être raccordé en continu au circuit sous test sur une base continue et doit fonctionner en "temps réel" (lire: temps de fonctionnement déterministe) choisirait l'isochronus. Bulk n'offre aucune garantie d'exécution déterministe et vous ne pouvez pas configurer votre canal pour avoir une bande passante réservée. Vous devrez faire vos propres corrections d'erreurs, mais au moins elles peuvent être effectuées de manière déterministe.
  • Un oscilloscope avec un flux "en direct" pour une visualisation humaine plus une capture à haute vitesse sur un déclencheur peut configurer deux points d'extrémité, un isochronus pour suivre le flux en direct et le transfert en masse des données déclenchées. Pour la consommation humaine, perdre une trame ou deux n'est pas un gros problème, il n'y a donc aucune raison de s'inquiéter du manque de vérification des erreurs sur l'isochronus. Cependant, en ce qui concerne les données réelles, vous les transférez en masse pour la correction des erreurs.
  • On pourrait utiliser ce circuit dans le cadre d'un système en direct. Il peut s'agir non seulement de l'oscilloscope, mais également d'une protection contre les signaux indiquant que le circuit quitte les plages de fonctionnement et doit être arrêté par l'ordinateur. Dans ce cas, vous pouvez ajouter un point de terminaison d'interruption au système, pour obtenir une latence garantie (et une gestion des erreurs bien définie) pour vous assurer que le problème est traité avant qu'il ne casse les circuits.

Une fois que vous savez quel type de données vous transmettez et les conditions de qualité de service (QoS) auxquelles les données doivent arriver, vous pouvez alors décider du mécanisme de transfert USB à effectuer. Vous saurez que vous êtes prêt à prendre ces décisions lorsque le mot «oscilloscope» n'est plus requis pour décrire les données et la qualité de service dont vous avez besoin. Vous savez alors que c'est suffisamment objectif pour commencer à aborder ces questions.

Cort Ammon - Rétablir Monica
la source
4

Pour un oscilloscope, la bande passante du transfert est le paramètre que vous souhaitez maximiser. Le transfert en masse est spécialement conçu pour une bande passante élevée, c'est donc le bon choix. Bien que les transferts isochrones et d'interruption imposent des limites à la latence, ils ne sont destinés qu'aux flux de données à faible ou moyenne bande passante.

Dave Tweed
la source
3

Utilisez simplement des transferts en masse. Un oscilloscope n'est pas réellement un appareil à haut débit. Sauf si vous envisagez de faire une conception numérique de type phosphore, un oscilloscope n'est vraiment qu'une fenêtre sur une très petite partie d'une forme d'onde. Par exemple, supposons que vous souhaitiez afficher 1000 pixels horizontaux et rafraîchir l'affichage à environ 30 Hz. Si les échantillons sont 8 bits chacun (c'est typique) et qu'il y a deux canaux, vous ne regardez que 60 000 octets / seconde. L'USB pleine vitesse peut faire environ 1 000 000 octets / s, vous utilisez donc moins de 6% de la capacité de débit du bus. Cela laisse beaucoup de temps pour laisser le mode de transfert en masse faire son travail (corriger les erreurs, contourner le trafic des autres bus), et il est peu probable que vous rencontriez une configuration de bus réelle qui ne pourra pas vous allouer suffisamment de bande passante pour autant de données.

Jon
la source