Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> VHDL

Мастер VHDL: полное введение в проектирование FPGA и ASIC

Учебник — Введение в VHDL

VHDL — страшный акроним. Он означает VHSIC Hardware Description Language. Акроним внутри акронима, потрясающе! VHSIC расшифровывается как Very High Speed Integrated Circuit. Таким образом, полное расширение VHDL: Very High Speed Integrated Circuit Hardware Description Language. Ого, как много слов. VHDL — один из двух языков, используемых в образовании и бизнесе для проектирования FPGA и ASIC. Если вы незнакомы с этими удивительными схемами, сначала изучите введение в FPGA и ASIC. VHDL и Verilog — два языка, которыми цифровые проектировщики описывают свои схемы, и они принципиально отличаются от традиционных языков программирования вроде C и Java.

В примере ниже мы создадим VHDL-файл, который описывает логическое элемент «И» (AND Gate). Напоминание: простой элемент И имеет два входа и один выход. Выход равен 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). Ключевое слово «and» зарезервировано в VHDL. Оператор <= — оператор присваивания. Прочитав код вслух: «Сигнал and_gate ПОЛУЧАЕТ input_1 И input_2».

Откуда берутся input_1 и input_2? Это входы файла, их нужно объявить. Входы и выходы задаются в entity (сущность). Entity содержит порт, описывающий все входы и выходы. Создадим простую сущность:

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 с тремя сигналами — двумя входами и одним выходом, все типа std_logic. Для завершения нужен еще один ключевой элемент — architecture (архитектура). Архитектура описывает функциональность сущности. Аналогия: entity — это оглавление диссертации, 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». Логика размещается между «begin» и «end». Осталось подключить библиотеку. Библиотека определяет поведение ключевых слов. В начале файла нужны две строки:

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: process.

VHDL

  1. Использование записей (Records) в VHDL для чистых, повторно используемых интерфейсов FIFO
  2. Инициализация блочной памяти FPGA из текстовых файлов с помощью библиотеки TEXTIO в VHDL
  3. Использование констант и generic map в VHDL для гибкого дизайна модулей
  4. Освоение параллельных операторов в VHDL: практическое руководство
  5. Освоение std_logic_vector: создание сигнальных векторов в VHDL
  6. Использование внутрипроцессных процедур для более чистого проектирования FSM на VHDL
  7. Создание эффекта «дыхания» светодиода с помощью синусоиды из блочной памяти
  8. Мастер VHDL: полное введение в проектирование FPGA и ASIC
  9. Продвинутый тест по владению VHDL — Часть 3
  10. Освоение std_logic в VHDL: состояния, разрешение и анализ волновой формы