0
VHDLをテストするときに少し問題があります。 私は、コードを実行するためにFPGA Baysis 2を使用していますが、ハードウェア上ではうまく機能していますが、私のコードをシミュレートするためにIsimプログラムを使用すると、手紙U.ベンチにVHDL 24時間クロックをテストするにはどうしたらいいですか?
私はインターネットを見ていて解決策を見つけることができませんでした。
ここでは、私のコードの最後の部分(恐らく何かが間違っている部分)に続きます。これまでのコードでは、クロックを分けて1秒ごとに分けて、1/200秒で分けて、FPGAのディスプレイ上のLEDを素早くオン/オフし、秒を数えて24時間制の時計を作った、 もちろん。
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;
、ここでは、テストベンチ LIBRARYのIEEEに従います。 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;
私はあなたがコードのたくさんの人々を圧倒したくない参照が、その代わりに、それはコンパイルストップビットを取り除くことで、どのように無関係なビットを取り除くことができますについてあなたの問題?そうすれば、コンパイルして実行するいくつかのコードを提示して、あまりコードを渡さずに簡単に問題を再現することができます。これは[MCVE](http://stackoverflow.com/help/mcve)と呼ばれています。 MCVEの作成には別の利点もあります。作成する際には、質問者が問題を見つけ、他の人の答えを読むだけで学習する可能性が非常に高いです。 –