Schnittstelle mit USB-Anschluss in der Simulation

Ich prototypiere ein Board mit einem USB-Anschluss in Spice oder einer anderen Schaltungssimulationstechnologie. Die Produktionsplatine wird an den PC angeschlossen und es wird eine Software geben, die über USB mit ihr kommuniziert. Ich würde gerne einen Großteil des Prototypings in Software machen, bevor ich mit Meat-Space herumspiele, wegen der Geschwindigkeit.

Ist es / wie ist es möglich, die Software mit einer Simulation des Boards zu verbinden? Welche Simulationssoftware macht das?

Mit anderen Worten, es wäre cool, die Simulation zum Laufen zu bringen und sie sich so verhalten zu lassen, als wäre sie an einen der USB-Ports des Computers angeschlossen (ein echter oder ein virtueller), damit ich die Interaktion mit meiner PC-Seite testen kann Code.

Angenommen, Sie versuchen nicht, das analoge elektrische Verhalten der USB-Schnittstelle zu modellieren, wäre es vielleicht am nützlichsten, eine Programmierschnittstelle zum Simulator zu finden, mit der ein externes Programm Quellen auf Knoten steuern kann, die den E / A-Pins entsprechen des USB-Schnittstellengeräts.
@ChrisStratton, das entspricht dem, was ich dachte. Kennen Sie zufällig einen Simulator, der solche Schnittstellen bereitstellt?
Werfen Sie einen Blick auf die Spezifikationen und Videos der Proteus -Simulation: Es leistet gute Arbeit bei der Simulation mehrerer analoger und digitaler Teile und Schnittstellen, obwohl es eine gewaltige Rechenleistung erfordert. Der Simulator kann sogar Firmware für mehrere Mikrocontroller simulieren, während simulierte Eingangssignale von simulierten Schnittstellen wie USB verwendet werden. Es ist kein SPICE, aber es ist ziemlich starkes Zeug.

Antworten (3)

Ich fürchte, die Antwort auf Ihre Frage lautet, dass dies höchstwahrscheinlich nicht möglich ist.

Wenn Sie Ihr System und Ihre Ziele genauer beschreiben, kann jemand eine mögliche Alternative vorschlagen. Ein paar Zweifel und Fragen, die mir in den Sinn kommen, sind (sorry, wenn ich Ihre Situation völlig falsch verstanden habe):

  • Welchen Simulator verwendest du?
  • Haben Sie wirklich ein funktionierendes Modell für den USB-Controller? USB-Geräte sind normalerweise Mikrocontroller, auf denen eine nicht triviale Menge an Code ausgeführt wird, was auf der Ebene von Spice oder sogar Verilog sehr kompliziert zu simulieren ist.
  • Wenn Sie eine funktionierende Simulation haben, wie schnell läuft sie? PC-USB-Treiber sind zeitkritisch und erwarten schnelle Antworten vom USB-Gerät. Ich würde erwarten, dass eine Verhaltenssimulation eines Mikrocontrollers, der Code aus einem ROM ausführt, in der Größenordnung von 10 Minuten Echtzeit pro 1 Millisekunde Simulationszeit läuft.
Ich denke, es besteht die Möglichkeit, dass niemand Software dafür geschrieben hat (oder sie sowieso frei verfügbar gemacht hat). Obwohl ich wette, dass da draußen etwas ist. Als Beispiel denke ich an etwas wie sparkfun.com/tutorials/108 , es gibt Gewürzmodelle für all diese Komponenten. Ich möchte nur ein "virtuelles USB-Kabel" in den USB-Adapter der Simulation stecken, als ob ein Ende an den USB-Anschluss meines PCs und das andere Ende an den Stromkreis angeschlossen wäre.
Das Timing-Problem ist eine gute Überlegung, denn wenn es zu langsam ist, kann es möglicherweise zu USB-Ausnahmen kommen

Sie befinden sich weit jenseits der Ebene der Systemkomplexität, bei der SPICE ein sinnvolles Werkzeug ist.

