【发布时间】:2016-06-10 11:51:36
【问题描述】:
我有一个用 VHDL 编写的简单状态机。每个向量和变量的大小由通用常数“n”确定。这个想法是:当我改变“n”时,我希望立即能够合成。部分设计是“1 of N”代码中的向量。
端口和信号定义:
tester: out std_logic_vector(n-1 downto 0); -- port
signal I: integer range 0 to n-1:=0; -- signal
我有什么:
process(I)
begin
if I=0 then
tester<="0001";
elsif I=1 then
tester<="0010";
elsif I=2 then
tester<="0100";
else
tester<="1000";
end if;
end process;
这显然只适用于 n=4。 我想要什么:
process(I)
begin
tester<=(I=>'1', others=>'0');
end process;
但是,由于“选择不是恒定的”错误,这不会合成。 I 被其中一种状态改变,它可以以任何模式改变,因此出现了问题。
【问题讨论】:
标签: vhdl