Методические указния к лабораторным работам

Название работы: Исследование работы цифровых логических элементов с помощью языка VHDL.
Цель работы: Ознакомление с основными программными конструкциями языка VHDL и с порядком работы программного обеспечения  - системы логического моделирования (СЛМ) процессов в цифровых системах. Выполнение моделирования простейших цифровых элементов.

Порядок выполнения работы:

Запустить основную программу СЛМ ALDEC RIVIERA (появится основное окно и окно загрузчика, которое можно закрыть).
Создать новую пользовательскую библиотеку (т.е. хранилище, куда будут помещаться откомпилированные фрагменты кода на VHDL) для чего:
2.1. В главном меню выбрать пункты ‘Библиотека’ (LIBRARY), ‘Создать библиотеку’ (CREATE LIBRARY);
2.2. В появившемся окне ввести имя библиотеки (например Lab1); После этого библиотека становиться текущей – в главном окне появляется сообщение “ VSIMSA: `Lab1' is now working library ”.
Создать новый документ содержащий VHDL – код, для чего в главном меню выбрать пункты FILE, NEW VHDL SOURCE.
В появившемся окне (редактора VHDL кода) набрать VHDL – код, например код описывающий структурную единицу (unit) инвертор:

-- Interfeys obyekta ‘Invertor’
Entity Inv_element is
Port( in1 : in bit;
         Out1 : out bit);
End Inv_element;

--architekturnoe telo obyekta ‘Invertor’
architecture arch_1 of Inv_element is
 begin
  process (in1) –process i spisok chuvstvitelnosty
   begin
    out1<=not( in1 ) after 5ns;
   end process
 end arch_1;

В главном меню окна редактора VHDL кода выбрать пункт SIMULATION, COMPILE (функциональная клавиша F11).
5.1 Если компиляция произошла БЕЗ ОШИБОК – то в главном меню основного окна появится протокол компиляции вида:
acom -work laba -dbg -strict93 -e 3 -f Auto "C:\Program Files\Aldec\Riviera\projects\vhdl\Laba\logic_elemets.vhd"
File: .\projects\vhdl\Laba\logic_elemets.vhd
Compile Entity `NAND2_element'
Entity `NAND2_element' has been skipped - no difference detected.
Compile Entity `NOR2_element'
Entity `NOR2_element' has been skipped - no difference detected.
Compile Entity `RS2NAND2'
Entity `RS2NAND2' has been skipped - no difference detected.
Compile Architecture `beh_1' of Entity `NAND2_element'
Compile Architecture `beh_1' of Entity `NOR2_element'
Compile Architecture `beh_1' of Entity `RS2NAND2'

Compile success 0 Errors 0 Warnings  Analysis time :  1.0 [s]

Можно переходить к следующим пунктам

5.1 Если компиляция произошла C ОШИБКАМИ – то в главном меню основного окна появится протокол компиляции вида:
acom -work laba -dbg -strict93 -e 3 -f Auto "C:\Program Files\Aldec\Riviera\projects\vhdl\Laba\logic_elemets.vhd"
File: .\projects\vhdl\Laba\logic_elemets.vhd
Compile Entity `NAND2_element'
Entity `NAND2_element' has been skipped - no difference detected.
Compile Entity `NOR2_element'
Error: COMP96_0078: C:\Program Files\Aldec\Riviera\projects\vhdl\Laba\logic_elemets.vhd: (11, 14): Unknown identifier `inp'.
Error: COMP96_0164: C:\Program Files\Aldec\Riviera\projects\vhdl\Laba\logic_elemets.vhd : (11, 14): Cannot find resolution function declaration.
Compile Entity `RS2NAND2'
Entity `RS2NAND2' has been skipped - no difference detected.
Compile Architecture `beh_1' of Entity `NAND2_element'
Compile Architecture `beh_1' of Entity `NOR2_element'
Compile Architecture `beh_1' of Entity `RS2NAND2'

Compile failure 2 Errors 0 Warnings  Analysis time :  0.3 [s]

