Hallo, Ich nutze das Spartan-3E und wollte jetzt mal die Zeit messen wie lange mein Programm braucht. Dafür wollte ich einen Pin toggeln wie beim Mikrocontroller wenn ich das jedoch machen möchte bekomme ich immer den Fehler "this signal is connected to multiple drivers". Daher meine frage ist es möglich das zu machen oder kann ich die zeit nur über die Simulation messen?
Max schrieb: > Daher meine frage ist es möglich das zu machen oder kann ich die zeit nur > über die Simulation messen? Das ist ziemlich problemlos möglich. Toggeln ist eine Grundfunktion.
Max schrieb: > Daher meine frage ist es möglich das zu machen Ja. > oder kann ich die zeit nur über die Simulation messen? Du kommst allein mit Überlegen drauf: wenn du ein Flipflop mit irgendeiner Taktfrequenz toggeln lässt, dann kommt die halbe Taktfrequenz heraus. > wie lange mein Programm braucht Du hast die komplett falsche Denkweise! VHDL ist keine Programmiersprache (sonst hieße es ja VHPL), sondern eine HardwareBESCHREIBUNGSsprache. Und um etwas BESCHREIBEN zu können, muss man eine brauchbare Vorstellung davon haben. Du musst also nicht irgendwas hin"programmieren", sondern dir eine Hardware ausdenken oder skizzieren und dann diese Hardware mit VHDL BESCHREIBEN. > mein Programm ... > immer den Fehler "this signal is connected to multiple drivers" Zeig doch mal...
:
Bearbeitet durch Moderator
Max schrieb: > Ich nutze das Spartan-3E und wollte jetzt mal die Zeit messen wie lange > mein Programm braucht. Dafür wollte ich einen Pin toggeln wie beim > Mikrocontroller wenn ich das jedoch machen möchte bekomme ich immer den > Fehler "this signal is connected to multiple drivers". Daher meine frage > ist es möglich das zu machen oder kann ich die zeit nur über die > Simulation messen?
1 | process(clk) |
2 | if rsing_edge(clk) then |
3 | toogle_pin <= not toogle_pin; |
4 | end if; |
5 | end process; |
Mit DDR-FF gehts noch schneller oder du nimmst die MultiGigabit Transceiver (MGT) da sind soger meherer GHz toogle-frequenz möglich. Da brauchs du schon eine Multi kilo Euro Scope um das überhaupt zu messen. Dein Problem ist wahrscheinlich das mehreer processe das selbe signal treiben. Recherchier mal "multiple driver". MfG,
Lothar M. schrieb: >> wie lange mein Programm braucht > Du hast die komplett falsche Denkweise! > VHDL ist keine Programmiersprache Das ist erstens nicht uneingeschränkt richtig und zweitens nicht die Begründung gegen die Ansichten des TE. Ich probiere es mal so: Dein VHDL-Programm läuft zunächst nicht im FPGA sondern in der Synthesesofware. Diese bestimmt in der Simulation, wie lange das real dauert. Wie schnell da virtuell was toogelt, hängt von der eingestellten Verzögerung ab. "wie lange in VHDL" etwas "braucht" hängt davon ab, wie es gebaut wird und das ist eine Sache des Tools und der Hardware und Sinn macht diese Betrachtung nur bei ungetakteten Schaltungen. Die schnellste programmierbare Einheit in einem FPGA ist eine rückgekoppelte LUT. In einen Spartan 3E kann die mit gemessennen 900 MHz schwingen. Man darf sie aber nicht wesentlich belasten, sondern muss die mit Faktor 3 runterteilen und dann auf einen Buffer geben. Damit kann man einen Schwingkreis von etwa 300 MHz herstellen. Mit dem kann man aber nicht viel treiben, weil in einem Spartan die Elemente insgesamt zu langsam sind, als dass grössere Kombinatorik so rasch laufen könnte. Ansonsten toggelt dann ein Signal intern so schnell, wie eben der Takt vorgibt. Mit einem reinen Takt bekommt man in einem S3E mindestens (Erfahrung) 200MHz DDR2 hin - also 400 MHz. Aber auch die nur, wenn sie fast nichts treiben müssen, ausser kurzen Leitungen. Es gibt also nochmal einen Unterschied zwischen innen und aussen, und dem, was Takt sein kann und darf.
Fau Ha De Ell Profi schrieb: > Dein VHDL-Programm läuft zunächst nicht im FPGA sondern in der > Synthesesofware. Diese bestimmt in der Simulation, wie lange das real > dauert. Die "Synthesesoftware" simuliert nicht. Und der simulator berechnet keine Timings. Das macht dann erst die STA... >>> wie lange mein Programm braucht >> Du hast die komplett falsche Denkweise! >> VHDL ist keine Programmiersprache > Das ist erstens nicht uneingeschränkt richtig Oh doch. Nur hast du durchaus die richtige Sichtweise und kannst dir gar nicht (mehr) vorstellen, wie falsch Max derzeit nocht liegt. Er meint, sein "Programm" würde wie ein Softwareprogramm "von oben her Schritt für Schritt abgearbeitet". Und genau das passiert eben bei einer VHDL Beschreibung nicht. Da kann es durchaus sein, dass die "unterste" Zuweisung weit vor der "obersten" fertig ist. Und dann kommt noch dazu, dass bestenfalls 10% des gesamten VHDL Sprachumfangs überhaupt synthetisierbar und damit auf Hardware umsetzbar sind. Und diese Befehle dann auch noch in der richtigen Reihenfolge stehen müssen, was wiederum im Synthesizer-Handbuch (für Xilinx der XST User Guide) festgehalten ist... > "wie lange in VHDL" etwas "braucht" hängt davon ab, wie es gebaut wird > und das ist eine Sache des Tools und der Hardware und Sinn macht diese > Betrachtung nur bei ungetakteten Schaltungen. Gerade bei getakteten Schaltungen ist die Frage "wie lange etwas braucht" substantiell wichtig. Denn die Antwort auf diese Frage bestimmt die maximale Taktfrequenz eines Designs. Nicht umsonst hatte ich nach dem VHDL Code der fraglichen und fehlerhaften Beschreibung gefragt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.