Guten Tag,
ich hab ein kleines Problemchen hinsichtlich steigender und fallender
Taktflanken.
man kann ja für prozesse den Takt clk in die sensitivity-Liste legen und
am anfang des Prozesses clk'event and clk='1' bzw gleich
rising_endge(clk) schreiben. Analog verhält sich das für fallende
Flanken -> falling_edge.
Aber wie kann man denn Synthetisierbaren VHDL-Code schreiben, bei dem im
Prozess sowohl steigende und fallende Flanken erzeugt.
ich kann natürlich nicht schreiben:
1 | process(clk)
|
2 | begin
|
3 | rising_edge(clk) or falling_edge(clk)
|
4 | ...
|
Was unweigerlich ur Fehlermeldung führt:
"Cant implement register for two clock edges combined with binary
operator"
...
nun ich hab auch probiert mit was zu basteln, aber folgender code wird
auch auf die gleiche fehermeldung reduziert:
1 | -- Prozess für Impulswandlung von sw0 zu start
|
2 | flankendetektor:process(clk)
|
3 | begin
|
4 | if(clk'event and clk='0') then
|
5 | fflanke <= '1';
|
6 | sflanke <= '0';
|
7 | end if;
|
8 |
|
9 | if(clk'event and clk='1') then
|
10 | sflanke <= '1';
|
11 | fflanke <= '0';
|
12 | end if;
|
13 | end process flankendetektor;
|
14 |
|
15 | sw0_impdet:process(fflanke,sflanke)
|
16 | begin
|
17 | if((fflanke'event and fflanke='1') or (sflanke'event and sflanke='1')) then
|
Bitte sagt mir nicht, das quartus und andere Synthesetools, es nicht
hinbekommen, FF´s zu erzeugen, welche mal auf beide taktflanken
reagieren.
MFG