toffeetan 0 26 января, 2017 Опубликовано 26 января, 2017 · Жалоба Здравствуйте. Дали задание написать программу "светофор" на VHDL. Нашел готовый, соответствующий всем условиям ответ Из книги Digital Systems Design Using VHDL Charles H. Roth, Jr, Lizy Kurian John . Код предоставлен в файле. Результат должен быть следующим. У меня такой результат не получается. Есть ли ошибка в коде программы? Спасибо ПС. с VHDL до сегодняшнего дня дела вообще не имел. home.vhd home.vhd Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jackov 1 26 января, 2017 Опубликовано 26 января, 2017 · Жалоба Дали задание написать программу "светофор" Может поможет: https://youtu.be/4QYPz04kVJs Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 26 января, 2017 Опубликовано 26 января, 2017 · Жалоба Здравствуйте. Дали задание написать программу "светофор" на VHDL. Нашел готовый"Такой" не получается, а какой же получается??? Крайне не рекомендую изучать VHDL таким способом, лучше самому исходя из задачи, из знаний языка, создать такой модуль самостоятельно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 26 января, 2017 Опубликовано 26 января, 2017 · Жалоба Здравствуйте. Дали задание написать программу "светофор" на VHDL. ПС. с VHDL до сегодняшнего дня дела вообще не имел. Могу объяснить, как это надо делать, если у Вас есть скайп+камера+микрофон.. Только завтра буду занят... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toffeetan 0 26 января, 2017 Опубликовано 26 января, 2017 · Жалоба Могу объяснить, как это надо делать, если у Вас есть скайп+камера+микрофон.. Только завтра буду занят... Был бы признателен. Как я могу с Вами связаться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 26 января, 2017 Опубликовано 26 января, 2017 · Жалоба Был бы признателен. Как я могу с Вами связаться? Скайп-адрес в личной карточке форума. Почтовый адрес узнаете у меня на сайте... Личные сообщения форума у меня работают... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 27 января, 2017 Опубликовано 27 января, 2017 (изменено) · Жалоба Почитайте для начала немного про цифровые автоматы, которым и является светофор. Информации по ссылке https://habrahabr.ru/post/254885/ вполне хватит, чтобы освоить способ описания цифрового автомата на языке VHDL. Ещё могу посоветовать посмотреть примеры автоматов, представленных в шаблонах кода, предоставленного средой разработки. Например в Quartus 13.1 шаблон можно вставить следующим образом: Edit --> Insert Template --> VHDL --> Full Designs --> State Machines --> Но, как Вам уже советовали выше, лучше разберитесь сами ничего сложного нет. Вот Вам для примера возможный вариант графа переходов состояний автомата светофора. В принципе у меня есть и готовый вариант описания светофора, с которого я и даю рисунок графа переходов. Но правильно ли я поступлю если выложу его сюда ? В качестве разумной альтернативы я выложу сюда вариант простейшего светофора с тремя состояниями: желтый, зелёный, красный. Ни один нормальный преподаватель этот вариант не примет поскольку он примитивен до безобразия. Да и назвать его светофором язык не поворачивается. Но разобравшись в автоматах, сделать из него нормальный светофор, который не стыдно показать преподавателю займет минут 10-15 времени. Удачи ! Вот выложу дополнительно текст схемы в сообщении. Иначе при загрузке возможно повреждение комментариев. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SVET IS PORT ( BUTTON :IN STD_LOGIC; --КНОПКА ПЕРЕКЛЮЧЕНИЯ РЕЖИМА РАБОТЫ СФЕТОФОРА CLK :IN STD_LOGIC; --СИНХРА OUTPUT_DATA :OUT STD_LOGIC_VECTOR (1 DOWNTO 0) --ВЫХОД СОСТОЯНИЯ СФЕТОФОРА ); END ENTITY; ARCHITECTURE RTL OF SVET IS TYPE STATE_TYPE IS --СОСТОЯНИЯ СВЕТОФОРА ( GREEN, YELLOW, RED ); SIGNAL NEXT_STATE, PRESS_STATE : STATE_TYPE := YELLOW; --СИГНАЛЫ ГДЕ ХРАНЯТСЯ ДАННЫЕ О СОСТОЯНИИ СВЕТОФОРА BEGIN PROCESS ( PRESS_STATE, BUTTON ) BEGIN CASE PRESS_STATE IS WHEN RED => -- ПЕРЕКЛЮЧЕНИЕ С КРАСНОГО IF (BUTTON = '1') THEN -- КОГДА НАЖИМАЕМ КНОПКУ NEXT_STATE <= GREEN; -- НА КРАСНО-ЖЕЛТЫЙ ELSE NEXT_STATE <= RED; -- Иначе остаёмся в текущем состоянии END IF; WHEN GREEN => -- ПЕРЕКЛЮЧАЕМ С ЗЕЛЕНОГО IF (BUTTON = '1') THEN -- КОГДА НАЖИМАЕМ КНОПКУ NEXT_STATE <= YELLOW; -- НА ЗЕЛЁНЫЙ МИГАЮЩИЙ ELSE NEXT_STATE <= GREEN; -- Иначе остаёмся в текущем состоянии END IF; WHEN YELLOW => -- ПЕРЕКЛЮЧАЕМ С ЖЕЛТОГО IF (BUTTON = '1') THEN -- КОГДА НАЖИМАЕМ КНОПКУ NEXT_STATE <= RED; -- НА КРАСНЫЙ ELSE NEXT_STATE <= YELLOW; -- Иначе остаёмся в текущем состоянии END IF; END CASE; END PROCESS; PROCESS ( CLK ) BEGIN IF (RISING_EDGE(CLK)) THEN PRESS_STATE <= NEXT_STATE; -- С КАЖДЫМ ФРОНТОМ CLK МЕНЯЕМ СОСТОЯНИЕ НА NEXT_STATE END IF; END PROCESS; PROCESS ( PRESS_STATE ) BEGIN CASE PRESS_STATE IS WHEN GREEN => OUTPUT_DATA <= "00"; -- Выдаем хоть что-то на выход WHEN YELLOW => OUTPUT_DATA <= "01"; -- Выдаем хоть что-то на выход WHEN RED => OUTPUT_DATA <= "10"; -- Выдаем хоть что-то на выход END CASE; END PROCESS; END ARCHITECTURE; SVET.vhd Изменено 27 января, 2017 пользователем Flip-fl0p Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться