«…лишь недалекие люди боятся конкуренции, а люди подлинного творчества ценят общение с каждым талантом…» А. Бек, Талант.

ПЦУСБ/Лекция 2

Материал из Wiki
Перейти к: навигация, поиск
Лекции ПЦУСБ

Лекции

Практические
Тесты

Лабораторные

Доп. материалы

Заголовок
Основы языка VHDL
Автор
Авдеев Н.А.
Нижний колонтитул
ПЦУСБ/Лекция 2
Дополнительный нижний колонтитул
Авдеев Н.А., 17:52, 15 сентября 2013


Содержание

Слайд: Языки HDL (Hardware Description Language)

  • Проблемы проектирования СБИС:
    • несоответствие формы, в которой ставится задача (обычно задается поведение), и схемы проекта (сеть взаимосвязанных компонентов)
    • «ручной» перевод описания проекта в набор логических выражений и схему
    • работа со сложными (тысячи и более компонентов) проектами
  • Наиболее часто используемые HDL-языки: VHDL, Verilog, Abel

Слайд: Язык VHDL

VHDL
Very high speed integration circuits (VHSIC) Hardware Description Language предложен DoD USA в начале 80-х:
  • Первые симуляторы появились в начале 90-х
  • ПО для ПК – в середине 90-х
  • Основное применение сейчас – PLD, FPGA, разработка заказных СБИС

Слайд: Стандарты языка VHDL

Ревизии языка: IEEE Standard VHDL Language Reference Manual

  • 1076-1987 Первая версия стандарта
  • 1076-1993 (ISBN 1-55937-376-8) Значительные улучшения после нескольких лет использования. Наиболее используемая и поддерживаемая САПР версия.
  • ГОСТ Р 50754-95 Язык описания аппаратуры цифровых систем VHDL. Описание языка
  • 1076-2000 Небольшие изменения. Предложен защищенный тип (protected).
  • 1076-2002 Небольшие изменения
  • 1076-2008 Существенные изменения (опубликован 2009-01-26).

Связанные стандарты:

  • IEEE 1076.1 VHDL Analog and Mixed-Signal (VHDL-AMS)
  • IEEE 1076.1.1 VHDL-AMS Standard Packages (stdpkgs)
  • IEEE 1076.2 VHDL Math Package (math)
  • IEEE 1076.3 VHDL Synthesis Package (vhdlsynth)
  • IEEE 1076.3 VHDL Synthesis Package - Floating Point (fphdl)
  • IEEE 1076.4 Timing (VHDL Initiative Towards ASIC Libraries: vital)
  • IEEE 1076.6 VHDL Register Transfer Level Synthesis, 1998 – синтезируемое подмножество VHDL
  • IEEE 1164 VHDL Multivalue Logic (std_logic_1164) Packages


Слайд: Для чего используется VHDL?

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


Слайд: Преимущества VHDL-проекта

  • Проектирование больших ЦУ
  • объединяет структуру ЦУ и алгоритм функционирования
  • самодокументированность
  • высокая надежность (быстрый поиск ошибок синтаксиса)
  • универсальность и переносимость (произвольная элементая база)
  • следовательно долгоживущий (гибкий) проект
  • поддержка всеми САПР

Слайд: Стили VHDL-моделей :step

Описывать ЦУ можно, используя разные стили:

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


Слайд: Элементы синтаксиса языка VHDL

  • Лексические элементы:
    • идентификатор: Abc1
    • разделитель
    • ключевое (зарезервированное) слово: entity, if, then
    • литерал (десятичный, базовый, символьный, строковый, строка бит):
      • 123, 1E2, 123.4, 1.2e-3;
      • 2#1111_1100#, 10#252#;
      • ’A’, ’a’;
      • “abcdefg”; B“1010_1010_1010”
    • комментарий
  • Лексические элементы разделяются:
    • разделителями: & ( ) * + ? - . / : ; < = >
    • концами строк
    • знаками форматирования
    • составными разделителями: => ** := >=
Пример:
A <= B and C;


Слайд: Операторы языка VHDL

Приоритет Классы
операторов
Операторы
0 (низкий) Логические and, or, nand, nor, xor, xnor
1 Отношения =, <, >, <=, >=, /=
2 Сдвиги sll, srl, sla, sra, rol, ror
3 Сложение +, –, &
4 Унарные +, –
5 Умножение *, /, mod, rem
6 (высокий) Вспомогательные **, abs, not

Слайд: Структура VHDL программы

Описание системы на VHDL реализуется в двух основных частях:

Подключение библиотеки IEEE и пакета std_logic_1164 из неё.
library ieee;
use ieee.std_logic_1164.all;
интерфейс (entity) – описание взаимодействия между системой и ее окружением
entity block2 is
 
  port (
    x : in  std_logic_vector(2 downto 0);
    y : out std_logic_vector(1 downto 0));
 
end block2;
архитектура (architecture) – описание поведения (функциональности) системы
architecture beh of block2 is
 
begin  -- beh
 
  y(0) <= (not x(2) and not x(1)) or (x(1) and not x(0));
  y(1) <= not x(1) and not x(0);
 
end beh;

Слайд: Оператор присваивания when..else

architecture tabl of block1 is
 
begin   -- комментарий
 
  y <=
    "11" when x = "000" else
    "01" when x = "001" else
    "01" when x = "010" and x = "110" else
    "00";
end tabl;
 
* важен порядок, срабатывает первое верное условие

Слайд: Типы сигналов и портов

  • стандартные (библиотека/пакет standard)
    • bit (bit_vector): 0, 1
    • boolean (boolean_vectorVHDL`08): true, false
    • integer (INTEGER_VECTORVHDL`08): -2147483648 to 2147483647
    • natural: 0 to 2147483647
    • real (REAL_VECTORVHDL`08): -1.0E308 to 1.0E308
    • TIME (TIME_VECTORVHDL`08): -2147483647 to 2147483647 units fs; ps = 1000 fs; ns = 1000 ps; us = 1000 ns; ms = 1000 us; sec = 1000 ms; min = 60 sec; hr = 60 min; end units;
    • character, string и др.
  • библиотека std_logic_1164
    • std_ulogic (std_ulogic_vector)
    • std_logic (std_logic_vector)
  • библиотека numeric_std
    • signed
    • unsigned


Слайд: Тип std_logic (std_logic_vector)

Сигнал типа std_logic может принимать значения:

  • 'U': Не инициализировано (ещё не было задано)
  • 'X': Неопределённое значение
  • '0': Логический 0
  • '1': Логическая 1
  • 'Z': Высокий импеданс (третье состояние)
  • 'W': Слабая неопределённость (слабый 'X')
  • 'L': Слабый '0'
  • 'H': Слабая '1'
  • '–': Don't care.

Особенности:

  • является промышленным стандартом (стандарт IEEE)
  • поддерживается всеми САПР
  • входит в библиотеку std_logic_1164
  • данные значения соответствуют и типам signed и unsigned из библиотеки numeric_std

Оператор port map

instantiation_label : component_name port map (port list);
instantiation_label :
 [ component ] component_name
 | entity entity_name [ ( architecture_identifier ) ]
 | configuration configuration_name
  [ generic map ( generic_association_list ) ]
  [ port map (  [ port_name => ] signal_name [, [ port_name => ] signal_name]... ) ] ;



Слайд: NEW