2011-03-15 12 views
-2
-----------begin part1.vhdl--------------------- 


library ieee; 
use ieee.std_logic_1164.all; 

entity part1 is 
    generic (width : integer :=7); 
    PORT(a, b, c, d: IN std_logic_vector(width downto 0); 
     sel: IN std_logic_vector(1 downto 0); 
     result: OUT std_logic_vector(width downto 0) 
    ); 
end part1; 

architecture muxbehav of part1 is 

BEGIN 

    result <=  a after 5 ns when sel="00" else 
        b after 5 ns when sel="01" else 
        c after 5 ns when sel="10" else 
        d after 5 ns; 
end muxbehav; 

-----------end part1.vhdl--------------------- 

    -----------begin part1_tb.vhdl------------------ 

library ieee; 
use ieee.std_logic_1164.all; 


entity part1_tb is 
    generic(width : integer := 7); 
end part1_tb; 

architecture tb of part1_tb is 

    signal t_a: std_logic_vector(width downto 0):="00000000"; 
    signal t_b: std_logic_vector(width downto 0):="00000000"; 
    signal t_c: std_logic_vector(width downto 0):="00000000"; 
    signal t_d: std_logic_vector(width downto 0):="00000000"; 
    signal t_s: std_logic_vector(1 downto 0); 
    signal t_o: std_logic_vector(width downto 0); 

component part1 
    generic(width : integer); 
    PORT(a, b, c, d: IN std_logic_vector(width downto 0); 
     sel: IN std_logic_vector(1 downto 0); 
     result: OUT std_logic_vector(width downto 0) 
    ); 
    end component; 

    begin 

    U_part1: part1 generic map(width) port map(a=>t_a, b=>t_b, c=>t_c, d=>t_d, sel=>t_s, result=>t_o); 

    process 

     begin 

     t_a <= "11111111"; 
     t_b <= "00000001"; 
     t_c <= "10101010"; 
     t_d <= "01010101"; 

     wait for 10 ns; 
     t_s <= "00"; 
     wait for 6 ns; 
     assert (t_o="11111111") report "Error input a" severity error; 

     wait for 10 ns; 
     t_s <= "01"; 
     wait for 6 ns; 
     assert (t_o="00000001") report "Error input b" severity error; 

     wait for 10 ns; 
     t_s <= "10"; 
     wait for 6 ns; 
     assert (t_o="10101010") report "Error input c" severity error; 

     wait for 10 ns; 
     t_s <= "11"; 
     wait for 6 ns; 
     assert (t_o="01010101") report "Error input d" severity error; 

     wait; 

    end process; 
end tb; 

-----------end part1_tb.vhdl------------------ 

こんにちは、これは私がVHDLで書いた最初のコードです。任意の幅のベクトルをとることができるシンプルな4対1 MUXです。しかし、テストベンチを実行しようとすると、GHDLがハングアップします。私は似たようなテストベンチを見てきましたが、なぜ私がぶら下がっているのかまだ分かりません。何か案は?シンプルなVHDL 4対1 MUXテストベンチがハングしています

+0

"ハング"とは、何も起こらずにシミュレーションが実行されていることを意味しますか? –

+0

プラットフォームの詳細とGHDLのバージョンを投稿できますか?そしてあなたのコンパイル/実行コマンド? –

+0

プロセス終了時の「待機」とは何ですか?それはそれを停止することですか? 申し訳ありませんが、私はVHDLをよく知っている。Verilogの人。 – user623879

答えて

1

Hmmm。私はそれがぶら下がる何らかの理由を見ることができません。

Ubuntu 10.04でghdl0.29でコードを試しました。メッセージは表示されずに終了するので、あなたのコードが動作するように見えます。波はgtkwaveでも説得力があります。

workフォルダと実行ファイルを削除して再コンパイルできますか?

申し訳ありませんが、それは本当にあなたを得る答えはありません!

関連する問題