VHDL中的通用向量,具有由变量确定的赋值位置

时间:2016-06-10 11:51:36

标签: vhdl

我有一个用VHDL编写的简单状态机。每个向量和变量的大小由通用常数" n"确定。我的想法是:当我改变" n"时,我想立即能够合成。部分设计是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;

然而,由于&#34;选择不是恒定的,因此不能合成。错误。我被其中一个州改变了,它可以在任何模式中改变,因此问题。

1 个答案:

答案 0 :(得分:2)

相反,你可以这样做:

process(I)
begin
    tester    <= (others => '0');
    tester(I) <= '1';
end process;