Ретро-ПЛИС

У меня есть давняя мечта – подключить память к AVR!
Увы, просто подключить память не интересно, а хочется разнообразия: портов, индикаторов, etc. А значит нужна ПЛИС. Изначально я хотел взять что-то типа EPM3032, но, мне захотелось DIP корпус и очень не хотелось учить Verilog/VHDL.

Первым шагом к решению стал магазин Вольтмастер, в котором я случайно нашел PAL16. К сожалению, в процессе поисков обнаружилось, что PAL16 однократно программируема. Программатор найти невозможно. К тому же, прошивку для неё надо писать на PALASM. Зато нашлась GAL16, и даже схема самодельного программатора под неё. Но, не срослось.
Следующий шаг я тоже сделал случайно. Рыская в интернете увидел скан странички с описанием внутренностей PAL/GAL/PLA. Это оказалась книжка Хилл-Хоровица 🙂
Увидев её я сильно удивился, потому что издание, стоявшее у меня на полке, этого раздела не имело!
В результате прочтения главы о ПЛИС я выяснил, что существует язык CUPL, который хорошо подходит для мелких ПЛИС. И что существует свободно распространяемый “компилятор” для этого языка – WinCUPL. На данный момент его раздаёт фирма Atmel. Пожалуй единственный минус – это ограниченное число ПЛИС, которые зашиты внутрь WinCUPL.
К счастью, на выходе компилятора получается универсальный код (jedec), который можно зашить и в ATF16 (Atmel) и в GAL16. Вообще говоря ATF16 позволяет эмулировать три разных семейства GAL16.
Ещё из ХиХ стало понятно, что GAL16 имеют достаточно простую структуру, которую можно нарисовать в виде логических элементов на одной страничке А4. А прошивка jedec, по сути своей, указывает набор перемычек, которые соединяют отдельные ножки этих логических элементов. Короче, сложность ПЛИС+компилятор оказалась весьма небольшой и это очень здорово!
В процессе я вспомнил, что у меня есть давнее желание прикупить программатор – MiniPro. Я бы его и так прикупил, ибо он умеет шить PIC/AVR, а тут ещё и GAL-ы нашлись в списке поддерживаемых микросхем!
Программатор я немедленно заказал на ebay-е. Заодно заказал ATF16 и GAL16.
MiniPro.jpg
В следующие три недели я читал хелп на WinCUPL, который какой-то добрый человек перегнал из формата hlp в формат pdf, сделав фактически одну большую книжку. Правда, в книжке потерялась часть картинок, но на чтение это почти не повлияло 🙂
Заодно поставил WinCUPL и написал простейшую прошивку для управления всяким добром от AVR.

Через три недели я торжественно воткнул в панельку программатора чистенькую ATF16, нажал кнопку Program и… обломался. С досады я нажал кнопку ещё пару раз, пока не получил от софтины программатора сообщение вида “наверное вы вставили микросхему вверх ногами, или вставили вместо неё пинцет” (шутка). В панике я воткнул в программатор следующую микросхему и “о чудо”, она нормально прошилась! Всё-таки покупать на ebay-е микросхемы – не очень хорошая идея 🙂
Дальше я сделал тестовый стенд и убедился, что ПЛИС действительно делает то, что нужно.
BreadBoard.jpg
Profit!