Fillya 0 26 мая, 2021 Опубликовано 26 мая, 2021 (изменено) · Жалоба Доброго времени суток! Исключительно для себя (в свободное время) решил попробовать создать простую комбинационную схему. На ПЛИС Cyclone 4 EP...C8 на отладочной плате (полное название в проекте), при работе в среде Quartus 18 конечная программа работает не как ожидается. Я не могу понять причину, схема простая и составлена верно, все предупреждения, насколько я понял незначительны. Файлы проекта прилагаю в архиве. Сверху проверка на неправильное подключение, снизу искомая комбинационная схема Таблица истинности следующая (кнопки и светодиод) X1 X2 X3 Y1 Из чего при загрузке в ПЛИС получаем X1 X2 X3 Y1 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 0 1 0 1 0 1 1 Остальные комбинации нулевые Не все остальные комбинации нулевые PRJ-QVR0 - Begin.7z Изменено 26 мая, 2021 пользователем Fillya Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба У AND3(inst1) первый вход pin1, а второй ~pin1. Это всегда 0 - поэтому не имеет смысла, и значит у вас где-то ошибка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fillya 0 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба 1 минуту назад, adnega сказал: У AND3(inst1) первый вход pin1, а второй ~pin1. Это всегда 0 - поэтому не имеет смысла, и значит у вас где-то ошибка. Я вижу на схеме, что AND3 (Inst1) подключён первым выводом к pin_name1, а вторым к pin_name2 и боле нигде соединений, обозначенных точками, не наблюдается Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ivanii 2 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба inst1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба Цитата X1 X2 X3 Y1 0 1 0 1 1 1 0 1 Остальные комбинации нулевые Y1 = (~X1 * X2 * ~X3) + (X1 * X2 * ~X3) - т.е. элемент ИЛИ у вас должен быть двухвходовый, а не трехвходовый. и можно упростить до Y1 = X2 * ~X3. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 199 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба 2 часа назад, Fillya сказал: создать простую комбинационную схему. На ПЛИС wire [2:0] X; wire Y; always @(X) case(X) 0 : Y = 1'b0; 1 : Y = 1'b0; 2 : Y = 1'b1; 3 : Y = 1'b1; 4 : Y = 1'b0; 5 : Y = 1'b0; 6 : Y = 1'b0; 7 : Y = 1'b0; endcase Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ivanii 2 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба Так не проще? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fillya 0 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба 3 часа назад, adnega сказал: У AND3(inst1) первый вход pin1, а второй ~pin1. Это всегда 0 - поэтому не имеет смысла, и значит у вас где-то ошибка. 2 часа назад, Ivanii сказал: inst1 Да, увидел ошибку. Смотреть в этой программе явно нужно внимательней 2 часа назад, Plain сказал: wire [2:0] X; wire Y; always @(X) case(X) 0 : Y = 1'b0; 1 : Y = 1'b0; 2 : Y = 1'b1; 3 : Y = 1'b1; 4 : Y = 1'b0; 5 : Y = 1'b0; 6 : Y = 1'b0; 7 : Y = 1'b0; endcase Для языков рановато, сначала на основе графического редактора отработать пару программ без различных ошибок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба 4 hours ago, Fillya said: X1 X2 X3 Y1 0 0 0 0 0 1 0 1 1 1 0 1 1 0 1 0 Внимательный наплюдатель может заметить, что из таблицы истинности выплывает следующая функция для Y: Y=X2 Не знаю какие танци с бубном Вы проводите, но в данном случае нужно или сделать адекватную таблицу входам (2 входа 1 выход - простой лог элемент), либо расширить текущую для больших значений. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба Если можно описать схему на языке, то это и надо сделать. Просто опишите таблицу в каком-либо виде. Не надо соревноваться с оптимизирующим синтезатором и вручную минимизировать логические функции. Синтезатор сделает это за вас и не хуже вас, поверьте. "Машина должна работать, человек -- думать". (девиз МежДелМаш) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 199 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба 1 час назад, Fillya сказал: Для языков рановато, сначала на основе графического редактора отработать пару программ Даже если применение лишь кнопки и светодиоды, всё равно языками сильно проще, а главное быстрее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба 1 час назад, Nick_K сказал: Внимательный наплюдатель может заметить, что из таблицы истинности выплывает следующая функция для Y: Требуется внимательность в квадрате, ибо таблица не полная, а Цитата Остальные комбинации нулевые поэтому не Y = X2, а Y = X2 * ~X3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба 2 minutes ago, adnega said: Требуется внимательность в квадрате, ибо таблица не полная Согласен. Просто на что было приведено пример - на то и ответил) Утром ещё не до конца подгрузилась внимательность))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться