質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
VHDL

VHDLは、デジタル回路設計用のハードウェア記述言語の一つ。明確な回路を加味せず、動作のみを書くだけでハードウェアの動作を定義することが可能。ソフトウェアのプログラミングと同じような設計ができます。

解決済

VHDLで4桁BCD回路のシミュレーションを実行したときにエラーが発生する

Ryuuse
Ryuuse

総合スコア27

VHDL

VHDLは、デジタル回路設計用のハードウェア記述言語の一つ。明確な回路を加味せず、動作のみを書くだけでハードウェアの動作を定義することが可能。ソフトウェアのプログラミングと同じような設計ができます。

1回答

0リアクション

0クリップ

896閲覧

投稿2020/11/29 07:29

VHDLで4桁のBCD加算器を実装しています。プロジェクトのソースコードは以下の通りです。コンパイルには成功しましたが、RTLシミュレーションを行ったところ、以下のようなエラー文が表示されました。

Fatal: (vsim-3817) Port "x" of entity "bcdadder_4bit" is not in the component being instantiated. # Time: 0 ps Iteration: 0 Instance: /test_bcdfa4bit/BCDFA4BIT0 File: C:/Users/(ユーザー名)/VDHL/bcdadder_4bit.vhd Line: 7

画像も下に添付します。
イメージ説明
エラー文は"x"がインスタンス化なされていないという意味だと思うのですが、bcdadder_4bit.vhdの25~34行目で"x"のインスタンス化の記述を行いました。それなのになぜこのようなエラーが発生するのでしょうか。もし分かりましたら教えていただけると助かります。

###bcdadder_4bit.vhd

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity bcdadder_4bit is port ( x , y : in std_logic_vector(15 downto 0); z : out std_logic_vector(19 downto 0); cout : out std_logic ); end bcdadder_4bit; architecture struct of bcddder_4bit is component bcd_fulladder port ( A, B : in std_logic_vector(3 downto 0); ci : in std_logic; co : out std_logic; sum : out std_logic_vector(3 downto 0)); end component; signal c : std_logic_vector(3 downto 1); begin U0 : bcd_fulladder port map (A => x(3 downto 0), B => y(3 downto 0), ci => '0', sum => z(3 downto 0), co => c(1) ); U1 : bcd_fulladder port map (A => x(7 downto 4), B => y(7 downto 4), ci => c(1), sum => z(7 downto 4), co => c(2) ); U2 : bcd_fulladder port map (A => x(11 downto 8), B => y(11 downto 8), ci => c(2), sum => z(11 downto 8), co => c(3) ); U3 : bcd_fulladder port map (A => x(15 downto 12), B => y(15 downto 12), ci => c(3), sum => z(15 downto 12), co => cout ); end struct;

###bcdfulladder.vhd

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity bcd_fulladder is port ( A, B : in std_logic_vector(3 downto 0); ci : in std_logic; co : out std_logic; sum : out std_logic_vector(3 downto 0)); end bcd_fulladder; architecture rtl of bcd_fulladder is signal tmp, sub : std_logic_vector(4 downto 0); begin tmp <= ("0" & A) + ("0" & B) + ("0000" & ci); sub <= tmp - "01010"; sum <= sub(3 downto 0) when sub(4) = '0' else tmp(3 downto 0); co <= not sub(4); end rtl;

###test_bcdfa4bit.vhd

library ieee; use ieee.std_logic_1164.all; entity test_bcdfa4bit is end test_bcdfa4bit; architecture sim of test_bcdfa4bit is component bcdadder_4bit port ( A, B : in std_logic_vector(15 downto 0); ci : in std_logic; c : out std_logic; sum : out std_logic_vector(19 downto 0) ); end component; signal Ain, Bin : std_logic_vector(15 downto 0); signal cin : std_logic; signal cout : std_logic; signal sumout : std_logic_vector(19 downto 0); begin BCDFA4BIT0 : bcdadder_4bit port map ( A => Ain, B => Bin, ci => cin, c => cout, sum => sumout); process begin Ain <= "0000000000000001"; Bin <= "0000000000000011"; wait for 100 ns; Ain <= "0000000000000010"; Bin <= "0000000010010001"; wait for 100 ns; Ain <= "0000000010000100"; Bin <= "0000000000110110"; wait for 100 ns; Ain <= "0000000101011000"; Bin <= "0000000000110100"; wait for 100 ns; Ain <= "0000100100010111"; Bin <= "0000001100110100"; wait for 100 ns; Ain <= "0101000100010010"; Bin <= "0000001010010001"; wait for 100 ns; Ain <= "1000001000011001"; Bin <= "0101011000110100"; wait for 100 ns; wait; end process; end sim; configuration cfg_bcdfa4bit of test_bcdfa4bit is for sim end for; end cfg_bcdfa4bit;

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

VHDL

VHDLは、デジタル回路設計用のハードウェア記述言語の一つ。明確な回路を加味せず、動作のみを書くだけでハードウェアの動作を定義することが可能。ソフトウェアのプログラミングと同じような設計ができます。