Проектирование СБИС - Введение в VHDL

VHDL означает язык описания аппаратного обеспечения высокоскоростных интегральных схем. Это язык программирования, используемый для моделирования цифровой системы с помощью потоков данных, поведенческого и структурного стиля моделирования. Этот язык был впервые представлен в 1981 году Министерством обороны (DoD) в рамках программы VHSIC.

Описание дизайна

В VHDL объект используется для описания аппаратного модуля. Сущность может быть описана с помощью,

  • Объявление объекта
  • Architecture
  • Configuration
  • Декларация пакета
  • Тело пакета

Посмотрим, что это?

Объявление объекта

Он определяет имена, входные выходные сигналы и режимы аппаратного модуля.

Syntax -

entity entity_name is
   Port declaration;
end entity_name;

Объявление объекта должно начинаться с "entity" и заканчиваться ключевыми словами "end". Направление будет входным, выходным или входящим.

В Порт можно прочитать
Из Порт можно написать
Inout Порт можно читать и писать
Буфер Порт можно читать и писать, он может иметь только один источник.

Architecture -

Архитектура может быть описана с использованием структурного, потокового, поведенческого или смешанного стиля.

Syntax -

architecture architecture_name of entity_name 
architecture_declarative_part;

begin
   Statements;
end architecture_name;

Здесь мы должны указать имя объекта, для которого мы пишем тело архитектуры. Операторы архитектуры должны быть внутри ключевых слов 'begin' и 'énd'. Декларативная часть архитектуры может содержать переменные, константы или объявление компонента.

Моделирование потока данных

В этом стиле моделирования поток данных через объект выражается с помощью параллельного (параллельного) сигнала. Параллельные операторы в VHDL - это WHEN и GENERATE.

Помимо них, для создания кода также можно использовать присваивания с использованием только операторов (AND, NOT, +, *, sll и т. Д.).

Наконец, в коде этого типа можно использовать особый вид присваивания, называемый BLOCK.

В параллельном коде можно использовать следующее:

  • Operators
  • Оператор WHEN (WHEN / ELSE или WITH / SELECT / WHEN);
  • Оператор GENERATE;
  • Заявление BLOCK

Поведенческое моделирование

В этом стиле моделирования поведение объекта как набора операторов выполняется последовательно в указанном порядке. Только операторы, помещенные внутри PROCESS, FUNCTION или PROCEDURE, являются последовательными.

ПРОЦЕССЫ, ФУНКЦИИ и ПРОЦЕДУРЫ - единственные разделы кода, которые выполняются последовательно.

Однако в целом любой из этих блоков по-прежнему является параллельным с любыми другими операторами, размещенными вне его.

Одним из важных аспектов кода поведения является то, что он не ограничивается последовательной логикой. Действительно, с его помощью мы можем создавать как последовательные схемы, так и комбинационные схемы.

Операторы поведения - IF, WAIT, CASE и LOOP. ПЕРЕМЕННЫЕ также ограничены, и они должны использоваться только в последовательном коде. VARIABLE никогда не может быть глобальным, поэтому его значение нельзя передать напрямую.

Структурное моделирование

В этом моделировании объект описывается как набор взаимосвязанных компонентов. Оператор создания экземпляра компонента является параллельным оператором. Следовательно, порядок этих утверждений не имеет значения. Структурный стиль моделирования описывает только взаимосвязь компонентов (рассматриваемых как черные ящики), не подразумевая какого-либо поведения самих компонентов или объекта, который они вместе представляют.

В структурном моделировании тело архитектуры состоит из двух частей - декларативной части (перед ключевым словом begin) и части инструкции (после ключевого слова begin).

Логическая операция - И ВОРОТА

Икс 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;

Формы волны

Логическая операция - OR 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

VHDL Code: 
 
Library ieee; 
use ieee.std_logic_1164.all; 

entity xnor1 is
   port(a,b:in bit ; c:out bit); 
end xnor1; 
 
architecture virat of xnor1 is
begin
   c<=not(a xor b); 
end virat;

Формы волны