2017-05-16 23 views
0

私はすでに、モデムでVHDLのALUを記述し終えましたが、シミュレーションを見ると、テストベンチはソリューションを更新しないようですが、回路は32ビットの応答で常に"UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"私は**私はVHDLテストベンチは出力を変化させないALU 32bit

を言う回路応答に関するコンパイラの警告があり、また、テストベンチ上で間違って書いたものを知らない警告:(VSIM-8683)を初期化されていないポート/ alu_tb/ALU_test/RES( 32 downto 0)にはドライバがありません。 このポートは信号ネットワークに値(UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU)を提供します。

、ここでテストベンチ・コードは次のとおりです。

library ieee; 
use ieee.std_logic_1164.all; 
use ieee.std_logic_arith.all; 
use ieee.std_logic_unsigned.all; 

entity ALU_tb is   
end ALU_tb; 

architecture bhv_ALU_tb of ALU_tb is 
component ALU 
    port(
     a, b: in std_logic_vector(31 downto 0); 
     c: in std_logic; 
     s: in std_logic_vector(3 downto 0); 
     res: out std_logic_vector(32 downto 0)); 
end component; 

signal a, b: std_logic_vector(31 downto 0); 
signal c: std_logic; 
signal s: std_logic_vector(3 downto 0); 
signal re: std_logic_vector(32 downto 0); 

begin 
    ALU_test: ALU port map (a => a, b => b, c => c, s => s, res => re); 
process begin 
    b <= "00000000000010100111010100011110"; 
    a <= "00000000011010000100110011101110"; 
    c <= '0'; 
    s <= "1111"; 
    wait for 2 ns; 
    b <= "00000000000010100111010100011110"; 
    a <= "00000000011010000100110011101110"; 
    c <= '0'; 
    s <= "0100"; 
    wait for 2 ns; 
    s <= "0000"; 
    wait for 2 ns; 
    s <= "0001"; 
    wait for 2 ns; 
    s <= "0010"; 
    wait for 2 ns; 
    s <= "0011"; 
    wait for 2 ns; 
    s <= "0100"; 
    wait for 2 ns; 
    s <= "0101"; 
    wait for 2 ns; 
    s <= "0110"; 
    wait for 2 ns; 
    s <= "0111"; 
    wait for 2 ns; 
    s <= "1000"; 
    wait for 2 ns; 
    s <= "1001"; 
    wait for 2 ns; 
    s <= "1010"; 
    wait for 2 ns; 
    s <= "1011"; 
    wait for 2 ns; 
    s <= "1100"; 
    wait for 2 ns; 
    s <= "1101"; 
    wait for 2 ns; 
    s <= "1110"; 
    wait for 2 ns; 
    s <= "1111"; 
    wait for 2 ns; 
end process; 
end bhv_ALU_tb; 

私は間違い「が初期化されていませんRES」が、私は離れてVHDL道からあまりにも長い間されていると正直にどのように知らないてきた些細なようだ知っていますそれは、任意のアイデアを修正?悪い..使用しない

+2

この質問に対する回答は、「res」は外の値なので、内部のものに接続されていなければモジュール内部からは駆動されません。 – Staszek

答えて

1

まず

use ieee.std_logic_arith.all; 
use ieee.std_logic_unsigned.all; 

。あなたはこのファイルにそれらを必要としません。 にアースメントが必要な場合は、numeric_stdを使用してください。

次に、エラーはコンポーネントALUにあります。これは、 'ドライブ'する必要がありますresです。しかし、あなたがそのコードを投稿していないので、私たちは(まだ)あなたを助けることはできません。

p.s.現在VHDLでコンポーネントを定義する必要はありません。

ALU_test: entity work.ALU port map 
関連する問題