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

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


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

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

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

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

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

Содержание

Структура цифрового устройстваКомбинационная логикаРегистры
Проектирование цифровых устройств на языке VHDLОписание схем с памятью Структура цифрового устройстваКомбинационная логикаРегистры Стили описания на VHDLСтильПотоков данных (dataflow)Структурный(structural)«параллельные» операторыкомпоненты и связи«последовательные» операторы Особенности схем с памятью Структура схемы с памятью Особенности схем с памятьюКомбинационная схемаМодель описания – система булевых уравненийВыход зависит только Статические и динамические триггерыСтатический триггер «прозрачен» при высоком уровне синхросигналаДинамический триггер запоминает Процессы Поведенческий стильПоведенческое описание  алгоритмДля описания используются блоки PROCESSВнутри процесса весь код Процессы – синтаксисprocess (sensitivity_list)	declarationsbegin	statementsend process;список чувствительностиобъявления переменныхтело процесса Тело процессаСодержит последовательные операторыВыполняются по очереди (один за другим)  возможна организация Тело процессаВнутри процесса все операторы выполняются последовательноПорядок имеет значениеПроцесс выполняется в бесконечном Список чувствительности (sensitivity list)Описывает сигналы, к которым чувствителен процессСигналы перечисляются через запятуюПроцесс Список чувствительности (sensitivity list)processbegin	wait on a, с;	. . .end process;process (a, с)begin	. Объявления переменных (declarations)Содержит описание локальных переменных процессаНе может содержать объявления сигналовСинтаксис объявления Сигналы и переменныеСигналыМогут быть объявлены в интерфейсе объекта или в архитектуреОператор присваивания Присваивание значений сигналамЗначения присваиваются сигналам при приостановке процесса:По инструкции waitПо достижении конца Условный оператор if-elsif-else Условный операторОператор if-elsif-elseВетви elsif и else являются опциональнымиВыполняет первый блок кода statementsi, Описание фронта сигнала – функция rising_edgeВозвращает истинное значение в момент восходящего фронта Описание фронта сигнала – функция rising_edgeprocess(clk)begin	if rising_edge(clk) then		counter rising_edge и sig_name’eventАльтернативное условие на фронт синхросигналаРазличия между rising_edge и sig_name’eventrising_edge определяет Синхронные и асинхронные операцииСинхронные операции – «привязаны» к фронту синхросигналаПример: запись в Пример 18-разрядный регистр с синхронным сбросомlibrary ieee;use ieee.std_logic_1164.all;entity reg8 is	port (		clk, reset_n	: Пример 28-разрядный регистр с асинхронным сбросомlibrary ieee;use ieee.std_logic_1164.all;entity reg8 is	port (		clk, reset_n	: Оператор множественного ветвления case Оператор множественного ветвленияОператор caseАналог в традиционных языках программирования – оператор switchАналог параллельного Пустой операторНе выполняет никаких действийИспользуется там, где оператор требуется формально null;process(clk)begin	if rising_edge(clk) Оператор цикла for Оператор цикла forОператор for-loopАналог в традиционных языках программирования – оператор forВыполняет блок Оператор цикла forПример – генерация тестовых воздействий в testbenchprocessbegin	test_value Оператор цикла while Оператор цикла whileОператор while-loopАналог в традиционных языках программирования – оператор whileУсловие проверяется Оператор приостановки процесса wait Оператор приостановки процессаОператор waitИспользуется для приостановки выполнения процесса:wait for time – на
Слайды презентации

Слайд 2 Структура цифрового устройства
Комбинационная логика
Регистры

Структура цифрового устройстваКомбинационная логикаРегистры

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

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

связи
«последовательные» операторы


Слайд 4 Особенности схем с памятью

Особенности схем с памятью

Слайд 5 Структура схемы с памятью

Структура схемы с памятью

Слайд 6 Особенности схем с памятью
Комбинационная схема
Модель описания – система

Особенности схем с памятьюКомбинационная схемаМодель описания – система булевых уравненийВыход зависит

булевых уравнений
Выход зависит только от текущих входов
Данные распространяются по

схеме от входов к выходам
Значения изменяются при изменении входов
Для хранения значений могут использоваться статические триггеры (latches)

Схема с памятью

Модель описания – конечный автомат
Выход зависит от текущих входов и их истории
В схеме присутствуют обратные связи
Значения изменяются по фронту синхросигнала
Для хранения значений используются динамические триггеры (flip-flops) и память (RAM)


Слайд 7 Статические и динамические триггеры
Статический триггер «прозрачен» при высоком

Статические и динамические триггерыСтатический триггер «прозрачен» при высоком уровне синхросигналаДинамический триггер

уровне синхросигнала
Динамический триггер запоминает значение в момент прихода фронта

синхросигнала

Слайд 8 Процессы

Процессы

Слайд 9 Поведенческий стиль
Поведенческое описание  алгоритм
Для описания используются блоки

Поведенческий стильПоведенческое описание  алгоритмДля описания используются блоки PROCESSВнутри процесса весь

PROCESS
Внутри процесса весь код выполняется последовательно
Между собой процессы выполняются

параллельно


Слайд 10 Процессы – синтаксис
process (sensitivity_list)
declarations
begin
statements
end process;
список чувствительности
объявления переменных
тело процесса

Процессы – синтаксисprocess (sensitivity_list)	declarationsbegin	statementsend process;список чувствительностиобъявления переменныхтело процесса

Слайд 11 Тело процесса
Содержит последовательные операторы
Выполняются по очереди (один за

Тело процессаСодержит последовательные операторыВыполняются по очереди (один за другим)  возможна

другим)  возможна организация ветвлений и циклов
Синтаксис операторов отличается

от их параллельных аналогов
Семантика близка к традиционным языкам программирования

process (sensitivity_list)
declarations
begin
statements
end process;


Слайд 12 Тело процесса
Внутри процесса все операторы выполняются последовательно
Порядок имеет

Тело процессаВнутри процесса все операторы выполняются последовательноПорядок имеет значениеПроцесс выполняется в

значение
Процесс выполняется в бесконечном цикле
Исполнение начинается при изменении сигналов,

к которым чувствителен процесс
Исполнение приостанавливается в конце процесса

Слайд 13 Список чувствительности (sensitivity list)
Описывает сигналы, к которым чувствителен

Список чувствительности (sensitivity list)Описывает сигналы, к которым чувствителен процессСигналы перечисляются через

процесс
Сигналы перечисляются через запятую
Процесс начинает исполняться при изменении сигнала

из списка чувствительности и приостанавливается по достижении end process
Эквивалентен оператору wait on
Обязателен в синтезируемом коде
Может не использоваться в testbench

process (sensitivity_list)
declarations
begin
statements
end process;

Процесс

исполнение кода

возврат к началу процесса

ожидание изменения сигнала из списка


Слайд 14 Список чувствительности (sensitivity list)
process
begin
wait on a, с;
. .

Список чувствительности (sensitivity list)processbegin	wait on a, с;	. . .end process;process (a,

.
end process;
process (a, с)
begin

. . .
end process;
сигнал a в

списке чувствительности – код процесса будет выполнен

сигнал b не в списке чувствительности – процесс не выполнится


Слайд 15 Объявления переменных (declarations)
Содержит описание локальных переменных процесса
Не может

Объявления переменных (declarations)Содержит описание локальных переменных процессаНе может содержать объявления сигналовСинтаксис

содержать объявления сигналов
Синтаксис объявления переменной
process (sensitivity_list)
declarations
begin
code
end process;
variable var_name :

type [ := default_value ] ;

имя переменной

тип переменной

значение по умолчанию (опционально)


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

Сигналы и переменныеСигналыМогут быть объявлены в интерфейсе объекта или в архитектуреОператор присваивания

или в архитектуре
Оператор присваивания

«историю» (можно узнать, например, время последнего изменения)

Переменные

Могут быть объявлены и использованы только внутри процесса
Оператор присваивания :=
Значение присваивается немедленно
Характеризуются только текущим значением

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


Слайд 17 Присваивание значений сигналам
Значения присваиваются сигналам при приостановке процесса:
По

Присваивание значений сигналамЗначения присваиваются сигналам при приостановке процесса:По инструкции waitПо достижении

инструкции wait
По достижении конца процесса

значения сигналам будут присвоены здесь
process

(clk)
begin
. . .
sig <= “0010”;
if (sig = “0010”) then
. . .
end if;
. . .
end process;

проверяется предыдущее значение

сигнал


Слайд 18 Условный оператор if-elsif-else

Условный оператор if-elsif-else

Слайд 19 Условный оператор
Оператор if-elsif-else
Ветви elsif и else являются опциональными
Выполняет

Условный операторОператор if-elsif-elseВетви elsif и else являются опциональнымиВыполняет первый блок кода

первый блок кода statementsi, для которого условие истинно
Если все

условия ложны, выполняется безусловная ветвь else

if (condition1) then
statements1
elsif (condition2) then
statements2

elsif (conditionN) then
statementsN
else
statementsN+1
end if;


Слайд 20 Описание фронта сигнала – функция rising_edge
Возвращает истинное значение

Описание фронта сигнала – функция rising_edgeВозвращает истинное значение в момент восходящего

в момент восходящего фронта сигнала
Иначе возвращает значение «ложь»
Для описания

нисходящего фронта может использоваться функция falling_edge(sig_name)
Используется для описания синхронных схем
Аппаратная модель – динамический триггер

rising_edge(sig_name)

process(clk)
begin
if rising_edge(clk) then
. . . -- Значения сигналов и переменных будут присвоены
-- по фронту сигнала CLK
end if;
end process;

шаблон описания синхронной схемы


Слайд 21 Описание фронта сигнала – функция rising_edge
process(clk)
begin
if rising_edge(clk) then
counter

Описание фронта сигнала – функция rising_edgeprocess(clk)begin	if rising_edge(clk) then		counter

1

if rising_edge(clk) then …


Слайд 22 rising_edge и sig_name’event
Альтернативное условие на фронт синхросигнала

Различия между

rising_edge и sig_name’eventАльтернативное условие на фронт синхросигналаРазличия между rising_edge и sig_name’eventrising_edge

rising_edge и sig_name’event
rising_edge определяет переходы 01, L 1
sig_name’event and

sig_name=‘1’ определяет любые переходы sig_name вида * 1, кроме 1 1

sig_name’event and sig_name = ‘1’


Слайд 23 Синхронные и асинхронные операции
Синхронные операции – «привязаны» к

Синхронные и асинхронные операцииСинхронные операции – «привязаны» к фронту синхросигналаПример: запись

фронту синхросигнала
Пример: запись в регистр
Асинхронные операции – выполняются в

произвольный момент времени (обычно по условию)
Пример: асинхронный сброс (reset)
В условном операторе if-else-elsif как правило:
асинхронные операции предшествуют условию rising_edge(sig_name)
синхронные операции соответствуют условию rising_edge(sig_name)


Слайд 24 Пример 1
8-разрядный регистр с синхронным сбросом
library ieee;
use ieee.std_logic_1164.all;

entity

Пример 18-разрядный регистр с синхронным сбросомlibrary ieee;use ieee.std_logic_1164.all;entity reg8 is	port (		clk,

reg8 is
port (
clk, reset_n : in std_logic;
d : in std_logic_vector(7 downto

0);
q : out std_logic_vector(7 downto 0));
end entity;

architecture behav of reg8 is
begin
process(clk)
begin
if rising_edge(clk) then
if (reset_n = ‘0’) then
q <= x”00”;
else
q <= d;
end if;
end if;
end process;
end architecture;

Слайд 25 Пример 2
8-разрядный регистр с асинхронным сбросом
library ieee;
use ieee.std_logic_1164.all;

entity

Пример 28-разрядный регистр с асинхронным сбросомlibrary ieee;use ieee.std_logic_1164.all;entity reg8 is	port (		clk,

reg8 is
port (
clk, reset_n : in std_logic;
d : in std_logic_vector(7 downto

0);
q : out std_logic_vector(7 downto 0));
end entity;

architecture behav of reg8 is
begin
process(clk, reset_n)
begin
if (reset_n = ‘0’) then
q <= x”00”;
elsif rising_edge(clk) then
q <= d;
end if;
end process;
end architecture;

Слайд 26 Оператор множественного ветвления case

Оператор множественного ветвления case

Слайд 27 Оператор множественного ветвления
Оператор case
Аналог в традиционных языках программирования

Оператор множественного ветвленияОператор caseАналог в традиционных языках программирования – оператор switchАналог

– оператор switch
Аналог параллельного оператора

блок statementsi, для которого совпало значение choisei анализируемого выражения
Значения должны быть известны на момент компиляции
Значения должны покрывать все возможные варианты expression
Несколько значений можно разделять вертикальной чертой |
Вариант others включает все явно не описанные значения
В блоке statementsi может содержаться один или более последовательных операторов

case expression is
when choise1 =>
statements1
. . .
when choiseN =>
statementsN
when others =>
statementsN+1
end case;


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

Пустой операторНе выполняет никаких действийИспользуется там, где оператор требуется формально null;process(clk)begin	if

требуется формально
null;
process(clk)
begin
if rising_edge(clk) then
case mode is
when “00” => result

+ op_b;
when “01” => result <= op_a – op_b;
when “10” => result <= 0;
when others => null; -- Описывает все прочие варианты mode
-- и реализует режим хранения
end case;
end if;
end process;

Слайд 29 Оператор цикла for

Оператор цикла for

Слайд 30 Оператор цикла for
Оператор for-loop
Аналог в традиционных языках программирования

Оператор цикла forОператор for-loopАналог в традиционных языках программирования – оператор forВыполняет

– оператор for
Выполняет блок statements заданное количество раз
На каждой

итерации изменяется значение счетчика counter типа integer
Переменную counter заранее объявлять не нужно; она является локальной для цикла
Диапазон range:
low to high
high downto low

for counter in range loop
statements
end loop;


Слайд 31 Оператор цикла for
Пример – генерация тестовых воздействий в

Оператор цикла forПример – генерация тестовых воздействий в testbenchprocessbegin	test_value

testbench
process
begin
test_value

3 loop
for value in 0 to 3 loop
wait for 10 ns;
test_value <= test_value + 1;
end loop;
test_mode <= test_mode + 1;
end loop;
end process;

Слайд 32 Оператор цикла while

Оператор цикла while

Слайд 33 Оператор цикла while
Оператор while-loop
Аналог в традиционных языках программирования

Оператор цикла whileОператор while-loopАналог в традиционных языках программирования – оператор whileУсловие

– оператор while
Условие проверяется перед выполнением блока statements
Выполняет блок

statements, пока условие истинно

while condition loop
statements
end loop;


Слайд 34 Оператор приостановки процесса wait

Оператор приостановки процесса wait

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