Андрей Смирнов
Время чтения: ~20 мин.
Просмотров: 57

Изучение fpga altera

Классификация ПЛИС

Рисунок 1. Обобщенная структура программируемых логических матриц (ПЛМ)

PAL (англ. Programmable Array Logic) — программируемая матрица логики. В отличии от ПЛМ в ПМЛ матрица логических элементов «И» является программируемой, а матрица логических элементов «ИЛИ» фиксированной. Поскольку изготовить такие устройства проще, чем ПЛМ, они имеют меньшую стоимость и обладают улучшенными характеристиками, что привело к их высокой популярности.


Рисунок 2. Обобщенная структура программируемых матриц логики (ПМЛ)

GAL (англ. Gate Array Logic) ПЛИС, имеющие программируемую матрицу «И» и фиксированную матрицу «ИЛИ».

CPLD (англ Complex Programmable Logic Device). Программируемая логическая интегральная схема CPLD состоит из нескольких макроячеек, расположенных на одном кристалле. Каждая макроячейка соединена с блоками ввода-вывода, осуществляющими формирование необходимого вида входов или выходов для работы с внешними схемами. Кроме того, все макроячейки и блоки ввода-вывода связаны между собой внутренними параллельными шинами. Приведенная на рисунке 3 микросхема CPLD состоит из четырех макроячеек, которые связаны между собой внутренними шинами и соединяются с блоками ввода-вывода. Макроячейка построена подобно ПЛМ микросхеме, к которой на выходе подключен D-триггер. К недостаткам можно отнести то, что трудно обеспечить эффективное применение всех макроячеек. Всегда часть макроячеек остается неиспользуемыми. Часто из макроячейки используется только триггер или логический элемент «2И» («2ИЛИ»). Остальная часть схемы зря занимает площадь кристалла и потребляет ток от источника питания.


Рисунок 3. Пример внутренней схемы CPLD

FPGA (англ. Field-Programmable Gate Array). Принцип работы FPGA существенно отличаются от принципа работы CPLD. FPGA является наследником комбинационных схем, реализованных на постоянных запоминающих устройствах (ПЗУ). Обобщенная структура микросхем FPGA приведена на рисунке 4.

Рисунок 4. Обобщенная структура микросхем FPGA

Применение

ПЛИС широко используется для построения различных по сложности и по возможностям цифровых устройств, например:

  • устройств с большим количеством портов ввода-вывода (бывают ПЛИС с более чем 1000 выводов («пинов»));
  • устройств, выполняющих цифровую обработку сигнала (ЦОС);
  • цифровой видеоаудиоаппаратуры;
  • устройств, выполняющих передачу данных на высокой скорости;
  • устройств, выполняющих криптографические операции, систем защиты информации;
  • устройств, предназначенных для проектирования и прототипирования интегральных схем специального назначения (ASIC);
  • устройств, выполняющих роль мостов (коммутаторов) между системами с различной логикой и напряжением питания;
  • реализаций нейрочипов;
  • устройств, выполняющих моделирование квантовых вычислений;
  • устройств, выполняющих обработку радиолокационной информации.

INREG

Syntax

UCF

NET signal_name INREG; or  INST register_name INREG;

Schematic

INREG

ABEL

XILINX PROPERTY ‘inreg signal_name’;

XST

attribute INREG of signal_name : signal is «TRUE»;

Examples

UCF

NET mysignal INREG; or  INST myreg INREG;

Schematic

INREG

ABEL

XILINX PROPERTY ‘inreg mysignal’;

XST

attribute INREG of mysignal : signal is «TRUE»;

Description

Applies to register and latch instances with their D-inputs driven by input pads, or to the Q-output nets of such registers/latches.  By default, registers and latches in a CoolRunner XPLA3 or CoolRunner-II design that have their D-inputs driven by input pads are automatically implemented using the device’s Fast Input path, where possible. If you disable the Project Navigator property «Use Fast Input for Input Registers» for the Fit (Implement Design) process, then only register and latches with the INREG attribute are considered for Fast Input optimization.

