Software: Xilinx-ISE 10.1 Hardware: Spartan 3A FPGA Board Hallo, ich suche hier im Forum Hilfe zur Lösung meiner kleinen Probleme in meinem Blinkerprogramm. Kurze Funktionsbeschreibung wie ich es meine: Der Blinker soll so wie in einem Auto funktionieren. Einmal tasten, dreimal blinken (Boardtaster =West,East). Für Links und Rechts mit 1Hz oder 2Hz Taktfrequenz, hauptsache man kann es auf dem Board wahrnehmen (LEDs =LD7,LD8). Ein Gleichzeitiges Blinken von Links und Rechts sollte unmöglich sein, muss also iwie veriegelt werden. Und ein Blinkvorgang kann resetet (Boardtaster =South) werden, so dass der Zähler wieder bei 0 steht. Eigentlich hört sich das ganz simpel an, nur meine Versuche scheitern immer wieder. Habe zu Testversuchen erst nur eine x-beliebige LED und Taster verwendet. Problem: Auf dem Board blinkt die LED nur einmal 1s auf und dann bleibt sie permanent an. Im Dateianhang ist das VHDL Programm als pdf-Dokument.
Alex C. schrieb: > Problem: > Auf dem Board blinkt die LED nur einmal 1s auf und dann bleibt sie > permanent an. Was sagt die Simulation? Gerade sowas wie dieser Blinker lässt sich wunderhübsch und einfach simulieren. > Im Dateianhang ist das VHDL Programm als pdf-Dokument. Das ist 1. kein VHDL-Programm, sondern eine VHDL-Beschreibung, und 2. hättest du die besser als *.vhd-Datei angehängt. Denn blöderweise lässt sich die Beschreibung aus dem PDF nicht sinnvoll darstellen oder gar editieren...
1 | signal Counter_Takt: std_logic_vector (25 downto 0):="00000000000000000000000000"; |
Als Tipp: nimm für Zähler einfach einen Integer und statt der alten Synopsys-Libs die numeric_std... http://www.lothar-miller.de/s9y/categories/16-Numeric_Std > Der Blinker soll so wie in einem Auto funktionieren. > ... Und ein Blinkvorgang kann resetet (Boardtaster =South) werden Mit welchem Taster geht das im Auto? > Kurze Funktionsbeschreibung wie ich es meine: > Der Blinker soll so wie in einem Auto funktionieren. Hast du da mal ein Timing-Diagramm gezeichnet, und dir überlegt, wie diese Funktionen mit Hardwarebausteinen (Zähler, Vergleicher, Logik) erreicht werden könnten? Denn sinnvollerweise solltest du zuerst eine Hardwarevorstellung haben, dann daraus eine Beschreibung ableiten...
Lothar Miller schrieb: > Was sagt die Simulation? @Lothar Ich hatte noch nicht die Zeit, momentan gar keine, mich mit der Simulation zu beschäftigern, aber: Warum fragst Du danach? Gibt es Unterschiede zw. Realität und Simulation? Dann wäre die Simulation doch unsinnig. Bitte klär mich mal auf, danke.
Alex C. (lexanders), du kannst uns helfen, ein Mysterium zu lösen, das viele von uns schon lange beschäftigt. Da gibt es als eine Funktion im Forum, mit der man eine Datei auswählen und hochladen kann. Aber anstatt genau die Datei auszuwählen, in der die Informationen sind, die man anhängen möchte, wird ein ganz anderer Weg beschritten. Wie um alles in der Welt kommt ein User auf die Idee, von einen Text einen Screenshot zu machen, dieses in irgendeinem anderen Programm einzufügen, das als PDF zu speichern, und das anschließen hochzuladen? Ich will ich jetzt nicht kritisieren mit meiner Frage (oder nur ein bisschen ;-) ), sondern mich interessiert ganz ehrlich, wie bist du auf die Idee gekommen?
Karl-Heinz M. schrieb: > Ich hatte noch nicht die Zeit, momentan gar keine, mich mit der > Simulation zu beschäftigern, aber: Warum fragst Du danach? Gibt es > Unterschiede zw. Realität und Simulation? Dann wäre die Simulation doch > unsinnig. Bitte klär mich mal auf, danke. Ich denke, der Hauptgrund für diese Frage ist immer, der Fragesteller dazu zu bewegen, überhaupt eine Simulation zu machen ;-) Als Anfänger hat man häufig keine Lust sich erst mit dem Thema Simulation auseinander zu setzten, man beschreibt ja schließlich Hardware, und da will man auch Ergebnisse in Hardware sehen ;-) Das Äquivalent einen Debugger mit Einzelschritt Ausführung in der Software Welt ist bei FPGAs halt die Simulation. Und je früher man damit anfängt auch den Simulator zu nutzen desto besser. Und ja: es gibt Unterschiede zwischen Simulation und Realität. Mit Simulation meint man im Allgemeinen eine funktionale Simulation. Das heißt, es wird rein das simuliert, das im VHDL Code steht, ohne jede Hardwareabhängigkeiten, wie z. B. Signallaufzeiten. Dazu kommt, dass Simulator und Synthesizer manche Sprachkonstrukte anders interpretieren. Aber wenn man sich an gewisse Spielregeln hält, bekommt man auch eine passende Simulation. Das heißt z. B.: synchrones Design, vollständige Sesitivity-Lists, keine kombinatorischen Schleifen, keine wait for Statements in synthetisierbarem Code, etc.
Karl-Heinz M. schrieb: > Ich hatte noch nicht die Zeit, momentan gar keine, mich mit der > Simulation zu beschäftigern, aber: Warum fragst Du danach? Der Simulator ist der Debugger für VHDL-Beschreibungen. Und gerade mit Xilinx ist das Aufsetzen einer Testbench geradezu simpel. Lies das ab Seite 13: http://www.lothar-miller.de/s9y/uploads/Tutorial_Xilinx_ISE13.pdf > Gibt es Unterschiede zw. Realität und Simulation? Normalerweise nicht, und genau das ist der Vorteil: mit dem Simulator kannst du Schritt für Schritt und Takt für Takt deine Beschreibung abarbeiten, interne Signale und Zustände anschauen, und hast nicht nur ein paar LEDs, die nicht das tun, was du erwartest... > Dann wäre die Simulation doch unsinnig. Nein, sie wäre falsch.
Hallo Leute, ich habe jetzt nochmal ein bisschen rumprogrammiert. In der Testbench geht es jetzt wohl. Wird die Taste links (west) oder die Taste rechts (east) betätigt blinkt der jeweilige LED Ausgang 3 mal. Der Reset funktioniert und die Verriegelung auch. Wenn es jedoch auf dem FPGA-Board (SPartan 3a Starter Kit) ausgeben lassen möchte tut sich gar nichts. Synthesize-XST, Implement Desgin, Generate Programming File und Configure Target Device sind alle OK. Die Übertragung des Programms wurde mir auch mit Program succeed bestätigt. Jetzt zu meiner tollen pdf... Ich habe das letzte mal nicht soweit Gedacht die vhd Datei hochzuladen. Hier die aktuelle vhd-Datei;)
Alex C. schrieb: > In der Testbench > geht es jetzt wohl. Kannst Du uns die Testbench auch noch zur Verfügung stellen? Duke
Und wofür sind die ganzen "Sim_xxxx"-Ausgänge? Aha:
1 | -------------------------------------------------------------
|
2 | -- Hier die Externen Variablen zur beobachtung -----
|
3 | -------------------------------------------------------------
|
1. es sind GARANTIERT keine Variablen und 2. mit dem Simulator kannst du auch ganz problemlos interne Signale anschauen, ohne sie nach aussen zu verdrahten. Das ist ja der eigentliche Witz an dem Ding... Nachtrag:
1 | elsif clock='1' and clock'event then |
2 | if Counter_Takt = 10 then |
3 | Counter_Takt <= "00000000000000000000000000"; |
4 | else
|
5 | Counter_Takt <= Counter_Takt + 1;--einfach weiterzählen |
6 | end if; |
7 | end if; |
8 | |
9 | :
|
10 | :
|
11 | |
12 | Takt_1_HZ <= '0' when Counter_Takt = 0 else |
13 | '1' when Counter_Takt >= 5 else |
14 | '0'; |
Das sieht nicht gut aus. So werden keine Takte erzeugt! BTW: ich habe das Ding mal bereinigt und simuliert. Offenbar soll das ja um den Faktor 500000 schneller simuliert werden, oder? Bei mir tut sich da nichts sinnvolles an den Ausgängen... Und noch was:
1 | Takt_1_HZ <= '0' when Counter_Takt = 0 else |
2 | '1' when Counter_Takt >= 5 else |
3 | '0'; <--- Wozu das hier? |
4 | |
5 | --Takt_1_HZ <= '0' when Counter_Takt = 5000000 else
|
6 | -- '1' when Counter_Takt = 0 else
|
7 | -- Takt_1_HZ; <--- Aua, ein Latch...
|
Ich habe da jetzt mal was gebastelt. Sollte das in etwa so aussehen? Falls ja, dann kannst du ja mal meine Testbench gegen dein Design laufen lassen...
Karl-Heinz M. schrieb: > Ich hatte noch nicht die Zeit, momentan gar keine, mich mit der > Simulation zu beschäftigern Tu das! Es lohnt sich! Wirklich :)
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.