VHDL中的泛型向量,赋值位置由变量确定

VHDL中的泛型向量,赋值位置由变量确定,vhdl,Vhdl,我有一个用VHDL编写的简单状态机。每个向量和变量的大小由一个通用常量“n”决定。这个想法是:当我改变“n”时,我想立即能够合成。设计的一部分是“N中的1”代码中的向量 端口和信号定义: 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&

我有一个用VHDL编写的简单状态机。每个向量和变量的大小由一个通用常量“n”决定。这个想法是:当我改变“n”时,我想立即能够合成。设计的一部分是“N中的1”代码中的向量

端口和信号定义:

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;
过程(一)
开始
如果I=0,那么
相反,您可以执行以下操作:

process(I)
begin
    tester    <= (others => '0');
    tester(I) <= '1';
end process;
过程(一)
开始
测试仪“0”);
测试仪(I)相反,您可以执行以下操作:

process(I)
begin
    tester    <= (others => '0');
    tester(I) <= '1';
end process;
过程(一)
开始
测试仪“0”);

测试仪(一)工作完美!非常感谢。我觉得自己有点傻,没有早点尝试。出于好奇-为什么这个语法有效,而另一个“tester'1',others=>'0');“不有效?”索引必须是常量,可能是为了简化;例如,如果执行
(a=>'1',b=>'0',…)
,以及a和b有时相同,如何处理;然后应该定义优先级。以顺序语句的形式编写可以使用其他定义的结构处理优先级问题。工作非常完美!非常感谢。我觉得自己有点傻,没有早点尝试。出于好奇-为什么这个语法有效,而另一个“tester'1',others=>'0');“不有效?”索引必须是常量,可能是为了简化;例如,如果执行
(a=>'1',b=>'0',…)
,以及a和b有时相同,如何处理;然后应该定义优先级。以顺序语句的形式编写可以使用其他定义的结构来处理优先级问题。