MAXPT

Syntax

UCF

NET signal_name MAXPT=value;

Schematic

MAXPT=value

ABEL

XILINX PROPERTY ‘maxpt=value signal_name‘;

XST

attribute MAXPT of signal_name : signal is «value«;

Legal values: any positive integer.

Examples

UCF

NET mysignal MAXPT=8;

Schematic

MAXPT=8

ABEL

XILINX PROPERTY ‘maxpt=8 mysignal’;

XST

attribute MAXPT of mysignal : signal is «8»;

Description

MAXPT limits the amount of logic collapsing for a designated macrocell function. When applied to a signal that represents the output of a macrocell, the fitter will allow additional combinational logic to collapse into that macrocell function only as long as the resulting function does not exceed the specified number of product terms. MAXPT is typically used to reduce the number of product terms used to implement a logic function along a non-speed-critical path in cases where normal collapsing results in excessive p-term utilization. The default p-term collapsing limit for nodes without MAXPT attributes is set by the Project Navigator property «Collapsing P-term Limit» for the Fit (Implement Design) process.

Applies to any internal signal or output pad.

Смотрите также

Шины с тремя состояниями.

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

Несмотря на это, в ПЛИС фирмы Xilinx всё-таки широко применяются шины с тремя состояниями, хотя это существенно повышает их себестоимость. Зато, во-первых, проще выполнить переход от проекта схемы на плате к проекту системы на кристалле. Во-вторых, ВУ с общими шинами, к которым подключено несколько десятков модулей, имеет аппаратные затраты в несколько раз меньше, чем такое же ВУ, в котором шины заменены на эквивалентную схему из системы мультиплексоров. В-третьих, с помощью общих шин можно эффективно реализовать встроенное распределенное ОЗУ, о котором пойдет речь ниже.

Для реализации общей шины каждый КЛБ имеет два буфера с тремя состояниями BUFT , которые через транзисторы-перемычки могут подключаться к общим шинам, проходящим вдоль всего кристалла. В обычных шинах третье состояние характеризуется уровнем, находящимся между уровнями логической 1 и логического 0. Но если такую шину реализовать внутри микросхемы, то в случае, когда все тристабильные буферы будут в третьем (закрытом) состоянии, их выходные транзисторы будут полуоткрытыми и могут выйти из строя. Для исключения такого электрического режима в ПЛИС общая шина нагружена на концах специальной триггерной схемой — Weak Keeper , которая выводит уровень шины или к уровню H, или к уровню L (слабые 1 или 0), если все буферы закрыты.

Неправильное функционирование общей шины, когда несколько источников с разными уровнями подключаются к шине, может вывести ПЛИС из строя. САПР ПЛИС тщательно проверяет, чтобы спроектированная общая шина функционировала правильно. Поэтому не рекомендуется ручное редактирование файла прошивки, так как случайная ошибка в коде может привести к неправильной работе общей шины и порче ПЛИС.

Хитрый зверь MPSSE

Рассмотрим работы FTDI в режиме MPSSE. Режим MPSSE (Multi-Protocol Synchronous Serial Engine), на мой взгляд, является более-менее удачной попыткой создать некий конструктор последовательных интерфейсов, дать разработчику возможность реализовать широко распространенные протоколы передачи данных, такие как SPI, I2C, JTAG, 1-wire и многие другие на их основе.

В настоящий момент режим доступен для микросхем: FT232H, FT2232D, FT2232H, FT4232H. В своем проекте я использую FT2232H, поэтому в большей степени речь идет о ней. Для режима MPSSE выделено 16 ножек, разделенных на два байта: младший L и старший H. Каждый байт может быть прочитан или установлен. Четыре младшие ноги байта L имеют особые функции — через них может происходить последовательная передача данных. Каждая нога может быть настроена как вход или выход, для вывода может быть задано значение по умолчанию. Для последовательной передачи настраивается порядок следование бит (MSB/LSB), длина передаваемого слова, частота тактовых импульсов, фронт синхронизации — передний (Rising) или задний (Falling), можно выбрать передачу только тактовых импульсов без данных, или выбрать 3-х фазовое тактирование (актуально для I2C) и многое другое.

