|
ここでは、VHDL記述の感じを知るために「エンティティ&アーキテクチャ」で使用したハーフアダーの記述をもっと細分化して説明していきます。
[例:ハーフアダー]
ライブラリ宣言とパッケージの呼び出し(std_logicを使用するために必要)
library IEEE;
use IEEE std_logic_1164.all;
C言語で言うstdio.hをインクルードするようなものでIEEEで、用意されているライブラリを読みこみます。
最初はとりあえずつけときましょう。
エンティティ エンティティ名 HARF_ADDER
entity HALF_ADDER is
pory( 信号名:A 方向指定:入力 データタイプ:std_logic
A : in std_logic;
B : in std_logic; 信号名:S 方向指定:出力 データタイプ:std_logic
S : out std_logic;
CO : out std_logic
);
end HALF_ADDER;
エンティティは回路図でいうシンボルのようなもので、回路のインタフェース信号を記述していきます。
また、ここで信号の方向指示(入力、出力、入出力など)とデータタイプを記述します。
*方向指示
方向指示(mode) |
意味 |
in |
入力 |
out |
出力(内部で出力を再利用できない) |
inout |
双方向 |
buffer |
出力(内部で出力を再利用できる) |
linkage |
方向指定なし。どの方向でも結合できる。 |
注)outは信号代入を許すのに対し、bufferは一つしか許さない。
注)通常はin/out/inoutを使用します。
*データタイプ
VHDLではデータタイプの種類は豊富で、またユーザが新たにデータタイプを作ることも可能です。 ただし回路記述(RTL記述)ではstd_logic、std_logic_vectorを使用すると考えてください。
(VHDLの標準データタイプ)
データタイプ |
意味 |
integer |
整数32ビット |
real |
浮動小数点 |
bit |
ロジック値 “0”,“1” |
bit_vector |
bitのベクタタイプ |
boolean |
論理値 FALSE, TRUE |
character |
ASCII文字 |
time |
時間の物理タイプ fs, ps, ns, ms, sec, min,
hr |
severity level |
メッセージレベルNOTE, WARING, ERROR,
FAILURE |
string |
characterのベクタタイプ |
*アーキテクチャ ロジック本体です。アーキテクチャの中の回路を記述します。
アーキテクチャ アーキテクチャ名:DATAFLOW エンティティ名:HALF_ADDER
architecture DATAFLOW of HALF_ADDER is
信号宣言 信号名:C データタイプ:std_logic アーキテクチャ内で使用する信号(内部信号)をここで宣言します。
signal C:std_logic;
signal D:std_logic; begin〜endの中にロジックを記述します。
begin
C <= A or B;
D <= A nand B;
CO <= not D;
S <= C and D;
<=は信号代入文。
nand, not, andは論理演算子
種類は6種類でand, or, not, nand, nor, xorがあります。
end DATAFLOW;
|
|
|