Hi, ich benutzte xilinx und habe folgendes problem: ich lass die Syntax von meiner TB checken und dann kommt folgendes: Started : "Check Syntax". Running vhpcomp Compiling vhdl file "C:/Dokumente und Einstellungen/roGl/Desktop/3/3a.vhd" in Library isim_temp. Entity <tr> compiled. Entity <tr> (Architecture <compl3>) compiled. Compiling vhdl file "C:/Dokumente und Einstellungen/roGl/Desktop/3/TB4.vhd" in Library isim_temp. Entity <tb4_vhd> compiled. Entity <tb4_vhd> (Architecture <behavior>) compiled. Parsing "TB4_vhd_stx.prj": 0.25 Process "Check Syntax" failed und ich habe keinen blassen schimmer was ich da machen soll! Ich hab schon die aktuellen Updates runtergeladen und es ändert sich nichts! Es wär super wenn euch dafür ne Lösung oder zumindest ein Grund einfällt! Danke
Hast du schon mal so richtig einfache Projekte gemacht? Oder legst du gleich mit dem Monsterprojekt los? Das sieht recht bedenklich aus:
1 | use IEEE.STD_LOGIC_ARITH.ALL; ---- entweder die beiden hier |
2 | use IEEE.STD_LOGIC_UNSIGNED.ALL; |
3 | |
4 | use ieee.numeric_std.all; ---- oder die hier |
5 | :
|
6 | architecture compl3 of TR is |
7 | :
|
8 | begin
|
9 | :
|
10 | verrechnung: process (clk,zahl2, operator) -- sieh dir mal die Sensitivliste an... |
11 | begin
|
12 | zahl1i <= zahl1; -- da fehlt mindestens zahl1 |
13 | zahl2i <= zahl2; |
14 | |
15 | if (operator = "0000") then -- man darf, um die Lesbarkeit zu erhöhen, |
16 | z1 (22 downto 0)<=zahl1i+zahl2i; -- in VHDL am Zeilenanfang Leerzeichen einfügen |
17 | end if; |
18 | if (operator ="0001") then |
19 | z1 (22 downto 0)<=zahl1i-zahl2i; |
20 | end if; |
21 | if (operator = "0010") then |
22 | z1<=zahl1i*zahl2i; |
23 | --if (operator = "0011") then z1:=zahl1i/zahl2i; --- das hast du selbst gemerkt, dass das nicht geht....
|
24 | elsif (clk'event and clk = '1') then --- der Takt hier? Ist das schon so gewollt???? |
25 | z1<="0000000000000000000000000000000000000000000000"; |
26 | end if; |
27 | :
|
28 | loop05: for i in 9 downto 0 loop --- lies dir mal das Thema loops in VHDL durch |
29 | if (z1>= "0000000000000000000000000000011000011010100000") --100000 |
30 | then BCD05<=i; |
31 | z1<=z1 - "0000000000000000000000000000011000011010100000"; |
32 | end if; |
33 | end loop loop05; |
34 | :
|
35 | end if; |
36 | |
37 | bcd0o <= bcd0; |
38 | bcd1o <= bcd1; |
39 | bcd2o <= bcd2; |
40 | bcd3o <= bcd3; |
41 | bcd4o <= bcd4; |
42 | bcd5o <= bcd5; |
43 | bcd6o <= bcd6; |
44 | |
45 | end process verrechnung; -- aber holla, alles in 1 Prozess. Und der ist teilweise getaktet. Das ist gewagt... |
46 | end compl3; |
Ja ich hab mal die Taktung weggelassen und die SL aktuellisiert. Die Libary hab ich aus rausgelöscht obwohl der die selbstständig einfügt. -> es geht immer noch nicht!... was meinst du mit der Zeile: loop05: for i in 9 downto 0 loop --- lies dir mal das Thema loops in VHDL durch ist 1:1 aus unserem skript raus!... was soll da nicht passen? Danke!
> ist 1:1 aus unserem skript raus!...
1 | for i in 9 downto 0 loop |
Klar, das ist eine Schleife nach VHDL-Syntax. > was soll da nicht passen? Die Art und Weise, wie diese loop verwendet wird, passt nicht. Eine Schleife in VHDL erzeugt paralelle Hardware (Kombinatorik). Aber das:
1 | loop05: for i in 9 downto 0 loop |
2 | if (z1 >= "0000000000000000000000000000011000011010100000") then --100000 |
3 | BCD05 <= i; |
4 | z1 <= z1 - "0000000000000000000000000000011000011010100000"; |
5 | end if; |
6 | end loop loop05; |
Das kannst du zwar simulieren, aber das wirst du nicht so ohne weiteres in Hardware abbilden können. Das ist eine gut versteckte kombinatorische Schleife: http://www.lothar-miller.de/s9y/categories/36-Kombinatorische-Schleife Die Umwandlung einer Zahl in eine BCD-Zahl geht besser so: http://www.lothar-miller.de/s9y/categories/44-BCD-Umwandlung
@Christoph B
>Compiling vhdl file "C:/Dokumente und Einstellungen/roGl/Desktop/3/3a.vhd
Seit wann kann Xilinx denn richtig mit Leerzeichen (und Punkten) im Pfad
umgehen?
Duke
Duke Scarring schrieb: > Seit wann kann Xilinx denn richtig mit Leerzeichen (und Punkten) im Pfad > umgehen? Ich denke, seit der Pfad und der Dateiname in Anführungszeichen gesetzt werden. Aber ein kleines Fragezeichen verbleibt, weil z.B. aus
1 | Synthesizing Unit <test>. |
2 | Related source file is "F:/Projekte/FPGA/Pfad mit Leerzeichen/test/test.vhd". |
Zwischendurch mal das wird:
1 | F:/Projekte/FPGA/Pfad has been created. |
Ich würde den Pfad so wählen, dass diese "Sonderzeichen" nicht vorkommen...
Lösung: Das "Syntax failed" kommt ist einfach ein bug! Die TB funktioniert genauso!....
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.