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

Презентация: Проектирование цифровых устройств на языке vhdl
1 из 35
Ваша оценка презентации
Оцените презентацию по шкале от 1 до 5 баллов
  • 1
  • 2
  • 3
  • 4
  • 5
4.0
1 оценка

Комментарии

Нет комментариев для данной презентации

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


Добавить свой комментарий

Аннотация к презентации

Презентация powerpoint для студентов на тему "Проектирование цифровых устройств на языке vhdl". Содержит 35 слайдов. Скачать файл 0.19 Мб. Самая большая база качественных презентаций. Смотрите онлайн или скачивайте на компьютер. Средняя оценка: 4.0 балла из 5.

Содержание

  • Презентация: Проектирование цифровых устройств на языке vhdl
    Слайд 1

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

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

  • Слайд 2

    Структура цифрового устройства

    2 ... ... Комбинационная логика Регистры

  • Слайд 3

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

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

  • Слайд 4

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

    4

  • Слайд 5

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

    5 Комбинационная логика Память входы выходы текущее состояние S(t) следующее состояние S(t+1)

  • Слайд 6

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

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

  • Слайд 7

    Статические и динамические триггеры

    7 D CLK Q D Q CLK latch D Q CLK flip-flop D CLK Q Статический триггер «прозрачен» при высоком уровне синхросигнала Динамический триггер запоминает значение в момент прихода фронта синхросигнала

  • Слайд 8

    Процессы

    8

  • Слайд 9

    Поведенческий стиль

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

  • Слайд 10

    Процессы – синтаксис

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

  • Слайд 11

    Тело процесса

    Содержит последовательные операторы Выполняются по очереди (один за другим)  возможна организация ветвлений и циклов Синтаксис операторов отличается от их параллельных аналогов Семантика близка к традиционным языкам программирования 11 process (sensitivity_list) declarations begin statements end process;

  • Слайд 12

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

  • Слайд 13

    Список чувствительности (sensitivity list)

    Описывает сигналы, к которым чувствителен процесс Сигналы перечисляются через запятую Процесс начинает исполняться при изменении сигнала из списка чувствительности и приостанавливается по достижении end process Эквивалентен оператору wait on Обязателен в синтезируемом коде Может не использоваться в testbench 13 process(sensitivity_list) declarations begin statements end process; Процесс исполнение кода возврат к началу процесса ожидание изменения сигнала из списка

  • Слайд 14

    14 process begin wait on a, с; . . . end process; process (a, с) begin . . . end process; A B сигнал aв списке чувствительности – код процесса будет выполнен сигнал bне в списке чувствительности – процесс не выполнится

  • Слайд 15

    Объявления переменных (declarations)

    Содержит описание локальных переменных процесса Не может содержать объявления сигналов Синтаксис объявления переменной 15 process (sensitivity_list) declarations begin code end process; variablevar_name : type [ := default_value ] ; имя переменной тип переменной значение по умолчанию (опционально)

  • Слайд 16

    Сигналы и переменные

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

  • Слайд 17

    Присваивание значений сигналам

    Значения присваиваются сигналам при приостановке процесса: По инструкции wait По достижении конца процесса 17 Процесс исполнение кода возврат к началу процесса значения сигналам будут присвоены здесь process (clk) begin . . . sig

  • Слайд 18

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

    18

  • Слайд 19

    Условный оператор

    Оператор if-elsif-else Ветви elsifи elseявляются опциональными Выполняет первый блок кодаstatementsi, для которого условие истинно Если все условия ложны, выполняется безусловная ветвь else 19 if (condition1) then statements1 elsif (condition2) then statements2 … elsif (conditionN) then statementsN else statementsN+1 end if;

  • Слайд 20

    Описание фронта сигнала – функция rising_edge

    Возвращает истинное значение в момент восходящего фронта сигнала Иначе возвращает значение «ложь» Для описания нисходящего фронта может использоваться функция falling_edge(sig_name) Используется для описания синхронных схем Аппаратная модель – динамический триггер 20 rising_edge(sig_name) process(clk) begin ifrising_edge(clk) then . . . -- Значения сигналов и переменных будут присвоены -- по фронту сигнала CLK end if; end process; шаблон описания синхронной схемы

  • Слайд 21

    21 process(clk) begin ifrising_edge(clk) then counter

  • Слайд 22

    rising_edgeи sig_name’event

    Альтернативное условие на фронт синхросигнала Различия между rising_edgeи sig_name’event rising_edge определяет переходы01, L 1 sig_name’event and sig_name=‘1’определяет любые переходы sig_nameвида * 1, кроме 1 1 22 sig_name’event and sig_name = ‘1’

  • Слайд 23

    Синхронные и асинхронные операции

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

  • Слайд 24

    Пример 1

    24 8-разрядный регистр с синхронным сбросом library ieee; use ieee.std_logic_1164.all; entity 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; architecturebehavof reg8 is begin process(clk) begin ifrising_edge(clk) then if (reset_n = ‘0’) then q

  • Слайд 25

    Пример 2

    25 8-разрядный регистр с асинхронным сбросом library ieee; use ieee.std_logic_1164.all; entity 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; architecturebehavof reg8 is begin process(clk, reset_n) begin if (reset_n = ‘0’) then q

  • Слайд 26

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

    26

  • Слайд 27

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

    Оператор case Аналог в традиционных языках программирования – оператор switch Аналог параллельного оператора statements1 . . . whenchoiseN => statementsN whenothers => statementsN+1 end case;

  • Слайд 28

    Пустой оператор

    Не выполняет никаких действий Используется там, где оператор требуется формально 28 null; process(clk) begin if rising_edge(clk) then case mode is when “00” => result result result null; -- Описывает все прочие варианты mode -- и реализует режим хранения end case; end if; end process;

  • Слайд 29

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

    29

  • Слайд 30

    Оператор for-loop Аналог в традиционных языках программирования – оператор for Выполняет блокstatementsзаданное количество раз На каждой итерации изменяется значение счетчика counter типа integer Переменную counterзаранее объявлять не нужно; она является локальной для цикла Диапазон range: low to high high downto low 30 for counter in range loop statements end loop;

  • Слайд 31

    Пример – генерация тестовых воздействий в testbench 31 process begin test_value

  • Слайд 32

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

    32

  • Слайд 33

    Оператор while-loop Аналог в традиционных языках программирования – оператор while Условие проверяется перед выполнением блока statements Выполняет блок statements, пока условие истинно 33 while condition loop statements end loop;

  • Слайд 34

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

    34

  • Слайд 35

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

    Оператор wait Используется для приостановки выполнения процесса: wait for time– на определенное время wait until condition– до выполнения условия wait on signals– до определенного события (изменения сигнала) waitбез параметров – завершение выполнения процесса Полная форма оператора: Синтезируемое ожидание фронта синхронизации: 35 wait until rising_edge(clk); wait on signals until condition fortime;

Посмотреть все слайды

Сообщить об ошибке