Lateiner mit FPGA-Latein am Ende

Gast #829999
Lesenswert?
• ▲
▼
Was macht dieser Code (falsch) ?
1
doublesynch : PROCESS(aRst, clk) IS
2
    BEGIN
3
        IF aRst = '1' THEN
4
            input <= (OTHERS => '0');
5
        ELSIF rising_edge(clk_i) THEN
6
            input <= signal_1;
7
        ELSIF falling_edge(clk_i) THEN
8
            input <= signal_2;
9
        END IF;
10
      END PROCESS ff;

Ich möchte, daß mit steigender und fallender Flanke jeweils eines der 
beiden Signale weitergegeben wird. Signal1 ist vor einem Flip Flop und 
Signal2 nach dem Flipflop, das umgekehrt nach diesem Schema angesteuert 
wird. So möchte ich sicherstellen, daß immer nur ein stabiles Sigal 
weitergeschaltet wird. (der clk "weis") wann das Signal stabil ist.
#830017
Lesenswert?
• ▲
▼
Auf zwei verschiedene Taktflanken reagieren kannst du nur mit zwei 
getrennten Flipflops. (Ausnahme: Manche I/O-Ports haben entsprechende 
DDR-FF, die das koennen).
Intern arbeitet man immer nur mit einer einzigen Flanke - und zwar 
moeglichst konsistent ueber das gesamte Design.
Gast #830087
Lesenswert?
• ▲
▼
Was wäre denn der Nacheil, wenn man 2 Flanken benutzt?
Angenommen, ich möchte ein Signal feiner abtasten, dann müsste man ja 
den doppelten Takt benutzen, was gfs garnicht systemweit geht.
?
Gast #830162
Lesenswert?
• ▲
▼
Du kannst den Takt durch einen DCM schicken. Dort gibt es noch 
zusätzliche Ausgänge mit 90°, 180° und 270° Phasenverschiebung. Damit 
kannst du dann deine FF takten. Interessant wird es nur wenn du die 
Daten dann zusammenfügen willst.

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