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;
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. –