mikrocontroller.net

Forum: FPGA, VHDL & Co. Multiplexer der mit dem Mastertakt


Autor: leini (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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ß

Autor: Marius Wensing (mw1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: leini (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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ß

Autor: Fump (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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. ;-)

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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:
Process(CLK_100) 
BEGIN
  IF(CLK_100='1')THEN
    MUX <= chanal_1;
  ELSE
    MUX <= chanal_1;
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.

Autor: leini (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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ß

Autor: Niklas Gürtler (erlkoenig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: leini (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: leini (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also am besten mit dem DDR-FF ?

Gruß

Autor: leini (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muß mich doch nochmal blamieren :(

Was ist ein DDR-FF ?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.