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

  • このエントリーをはてなブックマークに追加

続けて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 13 times, 1 visits today)
  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメント

  1. maruta3 より:

    マックにはやっぱり袴姿で?(笑)

maruta3 へ返信する コメントをキャンセル

*