Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

バスを繋ぐ&演算子@VHDL

VHDLFPGAでバスを繋ぐには"&演算子"をつかいます

実際のところ

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Switches_LEDs is
  Port ( switches : in STD_LOGIC_VECTOR(1 downto 0);
  LEDs : out STD_LOGIC_VECTOR(1 downto 0));
end Switches_LEDs;

begin
  LEDs <= switches;
end Behavioral;

switches(0)が'1'、switches(1)が'0'のとき、これらは同じ意味です。

LEDs(0) <= switches(0);
LEDs(1) <= switches(1);
LEDs <= switches(0) & switches(1);
LEDs <= "10";

ビット数をあわせるときにもつかう

ビット数を明確に増やす場合にも使います。
たとえば、4bitのものを5bitに増やすときとか。
ただ、どこかの莫迦のように型推論なんて芸当をHDLに期待しないようにしてください*1

signal regB : STD_LOGIC_VECTOR(3 downto 0) := (others => '0');
signal temp : STD_LOGIC_VECTOR(4 downto 0); 
//中略

signal temp <= ('0' & regB) + ('0' & '1100');
// => 0B01100

*1:今後コンパイラが進化したらできるかもしれませんけどね