Переход в окно редактора VHDL-кода осуществляется двойным щелчком мыши в первой позиции строки ошибки в главном окне основного окна. Необходимо исправить ошибку и повторить компиляцию.
В главном меню основного окна выбрать пункты: SIMULATION, INITIALIZE.
В появившемся окне появляется список компилированных элементов (units) для данной библиотеки, Необходимо выбрать все элементы и нажать Ок.
В главном окне появится протокол вида:
asim -i 1000 -t 1ps -lib laba nand2_element beh_1 nor2_element beh_1 rs2nand2 beh_1
VSIM: No breakpoints set
VSIM: Elaborating multiple modules from library `laba'
ELBREAD: Elaboration process.
ELBREAD: Elaboration time 0.0 [s].
VSIM: Elaboration successful
KERNEL: Main thread initiated.
KERNEL: Kernel process initialization phase.
KERNEL: Time resolution set to 1ps.
ELAB2: Elaboration final pass...
ELAB2: Create instances ...
ELAB2: Create instances complete.
ELAB2: Elaboration final pass complete - time: 0.1 [s].
KERNEL: Kernel process initialization done.
Allocation: Simulator allocated 93 kB (elbread=62 elab2=6 kernel=25 sdf=0)
(При нормальной инициализации процесса моделирования).
Создать новое окно для наблюдения и управления процессом моделирования (VaweFormViewer), для чего выбрать в главном меню пункты FILE, NEW VAWEFORM.
Добавить сигналы, которые будут наблюдаться в окне VaweFormViever, выбрав пункты VIEW, ADDSIGNALS данного окна.
В появившемся окне ADD SIGNALS выбрать сначала элемент (слева), а затем один из его сигналов (справа) и нажать кнопку Add в окне ADD SIGNALS.
Повторять пункт 9, пока в окне VaweFormViever не появятся все необходимые для наблюдения сигналы.
Для каждого входного сигнала назначить его значение (постоянное или меняющееся в процессе моделирования). Для этого в главном меню окна VaweFormViever выбрать пункты: VIEW, SIMULATORS. В появившемся окне SIMULATORS
Выбрать сигнал (из тех, что были заданы в п.9);
Выбрать тип сигнала (Clock, Value и. Др.);
Установить (при необходимости) параметры сигнала;
Осуществить назначение сигнала (выбрать значок ‘птичка’ напротив нужного сигнала);
Нажать кнопку APPLY в окне SIMULATORS.
Выбрать величину шага моделирования в окне VaweFormViewer.
Построить диаграммы сигналов пошагово, нажимая клавишу F5 на клавиатуре (кнопка RunFor, пункт меню SIMULATION, RUNFOR).
Перезапуск процесса моделирования - пункт меню SIMULATION, RESTART SIMULATION. При этом предыдущие диаграммы сигналов стираются выбором пункта CLEAR VAWEFORM в всплывающем меню, которое вызывается нажатием правой клавиши мыши. Курсор мыши находится в том месте диаграмм, начиная с которого диаграммы надо стереть с экрана.

Задание

  1. Написать, отладить и откомпилировать текст VHDL-кода для моделирования простых логических элементов И, ИЛИ, И-НЕ, ИЛИ-НЕ.
  2. Используя СЛМ построить таблицу истинности и диаграммы изменения сигналов (шаг 5 ns) используя статическое назначение сигнала (Value) и генератор (Clock)  см. п.11 для двух вариантов:

2.1 Оператор назначения сигналов с ключевым словом AFTER 10ns;
2.2 Оператор назначения сигналов без ключевого слова AFTER 10ns.

  1. Написать, отладить и откомпилировать текст VHDL-кода для моделирования  (по вариантам): элементов, составленных из нескольких простейших (RS-тригер на основе И-НЕ, RS-тригер на основе ИЛИ-НЕ, (НЕ, ИЛИ), (НЕ, И)).
  2. Используя СЛМ построить таблицу истинности и диаграммы изменения сигналов для данных элементов (шаг 5 ns).

Отчет по лабораторной работе должен содержать:

  1. Фамилию студента, название группы, дату сдачи.
  2. Название работы, ее цель.
  3. Задание, соответствующее конкретному варианту.
  4. Синтезируемый VHDL–код.

Контрольные вопросы ориентированы на проверку знаний студента в области:
1) общих сведений о языке VHDL;
2) используемых в VHDL основных элементах: назначение и краткое содержание;
3) порядка работы в программе СЛМ ALDEC RIVIERA.