Hallo Leute , ich brauche einen Multiplexer der mit dem Mastertakt (100MHz )arbeitet. so in etwa: MUX <= chanal_1 WHEN CLK_100 = '0' ELSE chanal_1; Beim kompilieren reduziert er mir dann hinten dran alles weg. Weil es ein Takt ist? Vielen Dank schon mal für Eure Antworten :) Gruß
Wenn du das wirklich so geschrieben hast, dann ist klar, dass er das wegreduziert. MUX ist unabhängig von CLK_100 immer chanal_1. MfG Marius
Haool Marius, danke für Deine Antwort :) Wenn ich es in einem Prozess mache passt es dann? Process(CLK_100) BEGIN IF(CLK_100='1')THEN ... ELSE ... END PROZESS; Gruß
Sieht nach einem typischen Copy'nPaste Fehler aus. Du willst wohl zwischen zwei Kanälen umschalten aber in: MUX <= chanal_1 WHEN CLK_100 = '0' ELSE chanal_1; wird, unabhängig von CLK_100 immer der selbe Kanal ausgewählt. Da hilft auch ein Prozess nicht weiter. ;-)
> MUX <= chanal_1 WHEN CLK_100 = '0' ELSE chanal_1; > Beim kompilieren reduziert er mir dann hinten dran alles weg. > Weil es ein Takt ist? Nein, weil es egal ist. So wie es da steht, wird entweder oder chanal_1 an Mux zugewiesen. Als Prozess geschrieben sieht das so aus:
1 | Process(CLK_100) |
2 | BEGIN
|
3 | IF(CLK_100='1')THEN |
4 | MUX <= chanal_1; |
5 | ELSE
|
6 | MUX <= chanal_1; |
7 | END PROZESS; |
Das hier wäre ganz was anderes:
MUX <= chanal_1 WHEN CLK_100 = '0' ELSE chanal_2;
Es ist sehr schlechte Designpraxis, einen Takt als Selektor eines
Multiplexers zu verwenden. Das kann hübsch ins Auge gehen.
Ich würde hier eher ein DDR-FF am Ausgang benützen.
BTW:
> chanal_1
Was ist denn das bitte für ein deunglisches Konstrukt?
Entweder hast du einen Kanal oder einen channel.
Hallo Fump,
>Sieht nach einem typischen Copy'nPaste Fehler aus.
Du hast recht "Copy'nPaste Fehler ".
MUX <= chanal_0 WHEN CLK_100 = '0' ELSE chanal_1;
Wäre es sonst Ok?
Oder bekomme ich Probleme wenn ich die Pegel von einem Takt abfrage?
Gruß
leini schrieb:
> Oder bekomme ich Probleme wenn ich die Pegel von einem Takt abfrage?
Doch, prinzipiell geht das schon. Du solltest dir allerdings bewusst
sein, dass MUX sich erst kurz nach der Änderung des Taktsignals
ändert. Wenn du das MUX-Signal dann z.B. in ein taktflankengesteuertes
FlipFlop übernehmen willst, übernimmt das FlipFlop immer den Pegel, den
MUX in der Zeit kurz vor der jeweiligen Flanke hatte, und nicht den
Wert, auf den es mit der Flanke umschaltet. Das würde allerdings auch
nicht so recht Sinn machen, denn ein FlipFlop kann eh nur entweder mit
der fallenden oder der steigenden Flanke schalten, nicht beides,
sodass es im Endeffekt immer den gleichen Channel speichern würde.
Hallo Lothar,
Danke für Deine Tips.
>Was ist denn das bitte für ein deunglisches Konstrukt?
:0 Ich blamiere mich heute nicht schlecht:).
Zeit zum aufhören.
DANK
> DDR Zur Geschichte: vor etwas mehr als 20 Jahren... > DDR Technisch: Double Data Rate Flipflop Fang erst mal hier im Forum an mit der Suche und geh dann in die weite Welt.
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.