- •Вопросы к экзамену по дисциплине «программируемые цифровые устройства»
- •История появления микросхем программируемых цифровых устройств. Предшественники плис.
- •Микросхемы типа программируемая логическая матрица. Их основные параметры. Упрощенная схема.
- •Микросхемы типа программируемая матричная логика. Их основные параметры.
- •Функциональные разновидности плм и пмл.
- •Базовые матричные кристаллы. Их характеристики. Полузаказные и заказные ис.
- •Понятие эквивалентного вентиля цифровой схемы.
- •Базовая ячейка бмк.
- •Микросхемы типа «система на кристалле» (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. Фрагменты массивов.
Массив — это набор данных, объединенных общим именем и различаемых по порядковым номерам (индексам). Для того чтобы вводить объект типа массив, необходимо предварительно объявить соответствующий тип на основе следующих синтаксических правил:
ARRAY ( <диапазон> «, <диапазон> ») OF <тип элемента массива>
Диапазон задает множество допустимых значений индекса. Если диапазон задан конструкцией RANGE<>, то это является объявлением неограниченного массива. В этом случае определяется не диапазон значений индекса, а только тип индексной переменной.
Для одномерных массивов определено несколько групповых операций, в которых массив рассматривается как единое целое. Это, прежде всего, операция конкатенации & (объединение строк).
а=”1001”;
b= “1101” & а; в результате получим: b=””
Операции сдвига определены для одномерных массивов типа BIT или BOOLEAN и записываются следующим образом:
<имя массива> <символ операции сдвига> <целое>
В VHDL определены следующие операции сдвига: логические сдвиги влево и вправо sll и srl, арифметические сдвиги влево и вправо slа и sra, циклические сдвиги влево и вправо rol и ror.
Целое в записи выражения для сдвига определяет число разрядов, на которые осуществляется сдвиг кода.
Логические операции (and, or, nor, nand, xor, xnor) применимы к двум одномерным массивам одинаковой длины и типа bit и boolean.
Операции отношения (>, <, =) применяются к одномерным массивам, элементы которых имеют дискретный тип.
a<c может быть true и false в зависимости от значений a и c.
Фрагменты массива(slire).
Type array_1 is array(1 to 100) of integer
Variable a1:array_1;
a1(20 to 50) фрагмент 1 из 31 элемента
a1(60 downto 40) фрагмент 2 из 21 элемента
К фрагментам применимы все операции, как и к массиву в целом.
Записи, их описание, присвоение значений на языке vhdl.
Запись (record) - совокупность объектов, принадлежащих одному клaccy (кoнcтaнты, пepeмeнныe или cигнaлы), нo вoзмoжнo, имeющиx paзличныe типы и cгpуппированныx вмecтe пoд oдним имeнeм. Элeмeнты зaпиcи мoгyт имeть любoй пpeдoпpeдeлeнный или oпpeдeлeнный пoльзoвaтeлeм тип, включaя oгpaничeнныe мaccивы и дpyгиe влoжeнныe зaпиcи. Тип record дoлжeн вceгдa oбьявлятьcя дo тoгo, кaк coздaютcя oбьeкты этoгo типa;
Примeры:
Type bigtime is record
Second:integer range 0 to 59;
Minutes: integer range 0 to 59;
Houres: integer range 0 to 23;
Поля:
Constant time1: bigtime:=(2,2,12);
Constant time2:bigtime:=(hours=>12, minutes=>2, second=>2)
В обьявлении записи привoдитcя ee имя и cпиcoк имeн и типoв кaждoгo пoля (field) зaпиcи. Мoжнo ccылaтьcя нa вcю зaпиcь, иcпoльзyя ee пpocтoe имя, a тaкжe мoжнo ccылaтьcя нa oтдeльнoe пoлe, синтаксис которого:
Имя записи. имя поля:=значение:
Пример
Time1.minutes:=20;
Выбраннoe имя пoля зaпиcи мoжeт быть иcпoльзoвaнo вeздe, гдe мoжeт быть иcпoльзoвaн oбьeкт, имeющий тип, coвпaдaющий c типoм дaннoгo пoля.
Указательные типы данных языка vhdl.
Описание указательного типа имеет следующий синтаксис:
type имя указательного типа is access тип на который ссылается;
Например:
type natural_ptr is access natural;
Объект, принадлежащий типу natural_ptr, может содержать значение-ссылку на объект данных типа natural, но не на объекты других типов.
Ссылки могут быть организованы на объекты любых типов, кроме файлового.
Когда переменная описана как объект указательного типа, её начальное значение по умолчанию – null. Переменную можно связать с конкретным объектом данных, размещённым в памяти. Для работы с объектом, на который ссылается переменная-указатель, используется ключевое слово all. Например:
variable count: natural_ptr;
count:=new natural;
count.all:=10;
При создании указателя ему может присваиваться значение:
Count:=new natural’(10);
Пример 1:
type stimulus_record is record
stimulus_time:time;
stimulus_value: bit_vector (0 to 3);
end record stimulus_record;
type stimulus_ptr is access stimulus_record;
variable bus_stimulus: stimulus_ptr;
bus_stimulus:=new stimulus_record (20 ns, B’0011’);
deallocate(count).
