Неустранимая ошибка: (vsim-3807) Типы компонентов и объектов для порта «out1» не совпадают без идентифицируемой причины

Я прочитал все другие вопросы, заданные с той же проблемой, но ни один из них не помог. Либо было дано недостаточно информации и поэтому вопрос остался без ответа, либо ответы не относились к моему случаю. Я получаю эту ошибку (как показано ниже), и я не могу понять, что ее вызывает.

# 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

Вот рассматриваемый код:

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;

В файле сигнала переходы переменных должны происходить каждые:

S0 = 50 нс

S1 = 100 нс

вход[0] = 200 нс

вход[1] = 400 нс

вход[2] = 800 нс

вход[3] = 1600 нс

inbus[4] = 3200 нс

inbus[5] = 6400 нс

inbus[6] = 12800 нс

inbus[7] = 25600 нс

И конечное время установлено на 51200ns

А вот файл LabNine.vho с рассматриваемой строкой:

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;

...

Любая помощь приветствуется! Если вас интересуют названия лабораторий, то лаборатория уже проводилась, и демультиплексор отлично работал во время физической демонстрации с платой DE10-Lite. Вот почему я еще больше озадачен тем, почему сейчас возникают проблемы с симуляцией.

исправлено, извините за это.

Frasher Gray 11.04.2023 01:54

похоже, вы используете функцию quartus, которая требует использования типов на основе std_logic для совместимости с автоматическим созданием тестового стенда. Поиск Verror для vsim-3807: «Сообщение vsim # 3807: тип порта объекта не соответствует типу порта компонента, который его создает». Либо используйте типы на основе std_logic, либо напишите свой собственный тестовый стенд.

user16145658 11.04.2023 04:25

Итак, вы говорите, что мои типы данных нужно изменить, или мне нужно импортировать библиотеку, чтобы сделать это менее подверженным ошибкам?

Frasher Gray 11.04.2023 19:27

Вы не показываете, где создается экземпляр компонента демультиплексора. В сообщении об ошибке говорится, что между компонентом и сущностью существуют несоответствия типов. Это можно исправить, только изменив объект и его архитектуру (архитектуры) или код, пытающийся создать его экземпляр. Вы не показываете последнее. Предоставьте минимальный воспроизводимый пример.

user16145658 11.04.2023 22:00

У меня нет никакого другого кода, кроме того, что я опубликовал.

Frasher Gray 12.04.2023 14:36

И вы все еще не опубликовали достаточно информации, чтобы воспроизвести проблему, описанную в сообщении об ошибке.

user16145658 12.04.2023 17:56

ой... черт возьми, ты прав. Я редактирую его сейчас.

Frasher Gray 12.04.2023 19:53

Процесс должен иметь inbus в списке чувствительности. Написанный вручную тестовый стенд может быть простым и переносимым между инструментами здесь ghdl и gtkwave имитируют тестовый стенд). В противном случае вам нужно будет перейти от типов на основе битов к типам на основе std_logic в конструкции демультиплексора.

user16145658 12.04.2023 21:26
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
9
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Несмотря на то, что он никоим образом не используется симулятором формы волны, вы должны иметь расположение контактов (и сделать это правильно), чтобы симуляция действительно работала.

Другие вопросы по теме