|
*加算器の記述
以下のソースは4ビットの加算器の記述です。
この回路は以前紹介したフルアダーを4個並べて記述することもできます。
しかし、算術演算子(+, -, *, /, mod, rem)を使用することにより1行で簡単に記述できます。
library IEEE;
use IEEE std_logic_1164.all;
entity ADDER4 is
port(
A :in std_logic_vector(3 downto 0);
B :in std_logic_vector(3 downto 0);
Z :out std_logic_vector(3 downto 0)
);
end ADDER4;
architecture DATAFLOW of ADDER is
begin
Z <= A + B;
end DATAFLOW;
実際にロジック回路を生成できる算術演算子は“+”, “-”,
“*”だけです。 算術演算子は、ビット長が長い場合、単純な記述で大量のロジックを生成するので、慎重に使用する必要があります。 特に掛け算を使用した場合は、16ビットで2000ゲートを超える回路を生成してしまいます。
“/”,
“mod”,
“rem”は、分母側が2のべき乗の定数の場合のみロジック生成が可能です。 この場合は、ビットシフト演算になります。
“std_logic_vector”で算術演算を行う際、“+”,
“-”の場合は左辺と右辺のどちらかと、代入させる値が同じビット長でないと文法エラーになります。
また、“*”は、左辺と右辺のビット長を足した値が、代入される値のビット長と同じでないと文法エラーになります。
|
|