Forum: FPGA, VHDL & Co. Übertragung von Daten über 2 Taktdomänen beim System Generator


von amin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich möchte Daten von einem 65MHz Core zu einem 100MHz Core übertragen. 
Der laut der Beschreibung vom System Generator, soll das mit Registern 
und FIFOs gehen. Jedoch bekomme ich grundsätzlich kein Signal an der 
Empfängerseite.

Im Anhang findet Ihr die mdl Files von einem Test.

Zur Erklärung der Sender läuft mit 65MHz und der Empfänger mit 100MHz.
Ich exportiere jedes dieser Testfiles zur EDK als Eigenen-Core, welche 
ich dann dort mit dem jeweiligen Takt takte.

Muss man eventuell in der EDK noch etwas wegen den "shared Memorys" 
einstellen ?
Oder hat jemand sonst eine Idee wo mein Fehler liegt.

Vielen Dank im Voraus

amin

von amin (Gast)


Lesenswert?

Hallo nochmal,

ich habe inzwischen noch ein paar Tests gemacht. Zum einen habe ich 
versucht ob die Übertragung überhaupt funktioniert, wenn sender und 
empfänger beide auf 100MHz sind. Was leider auch nicht funktionierte.
Jedoch funktioniert die Übertragung wenn sender un Empänger auf dem 
selben Core sind.

Zudem habe ich das Full Signal ausgelsen, was auf Senderseite nach 
kurzer Zeit kommt, aber auf Empfängerseite bleibt der FIFO leer.

Sprich wie vermutet, liesst der FIFO auf der Empängerseite den Shared 
Memory nicht aus.

Hat jemand eine Idee woran das liegen könnte ?

von amin (Gast)


Lesenswert?

Also meine Vermutung ist, dass man in der EDK die Shared Memory Namen 
der verschiedenen Cores verküpfen muss.
Jedoch finde ich grundsätzlich nur Informationen dazu, wie man so ein 
Shared Memory in C für den MicroBlaze auslesen kann.

Kann mir da keiner weiterhelfen, wie ich so einen SharedMemory in der 
EDK oder SystemGenerator von verschiedenen Cores verknüfen kann ?

von amin (Gast)


Lesenswert?

Hallo noch mal,

ich habe gerade etwas im FAQ von Xilinx gefunden:
http://www.xilinx.com/support/answers/24290.htm

Und ich beürchte nun fast, das man den die Fifos/Register gar nicht über 
mehr als einen Core nutzen kann.

Eventuell muss ich wohl doch auf dieses Multiple Subsystem umsteigen.

von amin (Gast)


Lesenswert?

falls jemand später mal das gleiche Problem haben sollte hier mal der 
aktuelle Stand der Dinge:

Bei einer Anfrage an XILINX habe ich den weg über den MicroBlaze als 
Lösungsansatz bekommen [vgl. sysgen_user.pdf s. 155].
Jedoch kommt das für meinen Fall nicht in Frage, da der MicroBlaze das 
ganze zu sehr ausbremsen würde.
Da ich nunmal kontinuierlich mit 65MHz 32Bit schreiben will und diese 
dann mit 100MHz auslesen möchte. Da würde der MicroBlaze wohl nicht 
mitkommen, es sei denn man würde ihn extrem hoch takten.

von amin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

hab mir jetzt einen Woraround für das Problem gebastelt.
Eventuell etwas überdimensoniert, aber eine andere sinnvolle Lösung habe 
ich nicht gesehen.

Und zwar habe ich jetzt die Ausgänge des 65MHz Cores direkt mit den 
Eingängen des 100MHz Cores verbunden. Damit es jedoch nicht zur 
Fehlabtastung kommt, geht das ganze im 100MHz in ein Dual Port RAM.

Am Oszi sieht das ganze genau so aus wie´s sein soll und scheint daher 
als LÖsung ganz brauchbar zu sein.

Wer Lust hat (oder das gleiche Problem hat) kann sich meine mdl 
Workaround-Testfiles anschauen (siehe Anhang).

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.