- •Вопросы к экзамену по дисциплине «программируемые цифровые устройства»
- •История появления микросхем программируемых цифровых устройств. Предшественники плис.
- •Микросхемы типа программируемая логическая матрица. Их основные параметры. Упрощенная схема.
- •Микросхемы типа программируемая матричная логика. Их основные параметры.
- •Функциональные разновидности плм и пмл.
- •Базовые матричные кристаллы. Их характеристики. Полузаказные и заказные ис.
- •Понятие эквивалентного вентиля цифровой схемы.
- •Базовая ячейка бмк.
- •Микросхемы типа «система на кристалле» (SoC).
- •Современные плис. Их разновидности, основные применения.
- •Программируемые цифровые устройства – микропроцессоры и плис. Их характерные особенности и отличия.
- •Память конфигурации плис, питание современных плис.
- •Сложные программируемые логические устройства. Обобщенная структура плис типа cpld.
- •Функциональные блоки плис типа cpld.
- •Программируемая матрица соединений плис типа cpld.
- •Матрица распределения термов плис типа cpld.
- •Макроячейка плис типа cpld.
- •Программируемые пользователем вентильные матрицы – плис типа fpga.
- •Функциональный блок плис типа fpga.
- •Блоки ввода-вывода плис типа fpga.
- •Система межсоединений плис типа fpga.
- •Плис с комбинированной архитектурой.
- •Современные направления развития плис.
- •Методы описания поведения цифровых схем. &&&
- •Язык описания схем vhdl, основные понятия.
- •Структура программы. Ход выполнения проекта на языке vhdl.
- •Ключевые слова и пользовательские идентификаторы языка vhdl.
- •Синтаксис объявления объекта на языке vhdl.
- •Состав архитектуры объекта на языке vhdl.
- •Типы данных языка vhdl – предопределенные и определяемые пользователем.
- •Скалярные и составные типы языка vhdl.
- •Скалярные типы языка vhdl. Атрибуты скалярных типов.
- •Физические типы языка vhdl. Атрибуты физических типов.
- •Преобразование скалярных типов языка vhdl.
- •Перечислимые типы языка vhdl.
- •Понятия базового типа и подтипа языка vhdl.
- •Составные типы. Массивы. Размерность массива.
- •Задание начальных значений массиву на языке vhdl. Ассоциирование.
- •Задание начальных значений массиву на языке vhdl. Агрегаты.
- •Атрибуты данных типа массив языка vhdl.
- •Массивы неограниченной длины на языке vhdl.
- •Предопределенные типы массивов языка vhdl. Битовые векторы и строки.
- •Операции над массивами на языке vhdl. Фрагменты массивов.
- •Записи, их описание, присвоение значений на языке vhdl.
- •Указательные типы данных языка vhdl.
- •Основные операторы языка vhdl.
- •Оператор условия языка vhdl. Пустой оператор.
- •Оператор case языка vhdl.
- •Циклы. Оператор Loop языка vhdl.
- •Циклы с условием. Оператор цикла while языка vhdl.
- •Операторы управления сбором информации о ходе моделирования языка vhdl.
- •Принцип событийного моделирования на языке vhdl.
- •Понятия сигнала, источника сигнала, временной диаграммы, порта на языке vhdl.
- •Атрибуты сигналов языка vhdl.
- •Различие между сигналами и переменными языка vhdl.
- •Разрешение неоднозначности установления сигнала на языке vhdl.
- •Процессы, их описание на языке vhdl. Список чувствительности.
- •Виды задержек и их описание на языке vhdl.
- •Оператор ожидания wait языка vhdl.
- •Компоненты. Декларация компонента на языке vhdl.
- •Структурное описание объекта моделирования на языке vhdl.
- •Описание переменных и констант на языке vhdl. Литералы.
- •Библиотеки, их описание на языке vhdl.
- •Пакеты, их описание на языке vhdl.
- •Оператор генерации generate языка vhdl.
- •Задание конфигурации компонентов на языке vhdl. Конфигурационная спецификация и конфигурационная декларация.
- •Задание конфигурации компонентов на языке vhdl. Правила связывания по умолчанию.
- •Описание переменных и констант на языке vhdl.
- •Последовательные операторы языка vhdl.
- •Синхронные и асинхронные процессы и их описание на языке vhdl.
- •Способы описания комбинационной логики на языке vhdl.
- •Описание триггерных схем на языке vhdl.
- •Описание регистровых схем на языке vhdl.
- •Вычисляемые сигналы языка vhdl.
- •История появления микросхем программируемых цифровых устройств. Предшественники плис.
- •Микросхемы типа программируемая логическая матрица. Их основные параметры. Упрощенная схема.
Скалярные и составные типы языка vhdl.
Скалярные типы могут использоваться для описания следующих групп объектов: чисел, символов, значений сигналов и других физических объектов. При моделировании схем устройств на различных уровнях абстракции, в языке VHDL для описания сигналов могут использоваться различные типы данных и их сочетания. Так, на высоких уровнях абстракции используются перечислимые типы, задаваемые списком значений, и числовые типы. А при моделировании на уровне регистровых передач используется булевский тип, битовый тип, стандартный логический тип, а также типы, которые определяются на их базе.
Числовые типы
В VHDL поддерживается два основных типа для представления чисел: целочисленный и тип с плавающей запятой.
Тип Integer
Для представления целых чисел используется тип integer. Этот тип позволяет представить числа в диапазоне от —2 до 2
Тип Real
Для представления действительных чисел используется тип Real. Он имеет диапазон от -1.0Е+38 до 1.0Е+38.
Физические типы данных
Для представления физических величин (таких как длина, масса, время), в языке VHDL используются так называемые физические типы. Данные, принадлежащие к физическому типу, определяются своим значением и единицей измерения. Для одного и того же физического параметра может использоваться множество единиц измерения.
Организация физических типов в VHDL позволяет установить соответствие между различными единицами измерения. К физическим типам может быть применено большинство арифметических операторов, но с некоторыми ограничениями.
Описание времени
VHDL поддерживает встроенный физический тип time для описания времени.
Перечислимые типы данных
Перечислимые типы могут задаваться двумя способами: диапазоном и списком значений.
Подтипы
Нередко модель содержит объекты, которые могут принимать значения только в строго ограниченной области из множества возможных значений какого-либо типа. Тип таких объектов можно определить на базе основного типа. Он будет называться подтипом этого типа. Использование подтипов облегчает понимание модели.
Массивы
Массив представляет собой набор элементов одного и того же типа. Позиция каждого элемента задается скалярным значением — индексом.
Скалярные типы языка vhdl. Атрибуты скалярных типов.
Скалярные типы это элементы, из которых конструируются все типы в VHDL. Базовое множество скалярных типов является предопределенным, к примеру введенные ранее типы integer и bit. В VHDL имеется четыре вида скалярных типов: целый тип и тип с плавающей точкой, перечислительный тип и физический тип. Разработчик имеет возможность задавать подтипы скалярных типов. На некоторые характеристики скалярных типов и подтипов могут быть ссылки в выражениях в удобной и компактной форме, называемой записью атрибута (attribute notation). Значение выражения имеет один и только один тип.
ЦЕЛЫЙ ТИП
Обьекты целого типа используются для представления абстрактных числовых значений. Добавочные целые типы могут быть объявлены явно заданием диапазона значений, допустимых для объектов данного типа. пример объявления целого типа:
type Oranges is range 0 to 75;
type Word_index is range 31 downto 0;
Границы диапазона могут быть произвольными выражениями. Рассмотрим объявления нескольких объектов, которые используют эти типы.
variable Seville, Valencia, av_oranges:Oranges := 10;
signal control_selector:Word_Index;
Константе должно быть присвоено значение в момент объявления.
Все обычные арифметические операторы и операторы отношения являются предопределенными для целого типа. Тем не менее, оба аргумента оператора должны быть одного типа.
Предопределенный оператор > не работает с операндами различных типов даже если они имеют одинаковый диапазон. Тем ни менее, все целые типы и типы с плавающей точкой являются тесно связанными типами и VHDL обеспечивает для этих типов преобразование между любыми парами. Допускается любое из следующих сравнений:
If Word_Index(Seville)> control_selector.
ТИП С ПЛАВАЮЩЕЙ ТОЧКОЙ
Объекты типа с плавающей точкой используются для представления абстрактных числовых значений. Тип real является предопределенным. Добавочные типы с плавающей точкой могут быть объявлены явно заданием диапазона значений, допустимых для объектов данного типа.
Пример объявлений типа с плавающей точкой.
type Probability is range 0.0 to 1.0;
Объявления, которые используют эти типы.
constant alpha_level: Probability:=0.75;
variable beta_level: Probability;
Литералы с плавающей точкой представляют значения любого типа с плавающей точкой и всегда содержат десятичную точку или отрицательную экспоненту: например, 3.14159, -23.0, 1E-. Запись с экспонентой может быть использована для любого вида числовых литералов: 9Е-целое, а 0.324Е - - с плавающей точкой.
ПЕРЕЧИСЛИТЕЛЬНЫЕ ТИПЫ
Тип состоит из множества возможных значений, которые могут принимать объекты типа, вместе с множеством операций над типом. В объявлении перечислительного типа явно перечисляются идентификаторы и графические символы, которые означают значения типа.
Пример:
type severity is(OKAY, NOTE, WARNING, ERROR, FAILURE);
type color
is(red, orange, yellow, green, blue, indigo, violet);
Нет необходимости писать объявления для следующих перечислительных типов, поскольку они являются предопределенными:
type character is (NUL,...,'A','B','C',...DEL);
type boolean is (False, True);
type bit is ('0','1');
Физические типы
Физические типы позволяют разработчику непосредственно выразить величины в физических единицах измерения. В VHDL используется один физический тип - предопределенный физический тип TIME (время). В случае типа TIME базовой единицей является fs (фемтосекунла), а производными единицами являются рs, ns и так далее.
Пример объявления типа TIME.
type TIME is range -{2**31-1} to 2**31-1
units
fs;
ps = 1000 fs;
ns = 1000 ps;
us = 1000 ns;
ms = 1000 us;
s = 1000 ms;
min = 60 s;
hr = 60 min;
end units;
Если желательно, чтобы скалярный обьект принимал значения некоторого типа из ограниченного диапазона, то это может быть отражено в тексте проекта при помощи обьявления и использования подтипа. Предположим, к примеру, что разработчик желает создать сигнал А типа severity и что А может принимать только значения OKAY, NOTE и WARNING.
type severity is (OKAY, NOTE, WARNING, ERROR, FAILURE);
subtype go_status is severity range OKAY to WARNING;
signal A: go_status;
Программа моделирования будет проверять, попадает ли значение в диапазон от OKAY до WARNING, в момент выполнения назначения. Если это не выполняется, то моделирование будет остановлено и будет выдано сообщение, описывающее это нарушение.
Эквивалентное объявление подтипа и сигнала, приведенным выше:
signal A: severity range OKAY to WARNING;
ПРЕДОПРЕДЕЛЕННЫЕ АТРИБУТЫ СКАЛЯРНЫХ ТИПОВ
На некоторые характеристики скалярных типов и подтипов могут быть ссылки в выражениях в удобной и компактной форме, называемой записью атрибута (attribute notation).
Если Т является именем скалярного типа,
то T'high является наибольшим возможным значением типа,
а T'low - наименьшим возможным значением.
Например, color'high = violet, а color'low = red.
T'right - самое правое значение типа, а
T'left - самое левое значение типа.
T'left отличается от T'low, а T'high от T'right
только если направление для типа - downto.
ПРЕДОПРЕДЕЛЕННЫЕ ФУНКЦИОНАЛЬНО-ЗНАЧНЫЕ АТРИБУТЫ
Целый, перечислительный и физический типы имеют позиционный номер, связанный с каждым значением типа. Позиционный номер первого значения в перечислительном типе - нуль; каждый следующий знак имеет позиционный номер на единицу больше, чем предшествующий. Функционально-значные атрибуты 'pos и 'val используются для преобразования значения типа в соответствующий позиционный номер и наоборот. Ниже приведены выражения, результат которых булевого типа и равен true.
... severity'pos(ERROR)=3...
...color'val(3)=green...
...color'val(severity'pos(ERROR))=green...
Функции 'pred и 'succ возвращают элементы, чьи позиционные номера на единицу больше или на единицу меньше, чем у аргумента.
...color'succ(orange) = yellow...
...color'pred(indigo) = blue...
