英文:
Fatal: (vsim-3807) Types do not match between component and entity for port "out1" Without Identifiable Cause
问题
I've translated the code and provided it below:
我已阅读所有其他与同一问题相关的问题,但它们都没有帮助。要么提供的信息不足,问题无法回答,要么答案与我的情况不符。我遇到了以下错误(如下所示),我无法弄清楚是什么导致了这个错误。
# vsim -novopt -c -t 1ps -L fiftyfivenm -L altera -L altera_mf -L 220model -L sgate -L altera_lnsim work.demultiplexer_vhd_vec_tst
# 开始时间:2023年4月10日19:44:15
# 加载 std.standard
# 加载 std.textio(body)
# 加载 ieee.std_logic_1164(body)
# 加载 work.demultiplexer_vhd_vec_tst(demultiplexer_arch)
# 加载 ieee.vital_timing(body)
# 加载 ieee.vital_primitives(body)
# 加载 fiftyfivenm.fiftyfivenm_atom_pack(body)
# 加载 fiftyfivenm.fiftyfivenm_components
# 加载 work.demultiplexer(structure)
# ** 致命错误:(vsim-3807) 组件和实体的“out1”端口之间的类型不匹配。
# 时间:0 ps 迭代:0 实例:/demultiplexer_vhd_vec_tst/i1 文件:LabNine.vho 行:39
# 设计加载时出现严重错误
# 设计加载错误
# 结束时间:2023年4月10日19:44:15,经过时间:0:00:00
# 错误:1 警告:0
错误
以下是相关代码:
实体解复用器
PORT(out1:OUT BIT_VECTOR(0 TO 7);
out2:OUT BIT_VECTOR(0 TO 7);
out3:OUT BIT_VECTOR(0 TO 7);
CLR:OUT BIT;
inbus:IN BIT_VECTOR(0 TO 7);
S0:IN BIT; S1:IN BIT);
END解复用器;
解复用器的数据流结构
BEGIN
过程(S0,S1)
开始
IF(S0 = '0')和(S1 = '0')THEN
CLR <= '1';
ELSIF(S0 = '1')和(S1 = '0')THEN
out1(0)<= inbus(0);
out1(1)<= inbus(1);
out1(2)<= inbus(2);
out1(3)<= inbus(3);
out1(4)<= inbus(4);
out1(5)<= inbus(5);
out1(6)<= inbus(6);
out1(7)<= inbus(7);
CLR <= '0';
ELSIF(S0 = '0')和(S1 = '1')THEN
out2(0)<= inbus(0);
out2(1)<= inbus(1);
out2(2)<= inbus(2);
out2(3)<= inbus(3);
out2(4)<= inbus(4);
out2(5)<= inbus(5);
out2(6)<= inbus(6);
out2(7)<= inbus(7);
CLR <= '0';
ELSIF(S0 = '1')和(S1 = '1')THEN
out3(0)<= inbus(0);
out3(1)<= inbus(1);
out3(2)<= inbus(2);
out3(3)<= inbus(3);
out3(4)<= inbus(4);
out3(5)<= inbus(5);
out3(6)<= inbus(6);
out3(7)<= inbus(7);
CLR <= '0';
END IF;
END process;
END数据流;
在波形文件中,变量的过渡被设置为每次发生:
S0 = 50ns
S1 = 100ns
inbus[0] = 200ns
inbus[1] = 400ns
inbus[2] = 800ns
inbus[3] = 1600ns
inbus[4] = 3200ns
inbus[5] = 6400ns
inbus[6] = 12800ns
inbus[7] = 25600ns
结束时间设置为51200ns
以下是LabNine.vho文件,其中包含相关行:
架构结构的解复用器
信号 gnd:std_logic:= '0';
信号 vcc:std_logic:= '1';
信号未知:std_logic:= 'X';
信号 devoe:std_logic:= '1';
信号 devclrn:std_logic:= '1';
信号 devpor:std_logic:= '1';
信号 ww_devoe:std_logic;
信号 ww_devclrn:std_logic;
信号 ww_devpor:std_logic;
信号 ww_out1:std_logic_vector(0 TO 7);
信号 ww_out2:std_logic_vector(0 TO 7);
信号 ww_out3:std_logic_vector(0 TO 7);
信号 ww_CLR:std_logic;
信号 ww_inbus:std_logic_vector(0 TO 7);
信号 ww_S0:std_logic;
信号 ww_S1:std_logic;
信号 \out1[7]~output_o\:std_logic;
信号 \out1[6]~output_o\:std_logic;
信号 \out1[5]~output_o\:std_logic;
信号 \out1[4]~output_o\:std_logic;
信号 \out1[3]~output_o\:std_logic;
信号 \out1[2]~output_o\:std_logic;
信号 \out1[1]~output_o\:std_logic;
信号 \out1[0]~output_o\:std_logic;
信号 \out2[7]~output_o\:std_logic;
信号 \out2[6]~output_o\:std_logic;
信号 \out2[5]~output_o\:std_logic;
信号 \out2[4]~output_o\:std_logic;
信号 \out2[3]~output_o\:std_logic;
信号 \out
英文:
I've read all the other questions asked with the same issue, but none of them were helpful. Either not enough information was given and so the question remained unanswered, or the answers didn't apply to my case. I'm getting this error (as shown below) and I can't figure out what is causing it.
# vsim -novopt -c -t 1ps -L fiftyfivenm -L altera -L altera_mf -L 220model -L sgate -L altera_lnsim work.demultiplexer_vhd_vec_tst
# Start time: 19:44:15 on Apr 10,2023
# Loading std.standard
# Loading std.textio(body)
# Loading ieee.std_logic_1164(body)
# Loading work.demultiplexer_vhd_vec_tst(demultiplexer_arch)
# Loading ieee.vital_timing(body)
# Loading ieee.vital_primitives(body)
# Loading fiftyfivenm.fiftyfivenm_atom_pack(body)
# Loading fiftyfivenm.fiftyfivenm_components
# Loading work.demultiplexer(structure)
# ** Fatal: (vsim-3807) Types do not match between component and entity for port "out1".
# Time: 0 ps Iteration: 0 Instance: /demultiplexer_vhd_vec_tst/i1 File: LabNine.vho Line: 39
# FATAL ERROR while loading design
# Error loading design
# End time: 19:44:15 on Apr 10,2023, Elapsed time: 0:00:00
# Errors: 1 Warnings: 0
Error
Here is the code in question:
ENTITY demultiplexer IS
PORT ( out1 : OUT BIT_VECTOR (0 TO 7);
out2 : OUT BIT_VECTOR (0 TO 7);
out3 : OUT BIT_VECTOR (0 TO 7);
CLR : OUT BIT;
inbus : IN BIT_VECTOR(0 TO 7);
S0 : IN BIT; S1 : IN BIT);
END demultiplexer;
ARCHITECTURE dataflow OF demultiplexer IS
BEGIN
process(S0, S1)
BEGIN
IF (S0 = '0') and (S1 = '0') THEN
CLR <= '1';
ELSIF (S0 = '1') and (S1 = '0') THEN
out1(0) <= inbus(0);
out1(1) <= inbus(1);
out1(2) <= inbus(2);
out1(3) <= inbus(3);
out1(4) <= inbus(4);
out1(5) <= inbus(5);
out1(6) <= inbus(6);
out1(7) <= inbus(7);
CLR <= '0';
ELSIF (S0 = '0') and (S1 = '1') THEN
out2(0) <= inbus(0);
out2(1) <= inbus(1);
out2(2) <= inbus(2);
out2(3) <= inbus(3);
out2(4) <= inbus(4);
out2(5) <= inbus(5);
out2(6) <= inbus(6);
out2(7) <= inbus(7);
CLR <= '0';
ELSIF (S0 = '1') and (S1 = '1') THEN
out3(0) <= inbus(0);
out3(1) <= inbus(1);
out3(2) <= inbus(2);
out3(3) <= inbus(3);
out3(4) <= inbus(4);
out3(5) <= inbus(5);
out3(6) <= inbus(6);
out3(7) <= inbus(7);
CLR <= '0';
END IF;
END process;
END dataflow;
In the waveform file, the variables' transitions are set to occur every:
S0 = 50ns
S1 = 100ns
inbus[0] = 200ns
inbus[1] = 400ns
inbus[2] = 800ns
inbus[3] = 1600ns
inbus[4] = 3200ns
inbus[5] = 6400ns
inbus[6] = 12800ns
inbus[7] = 25600ns
And the end time is set to 51200ns
And here is the LabNine.vho file, with the line in question:
ARCHITECTURE structure OF demultiplexer IS
SIGNAL gnd : std_logic := '0';
SIGNAL vcc : std_logic := '1';
SIGNAL unknown : std_logic := 'X';
SIGNAL devoe : std_logic := '1';
SIGNAL devclrn : std_logic := '1';
SIGNAL devpor : std_logic := '1';
SIGNAL ww_devoe : std_logic;
SIGNAL ww_devclrn : std_logic;
SIGNAL ww_devpor : std_logic;
SIGNAL ww_out1 : std_logic_vector(0 TO 7);
SIGNAL ww_out2 : std_logic_vector(0 TO 7);
SIGNAL ww_out3 : std_logic_vector(0 TO 7);
SIGNAL ww_CLR : std_logic;
SIGNAL ww_inbus : std_logic_vector(0 TO 7);
SIGNAL ww_S0 : std_logic;
SIGNAL ww_S1 : std_logic;
SIGNAL \out1[7]~output_o\ : std_logic;
SIGNAL \out1[6]~output_o\ : std_logic;
SIGNAL \out1[5]~output_o\ : std_logic;
SIGNAL \out1[4]~output_o\ : std_logic;
SIGNAL \out1[3]~output_o\ : std_logic;
SIGNAL \out1[2]~output_o\ : std_logic;
SIGNAL \out1[1]~output_o\ : std_logic;
SIGNAL \out1[0]~output_o\ : std_logic;
SIGNAL \out2[7]~output_o\ : std_logic;
SIGNAL \out2[6]~output_o\ : std_logic;
SIGNAL \out2[5]~output_o\ : std_logic;
SIGNAL \out2[4]~output_o\ : std_logic;
SIGNAL \out2[3]~output_o\ : std_logic;
SIGNAL \out2[2]~output_o\ : std_logic;
SIGNAL \out2[1]~output_o\ : std_logic;
SIGNAL \out2[0]~output_o\ : std_logic;
SIGNAL \out3[7]~output_o\ : std_logic;
SIGNAL \out3[6]~output_o\ : std_logic;
SIGNAL \out3[5]~output_o\ : std_logic;
SIGNAL \out3[4]~output_o\ : std_logic;
SIGNAL \out3[3]~output_o\ : std_logic;
SIGNAL \out3[2]~output_o\ : std_logic;
SIGNAL \out3[1]~output_o\ : std_logic;
SIGNAL \out3[0]~output_o\ : std_logic;
...
Any and all help is appreciated! If you're curious about the lab names, the lab has already happened, and the demultiplexer worked perfectly during the physical demonstration with the DE10-Lite board. Which is why I'm even more perplexed at why it is having an issue now, for the simulation.
答案1
得分: 0
尽管波形模拟器没有以任何方式使用它,但为了模拟实际工作,您必须确保引脚分配已经布置并正确完成。
英文:
Despite not being used by the waveform simulator in any way, you have to have the pin assignments laid out (and done correctly) in order for the simulation to actually work.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论