Плавно переходим к программированию. Существуют два альтернативных способа программного взаимодействия с чипами FTDI: первый, назовем его классическим, в этом случае при подключении к порту USB микросхема в системе определяется как виртуальный последовательный порт (COM), операционная система использует драйвер VCP (Virtual COM Port). Все дальнейшее программирование не отличается от программирования классического COM порта: открыл — передал/считал — закрыл. Причем это справедливо для различных операционных систем, включая Linux и Mac OS. Однако при таком подходе не получится реализовать все возможности контроллера FTDI — чип будет работать как переходник USB-UART. Второй способ обеспечивается проприетарной библиотекой FTD2XX, это интерфейс предоставляет специальные функции, которые не доступны в стандартном API COM порта, в частности, доступна настройка и использование специальных режимов работы, таких как MPSSE, 245 FIFO, Bit-bang. Библиотека FTD2XX API хорошо задокументирована Software Application Development D2XX Programmer’s Guide, широко и давно известна в узких кругах. И да, FTD2XX также доступна для различных операционных систем.

Перед разработчиками FTDI стояла задача уложить относительно новый MPSSE в существующую программную модель взаимодействия D2XX. И им это удалось, для работы в режиме MPSSE используется тот же набор функций, что и для других «классических» режимов, используется та же библиотека FTD2XX API.

Если коротко, то алгоритм работы в режиме MPSSE можно описать следующим образом:

  1. Найти девайс в системе и открыть его.
  2. Выполнить первичную инициализацию чипа и перевести его в режим MPSSE.
  3. Настроить режим работы MPSEE.
  4. Непосредственная работа с данными: передаем, принимаем, управляем GPIO — реализуем целевой протокол обмена.
  5. Закрыть девайс.

REG

Syntax

UCF

NET net_name REG=VALUE;

INST inst_name REG=VALUE;

Schematic

REG=VALUE

ABEL

XILINX PROPERTY ‘reg=value signal_name‘;

XST

attribute REG of signal_name : signal is «VALUE«;

Legal values (mutually exclusive): CE (all except 9500), TFF (all CPLDs), where:  

Examples

UCF

NET mynet REG=CE;

INST myinst REG=CE;

Schematic

REG=CE

ABEL

XILINX PROPERTY ‘reg=ce mysignal‘;

XST

attribute REG of mysignal : signal is «CE»;

Description

Applies to all registers. The REG attribute specifies how a register is to be implemented in the CPLD macrocell.

REG=CE, when applied to a flip-flop primitive with a CE input, forces the CE input to be implemented using a clock enable product term in the macrocell. Normally the fitter only uses the register CE input if all logic on the CE input can be implemented using the single CE product term. Otherwise the fitter decomposes the CE input into the D (or T) logic expression unless REG=CE is applied. CE product terms are not available in XC9500 devices (REG=CE is ignored). In XC9500XL and XC9500XV devices, the CE product term is only available for registers that do not use both the CLR and PRE inputs.

REG=TFF indicates that the register is to be implemented as a T-type flip-flop in the CPLD macrocell. If applied to a D-flip-flop primitive, the D-input expression is transformed to T-input form and implemented with a T-flip-flop. Automatic transformation between D and T flip-flops is normally performed by the CPLD fitter.

When attached to a design element, REG propagates to all applicable elements in the hierarchy within the design element.  

Видео: телепрограмма о причинах кашля с кровью

uhonos.ru

FPGA in the cloud

В облачных вычислениях FPGA применяются для быстрого счета, ускорения сетевого трафика и осуществления доступа к массивам данных. Сюда же можно отнести использование FPGA для высокочастотной торговли на биржах. В серверы вставляются платы FPGA с PCI Express и оптическим сетевым интерфейсом производства Intel (Altera) или .

На FPGA отлично ложатся криптографические алгоритмы, сравнение последовательностей ДНК и научные задачи вроде молекулярной динамики. В Microsoft давно используют FPGA для ускорения поискового сервиса Bing, а также для организации Software Defined Networking внутри облака Azure.

