如何修改VHDL计数器代码并正确地将向量转换为整数?
我们应该在VHDL中修改从学校得到的计数器的代码一两行,使其在a到B的范围内计数。这就是我们目前得到的如何修改VHDL计数器代码并正确地将向量转换为整数?,vhdl,counter,Vhdl,Counter,我们应该在VHDL中修改从学校得到的计数器的代码一两行,使其在a到B的范围内计数。这就是我们目前得到的 entity counter is generic ( B : integer := 4; A : integer := 0 ); port ( CLK : IN std_logic; RST : IN std_logic; Q : OUT std_logic_vector(log2(N)-1 downto 0) ); end cntn; architect
entity counter is
generic (
B : integer := 4;
A : integer := 0
);
port (
CLK : IN std_logic;
RST : IN std_logic;
Q : OUT std_logic_vector(log2(N)-1 downto 0)
);
end cntn;
architecture run01 of counter is
signal a0 : std_logic_vector(Q'range) := (others => '0');
begin
Q <= a0;
citac: process (RST, CLK)
begin
if RST='1' then
a0 <= (others => std_logic_vector(conv_integer(A, cnt'length)));
elsif rising_edge(CLK) then
a0 <= a0 + 1;
if a0 = A then
a0 <= (others => '0');
end if;
end if;
end process;
end architecture;
实体计数器不可用
一般的(
B:整数:=4;
A:整数:=0
);
港口(
CLK:标准逻辑中;
RST:标准逻辑中;
Q:输出标准逻辑向量(log2(N)-1到0)
);
末端碳纳米管;
计数器的结构run01为
信号a0:std_逻辑_向量(Q'范围):=(其他=>'0');
开始
Q使用ieee.numeric_std.all
软件包。那就写吧
a0 <= std_logic_vector(to_unsigned(A,a0'length));
a0使用ieee.numeric\u std.all
软件包。然后写a0哇,谢谢你,它似乎在工作@对我来说,这看起来非常像一个答案…代码不完整。什么是N
?什么是log2
?您的库在哪里?此代码甚至不会分析(甚至添加到缺少的上下文子句中。end ctn;
与实体名称(counter
)不匹配。在问题分配语句中也没有使用cnt
的声明。聚合(其他=>标准逻辑向量(conv\u整数(a,cnt'length)))
尝试分配整数值(虚构cnt的长度)当a0
的元素基类型为std\u ulogic时,非法转换为std\u logic\u vector的a0
的每个元素。就公认的答案而言,奇怪的是,为什么要将a0
的二进制长度指定给a0
。如果您建议使用numeric\u std
,您也可以建议a0
也可以是一个未签名的
类型…@JHBonarius这不是否决正确答案的理由。顺便说一句。我可以提出很多建议,但OP要求修复她源代码的一行。我发表评论,并不意味着我否决了答案。
a0 <= std_logic_vector(to_unsigned(A,a0'length));