SPICE ist ein analoger Simulator . Es kann auf einige tausend Transistoren skaliert werden. Die ICs, die Sie simulieren möchten, enthalten viele Zehn- oder Hunderttausende von Transistoren.

Außerdem führt SPICE eine spärliche Auswertung durch, wenn es bestimmen kann, dass es das dV / dT mit ausreichender Genauigkeit auflöst. Da Ihr Mikro-/anderer komplexer Logik-IC wahrscheinlich einen schnellen internen Takt haben wird, muss SPICE das Gerät mit beträchtlicher Präzision simulieren, was die Simulation noch langsamer machen würde als einfache analoge Schaltungen.

Außerdem ist SPICE kein Echtzeit-Tool. Einfache Modelle können bei ~ laufen 1 1 , 000 - 1 1 , 000 , 000 Echtzeit. Dies ist für die meisten einfachen Simulationen akzeptabel, bei denen Sie die Anfangsbedingungen richtig festlegen und die Simulation für kurze Zeit ausführen können, um ihr Verhalten zu bewerten.

Wenn Sie die oben genannten Faktoren und die Tatsache kombinieren, dass Sie viele hundert Millisekunden In-Simulationszeit benötigen, damit Ihre MCU ordnungsgemäß startet und sich verbindet, benötigen Sie wahrscheinlich mehrere Echtzeittage (!) bis Ihre Simulation ausgeglichen ist aufzählen! Außerdem muss etwas den USB-Host, an den das Gerät angeschlossen ist, richtig implementieren. Sie können eine USB-Verbindung, die mit einem Millionstel (oder mehr) Echtzeit läuft, nicht einfach an den Host weiterleiten und erwarten, dass sie funktioniert.

Simulationen wie die, die @Purrell in seiner Antwort verlinkt, sind vereinfachte Modelle der verschiedenen Geräte. Die MCU wird als etwas nach Art einer VHDL- oder Verilog-Softcore-MCU simuliert, rein im digitalen Bereich (Hinweis: Dies ist kein SPICE), und die Schnittstellen werden in die analoge Simulation gepuffert (und das vorausgesetzt, sie tun dies). überhaupt keine analoge Simulation. Ich halte das für ziemlich unwahrscheinlich).

Offensichtlich wird dies auch durch die Genauigkeit der Modelle eingeschränkt. Selbst SPICE ist kein perfektes Werkzeug, und je weiter Sie von der tatsächlichen Natur der Geräte abstrahieren, desto wahrscheinlicher ist es, dass Ungenauigkeiten der Simulation Ihr simuliertes Ergebnis beeinflussen.


Wirklich, es scheint, als überdenkst du das. Auch Simulatoren wie SPICE werden allgemein eher schlecht bewertet, da sie sehr anfällig für Corner-Cases sind und sich eigentlich nur als analoges Design- Verifikationstool lohnen .

Es gibt wirklich keine Tools für so etwas, da sie mehr oder weniger nutzlos wären. Die Tiefe des Wissens über ein spezifisches Gerät, das erforderlich ist, um ein brauchbares, wenn nicht perfektes Modell des besagten Geräts zu schreiben, würde die Simulation überflüssig machen, und die Simulation würde immer noch nicht immer perfekt die reale Hardware modellieren.

Der Grund dafür, dass es nicht viel Interesse oder Produkte gibt, die das tun, was Sie wollen, ist, dass es irgendwie nutzlos ist. Bis wir den gesamten Chip mit einer Auflösung von wenigen Atomen simulieren können, bleibt er außerhalb einiger weniger spezifischer Anwendungen nutzlos.

Wirklich, Sie müssen nur darüber hinwegkommen und die eigentliche Hardware bauen.