Бум машинного обучения тоже не обошел стороной FPGA. Компании Xilinx и Intel предлагают средства на основе FPGA для работы с глубокими нейросетями. Они позволяют получать прошивки FPGA, которые реализуют ту или иную сеть напрямую из фреймворков вроде Caffe и TensorFlow.

Причем это все можно попробовать, не выходя из дома и используя облачные сервисы. Например, в Amazon можно арендовать виртуальную машину с доступом к плате FPGA и любым средствам разработки, в том числе и machine learning.

LOC (Pin Assignment)

Syntax

UCF

NET signal_name LOC=value;

Schematic

LOC=value

ABEL

signal_name_list PIN value_list

XST

attribute PIN_ASSIGN of signal_name : signal is «value_list«;

Legal ABEL values: nn (where nn  is a numeric pin number), ‘rc‘ (where r=alphabetic row, c=numeric column).

Legal values in XST, schematic and UCF: Pnn (where nn  is a numeric pin number), rc (where r=alphabetic row, c=numeric column)

Examples

UCF

NET mysignal LOC=P12;

Schematic

LOC=P12

ABEL

PIN 12,13,14,15;

XST

attribute PIN_ASSIGN of mybus : signal is «P12,P13,P14,P15»;

Description

For CPLDs, use the LOC=pin_name constraint on a PAD symbol or pad net to assign the signal to a specific pin.

In ABEL, multiple pin assignments can be specified for multiple signals in the same PIN declaration.

In XST, multiple pin assignments can be specified for a bus (vector signal) in the same attribute statement.

In UCF and schematics, a separate LOC attribute must be specified for each I/O pad.

Applies to any pads.

Содержимое пакетов уровня транзакций

Рисунок 3 — Пример запроса на запись в память длиной в 1 DWРисунок 4 — Пример запроса на чтение из памяти длиной в 1 DWРисунок 5 — Пример успешного ответа на чтениеРисунок 6— Пример ответа о неподдерживаемом запросеРисунок 7 — Пример заголовка запроса на запись 128 байтТаблица 4 — Перечень сокращений для полей заголовков

№ п. Обозначение поля Название поля Назначение
1 TC Категория трафика ‒ Traffic Class Определяет принадлежность к виртуальному каналу
2 Атр. Атрибуты Устанавливают порядок очередности пакетов: строгий, нестрогий, очередность только по ID, нестрогая очередность вместе с адресацией по ID.
3 TH Наличие подсказки обработки пакетов ‒ TLP Processing Hint Показывает, есть ли подсказка по обработке пакета в битах двойного слова с младшими байтами адреса.
4 TD Наличие на уровне транзакций контрольной суммы пакета ‒ TLP Digest Показывает, является последнее двойное слово в пакете контрольной суммой или нет.
5 EP Наличие ошибки целостности данных пакета Показывает, нарушена целостность данных пакета или нет.
6 AT Трансляция адреса ‒ Address Translation Определяет, должен ли адрес быть транслирован: адрес не транслирован, запрос трансляции, адрес транслирован
7 BE Активные байты в первом и последнем двойных словах ‒ Byte Enable Определяет положение активных байт внутри первого и последнего двойных слов
8 PH Подсказка по обработке пакета ‒ Processing Hint Подсказывает получателю пакета, как должен использоваться пакет, а также ‒ структуру данных
9 BCM Наличие изменения числа байт Показывает, было ли изменено количество байт в пакете. Флаг может устанавливать только отправитель в лице PCI-X устройства
  • унаследованные прерывания (Legacy Interrupts или INT);
  • прерывания в виде сообщений (Message Signaled Interrupts или MSI);
  • расширенные прерывания в виде сообщения (Message Signaled Interrupts Extended или MSI-X).

Рисунок 8 — Таблица векторов прерываний MSI-XРисунок 9 — Таблица флагов ожидающих прерываний

PROHIBIT

Syntax

UCF

CONFIG PROHIBIT=value_list;

