Hallo Zusammen, ich habe eine Anfänger Frage: Was macht dieser Code ? Ich weiß was ein synchronisieren ist aber: Wieso ist EPP_strobe_reg ein Schieberegister ? Was ist der Eingang des Schieberegister ? Vielleicht verstehe ich auch den Syntax einfach nicht. Ich kann mir schon denken, das die Änderungen an EPP_strobe in das Register geschoben werden. Ich sehe das aber nicht am Code. Das ist doch nur eine Zuweisung und eine Zusammenfassung. // Use a 3-taps shift register to synchronize EPP_strobe to our clock wire EPP_strobe = EPP_data_strobe | EPP_addr_strobe; // only one is active at a time reg [2:0] EPP_strobe_reg; always @(posedge clk) EPP_strobe_reg <= {EPP_strobe_reg[1:0], EPP_strobe}; code kommt von da: http://www.fpga4fun.com/EPP4.html Vielen Dank schon mal !
@ Sync (Gast) >Das ist doch nur eine Zuweisung und eine Zusammenfassung. >reg [2:0] EPP_strobe_reg; Definert ein 3 Bit Register >always @(posedge clk) EPP_strobe_reg <= {EPP_strobe_reg[1:0], >EPP_strobe}; Das ist ein einfaches Schieberegister, das mit jeder positiven Taktflanke Daten schiebt. Als LSB kommt EPP Strobe rein und wird über drei Bits geschoben. Das ist der klassische Ansatz zum Synchronisieren von Daten/Steuersignalen zwischen asynchronen Taktsystemen. Der Takt vom CPLD ist asynchron zum PC und damt den EPP Signalen.
@ Falk Brunner Vielen Dank ich dachte mir das schon. Ich bin damit nicht klargekommen, weil zum Beispiel hier in 1) nur von Zusammenfassen die rede ist: 1) http://e21.frm2.tum.de/fileadmin/user_upload/documents/lectures/epraktikum/kapitel03.pdf "Mit geschweiften Klammern können mehrere 'wire' zu einem gemeinsamen Bus zusammengefasst werden:" wire [31:0] databus = {b1,b2,b3,b4}; Darf ich noch fragen was ergibt dann folgendes Konstrukt. reg [2:0] EPP_strobe_reg; always @(posedge clk) EPP_strobe_reg <= {EPP_strobe_reg[1:0],EPP_strobe,in1}; Also wenn EPP_strobe der Eingab des Schieberegister ist, wohin gehen dann nachfolgende Signale. Gibt es das irgentwo zum Nachlesen mit dem Operator {a,b,c} angewedet auf Registern. Danke Nochmal
Tippgeber schrieb: > http://www.mikrocontroller.net/articles/Metastabilit%C3%A4t Wobei das Einsynchronisieren eher den unterschiedlichen Laufzeiten im FPGA entgegen wirken muss. Metastabilität ist nämlich bei Anfängern sicher kein relevantes Thema. Siehe http://www.lothar-miller.de/s9y/categories/35-Einsynchronisieren
Sync schrieb: > reg [2:0] EPP_strobe_reg; > always @(posedge clk) EPP_strobe_reg <= > {EPP_strobe_reg[1:0],EPP_strobe,in1}; Das wird nix gutes: du versuchst 4 bit in einem 3 bit Register zu "speichern". Müsstest nen Fehler bekommen bei der Synthese mindestens ne Warnung... bin mir nicht 100 pro sicher. Hab glaube ich vor nen paar Wochen durch nen Schreibfehler ähnliches versucht, kam nen Fehler von der ISE. Und was soll das in1 sein, woher kommt das?
Danke schon mal für eure Antworten ! Aber ich glaube, es ist irgend etwas mehr basisches was ich nicht verstehe. Wenn ich schreibe reg [2:0] EPP_strobe_reg;. Gehe ich davon aus, das ich drei unabhängige FilpFlops habe oder nicht? Woher kann man wissen, das wenn man always @(posedge clk) EPP_strobe_reg <= {EPP_strobe_reg[1:0],EPP_strobe}; der z.B Qn-1 Ausgang eines Registers mit dem nächsten Dn Eingang des nachfolgenden Registers verbunden ist (was ja dann ein Schieberegister währe). Vielleicht habe ich es wirklich nicht verstanden oder mir Fehlt ein Hinweis. Danke noch mal.
Ok Danke nochmal. Jetzt ist der Groschen doch noch gefallen. Siehe http://www.lothar-miller.de/s9y/categories/35-Eins... insr <= insr(0) & input; Diese Zeile hat geholfen Sorry für die Störung :-)
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.