2016-05-22 15 views
0

Ich habe ein kleines Problem beim Versuch, meinen VHDL zu testen. Ich benutze ein fpga Baysis 2, um meinen Code auszuführen, und es funktioniert ziemlich gut auf der Hardware, aber wenn ich das Programm Isim verwende, um meinen Code zu simulieren, zeigt es kein Verhalten für meine Out - Pins, nur die Buchstabe U.Wie kann ich eine VHDL-24-Stunden-Uhr testen?

Ich schaue durchs Internet und konnte keine Lösung finden, kann mir jemand dabei helfen?

Hier folgt der letzte Teil meines Codes (wahrscheinlich der mit dem etwas falsch). Zuvor hatte der Code einfach einen Prozess, um die Uhr zu teilen, um 1 Sekunde zu teilen, um die LED's auf dem Display des FPGAs schnell ein- und auszuschalten, und zählte die Sekunden, um die 24-Stunden-Uhr arbeiten zu lassen , Na sicher.

contador: process(clk200) 

variable flag : std_logic_vector (1 downto 0); 
-- ledplex is the mux that controls which display should be on 
-- Segm is the 7 segments display 
-- mu md hu hd are the signals with the time information 
begin 

if(clk200'event and clk200='1') then 
    if (flag = "00") then 

     ledplex <= "1110"; 

      case mu is 
       when 0 => segm <= "1000000"; 
       when 1 => segm <= "1111001"; 
       when 2 => segm <= "0100100"; 
       when 3 => segm <= "0110000"; 
       when 4 => segm <= "0011001"; 
       when 5 => segm <= "0010010"; 
       when 6 => segm <= "0000011"; 
       when 7 => segm <= "1111000"; 
       when 8 => segm <= "0000000"; 
       when 9 => segm <= "0011000"; 
       when others => segm <= "1111111"; 
      end case; 
     flag := "01"; 

    elsif (flag = "01") then 

     ledplex <= "1101"; 

      case md is 
       when 0 => segm <= "1000000"; 
       when 1 => segm <= "1111001"; 
       when 2 => segm <= "0100100"; 
       when 3 => segm <= "0110000"; 
       when 4 => segm <= "0011001"; 
       when 5 => segm <= "0010010"; 
       when others => segm <= "1111111";   
      end case; 
    flag := "10"; 

    elsif (flag = "10") then 
     ledplex <= "1011"; 

      case hu is 
       when 0 => segm <= "1000000"; 
       when 1 => segm <= "1111001"; 
       when 2 => segm <= "0100100"; 
       when 3 => segm <= "0110000"; 
       when 4 => segm <= "0011001"; 
       when 5 => segm <= "0010010"; 
       when 6 => segm <= "0000011"; 
       when 7 => segm <= "1111000"; 
       when 8 => segm <= "0000000"; 
       when 9 => segm <= "0011000"; 
       when others => segm <= "1111111"; 
      end case; 
     flag := "11"; 

    elsif (flag = "11") then 
     ledplex <= "0111"; 

      case hd is 
       when 0 => segm <= "1000000"; 
       when 1 => segm <= "1111001"; 
       when 2 => segm <= "0100100"; 
       when others => segm <= "1111111";   
      end case; 
    flag := "00"; 

    end if; 
end if; 
end process contador; 

und hier folgt dem Prüfstand BIBLIOTHEK ieee; USE ieee.std_logic_1164.ALL;

ENTITY t_b IS 
END t_b; 

    ARCHITECTURE behavior OF t_b IS 

-- Component Declaration for the Unit Under Test (UUT) 

    COMPONENT hora 
    PORT(
    clk25m : IN std_logic; 
    segm : OUT std_logic_vector(6 downto 0); 
    ledplex : OUT std_logic_vector(3 downto 0); 
     x : out std_logic 
    ); 
    END COMPONENT; 

    signal clk_tb : std_logic := '0'; 
    signal segm_tb : std_logic_vector(6 downto 0); 
    signal ledplex_tb : std_logic_vector(3 downto 0); 
    signal x_tb : std_logic; 

    BEGIN 

    CUT: hora port map( clk25m => clk_tb, 
           segm => segm_tb, 
           ledplex => ledplex_tb, 
           x => x_tb); 


    Test_Vector: process 
    begin 
    clk_tb <= '1'; 
    wait for 40 ns; 
    clk_tb <= '0'; 
    wait for 40 ns; 
    end process; 

    END behavior; 
+4

ich sehe Sie nicht wollen, Menschen mit viel Code zu überwältigen, aber anstatt sich der Bits befreien, die sie stoppen kompilieren, wie etwa der Bits loszuwerden, die nicht relevant sind Ihr Problem? Auf diese Weise präsentieren Sie uns einen Code, der kompiliert und läuft, damit wir Ihr Problem problemlos reproduzieren können, ohne zu viel Code zu geben. Dies wird als [MCVE] (http://stackoverflow.com/help/mcve) bezeichnet. Es gibt noch einen weiteren Vorteil beim Erstellen eines MCVE: Bei der Erstellung eines MCVE ist es sehr wahrscheinlich, dass der Fragesteller das Problem selbst findet und so mehr lernt, als wenn er nur die Antwort eines anderen liest. –

Antwort

0

Sie haben Ihre Variable flag nicht initialisiert. Ohne dies ist Ihre Variable möglicherweise nicht definiert, daher U. Verwenden Sie die folgenden Schritte aus:

variable flag : std_logic_vector (1 downto 0) := "00"; -- initialize variable 
Verwandte Themen