Ich verwende möglicherweise den falschen Begriff mit SPICE. Ich suche jede Art von Simulation oder Emulation. Der Mikrocontroller und der USB müssen in einer Simulation nicht SPICE sein, verstanden? Ihre Antwort ist für volles SPICE richtig und auf ein komplexes Board ausgerichtet. Für ein einfaches Board ist es eine gute Idee, es in Software zu simulieren, um zuerst die Schaltplan- und Schnittstellensoftware herunterzuladen. Echtzeitsimulation ist keine Voraussetzung, wenn es anders wäre.

Hier ist ein Simulator, der es tut:

http://www.labcenter.com/products/usb.cfm

Sie behaupten, die einzigen zu sein, die dies tun, was bedauerlich ist, da die Software teuer und die Benutzeroberfläche meines Erachtens veraltet ist, und es eine so nette Idee ist. Es funktioniert für PICs und AT90s, was ich vorhabe.


Ich bin überrascht von den No-you-can't-Antworten. Leute - es ist 2013 :) . Wir können ganze Computer simulieren , einschließlich ihrer USB-Schnittstellen in Software. Ich schreibe dies in einer Windows-VM, die auf einem Macbook Pro ausgeführt wird. Die USBs innerhalb der VM werden vollständig „in Echtzeit“ simuliert und verbinden sich mit dem Hostcomputer, als wären sie lokal.

Tatsächlich führe ich zusätzlich zu der wunderbar funktionierenden Lab Center-Software und der Simulation der USB-Schnittstelle eine VM aus, da diese Software nur unter Windows ausgeführt wird. Ich habe also Code auf meinem Host-OSX-Rechner, der eine Verbindung zu einem virtuellen USB-Port auf dem VM-Windows-Rechner herstellt, der mit einer virtuellen USB-Schnittstelle von der Schaltungssimulation verbunden ist. Das ist eine ganz andere Ebene der Virtualisierung, zusätzlich zu der, von der Sie mir sagen, dass ich nicht dazu in der Lage sein sollte. Bier mich!

Ich bin mir nicht sicher, ob diese Software wirklich das tut, wonach Sie gefragt haben. Es simuliert USB-Transaktionen bis auf die Treiberebene, aber es gibt keinen Hinweis darauf, dass Sie Ihre eigene Software mit diesem Treiber verbinden können.
Entschuldigung, ich meinte, dass es nicht klar ist, dass Sie Ihre eigene Software nahezu in Echtzeit zusammen mit einer SPICE-Simulation Ihres Boards ausführen können. Beachten Sie auch, dass es nur mit einem bestimmten Satz USB-fähiger Mikrocontroller funktioniert. Ich bin skeptisch und möchte nicht etwa 1.000 US-Dollar ausgeben, um es auszuprobieren. Lassen Sie uns also wissen, wie es bei Ihnen funktioniert.
Nee, man kann es anschließen. Es klappt. Sagen wir einfach, ich habe mir die Software "ausgeliehen". Es ist cool. UI nicht so toll. Es verbindet sich so, als ob das Gerät an den USB-Anschluss der Maschine angeschlossen wäre. Die Schaltung ist nicht mit voller Geschwindigkeit, aber ich habe keine Probleme, mich über libusb-win32 damit zu verbinden. Es tat ein bisschen weh, aber meh.
VMs sind KEINE Simulation . Du bringst hier viele Begriffe durcheinander. Außerdem übersehen Sie einen der wichtigsten Punkte, da niemand in der Branche wirklich die Art von Simulation haben möchte , von der Sie sprechen , da sie für alles andere als extrem einfache Implementierungen mehr oder weniger nutzlos ist, was Sie eigentlich nicht tun sollten muss man sowieso simulieren.
VMs sind ganz offensichtlich eine Simulation, Connor. Du hast eine schlechte Einstellung muss ich sagen. Durch die Simulation muss ich mindestens ein paar Stunden gespart haben, wenn nicht mehr. Meine Teile sind in der Post, und ich habe meine Schaltung bereits theoretisch bewiesen, zusammen mit meinem Code. Überprüfe bitte deine Einstellung und dein Ego.