ПЦУСБ/Лекция 2 — различия между версиями
Материал из Wiki
< ПЦУСБ
ANA (обсуждение | вклад) м (→Слайд: Языки HDL (Hardware Description Language)) |
ANA (обсуждение | вклад) м (→Слайд: NEW) |
||
(не показаны 4 промежуточные версии 1 участника) | |||
Строка 119: | Строка 119: | ||
|- | |- | ||
| 4 | | 4 | ||
− | ! | + | ! Унарные |
| +, – | | +, – | ||
|- | |- | ||
Строка 127: | Строка 127: | ||
|- | |- | ||
| 6 (высокий) | | 6 (высокий) | ||
− | ! | + | ! Вспомогательные |
| **, abs, not | | **, abs, not | ||
|} | |} | ||
Строка 135: | Строка 135: | ||
Описание системы на VHDL реализуется в двух основных частях: | Описание системы на VHDL реализуется в двух основных частях: | ||
{| align=center width=90% cellspacing="0" cellpadding="5" border="1" style="border:1px 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%| Подключение библиотеки IEEE и пакета std_logic_1164 из неё. | ||
+ | |<source lang="vhdl">library ieee; | ||
+ | use ieee.std_logic_1164.all; | ||
+ | </source> | ||
+ | |||
+ | |- | ||
|width=40%| '''интерфейс ([[Синтаксис_языка_VHDL-2008#entity_declaration|entity]])''' – описание взаимодействия между системой и ее окружением | |width=40%| '''интерфейс ([[Синтаксис_языка_VHDL-2008#entity_declaration|entity]])''' – описание взаимодействия между системой и ее окружением | ||
| | | | ||
− | <source lang="vhdl"> | + | <source lang="vhdl"> |
− | + | ||
− | + | ||
entity block2 is | entity block2 is | ||
Строка 170: | Строка 174: | ||
"01" when x = "001" else | "01" when x = "001" else | ||
"01" when x = "010" and x = "110" else | "01" when x = "010" and x = "110" else | ||
− | |||
"00"; | "00"; | ||
end tabl; | end tabl; | ||
Строка 198: | Строка 201: | ||
Сигнал типа std_logic может принимать значения: | Сигнал типа std_logic может принимать значения: | ||
− | * 'U': | + | * 'U': Не инициализировано (ещё не было задано) |
* 'X': Неопределённое значение | * 'X': Неопределённое значение | ||
* '0': Логический 0 | * '0': Логический 0 | ||
* '1': Логическая 1 | * '1': Логическая 1 | ||
* 'Z': Высокий импеданс (третье состояние) | * 'Z': Высокий импеданс (третье состояние) | ||
− | * 'W': Слабая неопределённость ('X') | + | * 'W': Слабая неопределённость (слабый 'X') |
− | * 'L': Слабый 0 | + | * 'L': Слабый '0' |
− | * 'H': Слабая 1 | + | * 'H': Слабая '1' |
* '–': Don't care. | * '–': Don't care. | ||
Особенности: | Особенности: | ||
Строка 211: | Строка 214: | ||
* поддерживается всеми САПР | * поддерживается всеми САПР | ||
* входит в библиотеку std_logic_1164 | * входит в библиотеку 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]... ) ] ;