VHDL расшифровывается как язык описания аппаратного обеспечения для высокоскоростных интегральных схем. Это язык программирования, используемый для моделирования цифровой системы с помощью потока данных, поведенческого и структурного стиля моделирования. Этот язык был впервые введен в 1981 году для Министерства обороны США в рамках программы VHSIC.
Описание дизайна
В VHDL сущность используется для описания аппаратного модуля. Сущность может быть описана с использованием,
- Декларация объекта
- Архитектура
- конфигурация
- Декларация пакета
- Корпус
Посмотрим что это?
Декларация организации
Он определяет имена, входные выходные сигналы и режимы аппаратного модуля.
Синтаксис —
entity entity_name is Port declaration; end entity_name;
Объявление сущности должно начинаться с «сущности» и заканчиваться ключевыми словами «конец». Направление будет входным, выходным или входным.
В | Порт можно прочитать |
Из | Порт может быть написан |
Inout | Порт можно читать и писать |
буфер | Порт можно читать и писать, он может иметь только один источник. |
Архитектура —
Архитектура может быть описана с использованием структурного, потока данных, поведенческого или смешанного стиля.
Синтаксис —
architecture architecture_name of entity_name architecture_declarative_part; begin Statements; end architecture_name;
Здесь мы должны указать имя объекта, для которого мы пишем тело архитектуры. Операторы архитектуры должны находиться внутри ключевых слов begin и end. Декларативная часть архитектуры может содержать переменные, константы или объявление компонента.
Моделирование потока данных
В этом стиле моделирования поток данных через объект выражается с использованием параллельного (параллельного) сигнала. Одновременными утверждениями в VHDL являются WHEN и GENERATE.
Помимо них, назначения, использующие только операторы (AND, NOT, +, *, sll и т. Д.), Также могут использоваться для построения кода.
Наконец, специальный тип назначения, называемый BLOCK, также может быть использован в этом типе кода.
В параллельном коде может использоваться следующее:
- операторы
- Оператор WHEN (WHEN / ELSE или WITH / SELECT / WHEN);
- Утверждение GENERATE;
- БЛОК заявления
Поведенческое моделирование
В этом стиле моделирования поведение объекта как набора операторов выполняется последовательно в указанном порядке. Только операторы, помещенные в PROCESS, FUNCTION или PROCEDURE, являются последовательными.
ПРОЦЕССЫ, ФУНКЦИИ и ПРОЦЕДУРЫ — единственные разделы кода, которые выполняются последовательно.
Однако в целом любой из этих блоков по-прежнему совпадает с любыми другими операторами, размещенными вне его.
Одним из важных аспектов кода поведения является то, что он не ограничен последовательной логикой. Действительно, с его помощью мы можем строить последовательные схемы, а также комбинационные схемы.
Заявления о поведении: IF, WAIT, CASE и LOOP. ПЕРЕМЕННЫЕ также ограничены, и они должны использоваться только в последовательном коде. VARIABLE никогда не может быть глобальным, поэтому его значение не может быть передано напрямую.
Структурное моделирование
В этом моделировании объект описывается как набор взаимосвязанных компонентов. Оператор создания экземпляра компонента является параллельным оператором. Поэтому порядок этих утверждений не важен. Структурный стиль моделирования описывает только взаимосвязь компонентов (рассматриваемых как черные ящики), не подразумевая какого-либо поведения самих компонентов или сущности, которую они коллективно представляют.
В структурном моделировании тело архитектуры состоит из двух частей — декларативной части (до начала ключевого слова) и части инструкции (после начала ключевого слова).
Логическая операция — И ВОРОТА
Икс | Y | Z |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
VHDL Code: Library ieee; use ieee.std_logic_1164.all; entity and1 is port(x,y:in bit ; z:out bit); end and1; architecture virat of and1 is begin z<=x and y; end virat;
Волновые
Логическая операция — ИЛИ Gate
Икс | Y | Z |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
VHDL Code: Library ieee; use ieee.std_logic_1164.all; entity or1 is port(x,y:in bit ; z:out bit); end or1; architecture virat of or1 is begin z<=x or y; end virat;
Волновые
Логическая операция — НЕ Ворота
Икс | Y |
---|---|
0 | 1 |
1 | 0 |
VHDL Code: Library ieee; use ieee.std_logic_1164.all; entity not1 is port(x:in bit ; y:out bit); end not1; architecture virat of not1 is begin y<=not x; end virat;
Волновые
Логическая операция — NAND Gate
Икс | Y | Z |
---|---|---|
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
VHDL Code: Library ieee; use ieee.std_logic_1164.all; entity nand1 is port(a,b:in bit ; c:out bit); end nand1; architecture virat of nand1 is begin c<=a nand b; end virat;
Волновые
Логическая операция — NOR Gate
Икс | Y | Z |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 0 |
VHDL Code: Library ieee; use ieee.std_logic_1164.all; entity nor1 is port(a,b:in bit ; c:out bit); end nor1; architecture virat of nor1 is begin c<=a nor b; end virat;
Волновые
Логическая операция — XOR Gate
Икс | Y | Z |
---|---|---|
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
VHDL Code: Library ieee; use ieee.std_logic_1164.all; entity xor1 is port(a,b:in bit ; c:out bit); end xor1; architecture virat of xor1 is begin c<=a xor b; end virat;
Волновые
Логическая операция — X-NOR Gate
Икс | Y | Z |
---|---|---|
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |