Hallo zusammen, ich habe hier die web.versionen von Quartus und ModelSim. Ich komme mit Quartus super klar(so gut wie man damit als anfänger klar kommen kann). Ich würde jedoch gerne mit ModelSim mein Sorce "simulieren".... den VHDL Source bekomme ich da rein aber ich habe keine ahnung wie ich mit den Testsignalen umgehen soll. könnte mir jemand anhand dieses Beispiel sources sagen wie ich dass ganze von Quartus nach ModelSim "richtig" simuliert bekomme... Vielen Dank --- CODE --- entity MUX4X1 is port( S: in bit_vector(1 downto 0); E: in bit_vector(3 downto 0); Y: out bit); end MUX4X1; architecture VERHALTEN of MUX4X1 is begin with S select -- Auswahlsignal Y <= E(0) when "00", E(1) when "01", E(2) when "10", E(3) when "11"; end VERHALTEN;
Hallo Peter, man kann in Modelsim die Signale per Skript ansteuern. Meistens wird in VHDL ein Testbench geschrieben. Da ist man flexibler und muss nicht noch eine Skript-Sprache lernen. Geunsätzlich solltest du nicht den bit_vektor verwenden, da der keine Kollisionen und nicht initialisierten Signale kennt. Ich habe ein Beispiel für deinen Muxer geschrieben. library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity a0_MUX4X1 is end entity a0_MUX4X1; architecture behav of a0_MUX4X1 is signal S_slv : std_logic_vector(1 downto 0); signal E_slv : std_logic_vector(3 downto 0); signal Y : std_logic; signal S : unsigned (S_slv'range) := (others => '0'); signal E : unsigned(E_slv'range) := (others => '0'); begin -- architecture behav MUX4X1_2 : entity work.MUX4X1 port map ( S => S_slv, E => E_slv, Y => Y); S_slv <= std_logic_vector (s); E_slv <= std_logic_vector (e); p_tb : process is begin -- process p_tb while e /= 2**e'length - 1 loop wait for 10 ns; e <= e + 1; end loop; s <= s + 1; end process p_tb; end architecture behav; Bei Kompilieren deines Muxers hat sich Modelsim beschwert, darum habe ich den Code geändert. -- Compiling architecture verhalten of mux4x1 ** Error: ../../threinem/work/mux4x1.vhdl(13): Selected signal assignment covers only 4 out of 81 cases. ** Error: ../../threinem/work/mux4x1.vhdl(18): VHDL Compiler exiting Compilation exited abnormally with code 2 at Fri Jan 30 08:41:21 library ieee; use ieee.std_logic_1164.all; entity MUX4X1 is port( S : in std_logic_vector(1 downto 0); E : in std_logic_vector(3 downto 0); Y : out std_logic); end MUX4X1; architecture VERHALTEN of MUX4X1 is begin Y <= E(0) when s = "00" else E(1) when s = "01" else E(2) when s = "10" else E(3) when s = "11"; end VERHALTEN; Ich habe es nur kompiliert und nicht simuliert. Tom
Hallo Thomas , hallo Duke, erstmal vielen Dank. @Thomas... ich habe mit der FPGA programmierung gerade angefangen und verstehe die Syntax welche dur für das Testbench verwendetst noch nicht komplett. Dies wird jedoch noch kommen (hoffe ich zumindest). Aber es existiert immer noch die folgende Frage : Wenn ich modelSim (6.3g_p1 ALTERA Edition) starte... im Workspace die Datei demo.vhd mit folgendem inhalt habe: library ieee; use ieee.std_logic_1164.all; entity MUX4X1 is port( S : in std_logic_vector(1 downto 0); E : in std_logic_vector(3 downto 0); Y : out std_logic); end MUX4X1; architecture VERHALTEN of MUX4X1 is begin Y <= E(0) when s = "00" else E(1) when s = "01" else E(2) when s = "10" else E(3) when s = "11"; end VERHALTEN; Diese Compiliert habe, wie muss ich das Testbench dort in mein Projekt einpflegen(neues file hinzufügen) damit ich das Verhalten des Programms in Waves sehen kann? Gibt es irgendwo im Web einfaches Tutorial ? Gruß Peter
Hi, na, du must deinen Mux in der Testbench instantiieren wie oben im Beispiel gezeigt. Dann simulierst du die Testbench, nicht den Mux. Im Klartext: Du hast 2 VHDL Dateien. Und wenn du's gleich richtig lernen willst, dann solltest du in der Testbench auch gleich mit 'assert ...' die Ergebnisse auf Richtigkeit pruefen.
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.