【发布时间】:2016-02-08 07:45:21
【问题描述】:
我已经完成了代码,它可以工作,但是,当我尝试编写测试台时,我遇到了一些麻烦。输入 x 设置为 8 位,x:IN BIT_VECTOR (N -1 DOWNTO 0)。 当我编写测试台时,我没有输入位数。
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
USE ieee.std_logic_unsigned.all;
ENTITY Count_ones IS
GENERIC (N: INTEGER := 8); -- number of bits
PORT ( x: IN BIT_VECTOR (N -1 DOWNTO 0); y: OUT NATURAL RANGE 0 TO N);
END ENTITY ;
architecture Behavioral of Count_ones is
TYPE count is Array (N DOWNTO 1) OF Natural;
signal a : count;
begin
a(0) <= 1 when (x(0) = '1')
else
0;
gen: FOR i IN N-1 DOWNTO 0
GENERATE
a(i+1) <= (a(i)+1) when (x(i)='0')
else
a(i);
END GENERATE;
y <= a(N-1);
end Behavioral;
测试台:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.all;
ENTITY Count_ones_TB IS
END Count_ones_TB;
ARCHITECTURE behavior OF Count_ones_TB IS
COMPONENT Count_ones
PORT(
x : IN std_logic_vector(7 downto 0);
y : OUT std_logic_vector(0 to 3)
);
END COMPONENT;
--Inputs
signal x : std_logic_vector(7 downto 0) := (others => '0');
--Outputs
signal y : std_logic_vector(0 to 3);
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: Count_ones PORT MAP (
x => x,
y => y
);
stim_proc: process
begin
x <= "00010101";
wait for 100 ns;
x <= "00001001";
wait for 100 ns;
x <= "11111111101"
wait for 100ns;
-- insert stimulus here
wait;
end process;
END;
错误是
实体端口 x 与组件端口的类型 std_logic_vector 不匹配 实体端口 y 与组件端口的 std_logic_vector 类型不匹配
请帮帮我,我真的想不出解决这个问题的方法。
【问题讨论】:
-
您有三个位置的字符串文字构造不正确,使用单引号而不是双引号。这些字符串值中的第三个值太长了。
x <= "00010101"; -- '00010101';、x <= "00001001"; -- 00001001';和 `x -
我得到了这个---实体端口x与组件端口的std_logic_vector类型不匹配,实体端口y与组件端口的std_logic_vector类型不匹配。
-
当我尝试模拟波形时,我尝试将 std_logic_vector 更改为 std_logic,但它仍然无法正常工作。非常感谢。,
-
您的组件声明描述了 std_logic_vector 类型的端口,但您的实体声明描述了 bit_vector 和 natural 的端口。
标签: vhdl