werden doch counter_d und counter_q nie als In- oder Output deklariert.
Woher weiß Verilog nun, dass das eine ein Eingang und das andere ein
Ausgang sein soll.
Für jede Hilfe bin ich dankbar (ich denke, man merkt, dass ich noch am
Anfang stehe)
MfG, Sivas!
Andi X. schrieb:> werden doch counter_d und counter_q nie deklariert.
Doch, hier:
Andi X. schrieb:> reg [24:0] counter_d, counter_q;Andi X. schrieb:> dass das eine ein Eingang und das andere ein Ausgang sein soll.
Ist es doch gar nicht. Das sind verborgene counter-Register, wobei
counter_d eventuell wegoptimiert wird. Nur das höchstwertige Bit von
counter_q wird als blink nach aussen gegeben.
d und q sind zunächst mal nur Signale. Erst durch die Zuweisung
counter_q <= counter_d;
bei einer steigenden Taktflanke wird das ganze zu einem Register aus
einzelnen D-FFs. Was dabei Eingang und Ausgang sein muss, ergibt sich
direkt aus dieser Zuweisung.
Also mache ich durch
counter_q <= counter_d;
mein counter_q automatisch zum Ausgang, weil es mit counter_d befütter
(welches dann automatisch zum Eingang wird)?
Mir kommt das so furchtbar vage vor...
Abc X. schrieb:> Also mache ich durch> counter_q <= counter_d;> mein counter_q automatisch zum Ausgang, weil es mit counter_d befütter> (welches dann automatisch zum Eingang wird)?
Genau so ist es.
> Mir kommt das so furchtbar vage vor...
Ja, ging mir anfangs auch so. Aber das ist genau die Semantik eines FFs:
Übernehme den Wert des Eingangs an den Ausgang, sobald eine steigende
Taktflanke kommt. Genau das beschreibt das zweite always-Statement in
Deinem Code. Das entscheidende ist hier die Auswertung des clk-Signals.
Ohne clk wäre es einfach eine Zuweisung von Signalen, ohne Eingang und
Ausgang zu definieren.
BTW: hinter "posedge" sollte in einem einfach wartbaren synchronen
Design (im Besonderen in jedem Anfängerdesign) immer das selbe stehen.
Wenn nicht, dann hast du mehrere Taktdomänen in deinem Design und das
geht idR. übel aus, wenn es unbewusst gemacht wurde. Du wirst noch
darüber stolpern, wichtig ist nur, dass dir dieser Satz dann schnell
wieder einfällt, denn sonst suchst du tagelang an dem Fehler... ;-)
Schwer zu sagen. Ist noch nicht lieferbar und es gibt nicht mal ein
Inhaltsverzeichnis. Ich würde erst mal mit Verilog weitermachen und die
Sprache richtig lernen, anstatt gleich zu einer exotischen HDL-Sprache
(Lucid) zu wechseln, die kaum jemand verwendet. Zu Verilog gibts
Literatur wie Sand am Meer.
Eine eigene Frage?
Dieser Thread ist über 9 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.