Я изучаю VHDL, и со вчерашнего дня я боролся с этим простым примером ниже.
Запись сущности в VHDL для счетчика от нуля (0) до девяти (9), запускаемого синхроимпульсом положительного фронта и имеющего асинхронный активный высокий «вход в ноль».Система имеет три (3) выходных сигнала «НИЗКИЙ», «СРЕДНИЙ» и «ВЫСОКИЙ», которые генерируют следующие значения:
Предположим, что все сигналы имеют тип Std_logic.
Код такой:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;
ENTITY LMHcounter IS
PORT(clk,reset:in std_logic;
L:out std_logic;
M:out std_logic;
H:out std_logic);
END LMHcounter;
ARCHITECTURE behavior OF UPcounter IS
SIGNAL count:std_logic_vector(3 downto 0);
BEGIN
PROCESS(clk,reset)
BEGIN
if reset='1' then count<="0000";
elsif (rising_edge(clk))then
if count<="1001" then
count<="0000";
else count<=count+"0001";
end if;
end if;
END PROCESS;
L<='1' when count<="0101";
else '0';
M<='1' when count="0110";
else '0';
H<='1' when count>="0111";
else '0';
END behavior;
Если я использую L = '1' в конце я получу;
Error: C:/DL_Project/LMH Counter.vhd(29): near "=": (vcom-1576) expecting == or '+' or '-' or '&'.
Если я использую L <= <strong>'1' в конце, я получу;
Error: C:/DL_Project/LMH Counter.vhd(29): Illegal target for signal assignment.
Error: C:/DL_Project/LMH Counter.vhd(29): (vcom-1136) Unknown identifier "L".
Error: C:/DL_Project/LMH Counter.vhd(30): near "else": (vcom-1576) expecting END.
Я не могу использовать ': =' в качестве явно модельногоне поддерживает
Error: C:/DL_Project/LMH Counter.vhd(29): (vcom-1441) CONDITIONAL VARIABLE ASSIGNMENT is not defined for this version of the language.
** Error: C:/DL_Project/LMH Counter.vhd(30): near "else": (vcom-1576) expecting END.
Я уверен, что это тривиально, но я нигде не могу найти ответ.А также может кто-нибудь объяснить, пожалуйста, что происходит в фоновом режиме, если я использую '=' или '<='? </p>
Спасибо