Понятно, что серьезные проекты в Quartus'е не рисуют, а пишут на разных HDL'ах, но мне кажется, что для начальных экспериментов графический дизайн вполне имеет право на жизнь. Особенно, если раньше уже приходилось сидеть с паяльником.
Именно поэтому решил создать выделенную тему, в которой можно обсудить все эти вопросы. Хотя, если честно, пока больше задать свои собственные, совсем глупые :)
Кстати, повторю здесь полезную ссылку по теме -
marsohod.org/11-blog/145-quartussch
- позволяет быстро начать реализовывать простейшие, но уже работающие вещи.
Итак, решил попробовать собрать некоторую конструкцию, в которой используется куча микросхем 155/555 серии, а также несколько корпусов посерьезнее. Чтобы не возиться с мелочевкой, захотелось впихнуть ее в MAX 7000S. Понятно, что серия устаревшая, зато работает от 5В и есть вариант в корпусе PLC100, который и паять на макетке легко, и ножек как раз хватает для моего проекта.
Набросал большую часть схемы вообще в лоб, пользуясь примитивами - эмуляторами реальных микросхем, которые достались Quartus'у еще от MaxPlus2 (предыдущий софт Altera для работы с CPLD). Буквально за вечер сделал и запустил то, на что раньше ушло бы минимум дней 5 с паяльником. И это с учетом того, что пришлось установить и начать осваивать Quartus !
В какой-то момент не захотел делать явную глупость - использовать 4 мультиплексора, тогда как, если не привязываться к реальным микросхемам, можно сгенерить один мультиплексор нужного размера. И вот тут ожидала проблема, которую пока не смог решить.
Итак, первая часть:
Вставляю символ из megafunctions -> gates -> busmux. У этой мегафункции есть один параметр - WIDTH, определяющий, естественно, разрядность шин. Устанавливаю Value этого параметра в 4. Есть еще Type, устанавливал в разные значения, вроде ни на что не влияло (оставил в auto).
Через правый клик мышки выбираю "Generate pins for Symbol ports". И вот тут уже видна проблема - вместо 4-х пинов на каждую шину сфорировано только по одному, да еще и со странным именем datax[WIDTH-1..0]. Я догадываюсь, что вместо "WIDTH-1" должно быть "3", чтобы иметь 4 пина datax[3..0] для шины шириной 4, но почему-то Quartus не сгенерил символ, а просто вставил полуфабрикат. Естественно, проект по этой причине не компилируется... Как не бился, так и не смог победить. Заметно дальше удалось продвинуться, использовав Megafunction wizard, но и там натолкнулся на ряд проблем. Впрочем, все по порядку. Люди, скажите, что я не так делаю ???