Schematic

PROHIBIT=value_list (on CONFIG symbol)

ABEL

not supported

XST

not supported

Legal values: Pnn (where nn is a numeric pin number), rc (where r=alphabetic row, c=numeric column).

Description

PROHIBIT allows you to reserve device pins for later use, or simply to prevent them from being used at all. For instance, if you anticipate design changes in the future and want to set traces on your printed circuit board now, you can use PROHIBIT to prevent the fitter from using pins associated with those traces.

Applies to the design as a global attribute (not directly applicable to any element in the design).

PULLUP

Syntax

UCF

NET IO_pad_name PULLUP;

Schematic

PULLUP

ABEL

XILINX PROPERTY ‘PULLUP IO_pad_name‘;

XST

attribute PULLUP of IO_pad_name : signal is «TRUE»;

Examples

UCF

NET mysignal PULLUP;

Schematic

PULLUP

ABEL

XILINX PROPERTY ‘PULLUP mysignal’;

XST

attribute PULLUP of mysignal : signal is «TRUE»;

Description

The PULLUP attribute causes the corresponding I/O pad to be terminated using the device’s weak resistive pull-up circuit. When the pad is not driven either externally or by the CPLD macrocell, the weak pull-up circuit maintains a high logic state to prevent the pad from floating.

In CoolRunner-II devices, using weak pull-up circuitry is mutually exclusive of using weak keeper (bus hold) cicuitry. If both KEEPER and PULLUP are used in the same design, KEEPER will take precedence and all PULLUPs will be interpreted as KEEPER instead.

The default termination for pads without KEEPER or PULLUP attributes is set by the Project Navigator property «Input and tristate output Termination» (CoolRunner-II) or «Input Termination» (CoolRunner XPLA3) for the Fit (Implement Design) process.

Applies to tristate and open-drain output and I/O pads (CoolRunner-II only). Also applies to input-only pads (XPLA3 and CoolRunner-II).

Применение

ПЛИС широко используется для построения различных по сложности и по возможностям цифровых устройств, например:

  • устройств с большим количеством портов ввода-вывода (бывают ПЛИС с более чем 1000 выводов («пинов»));
  • устройств, выполняющих цифровую обработку сигнала (ЦОС);
  • цифровой видеоаудиоаппаратуры;
  • устройств, выполняющих передачу данных на высокой скорости;
  • устройств, выполняющих криптографические операции, систем защиты информации;
  • устройств, предназначенных для проектирования и прототипирования интегральных схем специального назначения (ASIC);
  • устройств, выполняющих роль мостов (коммутаторов) между системами с различной логикой и напряжением питания;
  • реализаций нейрочипов;
  • устройств, выполняющих моделирование квантовых вычислений;
  • устройств, выполняющих обработку радиолокационной информации.

Система синхронизации.

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

Для надежного функционирования ПЛИС синхросигнал должен подаваться через вывод GCLKPAD и попадать в сеть синхросерии через буфер GCLKBUF. В ПЛИС предусмотрено 4 вывода GCLKPAD, размещенных на противоположных сторонах ее корпуса. Синхросигнал может вырабатываться и внутри ПЛИС, но в этом случае его следует завести в сеть синхросерии через глобальный буфер BUFG.

С помощью спроектированного синхронного автомата, сконфигурированного в ПЛИС, можно изменять частоту и фазу синхросерии. Но в этом случае ее временные параметры будут недостаточно стабильными и поэтому такой подход обычно не применяется. Для надежного регулирования частоты синхросерии в ПЛИС включают делители частоты синхросерии с автоподстройкой — блоки CLKDLL. На рис. показана типичная схема его включения. Блок CLKDLL обеспечивает умножение частоты синхросерии в 2 раза, сдвиг ее фазы на 90, 180 и 270 градусов, деление на 1.5, 2, 2.5, 3, 4.5, 8 и 16.

В электронике


