如何修改VHDL计数器代码并正确地将向量转换为整数?

时间:2018-03-16 06:56:02

标签: 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;

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;

到目前为止,我们已经添加了这段代码

a0 <= (others => std_logic_vector(conv_integer(A, cnt'length)));

但转换似乎存在问题。有没有人知道如何解决这个问题?我对VHDL很陌生,所以我在这个时候有点困难。

1 个答案:

答案 0 :(得分:1)

使用ieee.numeric_std.all包。然后写下

a0 <= std_logic_vector(to_unsigned(A,a0'length));