• 検索結果がありません。

SELS D

ドキュメント内 論理回路設計 (ページ 56-61)

end DSELS;

with select 文

library IEEE;

use IEEE.std_logic_1164.all;

entity M_BEHAVIOR is

port (SELS : in std_logic_vector(0 to 1);

A,B,C,D : in bit; M : out bit);

end;

architecture DSELS of M_BEHAVIOR begin

with SELS select

M <= A when ”00”,

B when ”01”, C when ”10”, D when ”11”;

end DSELS;

この記述を、

D when others;

M

SELS D

A B C

この宣言のとき、

SELSは、9x9=81値となり,, 左の記述ではエラー

テストベンチの記述

シミュレーションとテストベンチ

シミュレーション: 設計した回路が正しく動作するかを検証するために、

実装前に、コンピュータ上でシミュレータを実行すること。

- 論理シミュレーション: (遅延を無限小として)論理動作のみ検証 - 遅延シミュレーション: 回路の遅延情報を考慮して動作を検証

◇ 設計した回路記述: VHDLファイル(DUT; Device Under Test)

◇ シミュレータ:

◇ テストベンチ: 必要な信号を生成したり、検証を効率よく行うための 結果表示などを記述したVHDLファイル。

論理合成しないので、効率良く記述することを優先。

クロック、リセット等 の生成

入力パタンの生成

設計した回路

(DUT)

[論理合成可能]

結果表示等

テストベンチ

テストベンチの構造

「パッケージ」の指定 entity エンティティ名 is end エンティティ名;

architecture アーキテクチャ名 is

bigin

end アーキテクチャ名;

- DUTの宣言 -

入出力の宣言

- DUTの呼び出し -

波形記述

configuration

コンフィグレーション名

is for アーキテクチャ名

end for;

end コンフィグレーション名;

ライブラリ記述

ポートリストの無いエンティティ記述

アーキテクチャ名 of エンティティ名

テストモジュール(DUT)のコンポーネント宣言

DUTの入出力信号宣言

整数の定義(クロック周期等)

DUTの呼び出し宣言(インスタンス)

入力信号の入力波形記述

(期待値照合も可能)

コンフィグレーション名を定義

→ コンフィグレーション名 of エンティティ名

このコンフィグレーション名でシミュレーターの

テストベンチでの入力波形記述例

constant STEP: time := 100 ns ; begin

U0: COUNT4LD port map( CLK, RST, LD, D, Q );

-- 入力;CLK、RST、LD、D process begin -- クロックの記述

CLK <=‘0’; wait for STEP/2; -- STEP/2毎に“01”を繰り返す CLK <=‘1’; wait for STEP/2; -- 無限にループする

end process ; process begin

D <=“0000”; -- 入力Dに”0000”をセット wait for STEP; RST <=‘1’; -- 1クロック後、リセットをon wait for STEP; RST <=‘0’; -- 1クロック後、リセットをoff wait for STEP*20; -- 20クロック進める

D <=“1001”; LD <=‘1’; -- ロードをonして、Dに9をロード wait for STEP; LD <=‘0’; -- ロードをoff

wait for STEP*8; -- 8クロック進める

D <=“0110”; LD <=‘1’; -- ロードをonして、Dに6をロード wait for STEP; LD <=‘0’; -- ロードをoff

wait for STEP*12 ; -- 12クロック進める

assert false severity failure; -- シミュレーションの強制終了

☆ count4ld (ロード機能付き4ビットバイナリカウンター)の入力J波形の記述例:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity CNT10 is port ( count_in, reset : in std_logic; count_up, dot : out std_logic;

count_LED : out std_logic_vector(4 downto 0) );

end CNT10;

architecture RTL of CNT10 is

signal count10 : std_logic_vector(4 downto 0); signal count_sig : std_logic;

begin

process(count_in,reset) begin

if reset = '1' then count10 <= "00000"; count_sig <= '0';

elsif (count_in'event and count_in='1') then

if (count10 = "01001") then count_sig <= '1'; count10 <= "00000";

else count_sig <= '0'; count10 <= count10 + '1';

end if; end if; end process;

count_LED <= count10;

count_up <= count_sig;

dot <= '0';

10進カウンタのテストベンチ記述例①

ドキュメント内 論理回路設計 (ページ 56-61)

関連したドキュメント