Moin,
ich bin gerade bei meinem ersten VHDL Projekt und komme mit der
'constant' deklaration nicht weiter.
constant verzögerungszeit : std_logic_vector (16 downto 0) := '96000';
Die Fehlermeldung ist: Syntax error near "'"
Wenn ich den Wert in Anführungszeichen setze (:="96000") oder ihn ohne
was verwende (:= 96000), hagelt es auch in den anderen Teilen einen
Haufen 'Syntax error'.
Die 96000 sollten eigentlich in die zugewiesenen 17bit reinpassen.
Mache ich da vielleicht einen grundlegenderen Fehler?
:-) Josh
jojansen schrieb:> Die 96000 sollten eigentlich in die zugewiesenen 17bit reinpassen.> Mache ich da vielleicht einen grundlegenderen Fehler?
Ja. Einen sehr grundlegenden Fehler sogar!
In VHDL können Signale nur dann zugewiesen werden, wenn sie den gleichen
Typ haben. In Verilog und C und den meisten anderen Programmiersprachen
wird das eher relaxt gehandhabt und man verlässt sich auf implizites
Hintergrundwissen (wie wird eine Zahl in ein Bitmuster umgewandelt)...
Hierzu was:
1
reset:process(rst,rsti,i32khz,zähler)--internes reset mit 3sek delay weitergeben
Die Sensitivliste ist überdefiniert, denn dieser Prozess ist
ausschließlich auf den i32khz sensitiv!
> i32khz
Wieviele Takte hast du denn in deinem Design?
jojansen schrieb:> Damit bekomme ich wieder einen Haufen 'Syntax error'. Meckern tut er> jetzt bei 'end process reset' und allen anderen 'process - end pocess'> Blöcken.
Dann poste doch einfach mal deinen ganzenVHDL Code (als Anhang mit
*.vhdl Dateiendung). Und dann noch die Fehlermeldungen. Und dann sag
noch was zur Toolchain und zum FPGA. So ist das nur ein Ratespiel.
Lothar Miller schrieb:> Und dann noch die Fehlermeldungen.
...zumindest die erste, oder die ersten drei. Der Hinweis "Syntax error"
alleine sagt wenig.
jojansen schrieb:> entityVHDL-Beschreibungen beginnen immer schon ein paar Zeilen VOR dem
Keyword entity.
> Die Fehlermeldungen
WELCHE Fehlermeldungen denn?
> if prrcounter = '7' then
Ähm, ja, wie war das nochmal mit den Datentypen in VHDL?
Blöderweise kann man mit dem obigen Codeschnipsel so gar nichts
anfangen. Ich empfehle noch immmer, was ich schon empfohlen hatte:
>>> Dann poste doch einfach mal deinen ganzen VHDL Code>>> (als Anhang mit *.vhdl Dateiendung).
Es reicht natürlich die eine Datei, die die Fehler mit sich bringt.
erst einmal Supervielen Dank für eure Zeit/Mühe/Hilfe :-)
Ich habe mal den Code drangehängt und ds sind die Fehlermeldungen:
INFO:HDLCompiler:1061 - Parsing VHDL file
"N:/xilinx/multiboard_1/IOrouting.vhd" into library work
ERROR:HDLCompiler:806 - "N:/xilinx/multiboard_1/IOrouting.vhd" Line 145:
Syntax error near "process".
ERROR:HDLCompiler:806 - "N:/xilinx/multiboard_1/IOrouting.vhd" Line 148:
Syntax error near "process".
ERROR:HDLCompiler:806 - "N:/xilinx/multiboard_1/IOrouting.vhd" Line 150:
Syntax error near "begin".
ERROR:HDLCompiler:806 - "N:/xilinx/multiboard_1/IOrouting.vhd" Line 190:
Syntax error near "process".
ERROR:HDLCompiler:806 - "N:/xilinx/multiboard_1/IOrouting.vhd" Line 195:
Syntax error near "begin".
ERROR:HDLCompiler:806 - "N:/xilinx/multiboard_1/IOrouting.vhd" Line 204:
Syntax error near "process".
ERROR:HDLCompiler:806 - "N:/xilinx/multiboard_1/IOrouting.vhd" Line 207:
Syntax error near "process".
ERROR:HDLCompiler:806 - "N:/xilinx/multiboard_1/IOrouting.vhd" Line 208:
Syntax error near "begin".
ERROR:HDLCompiler:806 - "N:/xilinx/multiboard_1/IOrouting.vhd" Line 217:
Syntax error near "process".
ERROR:HDLCompiler:806 - "N:/xilinx/multiboard_1/IOrouting.vhd" Line 221:
Syntax error near "process".
ERROR:HDLCompiler:806 - "N:/xilinx/multiboard_1/IOrouting.vhd" Line 223:
Syntax error near "begin".
ERROR:HDLCompiler:806 - "N:/xilinx/multiboard_1/IOrouting.vhd" Line 230:
Syntax error near "process".
ERROR:HDLCompiler:806 - "N:/xilinx/multiboard_1/IOrouting.vhd" Line 231:
Syntax error near "Behavioral".
ERROR:ProjectMgmt - 13 error(s) found while parsing design hierarchy.
:-)
ifi32khz'eventandi32khz='1'then--synchron mit clk wird reset betrachtet
6
:
7
:
8
ifrst='1'andzaehlflag='1'then--wenn ext. reset ok und timer abgelaufen, dann internes reset auf ok
9
rsti<='1';
10
endif;
11
endif;--- ********************* das hier fehlt!
12
endprocessreset;
Dann kommt der hier:
> 16khz: process (i32khz)> Syntax error near "16".
Naja, da darf keine Zahl am Anfang des Bezeichners kommen.
Ein heisser Tipp: du kannst die Labels am Prozess auch weglassen... ;-)
Wie auch immer: hättest du den Code gleich angehängt, hätte es nicht so
lang gedauert...
Also, das fehlende End IF und die führende Ziffer im Process Namen waren
es.
Anfängerfehler eben.
Nun bekomme ich keine Fehler mehr (vorerst ;-) ).
ICH DANKE EUCH!!!!!!!
:-) Josh
jojansen schrieb:> Nun bekomme ich keine Fehler mehr (vorerst ;-) ).
Fein.
Dann nimmst Du als nächstes den Simulator und eine Testbench und schaust
nach, ob Dein Design funktionell funktioniert.
Erst wenn das sichergestellt ist, kannst Du eine weitere Synthese machen
und das Design in Hardware ausprobieren.
Duke