Разделы презентаций


Языки AHDL, VHDL и Verilog – язык описания аппаратуры от англ. HDL – Hardware

Содержание

2) Идентификаторы Символы алфавита от А до Z и от а до z, цифры, символ подчеркивания _. Идентификатор должен начинаться с символа алфавита, не должен заканчиваться символом подчеркивания и не

Слайды и текст этой презентации

Слайд 1 Языки AHDL, VHDL и Verilog – язык описания

аппаратуры
от англ. «HDL – Hardware Description Language».

VHDL – язык

описания высокоскоростных интегральных схем
от англ. «Very high speed integrated circuit HDL».

Элементы языка VHDL
1) Комментарии
Часть строки после двух знаков "--" рассматривается как комментарий.

Пример:
-- Начало программы

Языки AHDL, VHDL и Verilog – язык описания аппаратурыот англ. «HDL – Hardware Description Language».

Слайд 22) Идентификаторы
Символы алфавита от А до Z и

от а до z, цифры, символ подчеркивания _. Идентификатор должен

начинаться с символа алфавита, не должен заканчиваться символом подчеркивания и не должен содержать несколько символов подчеркивания подряд.

Идентификатором не может быть ключевое слово, зарезервированное VHDL (выделяется синим цветом).

Язык VHDL не чувствителен к регистру.

Data data DATA
Data1
Data_1
1_Data
_Data_
2) Идентификаторы  Символы алфавита от А до Z и от а до z, цифры, символ подчеркивания

Слайд 33) Числа
Целые числа могут записываться по основанию,

отличному от 10. Для оснований от 10 до 15 при

записи цифр, больших 9, используются символы а-f:
184
10#184#
2#11111010#
16#FD#

Для удобочитаемости больших чисел между отдельными знаками могут включаться символы подчеркивания: 27_000_000.
3) Числа   Целые числа могут записываться по основанию, отличному от 10. Для оснований от 10

Слайд 44) Строки
Содержимое строки заключается в двойные кавычки.

VHDL поддерживает битовые строки, строки восьмеричных и шестнадцатеричных символов. Перед

такими строками соответственно ставятся символы: b, о, х:

b"1101"
"1101"
4) Строки   Содержимое строки заключается в двойные кавычки. VHDL поддерживает битовые строки, строки восьмеричных и

Слайд 5 Типы данных в VHDL
Тип – множество значений

с общим признаком. VHDL является строго типизированным языком, т.е. каждый

объект языка объявляется со своим типом может принимать значения только данного типа.

Для представления целых чисел используется тип integer. Этот тип позволяет представить числа в диапазоне от
-2 147 483 647 до 2 147 483 64.

Для представления чисел без знака от 0 до 2147483647 используется тип natural.

Оба этих типа являются встроенными для языка VHDL.
Типы данных в VHDL   Тип – множество значений с общим признаком. VHDL является строго типизированным

Слайд 6Тип std_logic
Предназначен для описания логических сигналов.
Не является встроенным для языка

VHDL.

Тип std_logicПредназначен для описания логических сигналов.Не является встроенным для языка VHDL.

Слайд 7 Для подключения типа std_logic к проекту нужно подключить

пакет std_logic_1164 из библиотеки ieee:

library ieee;


use ieee.std_logic_1164.all;


Эти две строчки присутствуют в начале каждой программы.

Для подключения типа std_logic к проекту нужно подключить пакет std_logic_1164 из библиотеки ieee:

Слайд 8use ieee.std_logic_arith.all;
Для использования операций в проекте нужно подключить

к нему пакет арифметических операций:

use ieee.std_logic_arith.all;  Для использования операций в проекте нужно подключить к нему пакет арифметических операций:

Слайд 9
Синтезируемое цифровое устройство в VHDL можно

представить как некий «черный» ящик с заданными входами и выходами.

Для определения объекта используется ключевое слово entity («сущность»); для определения его входов и выходов (портов объекта) – ключевое слово port.

В декларации порта обязательно указываются его идентификатор (имя), режим работы и тип.

В VHDL определены следующие режимы работы:

in – прием;
out – передача;
inout – прием и передача (двунаправленная линия).

Сущность и архитектура объекта

Синтезируемое цифровое устройство в VHDL можно представить как некий «черный» ящик с заданными

Слайд 10 Алгоритм работы «черного ящика» описывает архитектура (ключевое слово

architecture).

Архитектура имеет свое имя, в качестве

которого принято использовать имя Behavior.

Для определения объекта используется ключевое слово entity («сущность»); для определения его входов и выходов (портов объекта) – ключевое слово port.

