aleshanoff 0 3 марта, 2017 Опубликовано 3 марта, 2017 · Жалоба Всем доброго времени суток, товарищи. Творю проектик на VHDL. Написал автомат pr_2 : process (clk1, start_uart, rst ) begin if clk1'event and clk1 ='1' then -- сброс if rst = '1' then st_type <= guard_time; else case st_type is when guard_time => -- режим ожидания if start_uart <= '1' then st_type <= byte31_24_time; else st_type <= guard_time; end if; when byte31_24_time => ------------------------------------------- st_type <= byte23_16_time; ---------------------------------------------- when byte23_16_time => ------------------------------------------- st_type <= byte7_0_time; ---------------------------------------------- when byte7_0_time => ------------------------------------------- st_type <= inc_adress; ---------------------------------------------- when inc_adress => if adress = adress_max-1 then st_type <= guard_time; adress <= 0; else adress <= adress + 1; st_type <=byte31_24_time; end if; when others => st_type <= guard_time; end case; end if; --- конец сброса end if; --- конец клока end process; Переходит из режима ожидания самостоятельно в следующую стадию. Перепробывал все, что знал. (а знаю я немного)) Помогите мне, пожалуйста. Прилагаю скрин ISim'a Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 8 3 марта, 2017 Опубликовано 3 марта, 2017 · Жалоба if start_uart <= '1' then st_type <= byte31_24_time; else st_type <= guard_time; end if; Судя по осциллограмме, у вас start_uart в нуле, соответственно, условие "меньше или равно 1" выполняется, и автомат переходит в состояние byte31_24_time. Что не так? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aleshanoff 0 3 марта, 2017 Опубликовано 3 марта, 2017 · Жалоба спасибо за ответ))) извините, что потратил ваше время. Бьюсь головой об стену от стыда)))) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться