Мастер VHDL:комплексное введение в проектирование FPGA и ASIC
Учебное пособие. Введение в VHDL
VHDL — ужасная аббревиатура. Это означает V. HSIC H аппаратное обеспечение D описание L язык. Аббревиатура внутри аббревиатуры, круто! VHSIC означает V. эри Ч ай S пописал Я интегрированный C цепь. Следовательно, расширенный VHDL равен V. очень быстродействующая интегральная схема H аппаратное обеспечение D описание L язык. УФ, это глоток. VHDL — один из двух языков, используемых в образовании и бизнесе для разработки FPGA и ASIC. Если вы не знакомы с этими увлекательными схемами, сначала вам может быть полезно познакомиться с FPGA и ASIC. VHDL и Verilog — это два языка, которые цифровые дизайнеры используют для описания своих схем, и по конструкции они отличаются от традиционных языков программного обеспечения, таких как C и Java.
В приведенном ниже примере мы создадим файл VHDL, который описывает и ворота. В качестве напоминания:простой И-ворот имеет два входа и один выход. Выходной сигнал равен 1 только тогда, когда оба входных сигнала равны 1. Ниже показано изображение вентиля И, который мы будем описывать с помощью VHDL.
Ан И Ворота
Давайте займемся этим! Основная единица VHDL называется сигналом. . А пока предположим, что сигнал может быть либо 0, либо 1 (на самом деле есть и другие возможности, но к этому мы еще вернемся). Вот некоторая базовая логика VHDL:
signal and_gate : std_logic; and_gate <= input_1 and input_2;
Первая строка кода определяет сигнал типа std_logic и называется and_gate. Std_logic — это тип, который чаще всего используется для определения сигналов, но есть и другие, о которых вы узнаете. Этот код сгенерирует логический элемент И с одним выходом (and_gate) и двумя входами (input_1 и input_2). Ключевое слово «и» зарезервировано в VHDL. Оператор <=известен как оператор присваивания. Когда вы устно анализируете приведенный выше код, вы можете сказать вслух:«Сигнал and_gate ПОЛУЧАЕТ input_1 и обрабатывается с input_2».
Теперь вы можете спросить себя, откуда взялись input_1 и input_2. Как следует из их названия, они являются входными данными для этого файла, поэтому вам нужно сообщить о них инструментам. Входные и выходные данные файла определяются в объекте. . Объект содержит порт, который определяет все входные и выходные данные в файл. Давайте создадим простую сущность:
entity example_and is port ( input_1 : in std_logic; input_2 : in std_logic; and_result : out std_logic ); end example_and;
Это ваша основная сущность. Он определяет объект с именем example_and и 3 сигнала, 2 входа и 1 выход, все из которых имеют тип std_logic. Для завершения этого процесса необходимо еще одно ключевое слово VHDL — architecture. . Архитектура используется для описания функциональности конкретного объекта. Думайте об этом как о дипломной работе:сущность — это оглавление, а архитектура — это содержание. Давайте создадим архитектуру для этого объекта:
architecture rtl of example_and is signal and_gate : std_logic; begin and_gate <= input_1 and input_2; and_result <= and_gate; end rtl;
Приведенный выше код определяет архитектуру под названием rtl объекта example_and. Все сигналы, используемые архитектурой, должны быть определены между ключевыми словами «is» и «begin». Фактическая логика архитектуры находится между ключевыми словами «начало» и «конец». Вы почти закончили работу с этим файлом. И последнее, что вам нужно сообщить инструментам:какую библиотеку использовать. Библиотека определяет, как определенные ключевые слова ведут себя в вашем файле. А пока просто примите как должное, что вам нужны эти две строки в верхней части вашего файла:
library ieee; use ieee.std_logic_1164.all;
Поздравляем! Вы создали свой первый файл VHDL. Вы можете увидеть готовый файл здесь:
library ieee; use ieee.std_logic_1164.all; entity example_and is port ( input_1 : in std_logic; input_2 : in std_logic; and_result : out std_logic ); end example_and; architecture rtl of example_and is signal and_gate : std_logic; begin and_gate <= input_1 and input_2; and_result <= and_gate; end rtl;
Кажется, что вам пришлось написать много кода только для того, чтобы создать дурацкий и гейт? Во-первых, и ворота не глупые. Во-вторых, вы правы; VHDL — очень многословный язык. Привыкайте к тому, что выполнение того, что было очень просто в программном обеспечении, займет у вас значительно больше времени в HDL, таком как Verilog или VHDL. Но просто попросите какого-нибудь программиста попытаться сгенерировать изображение на VGA-мониторе, на котором будет отображаться «Игра жизни» Конвея, и вы увидите, как у них закружится голова от изумления! Кстати, это видео создано с помощью VHDL и FPGA. Скоро вы сможете это сделать!
Далее мы обсудим еще одно фундаментальное ключевое слово VHDL:процесс.
VHDL
- Подписанный и неподписанный в VHDL
- Как инициализировать RAM из файла с помощью TEXTIO
- Как сделать AXI FIFO в блочной ОЗУ, используя готовое/действующее рукопожатие
- Как создать синхронизированный процесс в VHDL
- Как создать управляемый Tcl тестовый стенд для модуля кодовой блокировки VHDL
- Использование встроенного логического анализатора (ILA) и виртуального ввода/вывода (VIO)
- Как просмотреть переменные VHDL в Modelsim во время моделирования
- Базовая викторина VHDL — часть 1
- Как использовать процедуру в VHDL
- Файл стимула читается в тестовом стенде с помощью TEXTIO