Архитектура содержит две основные части:

1. часть, содержащую описания (декларации), и

2. часть, содержащую исполняемые параллельные операторы; данная часть заключена между операторами
begin

end <имя архитектуры>;

Архитектура

Алгоритм работы «черного ящика» описывает архитектура (ключевое слово architecture).    Архитектура имеет свое

Слайд 11 В декларативной части архитектуры объявляются:

- константы,
- сигналы,
- типы и

подтипы,
- функции и процедуры пользователя,
- компоненты (другие объекты, используемые в проекте).

Объявленные в теле архитектуры элементы видимы только в пределах этой архитектуры.

Декларации

В декларативной части архитектуры объявляются:  - константы,  - сигналы,

Слайд 12 Сигналом является объект языка, который переносит значение от

одного процесса к другому и вместе с ним – синхронизирующее

воздействие.

Для присвоения сигналам значений используется параллельный оператор присваивания «<=».

signal x, y: std_logic;

x <= ‘0’;
y <= ‘1’;

Присваивание происходит параллельно (одновременно).

Сигналы в VHDL

Сигналом является объект языка, который переносит значение от одного процесса к другому и вместе с

Слайд 13 Оператор процесса – это параллельный оператор, представляющий

основу языка VHDL. По сути процесс – это микропрограмма, выполняемая

на виртуальном процессорном элементе. Его упрощенный синтаксис:
process (<сигнал1> ,<сигнал2>, <сигнал N>) is
<декларации>;
begin
<последовательные операторы>;
end process;

Оператор процесса

В декларативной части процесса объявляются:
типа и подтип,
процедуры и функции,
константы,
переменные.

Оператор процесса – это параллельный оператор, представляющий основу языка VHDL. По сути процесс –

Слайд 14все процессы в программе выполняются параллельно;
процессы обмениваются сигналами, которые выполняют

синхронизацию процессов и переносят значения между;
для каждого сигнала существует только

один источник (драйвер), поэтому нельзя присваивать значение одному сигналу в разных процессах;
сигналы нельзя объявлять в процессах;
процесс невозможно поместить в процесс, так как там есть место только для последовательных операторов;
в круглых скобках заголовка процесса указывается множество сигналов, при изменении которых процесс запускается – список чувствительности.

Оператор процесса

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

Слайд 15Переменной является элемент языка VHDL, хранящий некоторое значение в пределах

оператора процесса, т.е. область видимости переменной ограничена процессом.
Для объявления переменной

используется ключевое слово Variable. При объявлении нужно указать ее значение по умолчанию.
Присваивание переменной отличается от присваивания сигнал: оно выполняется мгновенно и реализуется оператором присваивания « := ».

Переменные

Variable cnt: natural := 0;

cnt := cnt + 1;

Переменной является элемент языка VHDL, хранящий некоторое значение в пределах оператора процесса, т.е. область видимости переменной ограничена

Слайд 16Мультиплексором называется цифровое устройство, которое в зависимости от значения сигнала

на адресном входе коммутирует один из N входов данных на

единственный выход.

Пример: 2-хвходовый 4-хразрядный мультиплексор

Мультиплексором называется цифровое устройство, которое в зависимости от значения сигнала на адресном входе коммутирует один из N

