Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ответы экзамен ПЛИС

.pdf
Скачиваний:
15
Добавлен:
21.06.2024
Размер:
2.35 Mб
Скачать

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;