Hallo, ich habe hier eine 4-Bit ALU die eigentlich nur ein paar Grundrechenarten berechnen soll, je nachdem welcher Eingangsbefehlssatz anliegt. Jetzt hab ich aber das Problem, wenn ich es simulieren lasse liegt überall nur 0 an den Ein- und Ausgängen. Vielleicht kann ja jemand mal schauen ob er einen Fehler endeckt, hab bis jetzt selber nichts gefunden. MfG forrester
Sieht erstmal gut aus. Bedenke, dass du erstmal Daten in A und B landen musst. Du brauchst dazu auch einen Takt. Sind in der Testbench alle Eingangssignale mit gültigen Werten versehen? Solche Sachen wie ELSIF a_IEN='0' THEN qA<=qA; kannst du dir in VHDL sparen. Du betreibst auch ein wenig zuviel Aufwand, die Extrazuweiseung von A und B kannst du dir sparen und gleich in die Prozesse reinschreiben. MFG Falk
Danke erstmal für schnelle Antwort Falk wrote: >... erstmal Daten in A und B landen Dachte ich wird eigentlich Mit folgenden Code gemacht: temp_reg_a: PROCESS(clk,D) BEGIN IF clk'EVENT AND clk='1' THEN IF a_ien='1' THEN qA<=D; ELSIF a_IEN='0' THEN qA<=qA; END IF; END IF; END PROCESS temp_reg_a; temp_reg_b: PROCESS(clk,D) BEGIN IF clk'EVENT AND clk='1' THEN IF b_ien='1' THEN qB<=D; ELSIF b_IEN='0' THEN qB<=qB; END IF; END IF; END PROCESS temp_reg_b; A<= qA; B<= qB; Aber wenn du so fragst scheine ich mich getäuscht zu haben oder? Falk wrote: >in der Testbench alle Eingangssignale mit gültigen Werten versehen? Das ist ja das Problem in der testbench sind alle Eingangssignale NULL
> >... erstmal Daten in A und B landen > Dachte ich wird eigentlich Mit folgenden Code gemacht: Ähhh, das VHDL-Modul beschreibt das Innere der ALU. Was du aber brauchst, ist die Ansteuerung (Testbench) drum herum. Ist wie ein Glühlampe und Sockel, ohne den und Strom drauf leuchtet die Glühlampe nicht. > Aber wenn du so fragst scheine ich mich getäuscht zu haben oder? Sehr wohl. Diese beiden Prozesse beschreiben zwei Speicher für A und B. Innerhalb der ALU. Diese Speicher müssen über clk, b_ien und D von aussen in der Testbensch gesteuert werden. > Das ist ja das Problem in der testbench sind alle Eingangssignale NULL Wo ist deine Testbench? Der VHDL-Code in deinem Postig ist das Modul. Eine Testbench ist ein weiteres VHDL-Modul, in welchem das zu testende Modul (ALU) als Komponente eingefügt wird. MFG Falk
Hab in der Testbench eigentlich nur den Takt "aktiviert" und das nach 120 ns "addiert" werden soll. Was auch funktioniert. Ich hab schon versucht A und B Werte zuzuweisen was allerdings nicht funktionierte , hast vielleicht ein Tipp. MfG Andreas
Ich bekomme das irgendwie mit dem Wertzuweisen nicht hin. Wenn ich z.B. schreibe: A <="0001"; kommt als Fehlermeldung "unexpected IDENTIFIER". Wobei A als SIGNAL deklariert wurde. Hat vielleicht jemand einen Tipp, es wurde zwar gesagt das man die Daten mittels eines Tages laden muss, aber ich stehe etwas auf der Leitung wie ich das realisieren muss. MfG Andreas
Du kannst von der Testbench aus nicht auf interne Signale zugreifen, ist auch sinnlos. Du kannst nur auf die IO Signale des Moduls zugreifen. Probier mal das. ------------------------------------------------------------------------ -------- -- Company: -- Engineer: -- -- Create Date: 19:53:54 12/07/2006 -- Design Name: alu_4bit -- Module Name: L:/Schaltkreisentwurf/Fach_Beleg/4bit_prozessor/tp_alu_4bit.vhd -- Project Name: 4bit_prozessor -- Target Device: -- Tool versions: -- Description: -- -- VHDL Test Bench Created by ISE for module: alu_4bit -- -- Dependencies: -- -- Revision: -- Revision 0.01 - File Created -- Additional Comments: -- -- Notes: -- This testbench has been automatically generated using types std_logic and -- std_logic_vector for the ports of the unit under test. Xilinx recommends -- that these types always be used for the top-level I/O of a design in order -- to guarantee that the testbench will bind correctly to the post-implementation -- simulation model. ------------------------------------------------------------------------ -------- LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.all; USE ieee.numeric_std.ALL; ENTITY tp_alu_4bit_vhd IS END tp_alu_4bit_vhd; ARCHITECTURE behavior OF tp_alu_4bit_vhd IS -- Component Declaration for the Unit Under Test (UUT) COMPONENT alu_4bit PORT( D : IN std_logic_vector(3 downto 0); F : IN std_logic_vector(3 downto 0); a_ien : IN std_logic; b_ien : IN std_logic; clk : IN std_logic; S : OUT std_logic_vector(3 downto 0) ); END COMPONENT; --Inputs SIGNAL a_ien : std_logic := '0'; SIGNAL b_ien : std_logic := '0'; SIGNAL clk : std_logic := '0'; SIGNAL D : std_logic_vector(3 downto 0) := (others=>'0'); SIGNAL F : std_logic_vector(3 downto 0) := (others=>'0'); --Outputs SIGNAL S : std_logic_vector(3 downto 0); -- constants constant t_clk : time := 100 ns; BEGIN -- Instantiate the Unit Under Test (UUT) uut: alu_4bit PORT MAP( D => D, F => F, S => S, a_ien => a_ien, b_ien => b_ien, clk => clk ); -- clock generation tb : PROCESS BEGIN CLK <= '0'; wait for t_clk/2; CLK <= '1'; wait for t_clk/2; END PROCESS; process begin wait for t_clk/2; wait for 20 ns; d <= x"5"; a_ien <= '1'; wait for t_clk; d <= x"7"; a_ien <= '0'; b_ien <= '1'; wait for t_clk; b_ien <= '0'; wait for t_clk; F <= "0010"; end; END;
uuuups, die letzte Zeile sollte eher heissen F <= "0100"; -- Addition wait; -- wait forever MfG Falk
Danke das klappt, hatte es mittlerweile so ähnlich hinbekommen. Hab allerdings noch einen kleinen Fehler bei dir endeckt. wait for t_clk; F <= "0010"; end PROCESS; -- nicht end; END;
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.