【发布时间】:2022-01-19 00:36:55
【问题描述】:
尝试移植简单的测试设备以设置模拟时,我在 Vivado 中遇到此编译错误。当站在 'uut : testing_logic' 行时会发现这一点。我已经三次检查了逗号和分号,但无法弄清楚为什么我不断收到此错误。
我已经看到了这个问题 VHDL: formal port 'portName' has no actual or default value 和我的错误不一样。
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity testing_logic_TB is
end testing_logic_TB;
architecture Behavioral of testing_logic_TB is
-- Declare component to test
component testing_logic
port(
-- stuff in the component
--inputs
num : in std_logic_vector(4 downto 0);
btn_add : in std_logic;
btn_sub : in std_logic;
clk : in std_logic;
reset : in std_logic;
--Outputs
led : out std_logic_vector(15 downto 0)
);
end component;
-- Declare all signals to change inputs and check outputs
signal num_TB : std_logic_vector(4 downto 0);
signal btn_add_TB : std_logic := '0';
signal btn_sub_TB : std_logic := '0';
signal clk_TB : std_logic := '0';
signal reset_TB : std_logic := '0';
signal led_TB : std_logic_vector(15 downto 0);
-- Constants needed for simulation
constant CLK_PERIOD : time := 2 ns;
begin
uut : testing_logic
port map(
num : num_TB,
btn_add : btn_add_TB,
btn_sub : btn_sub_TB,
clk : clk_TB,
reset : reset_TB,
led : led_TB
);
--Change the clock
clk_change : process
begin
clk <= '0';
wait for CLK_PERIOD / 2;
clk <= '1';
wait for CLK_PERIOD / 2;
end process;
-- change reset
rst_change : process
rst <= '1';
wait for CLK_PERIOD * 10;
rst <= '0';
wait for CLK_PERIOD * 10;
rst <= '1';
wait for CLK_PERIOD * 10;
rst <= '0';
wait for CLK_PERIOD * 10;
end process;
-- change number
num_change : process
num_TB <= 10;
wait for CLK_PERIOD * 2;
num_TB <= 5;
wait for CLK_PERIOD * 2;
end process;
-- press add button
press_btn_add : process
btn_add_TB <= '1';
wait for CLK_PERIOD / 10;
btn_add_TB <= '0';
wait for CLK_PERIOD * 3;
end process;
-- press subtract button
press_btn_sub : process
wait for CLK_PERIOD * 3;
btn_sub_TB <= '1';
wait for CLK_PERIOD / 10;
btn_sub_TB <= '0';
end process;
end Behavioral;
【问题讨论】:
-
接口列表(例如端口映射方面)中的正式关联要么是位置的(按顺序列出关联的实际值,没有任何遗漏),要么是命名的(正式端口 => 实际信号)。您可以从位置关联切换到命名关联,但不能从命名关联切换(返回)到位置关联。您的进程 rst_change、num_change press_btn_add 和 press_btn_sub 都缺少保留字 begin。不能为 num_TB 分配整数文字。测试台中没有为分配的信号 clk、rst(SB clk_TB 和 reset_TB?)声明的信号。
-
所以您报告的错误是因为端口映射中的 : 而不是 => (错别字)。还有其他语法和语义错误。
-
天哪,谢谢!马上修好了。