«…Труд избавляет человека от трех великих зол: скуки, порока, нужды…»

ПЦУСБ/Лекция 2 — различия между версиями

Материал из Wiki
Перейти к: навигация, поиск
м (Слайд: Структура VHDL программы)
м (Слайд: NEW)
 
(не показаны 13 промежуточных версий 1 участника)
Строка 10: Строка 10:
  
 
*Проблемы проектирования СБИС:
 
*Проблемы проектирования СБИС:
** несоответствие формы в которой ставится задача (обычно задается поведение) и схемы проекта (сеть взаимосвязанных компонентов)
+
** несоответствие формы, в которой ставится задача (обычно задается поведение), и схемы проекта (сеть взаимосвязанных компонентов)
** «ручной» перевод описания проекта в набор логических выражений и схематику
+
** «ручной» перевод описания проекта в набор логических выражений и схему
 
** работа со сложными (тысячи и более компонентов) проектами
 
** работа со сложными (тысячи и более компонентов) проектами
*Наиболее часто используемые HDL-языки: VHDL, Verilog, Abel
+
* Наиболее часто используемые HDL-языки: VHDL, Verilog, Abel
 
+
  
 
== Слайд: Язык VHDL ==
 
== Слайд: Язык VHDL ==
Строка 53: Строка 52:
 
* автоматизации преобразования исходного описания схемы в описание на более низком уровне (вплоть до вентильного).
 
* автоматизации преобразования исходного описания схемы в описание на более низком уровне (вплоть до вентильного).
  
 +
 +
=== Слайд: Преимущества VHDL-проекта  ===
 +
 +
* Проектирование больших ЦУ
 +
* объединяет структуру ЦУ и алгоритм функционирования
 +
* самодокументированность
 +
* высокая надежность (быстрый поиск ошибок синтаксиса)
 +
* универсальность и переносимость (произвольная элементая база)
 +
* следовательно долгоживущий (гибкий) проект
 +
* поддержка всеми САПР
  
 
=== Слайд: Стили VHDL-моделей :step ===
 
=== Слайд: Стили VHDL-моделей :step ===
Строка 88: Строка 97:
 
== Слайд: Операторы языка VHDL ==
 
== Слайд: Операторы языка VHDL ==
  
{| class=standard align=center
+
{| align=center cellspacing="0" cellpadding="5" border="1" style="border:1px solid #000; border-collapse: collapse"
 
! Приоритет
 
! Приоритет
 
! Классы <br /> операторов
 
! Классы <br /> операторов
Строка 110: Строка 119:
 
|-
 
|-
 
| 4
 
| 4
! Знак
+
! Унарные
 
| +, –
 
| +, –
 
|-
 
|-
Строка 118: Строка 127:
 
|-
 
|-
 
| 6 (высокий)
 
| 6 (высокий)
! Специальные
+
! Вспомогательные
 
| **, abs, not
 
| **, abs, not
 
|}
 
|}
Строка 125: Строка 134:
  
 
Описание системы на VHDL реализуется в двух основных частях:  
 
Описание системы на VHDL реализуется в двух основных частях:  
{| class=standard align=center width=90% style="border:2px solid #000; border-collapse: collapse"
+
{| align=center width=90% cellspacing="0" cellpadding="5" border="1" style="border:1px solid #000; border-collapse: collapse"
|width=40%| '''интерфейс (entity)''' – описание взаимодействия между системой и ее окружением
+
|width=40%| Подключение библиотеки IEEE и пакета std_logic_1164 из неё.
|
+
|<source lang="vhdl">library ieee;
<source lang="vhdl">library ieee;
+
 
use ieee.std_logic_1164.all;
 
use ieee.std_logic_1164.all;
+
</source>
 +
 
 +
|-
 +
|width=40%| '''интерфейс ([[Синтаксис_языка_VHDL-2008#entity_declaration|entity]])''' – описание взаимодействия между системой и ее окружением
 +
|
 +
<source lang="vhdl">
 
entity block2 is
 
entity block2 is
 
   
 
   
Строка 139: Строка 152:
 
end block2;</source>
 
end block2;</source>
 
|-
 
|-
|width=40%| '''архитектура (architecture)''' – описание поведения (функциональности) системы
+
|width=40%| '''архитектура ([[Синтаксис_языка_VHDL-2008#architecture_body|architecture]])''' – описание поведения (функциональности) системы
 
| <source lang="vhdl">architecture beh of block2 is
 
| <source lang="vhdl">architecture beh of block2 is
 
   
 
   
Строка 149: Строка 162:
 
end beh;</source>
 
end beh;</source>
 
|}
 
|}
 +
 +
== Слайд: Оператор присваивания [[Синтаксис_языка_VHDL-2008#conditional_expressions|<code>when..else</code>]] ==
 +
 +
<source lang="vhdl">
 +
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;
 +
 +
* важен порядок, срабатывает первое верное условие
 +
</source>
 +
 +
== Слайд: Типы сигналов и портов ==
 +
 +
* стандартные (библиотека/пакет [[VHDL/Пакет Standard|standard]])
 +
** bit (bit_vector): 0, 1
 +
** boolean (boolean_vector<sup>VHDL`08</sup>): true, false
 +
** integer (INTEGER_VECTOR<sup>VHDL`08</sup>): -2147483648 to 2147483647
 +
** natural: 0 to 2147483647
 +
** real (REAL_VECTOR<sup>VHDL`08</sup>): -1.0E308 to 1.0E308
 +
** TIME (TIME_VECTOR<sup>VHDL`08</sup>): -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
 +
 +
== Оператор [[Синтаксис_языка_VHDL-2008#component_instantiation_statement|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 ==
 
== Слайд: NEW ==

Текущая версия на 17:52, 15 сентября 2013

Лекции ПЦУСБ

Лекции

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

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

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

Заголовок
Основы языка 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