FPGA (Field Programmable Gate Arrays) - программируемые пользователем вентильные матрицы 1
Ресурсы памяти 2 Распределенная память строится на LUT- блоках. Каждый LUT-блок может быть организован как однопортовая память 16×1, а два блока - как двухпортовая память 16×1 с одним портом для чтения/записи и другим только для чтения. Распределенная память Рис. 1 Информационные потоки в однопостовых (а) и двухпортовых (б) блоках распределенной памяти Рис. 2 Схема двухпортового блока распределенной памяти
Ресурсы памяти 3 Примеры применения двухпортовой памяти Рис. 3 Представление LUT-блока в виде мультиплексора (а, б) и схема сдвигового регистра с динамической регулировкой длины (в) Регистр (рис. 3, в) составлен из двух LUT- блоков: 16 триггеров одного образуют регистр, а с помощью второго выполняется мультиплексор, адресный вход которого можно рассматривать как регулятор длины регистра. Установка того или иного значения адреса А выбирает разряд регистра, играющего роль выхода, т. е. и длину регистра.
Ресурсы памяти 4 Наращивание разрядности и емкости блоков памяти Рис. 4 Наращивание разрядности (а) и числа хранимых слов (б) в модулях памяти Разрядность памяти наращивается параллельным соединением нужного числа блоков по входам и трактовкой выходных линий блоков как разрядов выходного слова. Модули с расширением по числу хранимых слов строятся следующим способом: возникающий при удвоении числа хранимых слов дополнительный разряд адреса подается на мультиплексор, выбирающий выход одного из двух модулей меньшей размерности.
Ресурсы памяти 5 Встроенная память Рис. 5 Структура ВБП для однопортового режима Различаются следующие режимы: - однопортовый (Single-port) - операции чтения и записи выполняются не одновременно; - простой двухпортовый (Simple dual-port), допускающий одновременность операций чтения и записи; - истинно двухпортовый вариант, выполняющий любую комбинацию операций - два чтения, две записи, одно чтение и одну запись. Каждый порт имеет свой синхросигнал. Две операции записи по одному и тому же адресу дают не-действительный результат - содержимое адресованной ячейки неизвестно. Чтобы избежать этого, операции одновременной записи специально разделяют по времени с помощью внешних средств, разнося во времени фронты синхросигналов обоих портов. В структуре ВБП кроме модуля RAM/ROM имеется несколько синхронных D-триггеров и программируемых мультиплексоров. Регистры 1 и 2 программируются для передачи в модуль данных и адресов разной разрядности в зависимости от заданной конфигурации памяти. В блоке с емкостью 2 Кбит разрядность данных может изменяться от 1 до 8, а разрядность адреса от 11 до 8. Однопортовый режим
Ресурсы памяти 6 Двухпортовый режим Физически блок имеет два независимых структурно идентичных порта чтения и записи (A и B). Оба порта тактируются своими синхросигналами (CLKA и CLKB) и имеют свои сигналы разрешения работы (ENA и ENB) и разрешения записи (WEA и WEB). Кроме того, порты имеют входы SSRA и SSRB синхронных сброса/установки, действующие на регистры- защелки выходных данных, адресные шины ADDRA и ADDRB, шины входных данных DIA и DIB, шины для битов паритета DIPA и DIPB, а также выходы данных DOA и DOB и битов паритета DOPA и DOPB. Разрядности шин данных, адресов и тракта битов паритета задаются конфигурированием схемы. Рис. 7 Операции и потоки данных в двухпортовом ВБП Оба порта имеют доступ к одному и тому же содержимому памяти, но могут иметь различные схемы адресации, зависящие от разрядностей данных порта. Реализуются следующие операции и потоки данных (рис. 7): 1. Операции 1 (2). Порт А (В) ведет себя как независимая однопортовая RAM, выполняющая операции чтения и записи с использованием одного набора адресных линий. Рис. 6 Структура встроенного блока двухпортовой памяти 2. Операции 3 (4). Порт А (В) является портом записи с отдельным адресом записи, а порт В (А) есть порт чтения с отдельным адресом чтения. Разрядность данных для портов может быть различной.
Ресурсы памяти 7 Двухпортовый режим Существуют и такие режимы, в которых запись сопровождается некоторыми возможностями одновременного чтения. В варианте WRITE_FIRST (режиме прозрачности) (рис. 8, а) данные со входов DI, DIP записываются в выбранную ячейку и одновременно появляются на выходах DO, DOP. При одновременном доступе по одному адресу выходные данные другого порта становятся недействительными. В варианте READ_FIRST (Read-before-Write) (рис. 8, б) данные, хранившиеся в ячейке по адресу записи, появляются в выходном регистре-защелке (на выходах DO, DOP) в то время как данные со входов DI, DIP записываются в адресованную ячейку. На выходах DO, DOP другого порта появляются те же данные из выбранной ячейки. Режим NO_CHANGE (рис. 8, в) предусматривает запрещение изменения состояния выходной защелки порта при записи данных. Рис. 9 Варианты поведения двухпортового ВБП при записи данных
Ресурсы памяти 8 Применение встроенных блоков памяти Построение кругового буфера. Реализация кругового буфера с помощью блока памяти, работающего в режиме READ_FIRST, показана на рис. 10. Каждый синхроимпульс CLK записывает в блок новые данные. Задержанные данные также читаются по этим синхроимпульсам. Счетчик инкрементируется, увеличивая на единицу адрес обращения к памяти, что соответствует подаче следующей ячейки на позицию чтения- записи. Рис. 10 Модель кругового буфера (а) и его реализация с помощью блока памяти ( б)
Ресурсы памяти 9 Применение встроенных блоков памяти Построение многоразрядного счетчика. Счетчик под воздействием входного сигнала инкрементирует свое состояние. Следующее состояние зависит только от предыдущего. Такой процесс реализуется с помощью памяти ROM, в которую записывается таблица состояний, далее память работает без режима записи. при подаче очередного входного сигнала состояние счетчика изменяется на единицу. В конце счета вырабатывается сигнал, который возвращает счетчик в нулевое состояние. В схеме 20-разрядного счетчика на основе двухпортовой памяти с организацией 1К× 18 (рис. 11) порт В образует счетчик для десяти младших разрядов выходного кода. Эти десять разрядов, отображающие текущее состояние счетчика, непосредственно соединяются с десятью адресными входами A B [9:0]. Следующее состояние считывается по текущему данному, и представляет собой инкрементированное текущее. Одиннадцатый разряд DO B [10] фиксирует конец счета для счетчика младших разрядов, который сбрасывается. Одновременно сигнал конца счета на один такт разрешает работу порта А, т. е. счетчика для десяти старших разрядов выхода. Рис. 11 Схема счетчика, реализованного в блоке памяти
Умножители и блоки ЦОС 10 Сигналы управления умножителями: тактовый сигнал CLK, сигнал разрешения тактирования ENA, сигнал асинхронного сброса ACLR и сигналы SIGNA и SIGNB, определяющие представление операндов как чисел со знаками или без, причем это определение индивидуально для обоих сомножителей. Умножение выполняется по соотношению (a + jb)(c + jd) = [(ac bd) + j(ad + bc)]. Рис. 12 Структуры умножителей для действительных и комплексных чисел
Умножители и блоки ЦОС 11 Сигналы управления умножителями: тактовый сигнал CLK, сигнал разрешения тактирования ENA, сигнал асинхронного сброса ACLR и сигналы SIGNA и SIGNB, определяющие представление операндов как чисел со знаками или без, причем это определение индивидуально для обоих сомножителей. Умножение выполняется по соотношению (a + jb)(c + jd) = [(ac bd) + j(ad + bc)]. Рис. 12 Структуры умножителей для действительных и комплексных чисел Умножители
Умножители и блоки ЦОС 12 Блоки ЦОС могут выполнять операции умножения с возможностью накопления (суммирования) или вычитания результатов при разрядностях операндов 9, 18 или 36. Рис. 13 ЦОС-блок фирмы Altera на кристалле Структура ЦОС-блока Рис. 14 Структура КИХ-фильтра Рис. 15 Структура ЦОС-блока Цепь из элементов z -1 задержки отсчетов реализована как последовательность регистров, выходы которых подключены к верхним выводам умножителей. На вторые входы подаются значения коэффициентов, взвешивающих отсчеты.
Умножители и блоки ЦОС 13 В субблоке, реализующем операцию МАС, результат перемножения двух операндов поступает в схему "сумматор/вычитатель/ аккумулятор", сконфигурированную как аккумулятор. Выход аккумулятора может иметь до 52-разрядов. Так как результат перемножения 18-разрядных слов дает 36 разрядов, на накопление остается 16 разрядов. Сигналы управления включают в себя асинхронный сброс, синхросигнал (Clock), сигнал разрешения тактирования регистров (ENA), сигналы, задающие знаки операндов, и сигнал синхронной загрузки аккумулятора. Структура ЦОС-блока Рис. 16 Реализация операции MAC в ЦОС-блоке
Оценка параметров ПЛИС 14 Сложность базовых матричных кристаллов (БМК, предшественников ПЛИС) оценивалась числом "эквивалентных вентилей", причем под эквивалентным вентилем понимали обычно логический элемент 2И-НЕ. Для оценки сложности ПЛИС нельзя просто подсчитать число эквивалентных вентилей в ее схеме, но можно воспользоваться сопоставлением ее функциональных возможностей с возможностями взятого в качестве образца БМК с помощью набора эталонных схем. Ситуация с применением понятия "эквивалентный вентиль" осложнилась тем, что в ПЛИС в качестве функциональных блоков стали применять табличные преобразователи (LUT-блоки), допускающие неоднозначное использование - для воспроизведения логических функций или в качестве блоков памяти. В ответ на эту ситуацию возникли понятия логических и системных вентилей. При подсчете числа логических вентилей предполагается работа LUT-блоков в режиме воспроизведения функций. При подсчете числа системных вентилей предполагается, что часть LUT-блоков работает в режиме блоков памяти и, следовательно, имеет другую, более высокую, эквивалентную сложность. Чтобы число системных вентилей, характеризующих сложность кристалла, было правильно понятым, должно быть указано, какая часть LUT-блоков микросхемы используется в качестве функциональных блоков и какая часть в качестве блоков памяти. В последнее время в качестве характеристик логических возможностей ПЛИС предпочитают указывать для CPLD число макроячеек и их параметры, а для FPGA число логических блоков (ячеек), данные о ресурсах памяти и др. Сведения об этих параметрах более репрезентативны, так как говорят о числе функций, которые мо-гут быть воспроизведены данной микросхемой. Оценка логической сложности ПЛИС Оценка быстродействия ПЛИС Быстродействие ПЛИС характеризуется либо задержками распространения сигналов по указанным путям, либо максимальными частотами их работы в указанных условиях. С целью оценки быстродействия FPGA указывают частоту работы счетчика, частоты для синхронизации внутреннего ядра и цепей ввода/вывода. Оценка быстродействия ПЛИС дается также с применением понятия градация бы-стродействия. Этот параметр входит в состав кода обозначения схемы в виде циф-ры, перед которой ставится дефис (–3, –4, – 5 и т. д.).
Конфигурирование ПЛИС 15 Способ конфигурирования ПЛИС, т. е. настройки микросхем на определенное функционирование, зависит от типа программируемых элементов. Загрузка триггерной памяти конфигурации не требует специальных режимов, и конфигурирование состоит в обычной передаче в микросхему информации по заданному протоколу и с фиксированными форматами данных. Эта информация обеспечивает создание требуемых связей в логических блоках, блоках ввода/вывода и системе межсоединений. Для конфигурирования микросхем используются как специализированные выводы, так и выводы, которые после завершения конфигурирования могут играть роль выводов общего назначения. Возможные способы конфигурирования: - пассивный последовательный (Slave-serial mode); - активный последовательный (Master-serial mode); - байт-последовательный (SelectMAP mode); - граничного сканирования. Рис. 17 Последовательная загрузка, ПЛИС в режиме ведущий В пассивном последовательном режиме микросхема получает данные конфигурирования в виде потока битов из последовательной памяти при синхронизации от внешнего источника. Каждый фронт синхросигнала вводит бит данных, поступающий на вход DIN (Data Input). Несколько микросхем могут быть соединены в цепочку для конфигурирования в едином процессе от общего потока битов. В этом случае после завершения конфигурирования очередной микросхемы данные конфигурации для следующих микросхем появляются на выводе DOUT (Data Output) микросхемы, завершившей конфигурирование.
Конфигурирование ПЛИС 16 Рис. 18 Последовательное включение микросхем FPGA В байт-последовательном режиме время конфигурирования минимально. Байт- последовательный поток данных записывается в микросхему с учетом флажка ее готовности BUSY. Поток задается от внешнего источника, как и сигналы тактирования, разрешения работы (CS) и записи (WRITE). Можно также конфигурировать несколько микросхем, но в этом случае они включаются параллельно по входам синхронизации, данных, WRITE и BUSY и загружаются поочередно путем соответствующего управления сигналами разрешения их работы CS. Рис. 19 Параллельная загрузка В режиме граничного сканирования конфигурирование осуществляется исключительно через выводы порта тестирования TAP (Test Access Port) интерфейса JTAG. В активном последовательном режиме синхросигнал из микросхемы подается на последовательное ЗУ, с которого на вход DIN поступает последовательный поток битов конфигурации. Микросхема воспринимает каждый бит по фронту синхросигнала. После загрузки очередной микросхемы, входящей в цепочку, данные для следующей снимаются с выхода DOUT той микросхемы, которая закончила конфигурирование.
СПАСИБО ЗА ВНИМАНИЕ