Программируемые пользователем вентильные матрицы (FPGA).
Программируемые интегральные микросхемы CPLD предназначены для применения в цифровых устройствах с большим количеством логических элементов. Кроме того, в CPLD трудно обеспечить эффективное применение всех макроячеек. Всегда часть макроячеек остается неиспользуемыми. Часто из макроячейки используется только триггер или логический элемент "2И" ("2ИЛИ"). Остальная часть схемы зря занимает площадь кристалла и потребляет ток от источника питания.
Для реализации сложных цифровых схем удобно применять программируемые логические схемы (ПЛИС), обладающие большей логической вместимостью и большей степенью использования кристалла. В качестве подобных микросхем и можно назвать программируемые пользователем вентильные матрицы (FPGA — Field- Programmable Gate Array). Принцип работы FPGA существенно отличаются от принципа работы CPLD. FPGA является наследником комбинационных схем, реализованных на постоянных запоминающих устройствах (ПЗУ). Обобщенная структура микросхем FPGA приведена на рисунке 6.1.
Рисунок 6.1. Обобщенная структура микросхем FPGA
Типовая схема программируемой интегральной микросхемы FPGA состоит из трех видов блоков: логические блоки, блоки ввода-вывода, предназначенные для обмена сигналами через внешние выводы микросхемы и программируемые электронные ключи, предназначенные для создания соединений между внутренними блоками микросхемы FPGA. Логические блоки размещаются в узлах решетки вертикальных и горизонтальных шин проводников. Благодаря возможности соединения проводников при помощи электронных ключей друг с другом, можно создавать нужные нам соединения между логическими блоками. Соединения осуществляемые электронными ключами можно программировать, замыкая и размыкая эти ключи. Матрица соединений хранится в ПЗУ конфигурации и может быть изменена при программировании ПЛИС. Блоки ключей, замыкающие проводники соединительных шин FPGA между собой, обозначены на рисунке 6.1 квадратами серого цвета.
Соединение внутренней цифровой схемы с блоками ввода-вывода также программируется электронными ключами. У различных микросхем FPGA реальное число программируемых внутренних соединений значительно отличается. Это определяет насколько полно может быть использованы внутренние ресурсы микросхемы и может оказать влияние на предельное быстродействие разработанного цифрового устройства. Эти особенности необходимо учитывать в процессе проектирования цифрового устройства при выборе фирмы-изготовителя и конкретных микросхем FPGA, предназначенных для реализации этого устройства.
Особенностью структуры FPGA является то, что каждый логический блок обычно имеет небольшое число входов и один выход. Это позволяет более полно использовать внутренние ресурсы микросхемы. Типичный логический блок строится на основе ПЗУ, в ячейках которого записана таблица истинности комбинационной схемы. Подобный блок ПЗУ обычно называется LUT (Look Up Table). Каждая ячейка способна хранить значение одной строки таблицы истинности, логический '0' или '1'. Размер LUT определяется числом входов, которое изменяется в зависимости от типа выбранной микросхемы и фирмы-производителя. В качестве примера на рисунке 6.2 показано внутреннее устройство небольшого LUT ПЗУ с тремя входами x1, x2, x3, и одним выходом f. Крестиками обозначены электронные ключи, включенные между источником питания и входом мультиплексора.
Рисунок 6.2. Пример внутреннего устройства LUT ПЗУ
LUT ПЗУ, изображенное на рисунке 6.2, способно реализовать любую логическую функцию трех переменных. Поскольку таблица истинности функций трех переменных имеет восемь строк, то LUT ПЗУ состоит из восьми запоминающих ячеек. Одна ячейка содержит значение выходного сигнала в каждой строке таблицы истинности. Входные сигналы x1, x2 и x3 подаются на адресные входы мультиплексора 8×1. В зависимости от комбинации логических сигналов на адресных вхоодах A0, A1, A2, на выход мультиплексора поступает сигнал с одного из его информационных входов X0...X7.
Для программирования LUT необходимо при помощи электронных ключей записать таблицу истинности реализуемой функции в ячейках памяти. Электронный ключ представляет собой полевой транзистор с плавающим затвором, что позволяет сохранять состояние ключа при отключении питания. При замыкании электронного ключа на вход мультиплексора поступает напряжение питания, что соответствует логической единице. При размыкании этого ключа на вход мультиплексора через резистор R поступает потенциал общего провода микросхемы, что соответствует логическому нолю. После программирования при x1=x2=x3=0 на выход LUT ПЗУ будет передан сигнал с самого верхнего входа мультиплексора, x2=x3=0, x1=1 на выход LUT ПЗУ будет передан сигнал с второго сверху входа мультиплексора, и т.д..
LUT ПЗУ современных микросхем FPGA обычно имеют четыре или пять входов и состоят из 16 или 32 запоминающих ячеек соответственно. Как и в CPLD микросхемах, кроме комбинационной цифровой схемы логический блок содержит запоминающее устройство, такое как D-триггер. На рисунке 6.3 приведен пример схемы логического блока FPGA микросхемы.
Рисунок 6.3. Пример схемы логического блока FPGA микросхемы
Логический сигнал, поступающий с выхода LUT ПЗУ на D вход триггера, запоминается по сигналу синхронизации Clk, который может формироваться как внутренними элементами схемы, так и поступать с внешних выводов FPGA микросхемы. Мультиплексор, стоящий на выходе логического блока, позволяет либо применять D-триггер при построении регистровых схем, либо отключать его от схемы при проектировании комбинационных логических схем.
Рисунок 6.4. Пример запрограммированного участка FPGA
На рисунке 6.4 приведен участок внутренней структуры микросхемы FPGA, запрограммированый для реализации комбинационной схемы. Данная микросхема FPGA состоит из LUT ПЗУ с двумя входами и четырьмя программируемыми линиями соединений. Программируемые электронные ключи обозначены символом X. Каждый замкнутый ключ, соединяющий вертикальную и горизонтальную линии показан красным цветом. Не используемые линии соединений и ключи на рисунке показаны черным. Первые два блока LUT запрограммированы на реализацию функций f1=x1x2 и f2=x2x3. Третий LUT реализует функцию f=f1+f2.
Дата добавления: 2014-12-24; просмотров: 967;