【发布时间】:2017-12-05 14:00:00
【问题描述】:
我想从生成中的整数中获取二进制 std_logic_vector。
例如,
0 -> 0000
1 -> 0001
2 -> 0010
...
15 -> 1111
我可以为每个整数编写 16 个 if-else 语句,但我不喜欢这个想法。 (如果我有超过 16 个整数怎么办?)
我尝试使用两种方法,但它们都不起作用: address 和 hit 都是 std_logic_vector
G_1 : for i in 0 to 15 generate
address <= conv_std_logic_vector(i, 4) when hit(i) = '1';
end generate G_1;
G_2 : for i in 0 to 15 generate
address <= std_logic_vector(to_unsigned(i, 4)) when hit(i) = '1';
end generate G_2;
我还注意到,如果我使用数字而不是 i,它会起作用。 (例如:当我使用 conv_std_logic_vector(5, 4) 时得到“0101”)
我做错了什么?有没有可能使用 vhdl 的方法?
【问题讨论】:
标签: vhdl