加算演算子の使用法


加算演算子 (に限らず,算術演算子でも同様) を使用する際には,右 オペランド,左オペランドおよび結果のタイプだけではなく,ビット長も一致 している必要があります.したがって,演算後の桁上がりや桁借りのビット長まで 考慮しておく必要があります.

例として加算演算子についてみてみます.

signal LOP : std_logic_vector( 7 downto 0 );
signal ROP : std_logic_vector( 7 downto 0 );
signal SUM : std_logic_vector( 7 downto 0 );
signal TMP : std_logic_vector( 8 downto 0 );
signal CY  : std_logic;
	...
TMP <= ( '0' & LOP ) + ( '0' & ROP );
SUM <= TMP( 7 downto 0);
CY  <= TMP( 8 );
8ビットの加算では9ビットの結果が得られます.一時的な加算結果として9ビッ トのTMP信号に対して加算結果を格納し,改めてSUMに8ビット分の結果を代入 しています.各オペランドは9ビット長にそろえる必要があるため,連結演算 子`&'を使用して,最上位ビットに'0'を連結しています.なお,`&'演算しは 優先順位が`+'より低いため,括弧を省略することはできません.9ビット目は 桁上がり信号として利用することができます.

ホーム もどる 辞書

This is my e-mail address:
arch_www < www@cs.kumamoto-u.ac.jp >
Copyright (C) KITE Microprocessor Project, 1996