![]() |
![]() |
|||||||||||||||
Поле, засеянное Массивами Программируемых Калиток
Автор: Начинаем курс лекций о том, что такое программируемая логика и как начать ее использовать на благо себя и ближнего своего…
ПЛИС - так ЭТО называется по-русски. Программируемая Логическая Интегральная Схема.
Что такое вентиль? Так вот, пусть для вас это будет откровением, но каждая микросхема состоит из вентилей. Правда, они не совсем похожи на то, что у вас и у меня в подвале. Но делают они то же самое - открываются и закрываются. Вентиль - это элементарная составляющая любой цифровой микросхемы. Даже самый навороченный супермегапроцессор состоит из вентилей. Их в нем много, очень много, просто целое море. Естественно, что в каждой микросхеме вентили соединены определенным образом. Собственно, от того, как они соединены, и зависит функциональность микросхемы.
В обычных микросхемах схема соединения вентилей задается при изготовлении,
и в последствии ее изменить уже нельзя. Это в-общем. На самом деле, все гораздо сложнее :) Смотрим на рисунок ![]()
Это есть одна макроячейка - Macrocell по-ихнему. LUT - это ни что иное как ПЗУ на 16 1-битных ячеек. При подаче на входы LUT (D0…D3) некой комбинации цифровых сигналов, она воспринимает их как адрес и выдает на выход содержимое ячейки по этому адресу. Вообще, любая схема из логических элементов, у которой 4 входа (или меньше) и один выход, может быть описана таблицей истинности в 16 строк. Например, возьмем вот такую несложную схему, и напишем для нее таблицу истинности: ![]() Таблица истинности описывает логический уровень выхода схемы (Q) для всех возможных комбинаций сигналов на входах (D0…D3). Точно так же в LUT каждой комбинации входных сигналов (читай - каждому адресу ПЗУ) сопоставлен свой выходной сигнал. То есть, в LUT прошивается таблица истинности той схемы, которую мы хотим видеть на его месте. Вот так все просто! Если схема содержит более 4 входов или более 1 выхода - используются LUT нескольких макроячеек. Но самое главное - это триггер. Ведь, как вы знаете (а может, еще не знаете), все регистры, счетчики и многие другие элементы цифровой техники состоят именно из триггеров. Так вот, количество макроячеек в микросхеме ПЛИС определяет количество триггеров. И наоборот :) Так что, выбирая микросхему для какого-либо проекта, надо предварительньно прикинуть, сколько триггеров будет в схеме, и брать с запасом… На рисунке чуть ниже изображена структурная схема микросхем серии EPM7000 фирмы Altera Эта картинка дернута из даташита https://www.altera.com/literature/ds/m7000.pdf Она относится к микросхемам EPM7032, EPM7064, EPM7096. Дык вот, последние две цифры в названии обозначают именно количество макроячеек в микросхеме. ![]()
Как видно из схемы, макроячейки объединяются в "блоки логических массивов" (LAB - Logic Array Block).
При прошивке, в каждый из блоков "зашивается" своя информация: По-серьезному, "прошивка" ПЛИС называется "загрузка конфигурации".
А как вы думаете, чем мы будем загружать конфигурацию??? Настоятельно рекомендую изучить документ "ByteBlaster II Download Cable User Guide". В частности - 16 страничку, где дается распиновка разъема программирования. Опять же, для ленивых, я любезно выдрал эту табличку и поместил сюда. В ней даны варианты подключения для трех режимов загрузки: AS, PS и JTAG. Мы будем пользоваться последним - JTAG. ![]() На любой микросхеме ПЛИС, программируемой по JTAG, есть выводы с названиями:
TCK - тактовый сигнал Для следующей статьи я бы порекомендовал заготовить вагон свободного времени и 44 метра входящего трафика. Будем изучать программу MAX+Plus II. А пока - все!
|
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |