hallo...ich bastel gerade ein bisschen mit dem ise pack rum. jetzt wollte ich mal mit den dcm etwas experimentieren und beim erstellen eines geeigneten moduls ergab sich gleich (wie sollte es auch anders sein) ein problem. also als eingänge des moduls gibt es clk und clk_180 aus dem dcm (invertiert). das modul soll ganz einfach eine clock halbierung machen und an den ausgängen a1 und a2 diese über eine logische verknüpfung mit c1 ausgeben. hier der interessante teil des codes: ... main: process(clock, clock_180, reset) begin if (reset = '0') then sig1 <= '0'; sig2 <= '0'; elsif rising_edge(clock) then sig1 <= not sig1; elsif rising_edge(clock_180) then sig2 <= not sig2; end if; end process; a1 <= sig1 and c1; a2 <= sig2 and c1; ... es wird als error ausgegeben, das sig2 (also das signal auf dem invertierten clock) nicht synthetisiert werden kann. könnte mir das wer erklären und eine lösungsvorschlag geben? Besten Dank Tobias
Na das ist klar, daß das nicht geht. Theoretisch treten die steigenden Flanken von clock und clock_180 nie gleichzeitig auf. sig2 <= not sig2 würde also sowieso nie ausgeführt. Praktisch geht das aber auch nicht weil du ein FF mit zwei Takteingängen bräuchtest. Probier es mal so: main: process(clock, clock_180, reset) begin if (reset = '0') then sig1 <= '0'; elsif rising_edge(clock) then sig1 <= not sig1; end if; if (reset = '0') then sig2 <= '0'; elsif rising_edge(clock_180) then sig2 <= not sig2; end if; end process; a1 <= sig1 and c1; a2 <= sig2 and c1; ... Viele Grüße TobiFlex
Jetzt hab ich etwas Murks geschrieben: "Theoretisch treten die steigenden Flanken von clock und clock_180 nie gleichzeitig auf. sig2 <= not sig2 würde also sowieso nie ausgeführt." Das ist ja eine IF .. ELSIF .. ... Struktur. Also vom logischen mag das richtig aussehen wenn clock nicht steigt kann clock_180 steigen. Aber der Compiler versucht clock und clock_180 auf sig2 anzuwenden. Und das geht eben nicht. Viele Grüße TobiFlex
oki..danke für die richtigstellung.. habe mich gerade schon ein bisschen gewundert warum der vom theoretischen part nie ausgeführt wird. aber es klappt inzwischen und ich weiss ja jetzt auch warum. besten dank gruss tobi
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.