Kann mein VHDL in Qsys nicht synthetisieren

Ich versuche, ein Modul mit VHDL für meinen DE2 zu erstellen, bei dem das Einfache ("Hello World") fast unmöglich ist. Der Hintergrund ist, dass ich versuche, Hello World auszuführen:

https://stackoverflow.com/questions/17966235/nios-2-hello-world/18267202?noredirect=1#18267202

http://www.cs.columbia.edu/~sedwards/classes/2013/4840/lab3.pdf

Und jetzt folge ich der Anleitung, die mit meiner Version von Quartus II v13 nicht funktioniert:Geben Sie hier die Bildbeschreibung ein

Was bedeutet die Fehlermeldung? Mache ich etwas anderes falsch, was Sie anhand der Screenshots erkennen können?

Info: *******************************************************************
Info: Running Quartus II 32-bit Generate HDL Interface
Info:     Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition
Info:     Copyright (C) 1991-2013 Altera Corporation. All rights reserved.
Info:     Your use of Altera Corporation's design tools, logic functions 
Info:     and other software and tools, and its AMPP partner logic 
Info:     functions, and any output files from any of the foregoing 
Info:     (including device programming or simulation files), and any 
Info:     associated documentation or information are expressly subject 
Info:     to the terms and conditions of the Altera Program License 
Info:     Subscription Agreement, Altera MegaCore Function License 
Info:     Agreement, or other applicable license agreement, including, 
Info:     without limitation, that your use is for the sole purpose of 
Info:     programming logic devices manufactured by Altera and sold by 
Info:     Altera or its authorized distributors.  Please refer to the 
Info:     applicable agreement for further details.
Info:     Processing started: Fri Aug 16 09:52:04 2013
Info: Command: quartus_map not_a_project --generate_hdl_interface=C:/Users/student/Desktop/KTH/colombia/de2_sram_controller.vhd --source=C:/Users/student/Desktop/KTH/colombia/de2_sram_controller.vhd --set=HDL_INTERFACE_OUTPUT_PATH=C:/Users/student/AppData/Local/Temp/alt5933_4160154550827554259.dir/0002_sopcqmap/ --ini=disable_check_quartus_compatibility_qsys_only=on
Error: VHDL syntax error at de2_sram_controller.vhd(20) near textFile: /users/student/desktop/kth/colombia/de2_sram_controller.vhd Line: 20
Error: VHDL syntax error at de2_sram_controller.vhd(20) near text "€";  expecting ";" File: /users/student/desktop/kth/colombia/de2_sram_controller.vhd Line: 20
Error: VHDL syntax error at de2_sram_controller.vhd(20) near textFile: /users/student/desktop/kth/colombia/de2_sram_controller.vhd Line: 20
Error: VHDL syntax error at de2_sram_controller.vhd(21) near textFile: /users/student/desktop/kth/colombia/de2_sram_controller.vhd Line: 21
Error: VHDL syntax error at de2_sram_controller.vhd(21) near textFile: /users/student/desktop/kth/colombia/de2_sram_controller.vhd Line: 21
Warning: Quartus II 32-bit Generate HDL Interface was unsuccessful. 5 errors, 0 warnings
Error:     Peak virtual memory: 364 megabytes
Error:     Processing ended: Fri Aug 16 09:52:06 2013
Error:     Elapsed time: 00:00:02
Error:     Total CPU time (on all processors): 00:00:01
Error: No modules found when analyzing null.

Aktualisieren

Mein VHDL-Kompilierungsfehler ist jetzt dieser

Info: *******************************************************************
Info: Running Quartus II 64-Bit Analysis & Synthesis
    Info: Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition
    Info: Processing started: Fri Aug 16 17:48:44 2013
Info: Command: quartus_map --read_settings_files=on --write_settings_files=off lab3 -c lab3
Warning (20028): Parallel compilation is not licensed and has been disabled
Error (10500): VHDL syntax error at lab3.vhd(20) near text 
Error (10500): VHDL syntax error at lab3.vhd(20) near text "";  expecting ";"
Error (10500): VHDL syntax error at lab3.vhd(20) near text 
Error (10500): VHDL syntax error at lab3.vhd(21) near text 
Error (10500): VHDL syntax error at lab3.vhd(21) near text 
Info (12021): Found 0 design units, including 0 entities, in source file lab3.vhd
Error (10430): VHDL Primary Unit Declaration error at de2_sram_controller.vhd(3): primary unit "de2_sram_controller" already exists in library "work"
Error (10784): HDL error at lab3.vhd(3): see declaration for object "de2_sram_controller"
Error (10500): VHDL syntax error at de2_sram_controller.vhd(22) near text 
Error (10500): VHDL syntax error at de2_sram_controller.vhd(22) near text "";  expecting ";"
Error (10500): VHDL syntax error at de2_sram_controller.vhd(22) near text 
Error (10500): VHDL syntax error at de2_sram_controller.vhd(23) near text 
Error (10500): VHDL syntax error at de2_sram_controller.vhd(23) near text 
Info (12021): Found 0 design units, including 0 entities, in source file de2_sram_controller.vhd
Error: Quartus II 64-Bit Analysis & Synthesis was unsuccessful. 12 errors, 1 warning
    Error: Peak virtual memory: 476 megabytes
    Error: Processing ended: Fri Aug 16 17:48:45 2013
    Error: Elapsed time: 00:00:01
    Error: Total CPU time (on all processors): 00:00:01
