PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : VHDL - Fehlermeldung ohne Fehler?



robo_tom_24
21.02.2013, 15:55
Hallo Leute,
Ich hab grad ein ziemlich großes Problem. Wir müssen als Arbeit in der Schule einen Counter IC nachbauen, jetzt haben wir zum Testen, bzw. für Elemente ein JK-FF bauen sollen. Nun, die Programmierung an sich ist kein Problem, aber der Fehler der auftritt:
24605
(Line 14 ist die mit dem Aufruf von FALLING_EDGE(clk) )

Auch der Lehrer meint, dass er keinen Fehler finden kann. Ich hab schon versucht eine neue *.vhd Datei zu erstellen, ein neues Projekt, speichern auf einem anderen Datenträger - trotzdem keine Besserung und immer der gleiche Fehler.

Das Programm:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY jk_ff IS
port( clk, j, k, rst : in bit;
q : buffer bit);
END jk_ff;

ARCHITECTURE flipflop OF jk_ff IS
BEGIN
PROCESS(clk,rst)
BEGIN
IF rst = '0' THEN q <= '0';
ELSIF FALLING_EDGE(clk) THEN
IF j='1' AND k='0' THEN q <= '1';
ELSIF j='0' AND k='1' THEN q <= '0';
ELSIF j='1' AND k='1' THEN q <= NOT q;
ELSIF j='0' AND k='0' THEN q <= q;
END IF;
END IF;
END PROCESS;
END flipflop;

Bei anderen Mitschülern funktioniert die Funktion FALLING_EDGE(xy) bzw. RISING_EDGE(xy) ohne Probleme.

Ich verwende Altera MAX+plus II in der Version 10.2

grüße
thomas

HeXPloreR
21.02.2013, 16:21
Das Programm:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY jk_ff IS
port( clk, j, k, rst : in bit;
q : buffer bit);
END jk_ff;

ARCHITECTURE flipflop OF jk_ff IS
BEGIN
PROCESS(clk,rst)
BEGIN
IF rst = '0' THEN q <= '0';
ELSIF FALLING_EDGE(clk) THEN
IF j='1' AND k='0' THEN q <= '1';
ELSIF j='0' AND k='1' THEN q <= '0';
ELSIF j='1' AND k='1' THEN q <= NOT q;
ELSIF j='0' AND k='0' THEN q <= q;
END IF;
END IF;
END PROCESS;
END flipflop;

Hallo, ich kenn das jetzt nicht wirklich, aber das rote sieht schon mal verdächtig aus, finde ich...

Mit es funktioniert bei den Anderen meinst Du das dieses Program bei den Anderen läuft?

Dann kann es sonst an der IEEE Einbindung liegen. Vielleicht holt es sich nicht die Richtige...

Viele Grüße

Kampi
21.02.2013, 18:56
Ich teste das gleich mal in meinem FPGA. Die Meldung ist mir nicht aussagekräftig genug :)

robo_tom_24
21.02.2013, 20:46
Hallo
Neee, die Initialisierung ist richtig...
Die Funktion FALLING_EDGE funktioniert, das Programm haben wir nicht getestet ;)

Danke, das wär echt super :)

grüße

Kampi
21.02.2013, 22:28
Sodele,

ich habe den Code mal durch mein WebPack gejagd und bei mir kommen keine Fehler.
Es kommt nur noch eine Warnung das der Clock nicht sauber gelegt ist (dies wird normalerweise vom Synthesizer gemacht. Du kannst ihn aber auch anweisen die Regeln bzgl. Taktverlegung zu ignorieren. Dann warnt er dich nur noch).
Synthese, Implementierung und Bitstream sind alle gemacht worden (aber nicht von mir getestet).
Hab zwei kleine Änderungen vorgenommen.
Zum einen

IF RST = '0' THEN
Q <= '0';

in

IF RST = '1' THEN
Q <= '0';

und zum anderen die "falling" Edge auf "rising" Edge geändert.
Warum siehst du hier:

http://stackoverflow.com/questions/7589443/xilinx-error-place-1018-message

Im Anhang hast du den ganzen Ordner mit .bin-File etc.
Viel Spaß damit :)

robo_tom_24
22.02.2013, 00:04
Danke Kampi :D

Ich "darf" die Flanken und den pegel nicht ändern, ist so in der Aufgabe vorgegeben ;)

Zum Fehler: Die Clock Leitung muss vom Typ "STD_LOGIC" sein, und nicht vom Typ "bit"...

danke nochmal
grüße

Kampi
22.02.2013, 06:52
Ok dann musst du es wieder ändern :)
Kannst ja bescheid geben ob die beide Designs funktioniert haben :)

Gut "Std_Logic" klingt sinnvoll....dieser Datentyp stellt auch mehr Funktionen für einen Pin bereit.
Bin selber noch nicht so tief in dem Thema drin, von daher dachte ich "Bit" würde auch gehen. Aber beim genaueren Überlegen kann das nicht sein,da "Bit" im Vergleich zu "Std_Logic" z.B. keine High Impendance, Bereich der Ausgangsspannung, Treiberstärke etc. bereit stellt.
Wieder was gelernt was nicht im Buch steht :)
VHDL ist halt doch eeeeeeeeeetwas komplizierter als eine Programmiersprache wie ich finde ;)

tucow
26.02.2013, 02:28
Hab's leider erst jetzt gesehen, aber ein kleiner Tipp vom Profi: Immer STD_LOGIC verwenden, erst auf andere Typen wechseln wenn es unbedingt nötig ist. Schließt ne Menge Fehler aus.

robo_tom_24
27.02.2013, 09:58
Jo, danke für den Tipp. Das gewöhn ich mir denk ich jetzt an. Aber wenns dir der Lehrer so erzählt... :cool: