реклама на сайте
подробности

 
 
> Почему не работает case, но работает if-else
unixwz
сообщение Jan 30 2017, 10:51
Сообщение #1





Группа: Участник
Сообщений: 8
Регистрация: 25-01-17
Из: Russia
Пользователь №: 95 152



Здравствуйте, меня интересует почему не работает следующий код:
Код
case cmd is
    when C_ADD =>  q <= (f_op + s_op);
    when C_SUB =>  q <= (f_op - s_op);
    when others => null;
end case;


Но при этом если переписать под if-else, то будет работать.
Код
if (cmd = C_ADD) then
    q <= (f_op + s_op);
elsif (cmd = C_SUB) then
     q <= (f_op - s_op);
end if;


А самое интересное то, что при компиляции ошибок нет, но в ModelSim он отказывается симулировать схему, а именно загружать файл симуляции (не знаю как его правильно назывют - al_vhd_tst, который по тестбенчу работает), пишет:
# ** Error: (vsim-3173) Entity '/home/user/Development/freyacpu/cpu/simulation/modelsim/rtl_work.alu' has no architecture.
# Load interrupted
# Error loading design

И список сигналов соответственно не открывается. С if-else всё работает.

Возможно это одна из не синтезируемых конструкций? Прошу помощи у опытных людей!

Сообщение отредактировал unixwz - Jan 30 2017, 10:52
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
andrew_b
сообщение Jan 30 2017, 11:13
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(unixwz @ Jan 30 2017, 13:51) *
Здравствуйте, меня интересует почему не работает следующий код:
Код абсолютно нормальный. Причин может быть множество, но где-то в другом месте.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jan 30 2017, 11:28
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(andrew_b @ Jan 30 2017, 14:13) *
Код абсолютно нормальный. Причин может быть множество, но где-то в другом месте.

Поддерживаю. А зачем Вам АЛУ для светофора?


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
unixwz
сообщение Jan 30 2017, 11:53
Сообщение #4





Группа: Участник
Сообщений: 8
Регистрация: 25-01-17
Из: Russia
Пользователь №: 95 152



Цитата(iosifk @ Jan 30 2017, 14:28) *
Поддерживаю. А зачем Вам АЛУ для светофора?


Я так полагаю это случай так называемого сарказма.
Как мне выявить данную ошибку? В варнингах ничего особенного нет.

UPD: Всё спасибо, если скомпилировать vhd файлы по отдельности в ModelSIM, то будут показаны ошибки. Буду разбираться.

Сообщение отредактировал unixwz - Jan 30 2017, 11:53
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jan 30 2017, 12:36
Сообщение #5


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(unixwz @ Jan 30 2017, 14:53) *
Я так полагаю это случай так называемого сарказма.
Как мне выявить данную ошибку? В варнингах ничего особенного нет.

UPD: Всё спасибо, если скомпилировать vhd файлы по отдельности в ModelSIM, то будут показаны ошибки. Буду разбираться.

Modelsim не всегда все ошибки находит. Например я компилирую проект в Quartus'е и он находит ошибки там, где Modelsim их пропустил.
UPD: Вернее правильнее сказать, что есть некоторые недочёты, которые могут и не являться ошибками, которые ModelSIM не отмечает. Например неправильная передача сигналов между клоковыми доменами, неуказанный процесс в списке чувствительности, создание защёлки, несинхронизированный асинхронный сброс, и пр.

Сообщение отредактировал Flip-fl0p - Jan 30 2017, 12:53
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Jan 31 2017, 05:28
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Flip-fl0p @ Jan 30 2017, 15:36) *
UPD: Вернее правильнее сказать, что есть некоторые недочёты, которые могут и не являться ошибками, которые ModelSIM не отмечает. Например неправильная передача сигналов между клоковыми доменами, неуказанный процесс в списке чувствительности, создание защёлки, несинхронизированный асинхронный сброс, и пр.
Моделсим не телепат и не знает, что вы пишете. Он поддерживает все возможности языка, включая, разумеется, несинтезируемые конструкции, которые активно используются при написании тестбенчей. А вот то, что вы перечислили, является недочетами с точки зрения реализации в железе, но не с точки зрения языка. Тут вы сами должны понимать, что вы делаете.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01401 секунд с 7
ELECTRONIX ©2004-2016