Forum: FPGA, VHDL & Co. Multiplexer für I2S, gleiche Durchlaufverzögerung sicherstellen


von alex (Gast)


Lesenswert?

Hallo Forum,

ich habe folgendes Problem. Ich habe eine Aufgabe, auf einem MAX V CPLD 
von Altera u.a. einen Multiplexer für I2S zu implementieren. Die entity 
dazu sieht wie folgt aus:
1
entity i2s_multiplexer
2
    port
3
    (
4
        S: in std_logic_vector(1 downto 0);    -- Select
5
6
        A_BIT_CLK: in std_logic;    -- I2S bus A
7
        A_LR_CLK: in std_logic;
8
        A_SDATA: in std_logic;
9
10
        B_BIT_CLK: in std_logic;    -- I2S bus A
11
        B_LR_CLK: in std_logic;
12
        B_SDATA: in std_logic;
13
14
        C_BIT_CLK: in std_logic;    -- I2S bus A
15
        C_LR_CLK: in std_logic;
16
        C_SDATA: in std_logic;
17
18
        Q_BIT_CLK: out std_logic;    -- Output of the multiplexer
19
        Q_LR_CLK: out std_logic;
20
        Q_SDATA: out std_logic
21
    );
22
end entity;
Die Signale A_*, B_*, C_* und Q_* sind direkt mit den Pins des CPLDs 
verbunden. Der Multiplexer ist rein kombinatorisch implementiert.
Gibt es eine Möglichkeit, die Verzögerung der Signale z.B. A_* zu den 
entsprechenden Signalen Q_* vorzugeben? Ich habe Angst, dass z.B. 
A_BIT_CLK im Multiplexer zwar richtig durchgereicht wird, aber zu stark 
verzögert wird im Vergleich zu A_LR_CLK und A_SDATA, so dass es Audio 
Störungen geben wird. Kann man vielleicht in Quartus II dafür irgendwie 
irgendwas einstellen? SDC, Timing Constraints?

Danke,
Alex

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

alex schrieb:
> Ich habe Angst, dass z.B.
> A_BIT_CLK im Multiplexer zwar richtig durchgereicht wird aber zu stark
> verzögert wird im Vergleich zu A_LR_CLK und A_SDATA, so dass es Audio
> Störungen geben wird.
In einem CPLD hast du idR. definierte maximale Durchlaufzeiten. Und die 
sind einiges schneller, als du mit I2S (mit max. 6MBit/s) brauchen 
wirst...

von alex (Gast)


Lesenswert?

Der TimeQuest Timing Analyser von Quartus II hat mir die Zeiten zwischen 
etwa 5 ns und 16 ns berechnet - im gesamten Temperaturbereich von -40° 
bis +125° C, wenn ich es richtig verstanden habe. Die maximale 
Durchlaufzeit ist so gesehen definiert, aber schwankt irgendwie um bis 
zu 11 ns :(

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

alex schrieb:
> Die maximale Durchlaufzeit ist so gesehen definiert,
> aber schwankt irgendwie um bis zu 11 ns :(
Allerdings hast du 3 Punkte auf deiner Seite:
1. ALLE Signale müssen durch einen jeweils GLEICHEN Multiplexer
   --> alle Mutliplexer werden abhängig von der Chiptemperatur um
       den selben Faktor schneller oder langsamer
2. Du bist auch mit 11ns Laufzeitunterschied weit im grünen Bereich
   --> 6MHz wären ja 166ns, da gehen die 11ns im Jitter unter

von alex (Gast)


Lesenswert?

Klingt logisch, danke schön für die beruhigenden Argumente :)
(habe leider noch keine Hardware, um es auszuprobieren...)

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
Noch kein Account? Hier anmelden.