Forum: FPGA, VHDL & Co. Kommunikation mit Softcore in Simulation


von greg (Gast)


Lesenswert?

Moin,

um in der Simulation einen Softcore (MicroBlaze) mit der "Außenwelt" 
kommunizieren zu lassen, benutze ich momentan einen schnell getakteten 
UART mit VHDL-Prozessen in der Testbench, die den UART lesen/schreiben 
können. Funktioniert prinzipiell gut, und war einfacher als ich dachte. 
Es hat auch den Vorteil (abgesehen von der Baudrate) identisch mit der 
echten Hardware zu sein.

Allerdings ist das sehr langsam. Gibt es eine schnellere, einfache 
Möglichkeit, die ich übersehe? Auf Anhieb konnte ich im Netz nichts 
finden.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

greg schrieb:
> Allerdings ist das sehr langsam.
Was ist langsam? Die Simulation der SIO oder die Simulation des 
Softcores an sich?

von greg (Gast)


Lesenswert?

Die UART-Kommunikation ist langsam im Verhältnis zum Rest, denn ich kann 
mit einem UART-Modul maximal 921600 BPS verwenden. Die CPU wartet die 
meiste Zeit nur auf den lahmen UART. Die Simulationsgeschwindigkeit an 
sich ist (IMHO) in Ordnung.

von Duke Scarring (Gast)


Lesenswert?

greg schrieb:
> Die UART-Kommunikation ist langsam im Verhältnis zum Rest,
Ich habe mir ein kleines Modul gebaut: Der Softcore schreibt Zeichen auf 
eine Speicherstelle. Die Testbench sammelt die Zeichen und gibt sie bei 
Newline komplett aus.

Damit die Software weiß, ob sie richtige UART machen muss oder nicht, 
wird am GPIO ein Signal angelegt, welches in der Simulation '1' ist und 
im synthetisierten Design '0'.

Mit dieser Information kann man auch gleich die relativ langsame 
Initialisierung für ein Text-LCD o.ä. überspringen.

Duke

von Fitzebutze (Gast)


Lesenswert?

Guck mal nach `ghdlex´ in der GHDL mailing liste, da gibt es einige sehr 
praktische Co-Simulation-Utilities. Allerdings vermute ich, dass sich 
der microblaze mit GHDL nicht simulieren lässt. Wir machen hier mit dem 
Core des Autors zyklengenaue Simulationen mit Coprozessor-HW, ist 
allerdings langsamer als die 50k-Teuren Cadence-Tools, aber mit einer 
schnellen Kiste und cleverem Threading geht eine saubere Verifikation in 
vernünftiger Zeit.

von greg (Gast)


Lesenswert?

Duke Scarring schrieb:
> Ich habe mir ein kleines Modul gebaut: Der Softcore schreibt Zeichen auf
> eine Speicherstelle. Die Testbench sammelt die Zeichen und gibt sie bei
> Newline komplett aus.

Hmm, klingt simpel, und nicht schlecht. Ich könnte ggf. die Zeichen auch 
einfach per AXI4-Stream raushauen, das READY-Signal dabei konstant auf 1 
setzen, und immer wenn ein VALID anliegt, die Daten in meiner Testbench 
lesen. Da brauche ich gar keine zusätzliche Peripherie mehr.

Fitzebutze schrieb:
> Guck mal nach `ghdlex´ in der GHDL mailing liste, da gibt es einige sehr
> praktische Co-Simulation-Utilities. Allerdings vermute ich, dass sich
> der microblaze mit GHDL nicht simulieren lässt.

Ich denke auch, dass ich den Microblaze damit nicht simulieren kann. 
Aber der Tipp mit der Co-Simulation klingt gut. Es muss doch etwas 
Ähnliches wie VHPI für Modelsim geben?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.