РадиоКот :: Поле, засеянное Массивами Программируемых Калиток
Например TDA7294

РадиоКот >Обучалка >Микроконтроллеры и ПЛИС >Программируемая логика Altera - первые шаги >

Теги статьи: Добавить тег

Поле, засеянное Массивами Программируемых Калиток

Автор:
Опубликовано 01.01.1970

Начинаем курс лекций о том, что такое программируемая логика и как начать ее использовать на благо себя и ближнего своего…

ПЛИС - так ЭТО называется по-русски. Программируемая Логическая Интегральная Схема.
По-буржуйски это звучит несколько иначе - FPGA - Field of Programmable Gate Arrays. Дословно это переводится как "Поле, засеянное массивами программируемых калиток."
Если быть чуть серьезнее, можно назвать это "Матрица программируемых вентилей"

Что такое вентиль?
Совершенно верно, это в подвале такая хреновина на водопроводной трубе, которую если завинтишь, то весь дом останется без воды. Короче говоря, это то, что может закрываться и открываться.

Так вот, пусть для вас это будет откровением, но каждая микросхема состоит из вентилей. Правда, они не совсем похожи на то, что у вас и у меня в подвале. Но делают они то же самое - открываются и закрываются.

Вентиль - это элементарная составляющая любой цифровой микросхемы.

Даже самый навороченный супермегапроцессор состоит из вентилей. Их в нем много, очень много, просто целое море. Естественно, что в каждой микросхеме вентили соединены определенным образом. Собственно, от того, как они соединены, и зависит функциональность микросхемы.

В обычных микросхемах схема соединения вентилей задается при изготовлении, и в последствии ее изменить уже нельзя.
ПЛИС позволяет нам задавать эту схему самим, и изменять ее как нам заблагорассудится уже при "жизни" микросхемы. Достаточно лишь нарисовать схему на компютере и при помощи программатора прошить ее в микросхему ПЛИС.

Это в-общем.

На самом деле, все гораздо сложнее :) Смотрим на рисунок

Схема макроячейки (macrocell) микросхемы ПЛИС (FPGA)

Это есть одна макроячейка - Macrocell по-ихнему.
Каждая микросхема ПЛИС состоит из таких вот макроце… макроячеек. Как видно из схемы макроячейки, она состоит из блока Look-Up Table (LUT) - "Просмотровой таблицы", а также, триггера с синхронными и асинхронными входами и некоторой логики по входам триггера. Программируется, собственно, только LUT. Как видите, у нее 4 входа и один выход. Этот выход может быть подан как непосредственно на выход макроячейки (Q0), так на синхронный вход данных триггера (D).

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. Дык вот, последние две цифры в названии обозначают именно количество макроячеек в микросхеме.

Структурная схема микросхемы ПЛИС (FPGA)

Как видно из схемы, макроячейки объединяются в "блоки логических массивов" (LAB - Logic Array Block).
Эти блоки соединяются между собой через "программируемый массив внутренних соединений" - programmable interconnect array (PIA).
Кроме того, LAB"ы подключаются к выводам микросхемы через блоки управления ввода/вывода ( I/O Control Block).

При прошивке, в каждый из блоков "зашивается" своя информация:
- В Макроячейках программируются LUT"ы,
- в PIA зашивается информация о внутренних межблочных соединениях,
- в блоки управления ввода/вывода (I/O Control Block) зашивается информация о подключениях к ногам микросхемы.

По-серьезному, "прошивка" ПЛИС называется "загрузка конфигурации".

А как вы думаете, чем мы будем загружать конфигурацию???
Ну конечно же, старым добрым Байт Бластером! :) Байт бластер - это штука универсальная :) О том, как его сделать, подробнейшим образом я рассказывал вот здесь.

Настоятельно рекомендую изучить документ "ByteBlaster II Download Cable User Guide". В частности - 16 страничку, где дается распиновка разъема программирования.

Опять же, для ленивых, я любезно выдрал эту табличку и поместил сюда. В ней даны варианты подключения для трех режимов загрузки: AS, PS и JTAG. Мы будем пользоваться последним - JTAG.

Структурная схема микросхемы ПЛИС (FPGA)

На любой микросхеме ПЛИС, программируемой по JTAG, есть выводы с названиями:

TCK - тактовый сигнал
TDO - данные из микросхемы
TMS - сигнал управления
TDI - данные в микросхему.

Выводы Vcc и GND - это питание, "плюс" и "минус" соответственно. Они тоже есть на каждой микросхеме.

Для следующей статьи я бы порекомендовал заготовить вагон свободного времени и 44 метра входящего трафика. Будем изучать программу MAX+Plus II. А пока - все!

--Поехали дальше-->>




Как вам эта статья?

Заработало ли это устройство у вас?

19 0 0
2 1 0