clk'event bei beiden Taktflanken

Gast #252830
Lesenswert?

Hallo,

ich würde gerne einen Zähler bei beiden Flanken meines Taktes
inkrementieren. Und dachte, dass könnte so gehen:

process (clk)
begin
    if clk'event then
        ...
    end if;
end process;

wird aber nicht vom synthese-Werkzeug akzeptiert ("unsupported Clock
statement").

Bei:
if clk'event and clk='1' then
...
elsif clk'event and clk='0' then
...
end if;

bekomme ich dann "bad synchronous description"

Gibt es da eine einfache Lösung dafür?

Mfg
Thomas
Gast #252835
Lesenswert?

Hallo Thomas,

Du kannst den Zähler nicht mit beiden Flanken inkrementieren,
wenn es das FPGA/CPLD nicht unterstützt.
M.W. können das nur CoolRunner II, da nur diese Flip-Flops
haben, die auf beide Flanken schalten können.
Mir ist sonst kein FPGA / CPLD von ALTERA/XILINX bekannt, dass
sowas drauf hat.
Gast #252836
Lesenswert?

Es geht tatsächlich, wenn ich einen Prozess baue, der in der
Sensitivity-List nur das CLK-Signal drinhat.

Allerdings meckert das Synthesewerkzeug und warnt vor kombinatorischen
Schleifen, was ja auch klar ist, da bei dieser Methode keine FlipFlops
generiert werden und das Inkrementieren des Zählers rein kombinatorisch
funktioniert.

Der ModelSim simuliert es zwar so wie ich es gerne möchte, aber so ganz
gefällt mir es aber nicht. Ich werde mir einen anderen Weg suchen, weil
das eher gepfuscht ist und möglicherweise nicht sicher läuft.

Ich wusste aber echt nicht, dass es garnicht möglich ist mit beiden
Flanken zu arbeiten, bzw dass der FPGA das unterstützen muss. Das werde
ich mir mal für zukünftige Probleme merken :-)

Mfg
Thomas Pototschnig
Gast #252837
Lesenswert?

Also als sauberes Workaround für den Spartan 3 z.B. haben wir in der Uni
eine DCM davorgeschaltet und damit den Takt verdoppelt. Dann kannst du
wieder auf rising edge triggern und hast den selben Effekt, wie mit dem
normalen Takt auf beiden Flanken.

Cpt
Gast #252838
Lesenswert?

ich will ein sdram lesen und bei der steigenden flanke die adresse
ausgeben und bei der fallenden die daten lesen. Ich benütze ein spartan
3 und das synthesetool meckert nicht. kann die funktion aber schlecht in
der hardware debuggen. geht das jetzt oder nicht?
Gast #252840
Lesenswert?

Das Skript findest du unter
http://wetnt7.elektro.uni-wuppertal.de/welcome/Mitarbeiter/Ivaniuk/ivaniuk.html

Die Vorlesung "modern aproaches in digital design" (madd) war die
Grundlagenvorlesung und "design and implementation of digital
systems" (DIDS) die Fortsetzung. Wenn mich nicht alles täuscht ist der
betreffende Abschnitt im Kapitel über Frequenzteiler im Zusammenhang mit
dem Johnson Counter ... In einer von den DIDS Übungen müsste auch ein
template für eine einfache DCM Einbindung sein.

Ich weiß aber nicht wie lange das noch online ist, weil der Dozent ein
Gastprof aus Rußland ist und mittlerweile wieder weg...
Wenn es weg ist melde dich einfach.

Grüße

Cpt
Gast #252844
Lesenswert?

> ich will ein sdram lesen und bei der steigenden flanke die adresse
> ausgeben und bei der fallenden die daten lesen. Ich benütze ein
> spartan 3 und das synthesetool meckert nicht. kann die
> funktion aber schlecht in
> der hardware debuggen. geht das jetzt oder nicht?

probier mal einfach mit Multiplexern. Das ist ja DDR und hab zig mal
gemacht, und es funktioniert

Data_In <= DQ when (clk='1') else (others=>'Z');
ADDR    <= Addresse when (clk='0') else (others =>'Z');

also clk als Steuereingang des Multiplexers.

Verstehe jetzt Dein Problem nicht ;-)

Kest
Gast #252845
Lesenswert?

@FPGA-User

Also mir hat das ganze was gebracht. Ich fand es eigentlich recht
interessant und nützlich. Das praktische war dann auch eher in den
Übungen bzw. dem Abschlußprojekt. Na ja jedem das seine gell :-)

Grüße

Cpt
Gast #252846
Lesenswert?

@Cpt

ja OK, was ich beim Überfliegen gut fand, war dass das Schaltbild
immer gleich neben dem VHDL-Code stand.
Die Kapitel "komplexe Kombinatorik" und "Testbench" fand ich
aus Sicht des Praktikers allerdings völlig daneben.
Ich kenne das noch gut aus UNI-Zeiten (ich hatte allerdings leider
nie eine VHDL-Vorlesung) aber generell gilt:
auf allen möglichen Konstrukten herumreiten, also gleich mal
configurations in TB behandeln, dann mit "transport" und "reject"
operieren, tausend Varianten von Kombinatorik mit Prozessen
beschreiben (warum einfach, wenns auch kompliziert geht) usw.
Statemachines können so schön einfach sein, nein es muss
ein "Mikroprogramm" erstellt werden ...

Die UNI muss halt ihrem Anspruch gerecht werden ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren