Forum: FPGA, VHDL & Co. Syntax Error in 1 zu 4 Demultiplexer


von 655432 (Gast)


Lesenswert?

Hallo,

ich finde in dem folgenden Programm (1 zu 4 Demultiplexer) einfach nicht 
den Fehler.
1
-- Dateiname: 1zu4_demux
2
-- Beschreibung: 1 zu 4 Demultiplexer
3
4
LIBRARY ieee;
5
USE ieee.std_logic_1164.all;
6
7
ENTITY demux4 IS
8
  PORT (x: IN STD_LOGIC;
9
      s: IN STD_LOGIC_VECTOR (1 DOWNTO 0);
10
      z: OUT STD_LOGIC_VECTOR (3 DOWNTO 0));
11
END ENTITY demux4;
12
13
ARCHITECTURE verhalten OF demux4 IS
14
BEGIN
15
  z(0) <= x AND NOT s(0) AND NOT s(1);
16
  z(1) <= x NOT s(0) AND NOT s(1);
17
  z(2) <= x AND NOT s(0) AND s(1);
18
  z(3) <= x AND s(0) NOT s(1);
19
  
20
END ARCHITECTURE verhalten;

Ich erhalte foldende Fehlermeldungen:

Error (10500): VHDL syntax error at demux4.vhd(16) near text "NOT"; 
expecting ";"
Error (10500): VHDL syntax error at demux4.vhd(18) near text "NOT"; 
expecting ";"

Vielleicht könnt ihr mir weiterhelfen. Thanks.

von Thomas (Gast)


Lesenswert?

Du hast in den entsprechenden Zeilen die logische Operation vergessen 
...

Zeile 16 heißt: z(1) <= x NOT s(0) AND NOT s(1);
muss aber ..... z(1) <= x AND NOT s(0) AND NOT s(1);

Zeile 18 ist dann das gleiche ;)

von Rick Dangerus (Gast)


Lesenswert?

Schau mal ob Du schönere Beschreibungen für einen Demuxer findest.
Deine sieht mir sehr unleserlich aus. Da holt man sich doch einen Knoten 
im Kopf um zu verstehen, was da gemacht werden soll.

Hier ist eine Variante, die zumindest erstmal keine Syntaxfehler mehr 
bringt:
1
  z(0) <= x AND (NOT s(0)) AND (NOT s(1));
2
  z(1) <= x AND (NOT s(0)) AND (NOT s(1));
3
  z(2) <= x AND (NOT s(0)) AND s(1);
4
  z(3) <= x AND s(0) AND (NOT s(1));

Rick

von 655432 (Gast)


Lesenswert?

OK, ich habe die Schaltung des Demux analysiert und erhalte folgende 
Gleichung:

Das ergibt dann folgenden Code:
1
  z(0) <= x AND (NOT s(0)) AND (NOT s(1));
2
  z(1) <= x AND s(0) AND (NOT s(1));
3
  z(2) <= x AND (NOT s(0)) AND s(1);
4
  z(3) <= x AND s(0) AND s(1);

Die Compilation ist jetzt erfolgreich. Jetzt möchte ich daraus einen 1 
zu 16 Demultiplexer konzipieren. Melde mich dabb nochmal.

von 655432 (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang noch das dazugehörige Timing-Diagramm.

Müssten die rot umkreisten Impulse nicht eigentlich abgeschnitten 
werden?

von Mike (Gast)


Lesenswert?

> Müssten die rot umkreisten Impulse nicht eigentlich abgeschnitten
> werden?

Sieht eigentlich ganz normal aus. Vielleicht solltest du dir aber mal 
den Takt anschauen. 2ns Zykluszeit ergibt 500MHz.

> Die Compilation ist jetzt erfolgreich. Jetzt möchte ich daraus einen 1
> zu 16 Demultiplexer konzipieren. Melde mich dabb nochmal.

Bevor du damit anfängst, solltest du das hier mal durchlesen:

http://toolbox.xilinx.com/docsan/xilinx4/data/docs/sim/vtex13.html

Ist zwar für Multiplexer, aber dort gibt es ein paar Beispiele wie man 
das übersichtlicher machen könnte.

von 655432 (Gast)


Lesenswert?

"Sieht eigentlich ganz normal aus. Vielleicht solltest du dir aber mal
den Takt anschauen. 2ns Zykluszeit ergibt 500MHz."

Wie mache ich das? Kenne mich mit Quartus nicht so gut aus.

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.