1

申し訳ありませんが、私はこのウェブサイトを初めて使用しますが、ほぼ 2 日間続けて回答を探しています。

私は vhdl を初めて使用し、課題で単純な 16 ビット ALU を作成するように求められました。この ALU には、ビヘイビア デザインと RTL デザインの 2 つのアーキテクチャが必要です。私に関する限り、その完全なコードがあります。

私が理解できないのは、modelsim で両方のアーキテクチャのシミュレーションを実行できるようにするテスト ベンチを作成する方法です。問題なくコンパイルできる両方のファイル (テストベンチと ALU) がありますが、シミュレーションで「初期化されていない inout ポートにドライバーがありません」というエラーが表示されます。

この問題に対してどのコードを表示すればよいかわからないため、TB の最初の部分だけを示します。

    LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;

ENTITY tb IS
END tb;

ARCHITECTURE behavior OF tb IS

   signal Clk,Res : std_logic := '0';
   signal A,B : signed(15 downto 0) := (others => '0');
   signal R1, R2 : signed(31 downto 0) := (others => '0');
   signal Op : unsigned(2 downto 0) := (others => '0');
   constant Clk_period : time := 10 ns;

component ALU_16_First
port(A, B: signed(15 downto 0):=(others => '0'); R: inout signed(31 downto 0):= (others => '0'); Op: in unsigned(2 downto 0) := (others => '0'); Clk, Res: Std_logic);
end component ALU_16_First;

component ALU_16_RTL
port(A, B: in signed(15 downto 0):= (others => '0');
     R: inout signed(31 downto 0):= (others => '0'); Op: in unsigned(2 downto 0) := (others => '0'); Clk, Res: Std_logic);
end component ALU_16_RTL;

for ALU_Behaviorial: ALU_16_First use entity work.simple_alu(Behavioral);
for ALU_RTL: ALU_16_RTL use entity work.simple_alu(RTL);

BEGIN

    -- Instantiate the Unit Under Test (UUT)

   ALU_Behaviorial : ALU_16_First  PORT MAP (
          A,
          B,
          R1,
          Op,
          Clk,
          Res
        );

    ALU_RTL: ALU_16_RTL PORT MAP (
          A,
          B,
          R2,
          Op,
          Clk,
          Res
        );

私は基本的にこれを時間通りに終わらせることに必死です。

ありがとう。

4

2 に答える 2

0

コンポーネントのインスタンス化で何が起こっているかを完全に明確にするために、明示的なポート マッピングを使用することをお勧めします。たとえば、次のようになります。

   ALU_Behaviorial : ALU_16_First  PORT MAP (
      A => A_tb,
      B => B_tb,
      R1 => R1_tb,
      Op => Op_tb,
      Clk => Clk_tb,
      Res => Res_tb
    );

_tb 信号は、テスト ベンチの信号です。ここで、コンポーネント (A_tb、B_tb、R1_tb、Op_tb、Clk_tb、Res_tb) への入力がテスト ベンチ アーキテクチャによって駆動されていることを確認します。これらの入力を駆動しているテストベンチはどこですか?

また、R1を「inout」にした理由はありますか?あなたはそれをアウトにすることができますか?あなたにとっては少し簡単かもしれません。

于 2013-09-23T19:46:52.827 に答える