
Ответы экзамен ПЛИС
.pdf
1. Понятие ПЛИС. Особенности микросхем ПЛИС.
ПЛИС (программируемая логическая интегральная схема) - это электронный
компонент (интегральная микросхема), используемый для создания конфигурируемых цифровых электронных схем. В отличие от обычных цифровых микросхем, логика работы ПЛИС не определяется при изготовлении, а задается посредством программирования (проектирования). Для программирования используются программатор и IDE (отладочная среда), позволяющие задать желаемую структуру цифрового устройства в виде принципиальной электрической схемы или программы на специальных языках описания аппаратуры (Verilog, VHDL, AHDL и других)
2. Физические основы конфигурирования ПЛИС. Способы формирования электрических соединений в ПЛИС.
Физические основы конфигурирования ПЛИС (программируемых логических интегральных схем) включают создание файла конфигурации для ПЛИС и загрузку его в микросхему ПЛИС или отдельную микросхему памяти. В результате загрузки микросхема ПЛИС приобретает заданную функциональность.
Процесс создания конфигурации включает несколько этапов:
1.Проектирование цифровой схемы или программы с использованием специальных языков описания аппаратуры (Verilog, VHDL, AHDL и другие).
2.Логический синтез с помощью программ-синтезаторов (получение списка
электрических соединений (в виде текста) из абстрактной модели, записанной на языке описания аппаратуры).
3.Проектирование печатной платы устройства с помощью системы автоматизированного проектирования (САПР) печатных плат (Altium Designer, P-CAD и другие), на которой размещается микросхема ПЛИС и прочие
электронные компоненты (резисторы, конденсаторы, генераторы, АЦП, разъёмы и другие).
4.Создание файла конфигурации ПЛИС.
5.Загрузка файла конфигурации в микросхему ПЛИС или в отдельную микросхему памяти.
Первым, и самым старим, способом организации соединений в ПЛИС есть программирование плавкими перемычками. При этом способе организации соединений в микросхеме уже с самого производства сделаны все соединения, т.е. логические блоки и элементы соединены между собой перемычкой. Сама эта перемычка является плавкой, т.е. при подаче определенной силы импульса тока перемычка перегорает, тем самым разрывая связь с некоторыми блоками. Таким образом для программирования такой микросхемы нужен специальный программатор, который пережигает не нужные перемычки в схеме и программирую ее под определенную задачу.

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

3. Классификация ПЛИС. SPLD, CPLD, FPGA. Логические блоки на мультиплексорах и таблицах соответствия.
ПЛИС (программируемые логические интегральные схемы) можно классифицировать по типу их архитектуры. Существует три основных типа ПЛИС: SPLD (Simple
Programmable Logic Device), CPLD (Complex Programmable Logic Device) и FPGA (Field Programmable Gate Array).
SPLD - это простые программируемые логические устройства, которые представляют
собой базовый тип ПЛИС. Они имеют ограниченное количество логических элементов и используются для реализации простых логических функций.
CPLD - это более сложные программируемые логические устройства, которые имеют
больше логических элементов и более сложную архитектуру. Они используются для реализации более сложных логических функций и могут содержать несколько SPLD внутри.
FPGA - это программируемые матричные логические устройства, которые имеют
наибольшее количество логических элементов и наиболее сложную архитектуру. Они используются для реализации очень сложных логических функций и могут содержать множество SPLD и CPLD внутри.
Каждый тип ПЛИС имеет свои преимущества и недостатки, и выбор конкретного типа зависит от требований к проекту.
Логические блоки на мультиплексорах и таблицах соответствия являются основными элементами, используемыми для реализации логических функций в ПЛИС.
Логический блок на мультиплексорах использует мультиплексоры для выбора одного из нескольких входных сигналов на основе значения управляющих сигналов. Это позволяет реализовать различные логические функции, такие как И, ИЛИ и НЕ.
Таблица соответствия (Look-Up Table, LUT) - это другой тип логического блока,
который использует таблицу для хранения результатов логической функции для всех возможных комбинаций входных сигналов. Это позволяет реализовать более сложные логические функции, такие как XOR и XNOR.
Оба типа логических блоков могут быть использованы вместе для реализации сложных логических функций в ПЛИС.
4. Логические ячейки фирмы Xilinx. Логические ячейки, секции и конфигурируемые логические блоки.
Xilinx - это американский разработчик и производитель интегральных микросхем
программируемой логики (ПЛИС, FPGA), а также САПР ISE (позже Vivado) для разработки цифровых устройств с использованием языков VHDL и Verilog. Основа микросхемы с архитектурой FPGA - логическая ячейка. Основными элементами,
которые отличают FPGA как класс устройств, являются логический генератор (LUT – Look-Up Table) и триггер. Название Xilinx происходит от двух букв Х в начале и конце