Слайд 17library ieee;
use ieee.std_logic_1164.all;
-- описание сущности объекта
entity Mux is
port
(
Data1, Data2: in

std_logic_vector(3 downto 0); -- входы данных
-- поскольку число входов данных

равно двум,
-- то для адресного входа требуется всего один разряд:
-- если на входе адреса ‘0’ – выдаем на выход Data1, если ‘1’ – Data2
Adr: in std_logic; -- адресный вход
Data_out: out std_logic_vector(3 downto 0); -- выход
);
end Mux;
library ieee;use ieee.std_logic_1164.all;-- описание сущности объектаentity Mux isport(Data1, Data2: in std_logic_vector(3 downto 0); -- входы данных-- поскольку

Слайд 18-- описание архитектуры
architecture Behavior of Mux is
-- пустой для данной

программы раздел деклараций
begin -- начало архитектуры
-- поскольку логика

работы мультиплексора изменяется
-- в зависимости от значения адресного входа,
-- введем процесс с сигналом Adr в списке чувствительности
process (Adr)
begin
-- воспользуемся последовательным оператором выбора Case
case Adr is
when ‘0’ =>Data_out <= Data1;
when ‘1’ =>Data_out <= Data2;
-- определим алгоритм работы объекта Mux в остальных
-- случаях, для чего используем пустой оператор Null
when others => null;
-- описание архитектурыarchitecture Behavior of Mux is-- пустой для данной программы раздел декларацийbegin  -- начало архитектуры

Слайд 19end case; -- завершаем оператор Case
end process; -- завершаем процесс
end

Behavior; -- завершаем архитектуру

end case; -- завершаем оператор Caseend process; -- завершаем процессend Behavior; -- завершаем архитектуру

Слайд 20Компоненты.
Подключение проекта к проекту верхнего уровня
При использовании структурного стиля программирования

необходимо в декларативной части архитектуры объявить образы используемых сущностей –

компоненты.
Компоненты.Подключение проекта к проекту верхнего уровняПри использовании структурного стиля программирования необходимо в декларативной части архитектуры объявить образы

Слайд 21component Mux is
port
(
Data1, Data2: in std_logic_vector(3 downto 0); -- входы

данных
Adr: in std_logic;
Data_out: out std_logic_vector(3 downto 0);
);
end component;

component Mux isport(Data1, Data2: in std_logic_vector(3 downto 0); -- входы данныхAdr: in std_logic;Data_out: out std_logic_vector(3 downto 0););end

Слайд 22component Comparator is
port
(
Data, Reference: in natural; -- входы данных
Compare: out

std_logic
);
end component;
Также в декларативной части архитектуры необходимо объявить сигнал для

переноса информации от мультиплексора к компаратору.
signal Vyhod_MUX: std_logic_vector(3 downto 0);

Vyhod_MUX

component Comparator isport(Data, Reference: in natural; -- входы данныхCompare: out std_logic);end component;Также в декларативной части архитектуры необходимо

Слайд 23 Для подключения к входам компонентов нужных сигналов

в исполнительной части архитектуры используются два типа присвоения.

1. При позиционном присвоении важен порядок объявления входных и выходных сигналов – в строгом соответствии с порядком их объявления в компоненте:
<метка>: <имя компонента> port map (<список сигналов>);

Comp_MUX: MUX port map (Vhod1, Vhod2, Upr, Vyhod_Mux);
Для подключения к входам компонентов нужных сигналов в исполнительной части архитектуры используются два типа

Слайд 24 2. При поименованном присвоении сигнал для каждого порта

указывается в явном виде с использованием оператора назначения « => ». Порядок

следования портов компонента при этом не важен.

Comp_MUX: MUX port map (
Data1 => Vhod1,
Data 2 => Vhod2,
Data_Out => Vyhod_Mux,
Adr => Upr
);
2. При поименованном присвоении сигнал для каждого порта указывается в явном виде с использованием оператора

Слайд 25Функции преобразования типов
В языке VHDL определены две функции преобразования типов.
1.

Функция
conv_integer(arg:)
преобразует бинарный вектор arg в целое число.

2. Функция
conv_std_logic_vector (arg: ,

n: natural)
преобразует целое число arg в битовый вектор разрядностью n.
Функции преобразования типовВ языке VHDL определены две функции преобразования типов.1. Функцияconv_integer(arg:)преобразует бинарный вектор arg в целое число.2.

Слайд 26Функции преобразования типов
Функции conv_integer и conv_std_logic_vector определены сразу в двух

пакетах ieee:
ieee.std_logic_unsigned и
ieee.std_logic_signed
(соответственно преобразование чисел без знака и со

знаком).
Данные пакеты являются взаимоисключающими.
Чаще используется беззнаковый пакет:
use ieee.std_logic_unsigned.all;

Пример: conv_integer("0110" ) = 6
conv_std_logic_vector (6, 8) = "00000110"

Функции преобразования типовФункции conv_integer и conv_std_logic_vector определены сразу в двух пакетах ieee:ieee.std_logic_unsigned иieee.std_logic_signed (соответственно преобразование чисел без

Слайд 27 2. При подключении входа Data компаратора используем функцию

преобразования типов:

Comp_Comparator:
Comparator port map (
Data => conv_integer(Vyhod_MUX),

);

Vyhod_MUX

2. При подключении входа Data компаратора используем функцию преобразования типов:Comp_Comparator: 		Comparator port map (				 Data

Слайд 28Тактируемые цифровые устройства.
Счетчик
Счетчик – тактируемое цифровое устройство, циклически меняющее свои

состояния под действием импульсов, подаваемых на тактовый вход. Количество тактов,

через которое повторяется исходное состояние счетчика, называют модулем счета Ксч.
По фронту тактовой частоты clk значение счетчика увеличивается (суммирующий счетчик) или уменьшается (вычитающий счетчик) на 1.

Временные диаграммы для суммирующего счетчика с Ксч = 4.

Тактируемые цифровые устройства.СчетчикСчетчик – тактируемое цифровое устройство, циклически меняющее свои состояния под действием импульсов, подаваемых на тактовый

Слайд 29library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;

entity counter is
-- задаем настроечную константу
generic
(
N: natural

:= 4 -- коэффициент счета со значением по умолчанию
);
port
(
clk: in

std_logic;
rst: in std_logic; -- сигнал сброса счетчика секунд
cntr: out natural
);
end counter;
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity counter is-- задаем настроечную константуgeneric(N: natural := 4 -- коэффициент счета со значением

Слайд 30architecture Behavior of counter is
begin
-- алгоритм работы счетчика зависит от

двух сигналов:
-- тактовых импульсов clk и сигнала сброса rst, поэтому
--

указываем их в списке чувствительности процесса
process(clk, rst)
-- вводим переменную для хранения текущего состояния счетчика
variable cnt: natural range 0 to N-1;
begin
-- реализуем асинхронный сброс, т.е. при активном уровне
-- сигнала сброса rst сразу же, не дожидаясь переднего фронта
-- тактовых импульсов clk, будем обнулять значение счетчика:
if rst = '1' then
cnt := 0;
cntr <= 0;
-- иначе по переднему фронту
-- будем увеличивать значение счетчика
architecture Behavior of counter isbegin-- алгоритм работы счетчика зависит от двух сигналов:-- тактовых импульсов clk и сигнала

Слайд 31-- условие переднего фронта:
-- 1) сигнал изменился -> clk'event

и (and)
-- 2) стал равным '1' -> clk =

'1'
elsif clk'event and clk = '1' then
-- проверяем условие достижения максимального значения,
-- равного (Модуль счета - 1)
if cnt = N - 1 then
cnt := 0;
else
cnt := cnt + 1;
end if; -- закрываем оператор if cnt = N - 1
cntr <= cnt;
end if; -- закрываем оператор if c условием переднего фронта
end process;
end Behavior;
-- условие переднего фронта:-- 1) сигнал изменился -> clk'event  и  (and)-- 2) стал равным '1'

Слайд 32Подключение пакета с настроечной константой
к проекту верхнего уровня
Comp_counter: counter

generic map (N => 100)
port map ();
Точка

с запятой между port map и generic map не ставится.
Подключение пакета с настроечной константойк проекту верхнего уровняComp_counter: counter   generic map (N => 100)				port map

Слайд 33Пакеты в VHDL. Глобальные константы
Глобальные константы задаются в пакетах.
Пакет –

первичный блок проекта, синтаксис которого имеет вид:
package is
;
end ;
Декларациями

могут быть объявления типа и подтипа, константы (ключевое слово constant), компонента, функции и процедуры.
Пакеты в VHDL. Глобальные константыГлобальные константы задаются в пакетах.Пакет – первичный блок проекта, синтаксис которого имеет вид:package

Слайд 34package my_params is
constant N: natural := 16;

constant M: integer := 200;
end my_params;

Для подключения всего пакета к

проекту в разделе подключения библиотек и пакетов нужно записать:
use work.<имя_пакета>.all;

use work.my_params.all;
package my_params is  constant N: natural := 16;  constant M: integer := 200;end my_params;Для подключения

Слайд 35Дополнительные материалы
Книги
ftp://stk-kholopov@stk-kholopov.space.rsreu.ru/public/Books_VHDL.rar
Задание на курсовой проект и примеры выполнения
пояснительной записки

к курсовому проекту
ftp://stk-kholopov@stk-kholopov.space.rsreu.ru/public/КП.rar
Методические указания к лабораторным работам
ftp://stk-kholopov@stk-kholopov.space.rsreu.ru/public/Lab_PLIS_1_2_ASU.pdf
Готовый VHDL-проект

с результатами моделирования
и затем пояснительную записку отправлять на
E-mail

kholopov.i.s@rsreu.ru

Презентация

ftp://stk-kholopov@stk-kholopov.space.rsreu.ru/public/VHDL_АСУ.ppt

Дополнительные материалыКнигиftp://stk-kholopov@stk-kholopov.space.rsreu.ru/public/Books_VHDL.rar Задание на курсовой проект и примеры выполненияпояснительной записки к курсовому проектуftp://stk-kholopov@stk-kholopov.space.rsreu.ru/public/КП.rar Методические указания к лабораторным

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика