Im пытается запрограммировать что-то довольно простое с помощью «VHDL». Но Im застрял с ним в течение нескольких часов, и я не могу найти способ заставить его работать.VHDL - не соответствует стандарту flipflop
Im пытается найти способ использовать один и тот же сигнал в другом процессе или объединить их в один процесс. Использование сигнала в разных процессах невозможно, и если я объединю их в один процесс, я получаю сообщение об ошибке «Не соответствует стандартным триггерам». Я надеюсь, что кто-нибудь может помочь мне и сказать, как я могу это исправить.
Пример кода;
process(scan_ready,rc5_ready)
variable welkescan : std_logic_vector(1 downto 0);
begin
if (scan_ready' event and scan_ready = '0') and not((rc5_ready' event and rc5_ready = '0')) then
welkescan := "01";
visualisatiegebruikt <= "0001";
visualisatiecode <= scan_code;
elsif (rc5_ready' event and rc5_ready = '0') and not((scan_ready' event and scan_ready = '0')) then
welkescan := "10";
visualisatiegebruikt <= "0010";
visualisatiecode <= scan_con;
else
welkescan := "00";
end if;
if ((welkescan = "01" and scan_code = "01110010") or (welkescan = "10" and scan_code = "00100001")) and (pwm_on /= "11111100") then
pwm_on <= pwm_on + 28;
visualisatiepwm <= visualisatiepwm + "0001";
elsif ((welkescan = "01" and scan_code = "01110101") or (welkescan = "10" and scan_code = "00100000")) and (pwm_on /= "00000000") then
pwm_on <= pwm_on - 28;
visualisatiepwm <= visualisatiepwm - "0001";
end if;
end process;
Я также попытался пример кода:
process(scan_ready)
begin
if scan_ready' event and scan_ready = '0' then
visualisatie <= "0001"; -- 1 op display => toetsenbord
scanwaarde(3 downto 0) <= scan_code(3 downto 0);
scanwaarde(7 downto 4) <= scan_code(7 downto 4);
if scan_code = "01110010" and pwmaansturen /= "11111100" then
pwmaansturen <= pwmaansturen + 28;
visualisatiepwm <= visualisatie + "0001";
elsif scan_code = "01110101" and pwmaansturen /= "00000000" then
pwmaansturen <= pwmaansturen - 28;
visualisatiepwm <= visualisatie - "0001";
elsif scan_code = "01110100" then
pwmaansturen <= "11111100";
visualisatiepwm <= "1001";
elsif scan_code = "01101011" then
pwmaansturen <= "00000000";
visualisatiepwm <= "0000";
end if;
end if;
end process;
process(rc5_ready)
begin
if rc5_ready' event and rc5_ready = '0' then
visualisatie <= "0010"; -- 2 op display => afstandsbediening
scanwaarde(3 downto 0) <= scan_con(3 downto 0);
scanwaarde(7 downto 4) <= scan_con(7 downto 4);
if scan_con = "00100001" and pwmaansturen /= "11111100" then
pwmaansturen <= pwmaansturen + 28;
visualisatiepwm <= visualisatie + "0001";
elsif scan_con = "00100000" and pwmaansturen /= "00000000" then
pwmaansturen <= pwmaansturen - 28;
visualisatiepwm <= visualisatie - "0001";
elsif scan_con = "00010110" then
pwmaansturen <= "11111100";
visualisatiepwm <= "1001";
elsif scan_con = "00010111" then
pwmaansturen <= "00000000";
visualisatiepwm <= "0000";
end if;
end if;
end process;
Я надеюсь, что кто-то может мне помочь. Приветствия.
Вы моделировали свой дизайн? Какую цепочку инструментов вы используете? Что такое платформа назначения (поставщик, семейство устройств fpga, ...)? – Paebbels
Я использую решетчатый алмаз, fpga, can not simulate, потому что у меня все еще есть эта ошибка. – Mech
Какой тип моделирования (поведенческий, постсинтез, почтовая карта, почтовое место и маршрут) вы используете? Поведенческая симуляция не должна знать о реальных типах флип-флопов. – Paebbels