МОП — транзистор тока сток напряжения против стока-источника для нескольких значений перегрузки напряжения , ; граница между линейным ( омическим ) режимом и режимом насыщения ( активным ) обозначена параболой, изогнутой вверх.VграммS-Vтчас{\ displaystyle V_ {GS} -V_ {th}}

В электронике соотношение между постоянным током ( DC ) через электронное устройство и напряжением постоянного тока на его выводах называется вольт-амперной характеристикой устройства. Инженеры-электронщики используют эти диаграммы для определения основных параметров устройства и моделирования его поведения в электрической цепи . Эти характеристики также известны как ВАХ, относящиеся к стандартным символам для тока и напряжения.

В электронных компонентах с более чем двумя выводами, таких как вакуумные лампы и транзисторы , соотношение тока и напряжения на одной паре выводов может зависеть от тока или напряжения на третьем выводе. Обычно это отображается на более сложном графике вольт-амперной характеристики с несколькими кривыми, каждая из которых представляет отношение ток-напряжение при различных значениях тока или напряжения на третьем выводе.

Например, на диаграмме справа показано семейство ВАХ для в зависимости от напряжения стока с перенапряжением ( V GS — V th ) в качестве параметра.

Простейшая ВАХ — это кривая резистора , который согласно закону Ома показывает линейную зависимость между приложенным напряжением и результирующим электрическим током ; ток пропорционален напряжению, поэтому ВАХ представляет собой прямую линию, проходящую через начало координат с положительным наклоном . Обратный наклон равно сопротивлению .

Кривую ВАХ электрического компонента можно измерить с помощью прибора, называемого измерителем кривой . Крутизна и раннее напряжение из транзистора приведены примеры параметров , традиционно измеряются от I-V кривого устройства.

Типы ВАХ

Форма характеристической кривой электрического компонента многое говорит о его рабочих свойствах. ВАХ различных устройств можно сгруппировать по категориям:

Квадранты I – V плоскости. Источники питания имеют кривые, проходящие через красные области.

Активный и пассивный : устройства, у которых есть ВАХ, ограниченные первым и третьим квадрантами ВАХ, проходящей через начало координат , являются пассивными компонентами (нагрузками), потребляющими электроэнергию из цепи. Примеры — резисторы и электродвигатели . Обычный ток всегда течет через эти устройства в направлении электрического поля , от положительного вывода напряжения к отрицательному, поэтому заряды теряют потенциальную энергию в устройстве, которая преобразуется в тепло или другую форму энергии.

Напротив, устройства с ВАХ, которые проходят через второй или четвертый квадрант, являются активными компонентами , источниками питания , которые могут вырабатывать электроэнергию. Примеры: батареи и генераторы . Когда он работает во втором или четвертом квадранте, ток вынужден течь через устройство от отрицательного к положительному выводу напряжения, противодействуя противодействию силе электрического поля, поэтому электрические заряды приобретают потенциальную энергию . Таким образом, устройство преобразует другую форму энергии в электрическую.
  • Линейный или нелинейный : прямая линия, проходящая через начало координат, представляет собой линейный элемент цепи , а изогнутая линия представляет собой нелинейный элемент. Например, резисторы, конденсаторы и катушки индуктивности являются линейными, а диоды и транзисторы — нелинейными. Кривая ВАХ, которая представляет собой прямую линию через начало координат с положительным наклоном, представляет собой линейный или омический резистор, наиболее распространенный тип сопротивления, встречающийся в схемах. Он подчиняется закону Ома ; ток пропорционален приложенному напряжению в широком диапазоне. Его сопротивление , равное обратной величиненаклона линии, постоянно. Изогнутая линия ВАХ представляет нелинейное сопротивление, например диод. В этом типе сопротивление зависит от приложенного напряжения или тока.
  • Отрицательное сопротивление по сравнению с положительным сопротивлением : кривая ВАХ, которая не является монотонной (имеет пики и впадины), представляет устройство с отрицательным сопротивлением . Области кривой с отрицательным наклоном (спускающийся вправо) представляют рабочие области, в которых устройство имеет отрицательное дифференциальное сопротивление , а области положительного наклона представляют собой положительное дифференциальное сопротивление. Устройства с отрицательным сопротивлением могут быть использованы для изготовления усилителей и генераторов . Туннельные диоды и диоды Ганна являются примерами компонентов с отрицательным сопротивлением.
  • Гистерезис против однозначного : устройства с гистерезисом ; то есть, в котором отношение тока к напряжению зависит не только от текущего приложенного входа, но и от прошлой истории входов, имеют ВАХ, состоящие из семейств замкнутых контуров. Каждая ветвь петли отмечена стрелкой. Примеры устройств с гистерезисом включают индукторы и трансформаторы с железным сердечником , тиристоры, такие как SCR и DIAC , и газоразрядные трубки, такие как неоновые лампы .

