VHDL中的泛型向量,赋值位置由变量确定
我有一个用VHDL编写的简单状态机。每个向量和变量的大小由一个通用常量“n”决定。这个想法是:当我改变“n”时,我想立即能够合成。设计的一部分是“N中的1”代码中的向量 端口和信号定义: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&
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有时相同,如何处理;然后应该定义优先级。以顺序语句的形式编写可以使用其他定义的结构来处理优先级问题。