我有这段代码
for i in 63 downto 48 loop
s1(i)<= b(31);
end loop;
我想摆脱循环,使用一个分配语句
类似的东西
s1(63 downto 48)<= b(31)
但它不起作用,因为我正在将std向量分配给单个std逻辑
我想将std向量分配给另一个具有相同值的std向量(这里是b(31))
vhdl可以吗?
答案 0 :(得分:4)
这个怎么样:
s1(63 downto 48) <= (others => b(31));
答案 1 :(得分:1)
在这种情况下,Jeff的答案应该可以解决问题,因为从分配目标中可以知道所需的类型(包括索引范围)。
但有些情况下,在更复杂的表达式中,它不是因为(others => x)
没有指定所创建对象的大小。
因此,值得知道您可以在数组聚合中明确指定范围,并说
s1(63 downto 48) <= (15 downto 0 => b(31));
s1(63 downto 48) <= (63 downto 48 => b(31)); -- a bit clearer
s1(63 downto 48) <= (63 => not b(31), 62 downto 48 => b(31));
等