Error (293001): Quartus II Full Compilation was unsuccessful. 14 errors, 1 warning

Der Code ist

library ieee;
use ieee.std_logic_1164.all;
entity de2_sram_controller is
port (
signal chipselect : in std_logic;
signal write, read : in std_logic;
signal address : in std_logic_vector(17 downto 0);
signal readdata : out std_logic_vector(15 downto 0);
signal writedata : in std_logic_vector(15 downto 0);
signal byteenable : in std_logic_vector(1 downto 0);
signal SRAM_DQ : inout std_logic_vector(15 downto 0);
signal SRAM_ADDR : out std_logic_vector(17 downto 0);
signal SRAM_UB_N, SRAM_LB_N : out std_logic;
signal SRAM_WE_N, SRAM_CE_N : out std_logic;
signal SRAM_OE_N : out std_logic
);
end de2_sram_controller;

architecture dp of de2_sram_controller is
begin

    SRAM_DQ <= writedata when write = ’1else (others => ’Z’);
    readdata <= SRAM_DQ;
    SRAM_ADDR <= address;
    SRAM_UB_N <= not byteenable(1);
    SRAM_LB_N <= not byteenable(0);
    SRAM_WE_N <= not write;
    SRAM_CE_N <= not chipselect;
    SRAM_OE_N <= not read;

end dp;
In Anbetracht der seltsamen Zeichen in den Fehlern frage ich mich, ob beim Einfügen aus dem PDF "unsichtbarer Müll" aufgefallen ist. Vielleicht werfen Sie einen Blick auf de2_sram_controller.vhd mit ein paar verschiedenen Texteditoren oder einem Hex-Editor und sehen Sie, ob Sie etwas Seltsames entdecken können.
@PeterJ Ja, ich konnte den Fehler beheben, aber ich bekam sofort einen neuen Fehler. kannst du mir helfen es zu reparieren? Ich habe den Code und den Kompilierungsfehler als Update in die Frage eingefügt.
Ich habe noch nie viel mit VHDL gemacht (basiere nur auf ähnlichen Problemen mit anderen Compilern), aber die Probleme scheinen um den zusätzlichen Umbruch nach dem zu erscheinen - beginvielleicht mag es die Zeilenumbrüche nicht - es könnte eine Plattform CR/LF sein Handhabungstyp Sache. Versuchen Sie vielleicht, diese leere Zeile zu löschen und zu sehen, wie es läuft, oder löschen Sie vielleicht sogar ein paar Zeilen auf beiden Seiten und geben Sie sie einfach wieder ein.
@PeterJ Es scheint, dass die Zeile, über die sich der Compiler beschwert, ist, SRAM_DQ <= writedata when write = ’1’aber ich kann nicht sehen, was daran falsch ist, ich habe sie aus dem Anleitungsdokument kopiert. Ich schätze, ich muss mehr nachforschen.
Ich habe das nicht entdeckt, aber ich hatte auch Probleme mit ungewöhnlichen Anführungszeichen. Ich bin mir nicht sicher, wie die obigen Zeichen richtig heißen, aber versuchen Sie es mit normalen einfachen Anführungszeichen, die von Ihrer Tastatur eingegeben werden ('). Das obige ist wahrscheinlich ein Unicode-Zeichen.
Ich habe alles versucht, aber es funktioniert immer noch nicht. Ich weiß nicht, was ich tun soll. Ich habe versucht, auf alle Arten zu schreiben, 'und das ist möglicherweise nicht einmal das Problem, da sich der Compiler anscheinend über die Zeile beschwert, in der er stehtbegin

Antworten (1)

Ihr Code ist in Ordnung, ich habe es geschafft, ihn mit ghdl zu kompilieren. Aber erst nachdem ich die Backticks ersetzt habe. So sieht es in Hex aus:

$ hd -s 0x2ee -n 7 test.vhd.orig 
000002ee  e2 80 99 5a e2 80 99                              |...Z...|

Der Compiler akzeptiert das nicht als '. Sie sagten, Sie hätten sie in den Kommentaren ersetzt, aber offensichtlich ist etwas schief gelaufen. Löschen Sie einfach die gesamte Zeile und geben Sie sie von Hand ein. Man lernt sowieso viel mehr, wenn man nicht einfach kopiert und einfügt..

Ich habe alle Möglichkeiten ausprobiert, um ' zu schreiben, und das ist möglicherweise nicht einmal das Problem, da sich der Compiler anscheinend über die Zeile beschwert, in der er stehtbegin

Die Zeilennummer, die Ihnen der Compiler mitteilt, ist nicht immer dort, wo Sie einen Fehler gemacht haben. Nimm es einfach als Hinweis. Wenn Sie beispielsweise ein vergessen, ;zeigt der Compiler normalerweise den Fehler an, wo die nächste Anweisung beginnt.

Eine gute Debugging-Strategie für obskure Fehler besteht darin, Zeilen zu entfernen, bis Ihr Code kompiliert ist. Das hilft, den genauen Ort zu finden und funktioniert besonders gut mit VHDL (im Vergleich zu anderen Programmiersprachen).