Изучаем САПР Altera Quartus II / Intel Quartus Prime, язык описания аппаратуры Verilog HDL и кое-что про VHDL. Программируем FPGA Altera / Intel Cyclone III, Cyclone IV, MAX II, MAX10. Экспериментируем с платами разработчика FPGA серии Марсоход, Марсоход2, Марсоход3. А еще разбираемся с FPGA Gowin.
Вот что написано в Википедии: "Mультиплексор — устройство, имеющее несколько сигнальных входов, один или более управляющих входов и один выход. Мультиплексор позволяет передать сигнал с одного из входов на выход; при этом выбор желаемого входа осуществляется подачей соответствующей комбинации управляющих сигналов".
На языке Verilog мультиплексор можно описать разными способами. Самый простой способ - это с использованием конструкции if-else.
reg q; always @* if(sel) q = a; else q = b;
Такой фрагмент кода Verilog можно представить в схемотехническом виде:
На нашем форуме прозвучал один интересный вопрос, ответить на который на самом деле оказалось не так и просто. Вопрос заключался в следующем: "Какие меры предосторожности следует предпринять перед прошивкой проекта в чип CPLD? Нужно ли опасаться испортить чип?".
Я не буду сейчас обращать внимание на правильность подачи напряжения питания. Это и так ясно. Полярность питания нужно не перепутать. Подавать больше +4.6В нельзя. Но я не об этом.
Я хотел бы особенно обратить внимание на пару моментов. Они в основном касаются назначений сигналов конкретным выводам микросхемы ПЛИС и свойствам выводов. Проблема в том, что у ПЛИС очень много пользовательских выводов и каждый из них может быть запрограммирован как вывод или как вход. Это с одной стороны очень приятная функция, но, с другой стороны, ее использование требует особой внимательности.
После создания игры Теннис и Теннис для двоих я долго раздумывал, можно ли сделать на плате Марсоход еще что нибудь эдакое. Проблем здесь на самом деле хватает и самая главная - это ограниченные ресурсы нашей микросхемы ПЛИС. Для создания более или менее сложной игры хорошо бы иметь память. Тот же Тетрис не сделать без памяти. Если стакан для Тетриса будет шириной 10 кубиков, а высота 20 кубиков, то вот уже нужно 200 бит только для хранения текущего состояния игры.
Поразмыслив, я решил оставить Тетрис "на потом", а пока попробовать сделать что нибудь попроще, например, игру "Питон". Дело оказалось очень непростое. И вот, потратив несколько вечеров, я сделал вот что:
Исторически сложилось так, что для описания цифровых схем используются некоторые элементы, содержащие в себе сразу оба типа логики, и комбинаторную, и регистровую. Поэтому хорошо-бы, с одной стороны, знать их функциональность, с другой, знать во что они будут откомпилированы квартусом.
Рассмотрим простой пример, синхронный "SR"-триггер описываемый примитивом "SRFF":
Подробнее...