По сути, вы не можете использовать, если вне процесса.
Кроме того, не используйте std_logic_arith
, используйте numeric_std
- http://parallelpoints.com/node/3
Для исправления, создания процесса или использования правильного комбинаторного синтаксиса, предложенного Патриком..
То, как вы это делаете в настоящее время, должно быть комбинаторным процессом , поэтому будьте осторожны, чтобы получить все ваши входные данные в списке чувствительности или использовать новыйVHDL-2008 process(all)
синтаксис.Зависит от того, какую версию ISE вы используете, от того, поддерживается ли она.
Или сделайте это синхронным процессом - так пишется большая часть кода для ПЛИС.
Добавьте вход clk
к вашей сущности, а затем поместите свой код if/elsif/else
в синхронный процесс:
process (clk)
begin
if thermo_input < "1000" then
.... etc
end process;
Наконец, вы не используете AND
, чтобы сделать нескольковещи происходят одновременно:
IF thermo_input < "1000" THEN
too_cold <='1'; -- semicolons here, not ANDs!
too_hot <='0';
just_right <='0';
- правильный путь!