Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


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

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

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

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

Презентация на тему Проектирование цифровых устройств на языке vhdl

Содержание

Краткая история VHDL
Проектирование цифровых устройств на языке VHDLВведение в VHDL Краткая история VHDL VHDLVHDL – язык для описания цифровых устройствVHDL = VHSIC (Very High Speed Verilog (vs. VHDL)Частная разработка (1983 г.) для моделирования аппаратурыПо функциональности в целом always@(posedge clk or negedge rstn)begin  if (! rstn)    q Преимущества VHDL / VerilogПромышленный стандарт IEEEНе зависит от конкретной технологии или производителяКод может использоваться многократно Методология проектирования на VHDL Что такое FPGAFPGA = Field Programmable Gate ArrayМикросхема, конфигурируемая пользователем:Элементарные функции – Процесс проектированияКод на VHDLСинтез до уровня примитивовОтображение на ресурсы FPGAРазмещение на кристаллеТрассировкаГенерация Подмножества VHDLНе все конструкции VHDL имеют аппаратную реализациюwait forafterreportassert Описание на уровне регистровых передач (RTL)Комбинационная логикаРегистры Основы VHDL Чувствительность к региструVHDL не чувствителен к региструdatabusDatabusDataBusDATABUSэквивалентны Имена и меткиДолжны быть уникальны в пределах области видимостиНачинаются с буквы (a-z, Формат кодаVHDL не налагает ограничений на форматированиеПробелы и переводы строки эквивалентныif (a КомментарииНачинается с двойного дефиса (--) в любом месте строкиВесь текст до конца Правила хорошего тонаESA VHDL Modeling GuidelinesEuropean Space Research and Technology CenterСентябрь 1994http://www.vhdl.org/rassp/vhdl/guidelines/ModelGuide.pdf Объект моделирования (design entity) Объект моделированияБазовый блок проектаСостоит из интерфейса и архитектур (одной или более)Объект моделированияИнтерфейс объектаАрхитектура 1Архитектура 2Архитектура 3 Пример: элемент NAND (И-НЕ) Пример: реализация на VHDLРасширение файла .vhdОдин файл – один объектИмя файла обычно Секция импортаОпределяет используемые библиотекиБиблиотека – набор участков кода, сгруппированных для повторного использованияlibrary library_name;use library_name.package_name.package_parts; Секция импорта – примерlibrary ieee;use ieee.std_logic_1164.all;подключение библиотекииспользовать все объекты из пакета std_logic_1164 библиотеки ieee Структура библиотеки Основные библиотекиieeeОпределяет многозначную систему логики (типы std_logic, std_logic_vector)stdОпределяет стандартные типы данных и Интерфейс объектаОпределяет вид объекта для внешнего мира («черный ящик») – входные и Интерфейс объекта – примерentity nand_gate is	port	(		a	: in std_logic;		b	: in std_logic;		z	: out std_logic	);end Типы портовТип порта определяет направление передачи данных с точки зрения объекта моделированияТип Тип порта INОбъект моделированияИсточник сигнала (драйвер)драйвер находится снаружи объекта Тип порта OUTОбъект моделированиядрайвер находится внутри объектачтение порта внутри объекта запрещено Архитектура объектаОписывает реализацию объектаИмя архитектуры должно быть уникально в пределах объектаarchitecture architecture_name of entity_name is	declarationsbegin	codeend architecture_name; Архитектура объекта – примерarchitecture model of nand_gate isbegin	z Примерlibrary ieee;use ieee.std_logic_1164.all;entity nand_gate is	port (		a	: in std_logic;		b	: in std_logic;		z	: out std_logic);end Тип STD_LOGIC STD_LOGIClibrary ieee;use ieee.std_logic_1164.all;entity nand_gate is	port (		a	: in std_logic;		b	: in std_logic;		z	: out std_logic);end BIT vs. STD_LOGICBIT – встроенный логический типЗначения: ‘0’, ‘1’STD_LOGIC – девятизначная логикаЗначения: Значения STD_LOGIC Значения STD_LOGIC – ‘X’конфликт значений Значения STD_LOGIC – ‘Z’нет конфликтатристабильный буфервыход буфера отключен от шины Значения STD_LOGIC – ‘L’, ‘H’ Значения STD_LOGIC – ‘-’Применяется, когда значение сигнала не важноМожет присваиваться выходам (реальные Разрешение конфликтовФункция разрешения определяет значение сигнала в случае нескольких драйверов Использование STD_LOGICВсегда используйте STD_LOGIC_VECTOR или STD_LOGIC для всех портов объектаДругие типы могут Одиночные проводники и шины Скаляры и векторыОдиночный проводник = скалярШина = векторsignal a:	std_logic;signal b:	std_logic_vector(7 downto 0); Использование кавычекСкалярные значения указываются в одинарных кавычкахВекторные значения указываются в двойных кавычкахsignal a, b:	std_logic;a Векторы STD_LOGIC_VECTORsignal a:	std_logic_vector(3 downto 0);signal b:	std_logic_vector(3 downto 0);signal c:	std_logic_vector(7 downto 0);signal d:	std_logic_vector(15 Конкатенация векторовДля конкатенации используется оператор &Для обращения к компоненту вектора указывается индекс Стили описания на VHDL Различие стилейСтильПотоков данных (dataflow)Структурный(structural)«параллельные» операторыкомпоненты и связи«последовательные» операторысинтез цифровых устройствсимуляция моделей Пример: элемент XOR3 ИнтерфейсОдинаковый для всех стилейlibrary ieee;use ieee.std_logic_1164.all;entity xor3 is	port	(		a, b, c:	in std_logic;		z:			out std_logic	);end xor3; Стиль потоков данныхОписывает перемещения данных по устройству и операции на даннымиИспользуется для Стиль потоков данных – примерarchitecture dataflow of xor3 is	signal u1_out:	std_logic;		-- промежуточный сигналbegin	u1_out Структурный стильИерархическое соединение компонентов любой сложностиАналог функциональной электрической схемыУдобен, когда устройство разбивается Структурный стиль – примерarchitecture structural of xor3 is	signal u1_out:	std_logic;	component xor2 is		port (			x1, Объявление компонента«Черный ящик»Аналог объявления интерфейса объектаОписывает объект, реализованный в библиотекеПозволяет использовать объекты, Создание объекта из компонентаИменованный перечень соединений (рекомендуется)Связи указываются явноНеименованный перечень соединенийСвязи зависят Поведенческий стильНаиболее далек от особенностей аппаратной реализацииРеализация может оказаться неоптимальнойОписывает алгоритм формирования Поведенческий стиль – примерarchitecture behavioral of xor3 isbegin	process (a, b, c)	begin		if (a Testbenches TestbenchПредназначен для автоматизированного тестирования объектовПодает значения на входы DUTМожет также анализировать значения TestbenchСоставляется на VHDLНе требует изучения специальных языковНе привязан к конкретной средеЯвляется объектом Testbench – пример для XOR3 library ieee;use ieee.std_logic_1164.all;entity xor3_tb is	end xor3;															-- нет Testbench – пример для XOR3 (продолжение)	process	begin		test_vector Testbench – пример для XOR3 (врем. диаграммы) ПроцессыПроцесс – набор инструкцийРазмещаются между словами BEGIN и END PROCESSВыполняются по очередиПосле Процесс и оператор WAITИспользуется для приостановки процессаwait for timeПриостановка на заданное время WAIT FOR vs. WAITtesting: processbegin	test_vector Цикл FOR (кратко)Циклически повторяет набор инструкцийПример:for i in range loop	statementsend loop;processbegin	test_vector
Слайды презентации

Слайд 2 Краткая история VHDL

Краткая история VHDL

Слайд 3 VHDL
VHDL – язык для описания цифровых устройств
VHDL =

VHDLVHDL – язык для описания цифровых устройствVHDL = VHSIC (Very High

VHSIC (Very High Speed Integrated Circuit) Hardware Description Language
Разработан

по заказу DoD для описания ASIC
Промышленный стандарт IEEE:
IEEE 1076-1987
IEEE 1076-1993  используется наиболее широко
IEEE 1076-2000 (незначительные изменения)
IEEE 1076-2002 (незначительные изменения)

Слайд 4 Verilog (vs. VHDL)
Частная разработка (1983 г.) для моделирования

Verilog (vs. VHDL)Частная разработка (1983 г.) для моделирования аппаратурыПо функциональности в

аппаратуры
По функциональности в целом соответствует VHDL
Отсутствует аналог generate
Отличия в

синтаксисе
C-подобный (VHDL – Ada-подобный)
Стандарт IEEE с 1995 г.:
IEEE 1364-1995
IEEE 1364-2001
IEEE 1364-2005 (незначительные изменения)



Слайд 5 always@(posedge clk or negedge rstn)
begin
if (!

always@(posedge clk or negedge rstn)begin if (! rstn)  q

rstn)
q

q <= a + b;
end;

process (clk, rstn)
begin
if (rstn = '0') then
q <= '0';
elsif (clk'event and clk = '1') then
q <= a + b;
end if;
end process;

Пример

VHDL

Verilog


Слайд 6 Преимущества VHDL / Verilog
Промышленный стандарт IEEE
Не зависит от

Преимущества VHDL / VerilogПромышленный стандарт IEEEНе зависит от конкретной технологии или производителяКод может использоваться многократно

конкретной технологии или производителя
Код может использоваться многократно


Слайд 7 Методология проектирования на VHDL

Методология проектирования на VHDL

Слайд 8 Что такое FPGA
FPGA = Field Programmable Gate Array
Микросхема,

Что такое FPGAFPGA = Field Programmable Gate ArrayМикросхема, конфигурируемая пользователем:Элементарные функции

конфигурируемая пользователем:
Элементарные функции – Configurable Logic Blocks (CLB)
Внутренние соединения

– Programmable Switch Matrices (PSM)


Слайд 9 Процесс проектирования
Код на VHDL
Синтез до уровня примитивов
Отображение на

Процесс проектированияКод на VHDLСинтез до уровня примитивовОтображение на ресурсы FPGAРазмещение на

ресурсы FPGA
Размещение на кристалле
Трассировка
Генерация битового потока
Передача на FPGA
Разработка
Отладка
Ввод описания
Синтез
Реализация
Программирование

FPGA

Функциональная симуляция

Статический временной анализ

Временная симуляция

Внутрисхемная отладка


Слайд 10 Подмножества VHDL
Не все конструкции VHDL имеют аппаратную реализацию
wait

Подмножества VHDLНе все конструкции VHDL имеют аппаратную реализациюwait forafterreportassert

for
after
report
assert


Слайд 11 Описание на уровне регистровых передач (RTL)
Комбинационная логика
Регистры

Описание на уровне регистровых передач (RTL)Комбинационная логикаРегистры

Слайд 12 Основы VHDL

Основы VHDL

Слайд 13 Чувствительность к регистру
VHDL не чувствителен к регистру
databus
Databus
DataBus
DATABUS
эквивалентны

Чувствительность к региструVHDL не чувствителен к региструdatabusDatabusDataBusDATABUSэквивалентны

Слайд 14 Имена и метки
Должны быть уникальны в пределах области

Имена и меткиДолжны быть уникальны в пределах области видимостиНачинаются с буквы

видимости
Начинаются с буквы (a-z, A-Z)
Содержат буквы (a-z, A-Z), цифры

(0-9), подчеркивания (_)
Не могут содержать знаков препинания и специальных символов (!, ?, ., &, # и т.д.)
Два и более подчеркивания подряд запрещены


Слайд 15 Формат кода
VHDL не налагает ограничений на форматирование
Пробелы и

Формат кодаVHDL не налагает ограничений на форматированиеПробелы и переводы строки эквивалентныif

переводы строки эквивалентны
if (a = b) then
if (a = b) then
if

(a =
b) then

эквивалентны


Слайд 16 Комментарии
Начинается с двойного дефиса (--) в любом месте

КомментарииНачинается с двойного дефиса (--) в любом месте строкиВесь текст до

строки
Весь текст до конца той же строки считается комментарием

(перевод строки заканчивает комментарий)
Блочные комментарии в VHDL отсутствуют

-- обработка сброса
if (rst = ‘1’) then
counter <= 0; -- обнуление счетчика
end if;


Слайд 17 Правила хорошего тона
ESA VHDL Modeling Guidelines
European Space Research

Правила хорошего тонаESA VHDL Modeling GuidelinesEuropean Space Research and Technology CenterСентябрь 1994http://www.vhdl.org/rassp/vhdl/guidelines/ModelGuide.pdf

and Technology Center
Сентябрь 1994

http://www.vhdl.org/rassp/vhdl/guidelines/ModelGuide.pdf


Слайд 18 Объект моделирования (design entity)

Объект моделирования (design entity)

Слайд 19 Объект моделирования
Базовый блок проекта
Состоит из интерфейса и архитектур

Объект моделированияБазовый блок проектаСостоит из интерфейса и архитектур (одной или более)Объект моделированияИнтерфейс объектаАрхитектура 1Архитектура 2Архитектура 3

(одной или более)
Объект моделирования
Интерфейс объекта
Архитектура 1
Архитектура 2
Архитектура 3


Слайд 20 Пример: элемент NAND (И-НЕ)

Пример: элемент NAND (И-НЕ)

Слайд 21 Пример: реализация на VHDL
Расширение файла .vhd
Один файл –

Пример: реализация на VHDLРасширение файла .vhdОдин файл – один объектИмя файла

один объект
Имя файла обычно совпадает с именем объекта
library ieee;
use

ieee.std_logic_1164.all;

entity nand_gate is
port (
a : in std_logic;
b : in std_logic;
z : out std_logic);
end nand_gate;

architecture model of nand_gate is
begin
z <= a nand b;
end model;

секция импорта

интерфейс объекта моделирования

архитектура объекта моделирования


Слайд 22 Секция импорта
Определяет используемые библиотеки
Библиотека – набор участков кода,

Секция импортаОпределяет используемые библиотекиБиблиотека – набор участков кода, сгруппированных для повторного использованияlibrary library_name;use library_name.package_name.package_parts;

сгруппированных для повторного использования
library library_name;
use library_name.package_name.package_parts;


Слайд 23 Секция импорта – пример
library ieee;
use ieee.std_logic_1164.all;
подключение библиотеки
использовать все

Секция импорта – примерlibrary ieee;use ieee.std_logic_1164.all;подключение библиотекииспользовать все объекты из пакета std_logic_1164 библиотеки ieee

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


Слайд 24 Структура библиотеки

Структура библиотеки

Слайд 25 Основные библиотеки
ieee
Определяет многозначную систему логики (типы std_logic, std_logic_vector)
std
Определяет

Основные библиотекиieeeОпределяет многозначную систему логики (типы std_logic, std_logic_vector)stdОпределяет стандартные типы данных

стандартные типы данных и связанные с ними операции
work
Объекты, создаваемые

пользователем (после синтеза)

необходимо явное объявление в секции импорта

доступны по умолчанию


Слайд 26 Интерфейс объекта
Определяет вид объекта для внешнего мира («черный

Интерфейс объектаОпределяет вид объекта для внешнего мира («черный ящик») – входные

ящик») – входные и выходные сигналы
entity entity_name is
port (
port_name: port_mode

signal_type;
port_name: port_mode signal_type;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
port_name: port_mode signal_type
);
end entity_name;

Слайд 27 Интерфейс объекта – пример
entity nand_gate is
port
(
a : in std_logic;
b :

Интерфейс объекта – примерentity nand_gate is	port	(		a	: in std_logic;		b	: in std_logic;		z	: out

in std_logic;
z : out std_logic
);
end nand_gate;
имя объекта
имя порта
тип порта
после последнего

порта точка с запятой не ставится

режим порта (направление передачи)


Слайд 28 Типы портов
Тип порта определяет направление передачи данных с

Типы портовТип порта определяет направление передачи данных с точки зрения объекта

точки зрения объекта моделирования
Тип IN: входной порт, внутри объекта

разрешено только чтение (правая часть оператора присваивания)
Тип OUT: выходной порт, внутри объекта разрешена только запись (левая часть оператора присваивания)
Другие типы: INOUT (двунаправленный), BUFFER (буферный) – использовать не будем

Слайд 29 Тип порта IN
Объект моделирования
Источник сигнала (драйвер)
драйвер находится снаружи

Тип порта INОбъект моделированияИсточник сигнала (драйвер)драйвер находится снаружи объекта

объекта


Слайд 30 Тип порта OUT
Объект моделирования
драйвер находится внутри объекта
чтение порта

Тип порта OUTОбъект моделированиядрайвер находится внутри объектачтение порта внутри объекта запрещено

внутри объекта запрещено


Слайд 31 Архитектура объекта
Описывает реализацию объекта
Имя архитектуры должно быть уникально

Архитектура объектаОписывает реализацию объектаИмя архитектуры должно быть уникально в пределах объектаarchitecture architecture_name of entity_name is	declarationsbegin	codeend architecture_name;

в пределах объекта
architecture architecture_name of entity_name is
declarations
begin
code
end architecture_name;


Слайд 32 Архитектура объекта – пример
architecture model of nand_gate is
begin
z

Архитектура объекта – примерarchitecture model of nand_gate isbegin	z


Слайд 33 Пример
library ieee;
use ieee.std_logic_1164.all;

entity nand_gate is
port (
a : in std_logic;
b :

Примерlibrary ieee;use ieee.std_logic_1164.all;entity nand_gate is	port (		a	: in std_logic;		b	: in std_logic;		z	: out

in std_logic;
z : out std_logic);
end nand_gate;

architecture model of nand_gate is
begin
z

<= a nand b;
end model;

nand_gate.vhd


Слайд 34 Тип STD_LOGIC

Тип STD_LOGIC

Слайд 35 STD_LOGIC
library ieee;
use ieee.std_logic_1164.all;

entity nand_gate is
port (
a : in std_logic;
b :

STD_LOGIClibrary ieee;use ieee.std_logic_1164.all;entity nand_gate is	port (		a	: in std_logic;		b	: in std_logic;		z	: out

in std_logic;
z : out std_logic);
end nand_gate;

architecture model of nand_gate is
begin
z

<= a nand b;
end model;

nand_gate.vhd

???

используется как логический тип


Слайд 36 BIT vs. STD_LOGIC
BIT – встроенный логический тип
Значения: ‘0’,

BIT vs. STD_LOGICBIT – встроенный логический типЗначения: ‘0’, ‘1’STD_LOGIC – девятизначная

‘1’
STD_LOGIC – девятизначная логика
Значения: ‘U’, ‘0’, ‘1’, ‘X’, ‘Z’,

‘W’, ‘L’, ‘H’, ‘-’
Синтезируемые: ‘0’, ‘1’, ‘Z’
Остальные используются при симуляции

Слайд 37 Значения STD_LOGIC

Значения STD_LOGIC

Слайд 38 Значения STD_LOGIC – ‘X’
конфликт значений

Значения STD_LOGIC – ‘X’конфликт значений

Слайд 39 Значения STD_LOGIC – ‘Z’
нет конфликта
тристабильный буфер
выход буфера отключен

Значения STD_LOGIC – ‘Z’нет конфликтатристабильный буфервыход буфера отключен от шины

от шины


Слайд 40 Значения STD_LOGIC – ‘L’, ‘H’

Значения STD_LOGIC – ‘L’, ‘H’

Слайд 41 Значения STD_LOGIC – ‘-’
Применяется, когда значение сигнала не

Значения STD_LOGIC – ‘-’Применяется, когда значение сигнала не важноМожет присваиваться выходам

важно
Может присваиваться выходам (реальные значения – на усмотрение синтезатора)

 оптимизация
Не используйте в сравнениях

Слайд 42 Разрешение конфликтов
Функция разрешения определяет значение сигнала в случае

Разрешение конфликтовФункция разрешения определяет значение сигнала в случае нескольких драйверов

нескольких драйверов


Слайд 43 Использование STD_LOGIC
Всегда используйте STD_LOGIC_VECTOR или STD_LOGIC для всех

Использование STD_LOGICВсегда используйте STD_LOGIC_VECTOR или STD_LOGIC для всех портов объектаДругие типы

портов объекта
Другие типы могут использоваться внутри архитектуры
Для преобразования типов

используйте функции преобразования
Также можно оперировать типами STD_LOGIC_VECTOR или STD_LOGIC непосредственно

Слайд 44 Одиночные проводники и шины

Одиночные проводники и шины

Слайд 45 Скаляры и векторы
Одиночный проводник = скаляр
Шина = вектор
signal

Скаляры и векторыОдиночный проводник = скалярШина = векторsignal a:	std_logic;signal b:	std_logic_vector(7 downto 0);

a: std_logic;
signal b: std_logic_vector(7 downto 0);


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

Использование кавычекСкалярные значения указываются в одинарных кавычкахВекторные значения указываются в двойных кавычкахsignal a, b:	std_logic;a

указываются в двойных кавычках
signal a, b: std_logic;

a

‘Z’;

signal a, b: std_logic_vector (1 downto 0);

a <= “00”;
b <= “1Z”;


Слайд 47 Векторы STD_LOGIC_VECTOR
signal a: std_logic_vector(3 downto 0);
signal b: std_logic_vector(3 downto 0);
signal

Векторы STD_LOGIC_VECTORsignal a:	std_logic_vector(3 downto 0);signal b:	std_logic_vector(3 downto 0);signal c:	std_logic_vector(7 downto 0);signal

c: std_logic_vector(7 downto 0);
signal d: std_logic_vector(15 downto 0);
signal e: std_logic_vector(8 downto 0);

a

<= “0000”; -- двоичный формат по умолчанию
b <= B“0000”; -- явное указание двоичного формата
c <= “0110_0111”; -- подчеркивание для улучшения восприятия кода
d <= X“AF67”; -- шестнадцатиричный формат
e <= O“723”; -- восьмиричный формат

Старший бит слева


Слайд 48 Конкатенация векторов
Для конкатенации используется оператор &
Для обращения к

Конкатенация векторовДля конкатенации используется оператор &Для обращения к компоненту вектора указывается

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

вектора указывается диапазон в скобках

signal a, b: std_logic_vector(3 downto 0);
signal c: std_logic_vector(7 downto 0);
signal d: std_logic_vector(5 downto 0);

a <= “1010”;
b <= ‘0’ & ‘0’ & ‘1’ & ‘1’; -- b = “0011”
c <= a & b; -- c = “10100011”
d <= a(0) & b(0) & c(3 downto 0); -- d = “010011”


Слайд 49 Стили описания на VHDL

Стили описания на VHDL

Слайд 50 Различие стилей
Стиль
Потоков данных (dataflow)
Структурный
(structural)
«параллельные» операторы
компоненты и связи
«последовательные» операторы
синтез

Различие стилейСтильПотоков данных (dataflow)Структурный(structural)«параллельные» операторыкомпоненты и связи«последовательные» операторысинтез цифровых устройствсимуляция моделей

цифровых устройств
симуляция моделей


Слайд 51 Пример: элемент XOR3

Пример: элемент XOR3

Слайд 52 Интерфейс
Одинаковый для всех стилей
library ieee;
use ieee.std_logic_1164.all;

entity xor3 is
port
(
a,

ИнтерфейсОдинаковый для всех стилейlibrary ieee;use ieee.std_logic_1164.all;entity xor3 is	port	(		a, b, c:	in std_logic;		z:			out std_logic	);end xor3;

b, c: in std_logic;
z: out std_logic
);
end xor3;


Слайд 53 Стиль потоков данных
Описывает перемещения данных по устройству и

Стиль потоков данныхОписывает перемещения данных по устройству и операции на даннымиИспользуется

операции на данными
Используется для описания простых булевых функций
Все операторы

выполняются параллельно  порядок операторов не важен

u1_out <= a xor b;
z <= u1_out xor c;

z <= u1_out xor c; u1_out <= a xor b;

эквивалентны


Слайд 54 Стиль потоков данных – пример
architecture dataflow of xor3

Стиль потоков данных – примерarchitecture dataflow of xor3 is	signal u1_out:	std_logic;		-- промежуточный сигналbegin	u1_out

is
signal u1_out: std_logic; -- промежуточный сигнал
begin
u1_out

c;
end dataflow;

u1_out


Слайд 55 Структурный стиль
Иерархическое соединение компонентов любой сложности
Аналог функциональной электрической

Структурный стильИерархическое соединение компонентов любой сложностиАналог функциональной электрической схемыУдобен, когда устройство

схемы
Удобен, когда устройство разбивается на блоки естественным образом
Используется при

проектировании сложных устройств

Слайд 56 Структурный стиль – пример
architecture structural of xor3 is
signal

Структурный стиль – примерarchitecture structural of xor3 is	signal u1_out:	std_logic;	component xor2 is		port

u1_out: std_logic;
component xor2 is
port (
x1, x2: in std_logic;
y: out std_logic);
end component;
begin
u1: xor2 port map

(
x1 => a,
x2 => b,
y => u1_out);
u2: xor2 port map (
x1 => u1_out,
x2 => c,
y => z);
end structural;

XOR2

XOR3

U1

U2


Слайд 57 Объявление компонента
«Черный ящик»
Аналог объявления интерфейса объекта
Описывает объект, реализованный

Объявление компонента«Черный ящик»Аналог объявления интерфейса объектаОписывает объект, реализованный в библиотекеПозволяет использовать

в библиотеке
Позволяет использовать объекты, не имеющие VHDL-реализации (например, на

Verilog)

component xor2 is
port
(
x1, x2: in std_logic;
y: out std_logic
);
end component;

наименование компонента

описание портов


Слайд 58 Создание объекта из компонента
Именованный перечень соединений (рекомендуется)
Связи указываются

Создание объекта из компонентаИменованный перечень соединений (рекомендуется)Связи указываются явноНеименованный перечень соединенийСвязи

явно
Неименованный перечень соединений
Связи зависят от порядка перечисления
u1: xor2 port map (
x1 =>

a,
x2 => b,
y => u1_out);

имя порта

присоединенный сигнал


u1: xor2 port map (
a,
b,
u1_out);

component xor2 is
port (
x1: in std_logic;
x2: in std_logic;
y: out std_logic);
end component


Слайд 59 Поведенческий стиль
Наиболее далек от особенностей аппаратной реализации
Реализация может

Поведенческий стильНаиболее далек от особенностей аппаратной реализацииРеализация может оказаться неоптимальнойОписывает алгоритм

оказаться неоптимальной
Описывает алгоритм формирования выходов в зависимости от входов
Для

описания используются блоки PROCESS
Операторы внутри блока выполняются последовательно  порядок операторов имеет значение


Слайд 60 Поведенческий стиль – пример
architecture behavioral of xor3 is
begin
process

Поведенческий стиль – примерarchitecture behavioral of xor3 isbegin	process (a, b, c)	begin		if

(a, b, c)
begin
if (a xor b xor c =

‘1’) then
z <= ‘1’;
else
z <= ‘0’;
end if;
end process;
end behavioral ;

Слайд 61 Testbenches

Testbenches

Слайд 62 Testbench
Предназначен для автоматизированного тестирования объектов
Подает значения на входы

TestbenchПредназначен для автоматизированного тестирования объектовПодает значения на входы DUTМожет также анализировать

DUT
Может также анализировать значения на выходе
Testbench
анализируемый выход
Процесс выработки тестовых

сигналов

Тестируемый объект
(DUT, Design Under Test)

входные сигналы


Слайд 63 Testbench
Составляется на VHDL
Не требует изучения специальных языков
Не привязан

TestbenchСоставляется на VHDLНе требует изучения специальных языковНе привязан к конкретной средеЯвляется

к конкретной среде
Является объектом моделирования
Не синтезируемый
Не имеет портов
Выполняется в

среде симулятора
Рассматривает DUT как черный ящик
Легко адаптируется к различным архитектурам
Выходы DUT отображаются в виде временных диаграмм или записываются в файл



Слайд 64 Testbench – пример для XOR3
library ieee;
use ieee.std_logic_1164.all;

entity

Testbench – пример для XOR3 library ieee;use ieee.std_logic_1164.all;entity xor3_tb is	end xor3;															--

xor3_tb is
end xor3; -- нет портов

architecture testbench of xor3_tb is
component

xor3 is -- тестируемый объект (DUT)
port (
a, b, c: in std_logic;
z: out std_logic);
end component;
signal test_vector: std_logic_vector(2 downto 0); -- входные значения
signal test_result: std_logic; -- выходное значение

begin
dut: xor3 port map ( -- создание объекта
a => test_vector(0),
b => test_vector(1),
c => test_vector(2),
z => test_result);

Слайд 65 Testbench – пример для XOR3 (продолжение)
process
begin
test_vector

Testbench – пример для XOR3 (продолжение)	process	begin		test_vector

for 10 ns; -- задержка 10 нс
test_vector

10 ns;
test_vector <= “010”;
wait for 10 ns;
test_vector <= “011”;
wait for 10 ns;
test_vector <= “100”;
wait for 10 ns;
test_vector <= “101”;
wait for 10 ns;
test_vector <= “110”;
wait for 10 ns;
test_vector <= “111”;
wait; -- остановка
end process;
end testbench;

Слайд 66 Testbench – пример для XOR3 (врем. диаграммы)

Testbench – пример для XOR3 (врем. диаграммы)

Слайд 67 Процессы
Процесс – набор инструкций
Размещаются между словами BEGIN и

ПроцессыПроцесс – набор инструкцийРазмещаются между словами BEGIN и END PROCESSВыполняются по

END PROCESS
Выполняются по очереди
После последней инструкции осуществляется возврат к

первой

testing: process
begin
test_vector <= “00”;
wait for 10 ns;
test_vector <= “01”;
wait for 10 ns;
test_vector <= “10”;
wait for 10 ns;
test_vector <= “11”;
wait for 10 ns;
end process;

необязательная метка (имя)


Слайд 68 Процесс и оператор WAIT
Используется для приостановки процесса
wait for

Процесс и оператор WAITИспользуется для приостановки процессаwait for timeПриостановка на заданное

time
Приостановка на заданное время (пауза)
Используется для моделирования задержки
wait until

condition
Приостановка до выполнения условия
wait on signals
Приостановка до изменения любого из сигналов
wait
Окончательная остановка
Используется в testbench после генерации всех сигналов

testing: process
begin
test_vector <= “00”;
wait for 10 ns;
test_vector <= “01”;
wait for 10 ns;
test_vector <= “10”;
wait for 10 ns;
test_vector <= “11”;
wait;
end process;

завершение выполнения процесса


Слайд 69 WAIT FOR vs. WAIT
testing: process
begin
test_vector

WAIT FOR vs. WAITtesting: processbegin	test_vector

10 ns;
test_vector

for 10 ns;
test_vector <= “11”;
wait for 10 ns;
end process;

testing: process
begin
test_vector <= “00”;
wait for 10 ns;
test_vector <= “01”;
wait for 10 ns;
test_vector <= “10”;
wait for 10 ns;
test_vector <= “11”;
wait;
end process;

WAIT FOR: значения повторяются циклически

WAIT: значение остается постоянным после инструкции wait


  • Имя файла: proektirovanie-tsifrovyh-ustroystv-na-yazyke-vhdl.pptx
  • Количество просмотров: 109
  • Количество скачиваний: 0