имени - логические ячейки, между ними linx (links) - программируемая перемычка. Логическая ячейка - это основной элемент микросхемы с архитектурой FPGA, который
отличает FPGA как класс устройств. Основными элементами логической ячейки являются логический генератор (LUT – Look-Up Table) и триггер.
FPGA (Field Programmable Gate Array) - это программируемые интегральные схемы,
которые состоят из трех основных элементов: конфигурируемых логических блоков (CLB), блоков ввода-вывода (IOB) и межсоединений1. Конфигурируемые логические
блоки содержат логические ячейки, которые являются основными элементами микросхемы с архитектурой FPGA. Основными элементами логической ячейки являются логический генератор (LUT – Look-Up Table) и триггер.
5. Специализированные блоки ПЛИС: блоки ОЗУ, схемы ускоренного переноса и
т.д. Аппаратные и программные микропроцессорные ядра.
Специализированные блоки ПЛИС — это блоки, которые реализуют определенные функции или алгоритмы, не требующие программирования логических элементов. Они могут быть встроены в ПЛИС или подключены к ним внешне. Специализированные блоки ПЛИС могут увеличивать производительность, снижать затраты и упрощать проектирование. Некоторые примеры специализированных блоков ПЛИС:
Блоки ОЗУ — это блоки памяти, которые могут хранить данные и обеспечивать быстрый доступ к ним. Блоки ОЗУ могут быть разного типа, например, статические (SRAM), динамические (DRAM), двухпортовые, однопортовые и т.д. Блоки ОЗУ могут использоваться для реализации буферов, кэшей, FIFO, LUT и других структур данных.
Схемы ускоренного переноса — это схемы, которые обеспечивают быстрое выполнение арифметических операций, таких как сложение, вычитание, умножение и деление. Схемы ускоренного переноса могут быть реализованы с помощью специальных проводников, переключателей или логических элементов. Схемы ускоренного переноса могут использоваться для реализации счетчиков, аккумуляторов, АЛУ и других арифметических устройств.
Аппаратные и программные микропроцессорные ядра — это блоки, которые реализуют функциональность процессора или контроллера. Аппаратные ядра полностью реализуются на ПЛИС и не требуют дополнительного программирования. Программные ядра частично реализуются на ПЛИС и требуют загрузки программы в память. Аппаратные и программные ядра могут использоваться для реализации различных архитектур процессоров, таких как
RISC, CISC, DSP и т.д.
6.Синхронизация в ПЛИС. Ввод и вывод сигналов. Банки ввода/вывода.
Синхронизация в ПЛИС — это процесс обеспечения согласованности данных и действий между различными частями ПЛИС или между ПЛИС и внешними устройствами. Синхронизация может быть необходима для предотвращения ошибок, улучшения производительности или реализации определенных функций. Существуют разные методы и средства синхронизации в ПЛИС, такие как:

Ввод и вывод сигналов — это процесс передачи данных между ПЛИС и внешними устройствами, такими как датчики, исполнительные механизмы, память, другие ПЛИС и т.д. Ввод и вывод сигналов может быть аналоговым или цифровым, параллельным или последовательным, синхронным или асинхронным. Для ввода и вывода сигналов используются специальные модули ввода-вывода (IO modules), которые подключаются к базовой плате (baseplate)
ПЛИС и обеспечивают преобразование, усиление, изоляцию, защиту и другие функции.
Банки ввода/вывода — это группы модулей ввода-вывода, которые имеют
общие характеристики, такие как напряжение питания, уровни логических сигналов, режим работы и т.д. Банки ввода/вывода позволяют подключать к ПЛИС разнообразные устройства с разными параметрами и стандартами. Банки ввода/вывода могут быть конфигурируемыми или фиксированными, в зависимости от типа ПЛИС.
7.Параллельные и последовательные интерфейсы. Преимущества и недостатки. Дифференциальные пары.
Параллельные и последовательные интерфейсы — это два основных способа передачи данных между устройствами. В параллельном интерфейсе данные передаются одновременно по нескольким линиям, по одному биту на каждой линии. В последовательном интерфейсе данные передаются по одной линии, по одному биту за раз. Каждый из этих способов имеет свои преимущества и недостатки.
Преимущества параллельных интерфейсов:
Более высокая скорость передачи данных, так как за один такт передается несколько бит.
Более простая аппаратная реализация, так как не требуется преобразование данных из параллельного в последовательный формат и обратно.
Недостатки параллельных интерфейсов:
Более высокая стоимость и громоздкость кабелей и разъемов, так как требуется большое количество линий.
Более высокая вероятность возникновения помех и ошибок, так как линии могут взаимно влиять друг на друга.
Более низкая дальность передачи данных, так как сигналы ослабевают и искажаются при прохождении по длинным линиям.
Преимущества последовательных интерфейсов:
Более низкая стоимость и компактность кабелей и разъемов, так как требуется меньшее количество линий.
Более высокая надежность и качество передачи данных, так как сигналы меньше подвержены помехам и ошибкам.
Более высокая дальность передачи данных, так как сигналы могут быть усилены и восстановлены при прохождении по длинным линиям.
Недостатки последовательных интерфейсов:

Более низкая скорость передачи данных, так как за один такт передается только один бит.
Более сложная аппаратная реализация, так как требуется преобразование данных из параллельного в последовательный формат и обратно.
Дифференциальные пары — это специальный тип последовательных интерфейсов, в котором данные передаются по двум линиям с противоположными напряжениями. Дифференциальные пары имеют следующие преимущества:
Более высокая помехоустойчивость, так как сигнал определяется разностью напряжений на двух линиях, а не абсолютным значением на одной линии.
Более высокая скорость передачи данных, так как сигнал может меняться быстрее и четче на двух линиях, чем на одной.
8.Структура программы на языке VHDL.
Структура программы на языке VHDL определяется следующими основными элементами:
Сущность (entity) — это блок, который описывает интерфейс модуля, то есть входные и выходные сигналы, параметры и атрибуты. Сущность может быть использована как компонент в других модулях или как верхний уровень проекта.
Архитектура (architecture) — это блок, который описывает внутреннее устройство и поведение модуля, то есть логические элементы, процессы, сигналы и порты. Архитектура связана с сущностью по имени и может быть несколько архитектур для одной сущности.
Конфигурация (configuration) — это блок, который определяет, какая архитектура используется для каждой сущности в проекте, а также какие параметры и атрибуты задаются для каждого компонента. Конфигурация может быть определена явно или неявно по умолчанию.
Пакет (package) — это блок, который содержит объявления констант, типов, функций, процедур и компонентов, которые могут быть использованы в других модулях. Пакет может иметь тело (package body), в котором определяются реализации функций и процедур. Пакет может быть подключен к другим модулям с помощью директивы use.

Пример структуры программы на языке VHDL:

– Объявление пакета package my_package is – Объявление констант constant N: integer := 8; – Объявление типов type bit_vector is array (natural range <>) of bit; –
Объявление функций function parity (x: bit_vector) return bit; – Объявление компонентов component adder is port ( a, b: in bit_vector(N-1 downto 0); c: in bit; s: out bit_vector(N-1 downto 0); cout: out bit ); end component; end package;
– Тело пакета package body my_package is – Реализация функций function parity (x: bit_vector) return bit is variable p: bit := ‘0’; begin for i in x’range loop p := p xor x(i); end
loop; return p; end function; end package body;
–Объявление сущности entity my_entity is port ( a, b: in bit_vector(N-1 downto 0); c: in bit; s: out bit_vector(N-1 downto 0); cout: out bit; p: out bit ); end entity;
–Объявление архитектуры architecture my_arch of my_entity is – Подключение пакета use work.my_package.all; – Объявление сигналов signal x, y: bit_vector(N-1 downto 0); begin – Инстанцирование компонента U1: adder port map ( a => a, b => b, c => c, s => x, cout => y(N-1) ); – Присваивание сигналам s <= x xor y; cout <= y(N-1) and parity(x); p
<= parity(s); end architecture;
9. Последовательные операторы VHDL.


Последовательные операторы VHDL — это операторы, которые подобны операторам языков высокого уровня и используются для описания поведения модулей внутри процессов или подпрограмм. Последовательные операторы выполняются один за другим в порядке их появления в тексте программы. Последовательные операторы бывают разных видов, например:
Оператор присваивания значения переменной, который обозначается := и
заменяет текущее значение переменной новым значением, определенным выражением. Например: x := x + 1;
Оператор назначения сигнала, который обозначается <= и задает новое значение
сигналу, которое может быть отложено на определенное время или зависеть от
других сигналов. Например: s <= a xor b after 10 ns;
Условный оператор if, который позволяет выбирать один из нескольких
вариантов действий в зависимости от значения логического выражения.
Например: if x > y then z := x; else z := y; end if;