続けて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 26 times, 1 visits today)
マックにはやっぱり袴姿で?(笑)