Что такое программируемая пользователем вентильная матрица?

Хорошее название может быть довольно информативным, и я бы подумал, что «программируемая пользователем вентильная матрица» («field-programmable gate array») будет достаточно хорошим названием. FPGA – это матрица логических вентилей (ну вроде – смотрите ниже) и эта матрица может быть запрограммирована (на самом деле, «сконфигурирована», вероятно, более подходящее слово) в поле, то есть пользователем устройства, как противоположность людям, которые его разработали. Давайте посмотрим на основные характеристики.

Логические вентили (элементы) (И, ИЛИ, исключающее ИЛИ и т.д.) являются основными строительными блоками цифровой схемы. Поэтому неудивительно, что цифровое устройство, которое должно быть чрезвычайно конфигурируемым (то есть «field-programmable» / программируемым в поле / программируемым пользователем), будет состоять из множества вентилей, которые могут быть связаны между собой настраиваемым способом.

Однако FPGA не является огромной коллекцией отдельных булевых элементов. Это было бы очень неоптимальным способом обеспечения функциональности конфигурируемой логики, потому что не использовало бы тот факт, что распространенные операции могут быть реализованы гораздо эффективнее как фиксированные модули. Тот же принцип проявляется и в мире дискретных цифровых микросхем. Вы можете купить микросхемы, которые состоят из элементов И, элементов ИЛИ и т.д., но вы не захотите создавать сдвиговый регистр из отдельных элементов. Вместо этого вы купите микросхему сдвигового регистра.

Матрица конфигурируемых логических блоков

Конфигурируемые логические блоки (CLB) должны взаимодействовать друг с другом и с внешней схемой. Для этих целей FPGA использует матрицу программируемых межсоединенй и блоков ввода/вывода (I/O). «Программа» FPGA хранится в ячейках SRAM, которые влияют на функциональность блоков CLB и управляют коммутаторами, которые устанавливают пути подключения.

Подробное объяснение внутренней структуры и работы блоков CLB потребует целой статьи (если не нескольких статей). Общая идея заключается в том, что CLB включают в себя таблицы поиска, элементы хранения (триггеры и регистры) и мультиплексоры, которые позволяют CLB выполнять логические операции, операции хранения данных и арифметические операции.

Блок ввода/вывода состоит из различных компонентов, которые облегчают связь между CLB и другими компонентами на плате. К ним относятся подтягивающие резисторы, буферы и инверторы.

Выводы

Итак, нам удалось выполнить поставленную задачу. Полученный дизайн позволяет на 7-м семействе ПЛИС Xilinx получать достаточно большие CAM с частотой выше целевых 125 МГц. Результат сравнения с XAPP1151 оказался для меня неожиданным, я предполагал, что реализация на BRAM, хоть и является очень дорогой с точки зрения ресурсов, обгонит лобовую реализацию по частоте. Однако не стоит праздновать победу так рано, в этом документе дано описание IP-ядра CAM от Xilinx, которое позволяет, например, получать CAM глубиной 32К ячеек и частотой 155 МГц, базируясь на BRAM. Такого результата наверное можно добиться и в предложенном в статье варианте, за счет добавления стадий конвейера, или набирая большой CAM из маленьких, но предсказать сходу, влезет ли это в чип я не могу

В дальнейшем попробую реализовать на BRAM нечто похожее, а пока спасибо за внимание

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации