符号ビットを頭に詰める話

続けてVHDLの話。
例えば符号付き4bitの値を符号付き8bitに広げる場合、

signal data : std_logic_vector(3 downto 0);
signal data2 : std_logic_vector(7 downto 0);
process(....)
variable tmp : std_logic_vector(7 downto 0);
begin
tmp := data(3) & data(3) & data(3) & data(3) & data;   # 変数代入
data2 <= tmp * tmp;  # 信号代入
-- (省略)
end process;

というのが、一案、詰めるビットが多い場合はこうも書けるなぁ。と。

process(...)
variable tmp : std_logic_vector(7 downto 0);
begin
if data(3) = '1' then
tmp := X"F" & data;
else
tmp := X"0" & data;
end if;
data2 <= tmp * tmp;
-- (省略)
end process;

見た目のわかりやすさもあるから、どちらがよいだろう。
詰める符号ビットの数が多い場合は下の書き方だろうなぁ。上の書き方だと見たまんま。というのもあるが。

奥が深い。

(Visited 7 times, 1 visits today)

「符号ビットを頭に詰める話」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です