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.