- •Учебно-исследовательская работа
- •Практическая часть
- •Введение
- •Введение
- •Методика проектирования принципиальной схемы с помощью графического редактора Graphic Editor Создание нового проекта и работа с библиотеками
- •Изображение электронных компонентов схемы, ввод и назначение имен входных и выходных контактов плис
- •Назначение имен входным и выходным контактам плис.
- •Выполнение электрических соединений и шин.
- •Проверка ошибок и сохранение файла схемы.
- •Компиляция файла схемы (организация базы данных) и выбор типа плис.
- •Структурная схема алгоритма разработки цифровой схемы.
- •Подготовка к работе.
- •Рабочее задание.
- •Контрольные вопросы.
- •Лабораторная работа №2. Моделирование работы программируемых логических интегральных схем с помощью редакторов Waveform Editor и Simulator Введение
- •Ввод имен внешних и внутренних контактов плис для подключения и контроля сигналов
- •Создание и редактирование входных сигналов для моделирования работы плис.
- •Моделирование работы плис с помощью редактора Simulator.
- •Структурная схема алгоритма моделирования работы плис.
- •Подготовка к работе
- •Рабочее задание
- •5. Контрольные вопросы
- •Лабораторная работа №3. Программирование плис: технические и программные средства Starter Kit. Введение
- •Технические средства проектирования и отладки работы плис. Программирование плис на базе универсальной платы up-1 фирмы altera.
- •Установки опций jtag в редакторе Programmer для плис epf10k20.
- •Программирование плис.
- •Назначение номеров выводов.
- •Структурная схема алгоритма программирования плис.
- •Подготовка к работе.
- •Рабочее задание:
- •Контрольные вопросы.
- •Лабораторная работа №4. Языки описания аппаратуры vhdl, моделирование работы разработанной принципиальной схемы. Введение
- •Синтаксис языка Идентификаторы
- •Комментарии
- •Символы
- •Основы синтаксиса
- •Объекты
- •Атрибуты
- •Компоненты
- •Выражения
- •Операторы
- •Пример создания объекта с использованием языка vhdl
- •Верификация vhdl-проекта
- •Моделирование полученной схемы
Выражения
Выражения могут содержать следующие операторы: преобразование типа, and, or, nand, nor, xor, =, /=, <, <=, >, >=, +, -, &, *, /, mod, rem, abs, not.
В зависимости от выбранной САПР при синтезе может поддерживаться подмножество приведенных выше операторов. Порядок вычисления выражений определяется приоритетом операторов:
and, or, nand, nor, xor – низший приоритет
=, /=, <, <=, >, >=
+, -, & (бинарные)
+, - (унарные)
*, /, mod, rem
abs, not – высший приоритет
Операторы с более высоким приоритетом выполняются раньше. Чтобы изменить такой порядок используются скобки.
При моделировании (но не при синтезе) схемы возможно также описание формы сигнала в виде выражения. Записывается оно следующим образом:
Value_expression [ after time_expression ]
{ , value_expression [ after time_expression ] }
Операторы
С помощью операторов описывается алгоритм, определяющий функционирование схемы. Они могут находиться в теле функции, процедуры или процесса.
Wait until condition; Приостанавливает выполнение процесса, содержащего данный оператор до момента выполнения условия.
Signal <= expression Оператор присваивания сигнала устанавливает его значение равным выражению справа.
Variable := expression Оператор присваивания переменной устанавливает значение переменной Variable равным выражению справа.
Procedure_name ( parameter { , parameter } ) Оператор вызова процедуры состоит из имени процедуры и списка фактических параметров.
If condition then Sequence_of_statements { Elsif condition then Sequence_of_statements } [ else sequence_of_statements ] end if ; Оператор if используется для ветвления алгоритма по различным условиям.
Case expression is When choices_list => sequence_of_statements; { When choices_list => sequence_of_statements; } When others => sequence_of_statements; End case; Оператор case подобно оператору if задает ветвление алгоритма. Значения в списках разделяются символом «|». Когда значение выражения встречается в одном из списков значений, выполняется соответствующая последовательность операторов. Если значение выражения не присутствует ни в одном из списков, то выполняется список операторов, соответствующий ветви when others.
[ loop_label : ] for loop_index_variable in range loop sequence_of_statements end loop [ loop_label ] ;
Пример создания объекта с использованием языка vhdl
Создадим триггер на языке
VHDL. Триггер
— это элемент, который может сохранять
поданный на него логический уровень
после снятия входного сигнала. RS-триггер
или SR-триггер (set-reset) — триггер,
который сохраняет своё предыдущее
состояние при нулевых входах, и меняет
своё выходное состояние при подаче на
один из его входов единицы. При подаче
единицы на вход S (от англ. Set -
установить) выходное состояние становится
равным логической единице. А при подаче
единицы на вход R (от англ. Reset -
сбросить) выходное состояние становится
равным логическому нулю. Если RS-триггер
синхронный, то состояние его входов
учитывается только в момент тактирования,
например по переднему фронту импульса.
Состояние, при котором на оба входа R
и S одновременно поданы логические
единицы, является запрещённым. Так,
например, схема RS-триггера, изображённая
на рисунке, при подаче на оба инверсных
входа логической единицы перейдёт в
состояние, когда на обоих выходах будут
единицы, что не соответствует логике
выхода триггера, поскольку инверсный
выход
будет
равен неинверсному
,
т.е.
,
что невозможно. RS-триггер
используется для создания сигнала с
передним и задним фронтами, отдельно
управляемыми посредством стробов,
разнесённых во времени.
Рис. 59. Схема RS-триггера
Таблица. 3. Таблица истинности RS-триггера
S |
R |
Q(t) |
Q(t+1) |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
* |
1 |
1 |
1 |
* |
Создать отдельную папку на жёстком диске, в которой будут размещаться файлы проекта. Это важный шаг, поскольку без этого программа может не скомпилироваться.
Создать новый файл типа Text. Для этого можно либо выбрать пункт меню Text Editor в меню MAX+PLUS II, либо выбрать пункты New → Text editor file.
Рис. 60. Создание нового текстового файла
Ввести в текстовом редакторе текст программы:
library ieee;
use ieee.std_logic_1164.all;
entity trigger_rs is
-- описания портов ввода-вывода port (
R, S: in BIT;
Q, nQ: inout BIT
);
end trigger_rs;
architecture trigger_rs_arch of trigger_rs is
begin
process (R, S) -- описание логики работы в зависимости от сигналов R и S begin if R='0' and S='0' then Q <= Q ; elsif R='1' and S='0' then Q <= '0' ; elsif R='0' and S='1' then Q <= '1' ; end if; nQ <= not Q; end process; end;
С
охранить
файл схемы в созданной на 1 шаге папке
с расширением VHD и именем, указанным в
поле ENTITY. В нашем случае имя файла
должно быть trigger_rs.vhd.
Рис. 61. Сохранение файла
