ОСНОВЫ ПРОЕКТИРОВАНИЯ РАДИОЭЛЕКТРОННЫХ СИСТЕМ

advertisement
Министерство образования и науки Российской Федерации
Муромский институт (филиал)
федерального государственного бюджетного образовательного
учреждения высшего профессионального образования
«Владимирский государственный университет
имени Александра Григорьевича и Николая Григорьевича Столетовых»
ОСНОВЫ ПРОЕКТИРОВАНИЯ
РАДИОЭЛЕКТРОННЫХ СИСТЕМ
методические указания к самостоятельным работам
Составитель:
Смирнов М.С.
Муром
2014
СОДЕРЖАНИЕ
Тема 1. Начальное моделирование в программе ModelSim-Altera ............................... 3
Тема 2. Начальное проектирование в программе Quartus II ......................................... 9
Тема 3. Работа с массивами в языке VHDL ................................................................... 13
Тема 4. Работа атрибутами в языке VHDL .................................................................... 18
Тема 5. Работа с последовательным описанием в языке VHDL ................................... 23
Тема 6. Работа с последовательным описанием в языке VHDL ................................... 28
Тема 7. Работа с последовательным описанием в языке VHDL ................................... 32
Тема 8. Работа с последовательным описанием в языке VHDL ................................... 37
Тема 9. Работа подпрограммами в языке VHDL ........................................................... 39
Тема 10. Работа подпрограммами в языке VHDL ......................................................... 44
Тема 11. Работа с памятью и внешними файлами в языке VHDL................................ 48
2
Тема 1. Начальное моделирование в программе ModelSim-Altera
Цели работы:
– Изучить базовые принципы написания программ на языке VHDL.
– Изучить базовые принципы использования программы ModelSim-Altera для
моделирования электронных устройств.
– Создать библиотеки ModelSim
– Компиляция программ, написанных на языке VHDL для последующего моделирования.
– Запуск моделирования.
– Изучить принципы использования окон в ModelSim.
1. Моделирование устройства в программе ModelSim.
Шаг 1: Создание проекта и добавление проектных файлов.
1. Запустить ModelSim из меню Пуск. ПускВсе программыAlteraModelSimAltera 6.5g.
2. Закрыть появившееся окно Important Information.
3.
Создать новый проект ModelSim. В меню File, выбрать New→Project. Откроется
диалоговое окно CreateProject.
4.
5.
Ввести имя lab1 в строке project name.
В строке ProjectLocation установить путь к HDL файлам, которые планируется
использовать.
Оставить имя Default Library Name – work. Нажать OK. Откроется диалоговое
окно Add items to the Project.
6.
3
7.
Добавить исходные файлы к проекту. Нажать Create New File. Откроется
диалоговое окно Create Project File.
8. Ввести имя файла. Нажать OK, затем закрыть окно Add items to the Project.
9. Дважды щелкнуть на имени файла во вкладке Project, откроется окна для ввода
программы.
Исходные файлы, появившиеся в закладке Project окна Workspace, имеют в поле
статус значок (?), т.к. они пока не откомпилированы
Шаг 2: Создание программы на языке VHDL.
В окне создания программы набрать следующий текст, реализующий модель тактового
генератора с частотой 250МГц.
library ieee;
use ieee.std_logic_1164.all;
entity sys_clk_gen is
generic ( CLK_FREQ : INTEGER := 250 );
port ( sys_clk
: out std_logic );
end sys_clk_gen;
architecture rtl of sys_clk_gen is
constant freq
: integer := CLK_FREQ;
constant halfcycle : TIME := 1 us/(2*freq);
signal sys_clk_c
: std_logic := '0';
begin
sys_clk
<= sys_clk_c;
sys_clk_c <= not sys_clk_c after halfcycle;
end;
Шаг 3: Компиляция исходных файлов.
Компиляцию файлов можно осуществлять несколькими путями. Если исходный файл
один, то:
1. Щелкнуть правой кнопкой мыши по имени файла во вкладке Project.
2. В выпадающем меню выбрать Compile → Compile Selected
4
Если имеется несколько исходных файлов, то порядок следующий.
1. Установить порядок компиляции и скомпилировать исходные файлы. В меню
Compile выбрать Compile Order.
2.
Нажать Auto Generate для автоматического определения зависимостей между
файлами и компиляции файлов.
Зеленая галочка в поле статус в закладке Project рабочего окна Workspace обозначает
успешную компиляцию исходных файлов.
Шаг 4: Запуск симулятора
1. В меню Simulate выбрать Start Simulation.
5
Откроется диалоговое окно StartSimulation. Во вкладке Design отображается список
всех элементов (объектов, конфигураций и модулей) которые могут быть
промоделированы.
2.
3.
Выставить временную шкалу. В списке Resolution выбрать ns(наносекунды).
Раскрыть библиотеку work. Выбрать объект sys_clk_gen.
При использовании языка VHDL, существует возможность раскрыть объект
sys_clk_gen для просмотра реализованной архитектуры (struct). Если в данном объекте
реализованы несколько архитектур, существует возможность выбрать одну из них для
моделирования.
4.
Нажать OK.
После запуска симулятор откроется несколько дополнительных окон: Locals,
ActiveProcesses, Objects. По умолчанию откроется вкладка sim рабочего окна. Окно
Transcript сигнализирует о том, что все исходные модули (объекты) были загружены.
Симулятор готов к использованию.
Шаг 5: Изучение интерфейса ModelSim-Altera
1. Во вкладке sim рабочего окна Workspace, дважды щелкнуть sys_gen_clk.
Исходный элемент sys_gen_clk откроется в окне Source.
При открытии очередного объекта или модуля, окно Source автоматически
обновляется и показывает исходный код выбранного элемента. В окне могут
демонстрироваться, в том числе, VHDL-пакеты.
В окне Source, строки исполняемого кода подсвечены красным цветом, строки
неисполняемого кода отображаются черным цветом.
2.
Если окно Objects не открыто, в меню View выбрать Objects. Можно также
набрать команду view objects в окне Trancscript.
3. Щелкнуть на окне Objects для выделения. В меню View перейти к пункту Filter и
снять галочку Internal Signals для выключения просмотра внутренних сигналов в
окне Objects.
В окне Objects отображаются только входные/выходные порты.
4.
Во вкладке sim рабочего окна Workspace выбрать элемент верхнего уровня,
sys_gen_clk.
5. Щелкнув на окно Objects, в меню Add выбрать Wave→Signals in Region.
Окно Wave откроется со списком входных, выходных и внутренних сигналов. Даже
если отображение внутренних сигналов было отключено, в окно Wave добавятся все
сигналы.
6. В меню View выбрать окно List.
Откроется окно List без списка сигналов.
7.
Во вкладке sim, рабочего окна Workspace выделить объект sys_gen_clk, и
перетащить его в окно List.
Все входные, выходные и внутренние сигналы появились в верхней части окна List.
Существует другой путь добавления сигналов в окна List или Wave. Можно перетащить
нужные сигналы из окна Objects.
6
8. В окне Transcript в командной строке набрать команду view process.
Если окно Active Processes не было открыто, то данная команда откроет его. Окно
Active Processes демонстрирует все процессы выделенного модуля рабочего окна Workspace
независимо от их текущего статуса.
9.
10.
11.
12.
В меню View выбрать окно Dataflow.
Вернуться в закладку sim рабочего окна Workspace и выбрать объект sys_gen_clk.
Выделить окно Objects и вернуть просмотр внутренних сигналов Internal Signals.
Перетащить объект sys_gen_clk в окно Dataflow.
Окно Dataflow показывает, какие сигналы «протекают» через устройство.
Шаг 6: Запуск моделирования.
1.
2.
3.
В меню Simulate выбрать Runtime Options.
Изменить значение Default Run на 100 ns, и нажать OK.
В меню Simulate выбрать Run→Run 100 ns. Запуск также можно осуществить
командой run @100 ns в окне Transcript.
4. Переключиться в окно Wave.
Импульсы появились в окне Wave. Для удобства можно увеличить или уменьшить
масштаб кнопками
и
.
5. В окне Transcript ввести команду run для продолжения моделирования.
Команда run без аргументов, продолжает моделирование в течение следующих 100нс,
указанных по умолчанию в окне Runtime Options.
6. В окне Transcript, ввести команду run -continue.
Команда продолжает моделирование в случае, если оно было прервано точкой
останова.
7. В окне Transcript, ввести команду step.
Команда исполняет одну строчку кода вызванной функции или подпрограммы
.
8. Ввести команду run @300 ns.
Команда продляет время моделирования до 300нс. Команда может быть незакончена,
если во время выполнения кода встретится точка останова.
Для продолжения моделирования после точки останова можно использовать команду
run -continue.
9. В меню Simulate выбрать Run→Restart.
Моделирование запуститься заново с точки 0нс.
10. Запустить моделирования в течение 400нс, используя команду run.
Шаг 7: Анализ результатов моделирования
1. В меню Add дважды выбрать пункт To Wave→Cursor (использовать меню Insert в
том случае если окно Wave является самостоятельным окном).
7
В окне Wave отображаются две желтые курсорные линии. Каждая линия снизу имеет
значение временной шкалы. Между двумя курсорными линиями отображается разница
времени.
2.
3.
В меню Wave выбрать пункт Zoom→Zoom Range.
В диалоговом окне Wave Zoom ввести значение 0 ns в строке Start и 50ns в строке
End. Нажать OK.
Аналогичное действие выполняется при нажатии правой кнопкой мыши в окне Wave и
выборе пункта Zoom Range.
8
Тема 2. Начальное проектирование в программе Quartus II
Цели работы:
– Изучить базовые принципы написания программ на языке VHDL.
– Изучить базовые принципы использования программы Quartus II для проектирования
электронных устройств.
– Компиляция программ, написанных на языке VHDL для последующей имплементации.
– Запуск синтезирования.
– Изучить принципы работы с отладочным модулем DE0.
Постановка задачи:
Написать на языке VHDL программу, осуществляющую сложение константы с
числом, задаваемым при помощи переключателей на отладочном модуле. Результат
должен выводиться на светодиоды отладочного модуля.
Шаг 1: Создание проекта и создание проектных файлов.
1. Запустить Quartus II из меню Пуск. ПускВсе программыAltera 11.0
sp1Quartus II 11.0 Web Edition.
2. В окне Getting Started выбрать пункт Create a New Project.
3.
4.
В окне Introduction нажать Next
В окне page 1 of 5 вписать расположение проекта, имя проекта и нажать кнопку
Next.
9
5.
6.
В окне page 2 of 5 нажать кнопку Next.
В окне page 3 of 5 выбрать нужную микросхему: Family – Cyclone III, Package –
FBGA, Pin Count – 484, Speed Grade – 6. Затем из списка выбрать микросхему
EP3C16F484C6 и нажать кнопку Next.
7.
8.
В окне page 4 of 5 нажать кнопку Next.
В окне page 4 of 5 нажать кнопку Finish.
Шаг 2: Создание программы на языке VHDL.
1. Для создания нового файла необходимо выбрать File → New и выбрать из списка
VHDL File
10
2. Имя создаваемого обязательно объекта должно совпадать с именем top level
design entity, которое вводилось в окне page 2 of 5 мастера проекта.
3. Для написания программы в системе Quartus II существует возможность вставки
шаблона. Для этого необходимо нажать кнопку Insert Template
4. В списке шаблонов выбрать VHDL→Constructs→Design Units→Entity для
создания объекта или VHDL →Constructs →Design Units → Architecture для
создания архитектуры объекта.
5. В программе должны быть предусмотрены:
 Входной порт целочисленного типа с диапазоном значений от 0 до 15.
 Выходной порт целочисленного типа с диапазоном значений от 0 до 31.
 В архитектуре должна быть объявлена целочисленная константа равная 8.
11
Шаг 3: Имплементация исходных файлов.
1. Выбрать пункт Processing → Start →Start Analysis and Elaboration. Если в
процессе компиляции будут ошибки, то исправить их.
2. В меню Tools→Netlist Viewer→Rtl Viewer посмотреть на сгенерированную
структуру устройства.
3. Для назначения выводов микросхемы выбрать пункт Assignment → Pin Planner.
Откроется окно назначения.
4. В столбце Location привязать выводы микросхемы к выходам и входам устройства
согласно таблице.
5. Выполнить полную компиляцию проекта. Для этого выполнить пункт Processing →
Start Compilation. Внимательно изучить предупреждения во вкладке Warning.
Шаг 4: Программирование СБИС и проверка работы проекта на плате.
1. Включить питание платы, нажав красную кнопку.
2. Выполнить
команду Tools→Programmer.
Откроется окно
управления
конфигурированием СБИС.
3. Для установки встроенного в плату конфигуратора FPGA нажать кнопку Hardware
Setup.
4. В окне Available hardware items указать (двойным щелчком левой клавиши мыши)
USB-Blaster. Нажать кнопку Close.
5. Включить опцию Program/Configure и нажать кнопку Start. В окне Progress будет
отображаться статус процедуры программирования
12
Тема 3. Работа с массивами в языке VHDL
Цели работы:
– Изучить базовые принципы написания программ на языке VHDL.
– Изучить базовые принципы использования программы Quartus II для проектирования
электронных устройств.
– Компиляция программ, написанных на языке VHDL для последующей имплементации.
– Запуск синтезирования.
– Изучить принципы работы с отладочным модулем DE0.
Постановка задачи:
Написать на языке VHDL программу, вывод на семисегментный индикатор значения
от 0 до F.
Значение массива должно задаваться при помощи переключателей sw0..sw3
отладочного модуля.
Вывод осуществляется на индикатор HEX0 отладочного модуля.
Шаг 1: Создание проекта и создание проектных файлов.
1. Запустить Quartus II из меню Пуск. ПускВсе программыAltera 11.0
sp1Quartus II 11.0 Web Edition.
2. В окне Getting Started выбрать пункт Create a New Project.
3.
4.
В окне Introduction нажать Next
В окне page 1 of 5 вписать расположение проекта, имя проекта и нажать кнопку
Next.
13
5.
6.
В окне page 2 of 5 нажать кнопку Next.
В окне page 3 of 5 выбрать нужную микросхему: Family – Cyclone III, Package –
FBGA, Pin Count – 484, Speed Grade – 6. Затем из списка выбрать микросхему
EP3C16F484C6 и нажать кнопку Next.
7.
8.
В окне page 4 of 5 нажать кнопку Next.
В окне page 4 of 5 нажать кнопку Finish.
Шаг 2: Создание программы на языке VHDL.
1. Для создания нового файла необходимо выбрать File → New и выбрать из списка
VHDL File
14
2. Имя создаваемого обязательно объекта должно совпадать с именем top level
design entity, которое вводилось в окне page 2 of 5 мастера проекта.
3. Для написания программы в системе Quartus II существует возможность вставки
шаблона. Для этого необходимо нажать кнопку Insert Template
4. В списке шаблонов выбрать VHDL→Constructs→Design Units→Entity для
создания объекта или VHDL →Constructs →Design Units → Architecture для
создания архитектуры объекта.
5. В программе должны быть предусмотрены:

Входной порт – массив bit_vector состоящий из 4-х значений.

Выходной порт – массив bit_vector состоящий из 8-х значений.
6. Осуществить назначения на выходной порт значений переводящих двоичные
значения в 16-ричные символы: 0000 – 0; 0001 – 1 … 1111 – F. Схема индикатор
15
представлена на рисунке. Сегмент загорается при подаче на него значения
логического нуля.
Шаг 3: Имплементация исходных файлов.
1. Выбрать пункт Processing → Start →Start Analysis and Elaboration. Если в
процессе компиляции будут ошибки, то исправить их.
2. В меню Tools→Netlist Viewer→Rtl Viewer посмотреть на сгенерированную
структуру устройства.
3. Для назначения выводов микросхемы выбрать пункт Assignment → Pin Planner.
Откроется окно назначения.
4. В столбце Location привязать выводы микросхемы к выходам и выходам устройства
согласно таблице.
16
5. Выполнить полную компиляцию проекта. Для этого выполнить пункт Processing →
Start Compilation. Внимательно изучить предупреждения во вкладке Warning.
Шаг 4: Программирование СБИС и проверка работы проекта на плате.
1. Включить питание платы, нажав красную кнопку.
2. Выполнить
команду Tools→Programmer.
Откроется окно
управления
конфигурированием СБИС.
3. Для установки встроенного в плату конфигуратора FPGA нажать кнопку Hardware
Setup.
4. В окне Available hardware items указать (двойным щелчком левой клавиши мыши)
USB-Blaster. Нажать кнопку Close.
5. Включить опцию Program/Configure и нажать кнопку Start. В окне Progress будет
отображаться статус процедуры программирования.
17
Тема 4. Работа атрибутами в языке VHDL
Цели работы:
– Изучить базовые принципы написания программ на языке VHDL.
– Изучить базовые принципы использования программы ModelSim-Altera для
моделирования электронных устройств.
– Компиляция программ, написанных на языке VHDL для последующего моделирования.
– Запуск моделирования.
Постановка задачи:
Написать на языке VHDL программу, осуществляющую моделирование задержек
сигналов при помощи атрибутов языка VHDL
1. Моделирование устройства в программе ModelSim.
Шаг 1: Создание проекта и добавление проектных файлов.
1. Запустить ModelSim из меню Пуск. ПускВсе программыAlteraModelSimAltera 6.5g.
2. Закрыть появившееся окно Important Information.
3.
Создать новый проект ModelSim. В меню File, выбрать New→Project. Откроется
диалоговое окно CreateProject.
4.
5.
Ввести имя lab4 в строке project name.
В строке ProjectLocation установить путь к HDL файлам, которые планируется
использовать.
18
6.
Оставить имя Default Library Name – work. Нажать OK. Откроется диалоговое
окно Add items to the Project.
7.
Добавить исходные файлы к проекту. Нажать Create New File. Откроется
диалоговое окно Create Project File.
8. Ввести имя файла. Нажать OK, затем закрыть окно Add items to the Project.
9. Дважды щелкнуть на имени файла во вкладке Project, откроется окна для ввода
программы.
Исходные файлы, появившиеся в закладке Project окна Workspace, имеют в поле
статус значок (?), т.к. они пока не откомпилированы
Шаг 2: Создание программы на языке VHDL.
Программа должна реализовывать задержку поступающего входного сигнала на
определенное время.
Описание портов:
 Один входной порт, типа std_logic;
 Два выходных порта, один типа std_logic, второй типа boolean;
Описание архитектуры.
На первый выходной порт должен подаваться входной сигнал после определённой
задержки (параметр задержки должен иметь тип time и задаваться в разделе generic).
Задержка должна формироваться при помощи атрибута ‘delayed.
На второй выходной порт должна подаваться логическая единица, если на входном
порту не было активности в течение определенного времени. Генерирование сигнала должно
осуществляться при помощи атрибута ’QUIET.
Шаг 3: Компиляция исходных файлов.
Компиляцию файлов можно осуществлять несколькими путями. Если исходный файл
один, то:
1. Щелкнуть правой кнопкой мыши по имени файла во вкладке Project.
2. В выпадающем меню выбрать Compile → Compile Selected
Если имеется несколько исходных файлов, то порядок следующий.
3. Установить порядок компиляции и скомпилировать исходные файлы. В меню
Compile выбрать Compile Order.
19
4.
Нажать Auto Generate для автоматического определения зависимостей между
файлами и компиляции файлов.
Зеленая галочка в поле статус в закладке Project рабочего окна Workspace обозначает
успешную компиляцию исходных файлов.
Шаг 4: Запуск симулятора
1.
В меню Simulate выбрать Start Simulation.
Откроется диалоговое окно StartSimulation. Во вкладке Design отображается список
всех элементов (объектов, конфигураций и модулей) которые могут быть
промоделированы.
2.
3.
Выставить временную шкалу. В списке Resolution выбрать ns(наносекунды).
Раскрыть библиотеку work. Выбрать описанный ранее объект-entity.
При использовании языка VHDL, существует возможность раскрыть объект для
просмотра реализованной архитектуры (struct). Если в данном объекте реализованы
несколько архитектур, существует возможность выбрать одну из них для моделирования.
20
4.
Нажать OK.
После запуска симулятор откроется несколько дополнительных окон: Locals,
ActiveProcesses, Objects. По умолчанию откроется вкладка sim рабочего окна. Окно
Transcript сигнализирует о том, что все исходные модули (объекты) были загружены.
Симулятор готов к использованию.
Шаг 5: Создание и запуск исполняемого do-файла
1.
2.
Выбрать пункт File → New → Source → Do.
В открытом окне написать строку для формирования входного сигнала.
force /sign 0 0ns, 1 40ns
Данная строка формирует последовательность значений для входного сигнала:
3.
4.
Сохранить созданный файл. В строке имени файла написать stim.do
Запустить созданный do-файл. Для этого выполнить Tools → Tcl →Execute Macro.
В открывшемся окне выбрать файл stim.do.
Шаг 5: Запуск моделирования.
1. Во вкладке sim рабочего окна Workspace, дважды щелкнуть имя объекта
моделирования.
2. Открыть окно Wave. Перетащить мышью объект моделирования в окно Wave.
3. В меню Simulate выбрать Runtime Options.
4. Изменить значение Default Run на 100 ns, и нажать OK.
5. В меню Simulate выбрать Run→Run 100 ns. Запуск также можно осуществить
командой run @100 ns в окне Transcript.
6. Переключиться в окно Wave.
Импульсы появились в окне Wave. Для удобства можно увеличить или уменьшить
масштаб кнопками
и
.
7. В окне Transcript ввести команду run для продолжения моделирования.
Команда run без аргументов, продолжает моделирование в течение следующих 100нс,
указанных по умолчанию в окне Runtime Options.
Шаг 7: Анализ результатов моделирования
1. В меню Add дважды выбрать пункт To Wave→Cursor (использовать меню Insert в
том случае если окно Wave является самостоятельным окном).
В окне Wave отображаются две желтые курсорные линии. Каждая линия снизу имеет
значение временной шкалы. Между двумя курсорными линиями отображается разница
времени.
21
2.
3.
В меню Wave выбрать пункт Zoom→Zoom Range.
В диалоговом окне Wave Zoom ввести значение 0 ns в строке Start и 50ns в строке
End. Нажать OK.
Аналогичное действие выполняется при нажатии правой кнопкой мыши в окне Wave и
выборе пункта Zoom Range.
22
Тема 5. Работа с последовательным описанием в языке VHDL
Цели работы:
– Изучить базовые принципы написания программ на языке VHDL.
– Изучить базовые принципы использования программы Quartus II для проектирования
электронных устройств.
– Компиляция программ, написанных на языке VHDL для последующей имплементации.
– Запуск синтезирования.
– Изучить принципы работы с отладочным модулем DE0.
Постановка задачи:
Описать на языке VHDL устройство сравнения 2-х четырехразрядных чисел.
Моделирование устройства в программе ModelSim.
Шаг 1: Создание проекта и создание проектных файлов.
1. Запустить Quartus II из меню Пуск. ПускВсе программыAltera 11.0
sp1Quartus II 11.0 Web Edition.
2. В окне Getting Started выбрать пункт Create a New Project.
3.
4.
В окне Introduction нажать Next
В окне page 1 of 5 вписать расположение проекта, имя проекта и нажать кнопку
Next.
23
5.
6.
В окне page 2 of 5 нажать кнопку Next.
В окне page 3 of 5 выбрать нужную микросхему: Family – Cyclone III, Package –
FBGA, Pin Count – 484, Speed Grade – 6. Затем из списка выбрать микросхему
EP3C16F484C6 и нажать кнопку Next.
7.
8.
В окне page 4 of 5 нажать кнопку Next.
В окне page 4 of 5 нажать кнопку Finish.
Шаг 2: Создание программы на языке VHDL.
1. Для создания нового файла необходимо выбрать File → New и выбрать из списка
VHDL File
24
2. Имя создаваемого обязательно объекта должно совпадать с именем top level
design entity, которое вводилось в окне page 2 of 5 мастера проекта.
3. Для написания программы в системе Quartus II существует возможность вставки
шаблона. Для этого необходимо нажать кнопку Insert Template
4. В списке шаблонов выбрать VHDL→Constructs→Design Units→Entity для
создания объекта или VHDL →Constructs →Design Units → Architecture для
создания архитектуры объекта.
5. В программе должны быть предусмотрены:
 Входной порт (A) in std_logic_vector(4 downto 1);
 Входной порт (В) in std_logic_vector( 8downto 5);
 Выходной порт (indic) для отображения результата сравнения в разряде.
6. Осуществить сравнение значений поступающих на порты A и B.
25
 Если первое число больше второго, то на индикаторе отображается A (на
indic назначается значение "10001000").
 Если второе число больше первого, то на индикаторе отображается B (на
indic назначается значение "10000011").
 Если числа равны, то на индикаторе отображается E (на indic назначается
значение "10000110")
7. Сравнение осуществляется при помощи процесса со списком чувствительности, в
который должны входить все входные сигналы.
Шаг 3: Имплементация исходных файлов.
1. Выбрать пункт Processing → Start →Start Analysis and Elaboration. Если в
процессе компиляции будут ошибки, то исправить их.
2. В меню Tools→Netlist Viewer→Rtl Viewer посмотреть на сгенерированную
структуру устройства.
3. Для назначения выводов микросхемы выбрать пункт Assignment → Pin Planner.
Откроется окно назначения.
4. В столбце Location привязать выводы микросхемы к выходам и выходам устройства
согласно таблице.
26
5. Выполнить полную компиляцию проекта. Для этого выполнить пункт Processing →
Start Compilation. Внимательно изучить предупреждения во вкладке Warning.
Шаг 4: Программирование СБИС и проверка работы проекта на плате.
1. Включить питание платы, нажав красную кнопку.
2. Выполнить
команду Tools→Programmer.
Откроется окно
управления
конфигурированием СБИС.
3. Для установки встроенного в плату конфигуратора FPGA нажать кнопку Hardware
Setup.
4. В окне Available hardware items указать (двойным щелчком левой клавиши мыши)
USB-Blaster. Нажать кнопку Close.
5. Включить опцию Program/Configure и нажать кнопку Start. В окне Progress будет
отображаться статус процедуры программирования.
27
Тема 6. Работа с последовательным описанием в языке VHDL
Цели работы:
– Изучить базовые принципы написания программ на языке VHDL.
– Изучить базовые принципы использования программы Quartus II для проектирования
электронных устройств.
– Компиляция программ, написанных на языке VHDL для последующей имплементации.
– Запуск синтезирования.
– Изучить принципы работы с отладочным модулем DE0.
Постановка задачи:
Описать на языке VHDL параметризируемый модуль:
Шаг 1: Создание проекта и создание проектных файлов.
1. Запустить Quartus II из меню Пуск. ПускВсе программыAltera 11.0
sp1Quartus II 11.0 Web Edition.
2. В окне Getting Started выбрать пункт Create a New Project.
3.
4.
5.
6.
В окне Introduction нажать Next
В окне page 1 of 5 вписать расположение проекта, имя проекта и нажать кнопку
Next.
В окне page 2 of 5 нажать кнопку нажать кнопку Next.
В окне page 3 of 5 выбрать нужную микросхему: Family – Cyclone III, Package –
FBGA, Pin Count – 484, Speed Grade – 6. Затем из списка выбрать микросхему
EP3C16F484C6 и нажать кнопку Next.
28
7.
8.
В окне page 4 of 5 нажать кнопку Next.
В окне page 4 of 5 нажать кнопку Finish.
Шаг 2: Создание программы на языке VHDL.
1. Для создания нового файла необходимо выбрать File → New и выбрать из списка
VHDL File
2. Для написания программы в системе Quartus II существует возможность вставки
шаблона. Для этого необходимо нажать кнопку Insert Template
3. В списке шаблонов выбрать VHDL→Constructs→Design Units→Entity для
создания объекта или VHDL →Constructs →Design Units → Architecture для
создания архитектуры объекта.
29
Описать на языке VHDL параметризированный модуль, имеющий следующие выводы:
Входные порты:
 Число А – std_logic_vector(4 downto 1)
 Число B – std_logic_vector(10 downto 7)
Входные порты:
 Светодиоды led – std_logic_vector (8 downto1 )
Параметр Generic – mult_add, при:
Mult – модуль реализует умножение числа А на В
add –модуль реализует сложение чисел А и В
Архитектура:
В модуле должна осуществляться проверка заданного параметра с формированием
сообщения об ошибке, если параметр имеет недопустимое значение. При помощи оператора
IF GENERATE сгенерировать нужный процесс в зависимости от параметра mult_add.
Шаг 3: Имплементация исходных файлов.
1. Выбрать пункт Processing → Start →Start Analysis and Elaboration. Если в
процессе компиляции будут ошибки, то исправить их.
2. В меню Tools→Netlist Viewer→Rtl Viewer посмотреть на сгенерированную
структуру устройства.
3. Для назначения выводов микросхемы выбрать пункт Assignment → Pin Planner.
Откроется окно назначения.
4. В столбце Location привязать выводы микросхемы к выходам и выходам устройства
согласно таблице.
Node Name
Location
A[4]
PIN_G4
A[3]
PIN_H6
A[2]
PIN_H5
A[1]
PIN_J6
B[4]
PIN_D2
30
B[3]
B[2]
B[1]
Led[8]
Led[7]
Led[6]
Led[5]
Led[4]
Led[3]
Led[2]
Led[1]
PIN_E4
PIN_E3
PIN_H7
PIN_C2
PIN_C1
PIN_E1
PIN_F2
PIN_H1
PIN_J3
PIN_J2
PIN_J1
5. Выполнить полную компиляцию проекта. Для этого выполнить пункт Processing →
Start Compilation. Внимательно изучить предупреждения во вкладке Warning.
Шаг 4: Программирование СБИС и проверка работы проекта на плате.
1. Включить питание платы, нажав красную кнопку.
2. Выполнить
команду Tools→Programmer.
Откроется окно
управления
конфигурированием СБИС.
3. Для установки встроенного в плату конфигуратора FPGA нажать кнопку Hardware
Setup.
4. В окне Available hardware items указать (двойным щелчком левой клавиши мыши)
USB-Blaster. Нажать кнопку Close.
5. Включить опцию Program/Configure и нажать кнопку Start. В окне Progress будет
отображаться статус процедуры программирования.
31
Тема 7. Работа с последовательным описанием в языке VHDL
Цели работы:
– Изучить базовые принципы написания программ на языке VHDL.
– Изучить базовые принципы использования программы Quartus II для проектирования
электронных устройств.
– Компиляция программ, написанных на языке VHDL для последующей имплементации.
– Запуск синтезирования.
– Изучить принципы работы с отладочным модулем DE0.
Постановка задачи:
Описать на языке VHDL сдвигающий регистр с параллельной загрузкой и
параллельным выходом.
Шаг 1: Создание проекта и создание проектных файлов.
1. В созданную папку lab6 скопировать файл clk_div.vhd
2. Запустить Quartus II из меню Пуск. ПускВсе программыAltera 11.0
sp1Quartus II 11.0 Web Edition.
3. В окне Getting Started выбрать пункт Create a New Project.
4.
5.
В окне Introduction нажать Next
В окне page 1 of 5 вписать расположение проекта, имя проекта и нажать кнопку
Next.
32
6.
7.
В окне page 2 of 5 нажать кнопку
, выбрать файл clk_div.vhd и нажать кнопку
Add для добавления к проекту файла clk_div.
В окне page 3 of 5 выбрать нужную микросхему: Family – Cyclone III, Package –
FBGA, Pin Count – 484, Speed Grade – 6. Затем из списка выбрать микросхему
EP3C16F484C6 и нажать кнопку Next.
8.
9.
В окне page 4 of 5 нажать кнопку Next.
В окне page 4 of 5 нажать кнопку Finish.
Шаг 2: Создание схемного файла в проекте.
1.
Для создания нового файла необходимо выбрать File → New и выбрать из списка
Block Diagram/Schematic File.
2.
На схеме необходимо разместить блоки, созданные на основе данного файла
clk_div.vhd и созданного файла reg_8.vhd. Для создания нового блока необходимо
перейти во вкладку Files, щелкнуть ПКМ по имени файла clk_div и выбрать пункт
Create Symbol Files from Current File.
33
3.
4.
5.
Затем в схеме дважды щелкнуть ЛКМ, и в открывшемся окне, в разделе Project,
выбрать элемент clk_div. Нажать кнопку OK.
Поместить созданный блок в любом месте схеме.
Создать схему, представленную на рисунке
Шаг 3: Создание программы на языке VHDL.
1. Для создания нового файла необходимо выбрать File → New и выбрать из списка
VHDL File
34
2. Для написания программы в системе Quartus II существует возможность вставки
шаблона. Для этого необходимо нажать кнопку Insert Template
3. В списке шаблонов выбрать VHDL→Constructs→Design Units→Entity для
создания объекта или VHDL →Constructs →Design Units → Architecture для
создания архитектуры объекта.
Описать на языке VHDL сдвигающий регистр с параллельной загрузкой и
параллельным выходом, имеющий следующие выводы:
Входные порты:
 D_in(8..1) – входы загружаемых данных
 rst – вход асинхронного сброса. При логическом 0 сдвигающий регистр асинхронно
сбрасывается в “00000001”
 Ena – вход разрешения работы. При логической 1 работа сдвигающего регистра
разрешена.
 Load – вход разрешения параллельной загрузки регистра. При логическом 0 в
сдвигающий регистр записывается число, задаваемое на D_in(8...1). При
логической 1 осуществляется сдвиг данных, хранящихся в регистре.
Входные порты:
D_out(8..1) – выходы регистра
Шаг 4: Имплементация исходных файлов.
6. Выбрать пункт Processing → Start →Start Analysis and Elaboration. Если в
процессе компиляции будут ошибки, то исправить их.
7. В меню Tools→Netlist Viewer→Rtl Viewer посмотреть на сгенерированную
структуру устройства.
8. Для назначения выводов микросхемы выбрать пункт Assignment → Pin Planner.
Откроется окно назначения.
9. В столбце Location привязать выводы микросхемы к выходам и выходам устройства
согласно таблице.
35
10. Выполнить полную компиляцию проекта. Для этого выполнить пункт Processing →
Start Compilation. Внимательно изучить предупреждения во вкладке Warning.
Шаг 4: Программирование СБИС и проверка работы проекта на плате.
1. Включить питание платы, нажав красную кнопку.
2. Выполнить
команду Tools→Programmer.
Откроется окно
управления
конфигурированием СБИС.
3. Для установки встроенного в плату конфигуратора FPGA нажать кнопку Hardware
Setup.
4. В окне Available hardware items указать (двойным щелчком левой клавиши мыши)
USB-Blaster. Нажать кнопку Close.
5. Включить опцию Program/Configure и нажать кнопку Start. В окне Progress будет
отображаться статус процедуры программирования.
36
Тема 8. Работа с последовательным описанием в языке VHDL
Цели работы:
– Изучить базовые принципы написания программ на языке VHDL.
– Изучить базовые принципы использования программы Quartus II для проектирования
электронных устройств.
– Компиляция программ, написанных на языке VHDL для последующей имплементации.
– Запуск синтезирования.
– Изучить принципы работы с отладочным модулем DE0.
Постановка задачи:
Описать на языке
структурного описания.
VHDL
шестнадцатеричный
счётчик
с
использованием
Шаг 1: Создание проекта и создание проектных файлов.
1. В созданную папку lab7 скопировать файл clk_div.vhd
2. Запустить Quartus II из меню Пуск. ПускВсе программыAltera 11.0
sp1Quartus II 11.0 Web Edition.
3. В окне Getting Started выбрать пункт Create a New Project.
4.
5.
В окне Introduction нажать Next
В окне page 1 of 5 вписать расположение проекта, имя проекта и нажать кнопку
Next.
37
6.
7.
В окне page 2 of 5 нажать кнопку
, выбрать файл clk_div.vhd и нажать кнопку
Add для добавления к проекту файла clk_div.
В окне page 3 of 5 выбрать нужную микросхему: Family – Cyclone III, Package –
FBGA, Pin Count – 484, Speed Grade – 6. Затем из списка выбрать микросхему
EP3C16F484C6 и нажать кнопку Next.
8.
9.
В окне page 4 of 5 нажать кнопку Next.
В окне page 4 of 5 нажать кнопку Finish.
Шаг 2: Создание программы на языке VHDL.
1. В программе должны быть реализованы три объекта:
a. Объект clk_div. Входные порты (clk , rst – std_logic). Выходной порт (ena –
std_logic). Файл задан изначально.
b. Объект count. Входной порт clk_count. Выходной порт c_out – std_logic_vector(4
downto 1). Объект является 4-х разрядным счетчиком на сложение.
c. Объект indic. Преобразователь 4-х разрядного кода в код семисегментного
индикатора.
2. В объекте top_conter описать компоненты для созданных объектов.
3. Конкретизировать имеющиеся компоненты согласно схеме.
38
Шаг 3: Имплементация исходных файлов.
1. Выбрать пункт Processing → Start →Start Analysis and Elaboration. Если в
процессе компиляции будут ошибки, то исправить их.
2. В меню Tools→Netlist Viewer→Rtl Viewer посмотреть на сгенерированную
структуру устройства.
3. Для назначения выводов микросхемы выбрать пункт Assignment → Pin Planner.
Откроется окно назначения.
4. В столбце Location привязать выводы микросхемы к выходам и выходам устройства
согласно таблице.
5. Выполнить полную компиляцию проекта. Для этого выполнить пункт Processing →
Start Compilation. Внимательно изучить предупреждения во вкладке Warning.
Шаг 4: Программирование СБИС и проверка работы проекта на плате.
1. Включить питание платы, нажав красную кнопку.
2. Выполнить
команду Tools→Programmer.
Откроется окно
управления
конфигурированием СБИС.
3. Для установки встроенного в плату конфигуратора FPGA нажать кнопку Hardware
Setup.
4. В окне Available hardware items указать (двойным щелчком левой клавиши мыши)
USB-Blaster. Нажать кнопку Close.
5. Включить опцию Program/Configure и нажать кнопку Start. В окне Progress будет
отображаться статус процедуры программирования.
39
Тема 9. Работа подпрограммами в языке VHDL
Цели работы:
– Изучить базовые принципы написания программ на языке VHDL.
– Изучить базовые принципы использования программы ModelSim-Altera для
моделирования электронных устройств.
– Компиляция программ, написанных на языке VHDL для последующего моделирования.
– Запуск моделирования.
Постановка задачи:
Написать на языке VHDL программу, осуществляющую преобразование типа данных
при помощи процедуры.
1. Моделирование устройства в программе ModelSim.
Шаг 1: Создание проекта и добавление проектных файлов.
1. Запустить ModelSim из меню Пуск. ПускВсе программыAlteraModelSimAltera 6.5g.
2. Закрыть появившееся окно Important Information.
3.
Создать новый проект ModelSim. В меню File, выбрать New→Project. Откроется
диалоговое окно CreateProject.
4.
5.
Ввести имя lab8 в строке project name.
В строке ProjectLocation установить путь к HDL файлам, которые планируется
использовать.
40
6.
Оставить имя Default Library Name – work. Нажать OK. Откроется диалоговое
окно Add items to the Project.
7.
Добавить исходные файлы к проекту. Нажать Create New File. Откроется
диалоговое окно Create Project File.
8. Ввести имя файла. Нажать OK, затем закрыть окно Add items to the Project.
9. Дважды щелкнуть на имени файла во вкладке Project, откроется окна для ввода
программы.
Исходные файлы, появившиеся в закладке Project окна Workspace, имеют в поле
статус значок (?), т.к. они пока не откомпилированы
Шаг 2: Создание программы на языке VHDL.
В программе необходимо реализовать следующие элементы:
1. Создать VHDL файл содержащий пакет text_logic_pack, в котором реализован тип
данных
text_logic (uninitialized, undef_value, zero, one, high_imped, weak_undef, weak_zero,
weak_one, no_matter).
2. Создать процедуру text_to_logic, которая переводит созданный тип в тип std_logic.
Процедура должна содержать входной параметр типа text_logic, и выходной
параметр типа std_logic.
3. Описать объект, в котором осуществляется запуск процедуры text_to_logic.
4. Объект должен иметь входной порт типа text_logic и выходной порт типа std_logic.
Шаг 3: Компиляция исходных файлов.
Компиляцию файлов можно осуществлять несколькими путями. Если исходный файл
один, то:
1. Щелкнуть правой кнопкой мыши по имени файла во вкладке Project.
2. В выпадающем меню выбрать Compile → Compile Selected
Если имеется несколько исходных файлов, то порядок следующий.
3. Установить порядок компиляции и скомпилировать исходные файлы. В меню
Compile выбрать Compile Order.
41
4.
Нажать Auto Generate для автоматического определения зависимостей между
файлами и компиляции файлов.
Зеленая галочка в поле статус в закладке Project рабочего окна Workspace обозначает
успешную компиляцию исходных файлов.
Шаг 4: Запуск симулятора
1.
В меню Simulate выбрать Start Simulation.
Откроется диалоговое окно StartSimulation. Во вкладке Design отображается список
всех элементов (объектов, конфигураций и модулей) которые могут быть
промоделированы.
2.
3.
Выставить временную шкалу. В списке Resolution выбрать ns(наносекунды).
Раскрыть библиотеку work. Выбрать описанный ранее объект-entity.
При использовании языка VHDL, существует возможность раскрыть объект для
просмотра реализованной архитектуры (struct). Если в данном объекте реализованы
несколько архитектур, существует возможность выбрать одну из них для моделирования.
42
4. Нажать OK.
После запуска симулятор откроется несколько дополнительных окон: Locals,
ActiveProcesses, Objects. По умолчанию откроется вкладка sim рабочего окна. Окно
Transcript сигнализирует о том, что все исходные модули (объекты) были загружены.
Симулятор готов к использованию.
Шаг 5: Создание и запуск исполняемого do-файла
1. Выбрать пункт File → New → Source → Do.
2. В открытом окне написать строку для формирования входного сигнала.
force /sign uninitialized 0 ns, undef_value 20ns, zero 40ns, one 60ns, high_imped 80ns,
weak_undef 100ns, weak_zero 120ns, weak_one 140ns, no_matter 140ns
Данная строка формирует последовательность значений для входного сигнала:
3. Сохранить созданный файл. В строке имени файла написать stim.do
4. Запустить созданный do-файл. Для этого выполнить Tools → Tcl →Execute Macro.
В открывшемся окне выбрать файл stim.do.
Шаг 5: Запуск моделирования.
1. Во вкладке sim рабочего окна Workspace, дважды щелкнуть имя объекта
моделирования.
2. Открыть окно Wave. Перетащить мышью объект моделирования в окно Wave.
3. В меню Simulate выбрать Runtime Options.
4. Изменить значение Default Run на 100 ns, и нажать OK.
5. В меню Simulate выбрать Run→Run 100 ns. Запуск также можно осуществить
командой run @100 ns в окне Transcript.
6. Переключиться в окно Wave.
Импульсы появились в окне Wave. Для удобства можно увеличить или уменьшить
масштаб кнопками
и
.
7. В окне Transcript ввести команду run для продолжения моделирования.
Команда run без аргументов, продолжает моделирование в течение следующих 100нс,
указанных по умолчанию в окне Runtime Options.
Шаг 7: Анализ результатов моделирования
1. В меню Add дважды выбрать пункт To Wave→Cursor (использовать меню Insert в
том случае если окно Wave является самостоятельным окном).
В окне Wave отображаются две желтые курсорные линии. Каждая линия снизу имеет
значение временной шкалы. Между двумя курсорными линиями отображается разница
времени.
2.
3.
В меню Wave выбрать пункт Zoom→Zoom Range.
В диалоговом окне Wave Zoom ввести значение 0 ns в строке Start и 50ns в строке
End. Нажать OK.
Аналогичное действие выполняется при нажатии правой кнопкой мыши в окне Wave и
выборе пункта Zoom Range.
43
Тема 10. Работа подпрограммами в языке VHDL
Цели работы:
– Изучить базовые принципы написания программ на языке VHDL.
– Изучить базовые принципы использования программы ModelSim-Altera для
моделирования электронных устройств.
– Компиляция программ, написанных на языке VHDL для последующего моделирования.
– Запуск моделирования.
Постановка задачи:
Написать на языке VHDL программу, перегрузку операторов and и or для вновь
созданного типа данных.
1. Моделирование устройства в программе ModelSim.
Шаг 1: Создание проекта и добавление проектных файлов.
1. Запустить ModelSim из меню Пуск. ПускВсе программыAlteraModelSimAltera 6.5g.
2. Закрыть появившееся окно Important Information.
3.
Создать новый проект ModelSim. В меню File, выбрать New→Project. Откроется
диалоговое окно CreateProject.
4.
5.
Ввести имя lab9 в строке project name.
В строке ProjectLocation установить путь к HDL файлам, которые планируется
использовать.
44
6.
Оставить имя Default Library Name – work. Нажать OK. Откроется диалоговое
окно Add items to the Project.
7.
Добавить исходные файлы к проекту. Нажать Create New File. Откроется
диалоговое окно Create Project File.
8. Ввести имя файла. Нажать OK, затем закрыть окно Add items to the Project.
9. Дважды щелкнуть на имени файла во вкладке Project, откроется окна для ввода
программы.
Исходные файлы, появившиеся в закладке Project окна Workspace, имеют в поле
статус значок (?), т.к. они пока не откомпилированы
Шаг 2: Создание программы на языке VHDL.
В программе необходимо реализовать следующие элементы:
1. Создать VHDL файл содержащий пакет text_logic_pack, в котором реализован тип
данных
text_logic (uninitialized, undef_value, zero, one, high_imped, weak_undef, weak_zero, weak_one,
no_matter).
2. Создать функцию and, которая вычисляет операцию логического умножения для
элементов zero и one типа text_logic. В случае, если операнды не равны значениям
zero и one функция возвращает значение undef_value.
3. Создать функцию or, которая вычисляет операцию логического сложения для
элементов zero и one типа text_logic. В случае, если операнды не равны значениям
zero и one функция возвращает значение undef_value.
4. Описать объект, в котором осуществляется запуск перегруженных функций.
5. Объект должен иметь два входных порта и один выходной порт типа text_logic.
Шаг 3: Компиляция исходных файлов.
Компиляцию файлов можно осуществлять несколькими путями. Если исходный файл
один, то:
1. Щелкнуть правой кнопкой мыши по имени файла во вкладке Project.
2. В выпадающем меню выбрать Compile → Compile Selected
Если имеется несколько исходных файлов, то порядок следующий.
3. Установить порядок компиляции и скомпилировать исходные файлы. В меню
Compile выбрать Compile Order.
45
4.
Нажать Auto Generate для автоматического определения зависимостей между
файлами и компиляции файлов.
Зеленая галочка в поле статус в закладке Project рабочего окна Workspace обозначает
успешную компиляцию исходных файлов.
Шаг 4: Запуск симулятора
1.
В меню Simulate выбрать Start Simulation.
Откроется диалоговое окно StartSimulation. Во вкладке Design отображается список
всех элементов (объектов, конфигураций и модулей) которые могут быть
промоделированы.
2.
3.
Выставить временную шкалу. В списке Resolution выбрать ns(наносекунды).
Раскрыть библиотеку work. Выбрать описанный ранее объект-entity.
При использовании языка VHDL, существует возможность раскрыть объект для
просмотра реализованной архитектуры (struct). Если в данном объекте реализованы
несколько архитектур, существует возможность выбрать одну из них для моделирования.
46
4. Нажать OK.
После запуска симулятор откроется несколько дополнительных окон: Locals,
ActiveProcesses, Objects. По умолчанию откроется вкладка sim рабочего окна. Окно
Transcript сигнализирует о том, что все исходные модули (объекты) были загружены.
Симулятор готов к использованию.
Шаг 5: Создание и запуск исполняемого do-файла
1. Выбрать пункт File → New → Source → Do.
2. В открытом окне написать строку для формирования входного сигнала.
force /sign1 zero 0ns, one 20ns, zero 40ns, one 60ns, high_imped 80ns,
force /sign2 zero 0ns, zero 20ns, one 40ns, one 60ns, high_imped 80ns,
Данная строка формирует последовательность значений для входного сигнала:
3. Сохранить созданный файл. В строке имени файла написать stim.do
4. Запустить созданный do-файл. Для этого выполнить Tools → Tcl →Execute Macro.
В открывшемся окне выбрать файл stim.do.
Шаг 5: Запуск моделирования.
1. Во вкладке sim рабочего окна Workspace, дважды щелкнуть имя объекта
моделирования.
2. Открыть окно Wave. Перетащить мышью объект моделирования в окно Wave.
3. В меню Simulate выбрать Runtime Options.
4. Изменить значение Default Run на 100 ns, и нажать OK.
5. В меню Simulate выбрать Run→Run 100 ns. Запуск также можно осуществить
командой run @100 ns в окне Transcript.
6. Переключиться в окно Wave.
Импульсы появились в окне Wave. Для удобства можно увеличить или уменьшить
масштаб кнопками
и
.
7. В окне Transcript ввести команду run для продолжения моделирования.
Команда run без аргументов, продолжает моделирование в течение следующих 100нс,
указанных по умолчанию в окне Runtime Options.
Шаг 7: Анализ результатов моделирования
1. В меню Add дважды выбрать пункт To Wave→Cursor (использовать меню Insert в
том случае если окно Wave является самостоятельным окном).
В окне Wave отображаются две желтые курсорные линии. Каждая линия снизу имеет
значение временной шкалы. Между двумя курсорными линиями отображается разница
времени.
2.
3.
В меню Wave выбрать пункт Zoom→Zoom Range.
В диалоговом окне Wave Zoom ввести значение 0 ns в строке Start и 50ns в строке
End. Нажать OK.
Аналогичное действие выполняется при нажатии правой кнопкой мыши в окне Wave и
выборе пункта Zoom Range.
47
Тема 11. Работа с памятью и внешними файлами в языке VHDL
Цели работы:
– Изучить базовые принципы написания программ на языке VHDL.
– Изучить базовые принципы использования программы ModelSim-Altera для
моделирования электронных устройств.
– Компиляция программ, написанных на языке VHDL для последующего моделирования.
– Запуск моделирования.
Постановка задачи:
Написать на языке VHDL программу, реализующую RAM-память с синхронным
чтением и записью.
1. Моделирование устройства в программе ModelSim.
Шаг 1: Создание проекта и добавление проектных файлов.
1. Запустить ModelSim из меню Пуск. ПускВсе программыAlteraModelSimAltera 6.5g.
2. Закрыть появившееся окно Important Information.
3.
Создать новый проект ModelSim. В меню File, выбрать New→Project. Откроется
диалоговое окно CreateProject.
4.
5.
Ввести имя lab9 в строке project name.
В строке ProjectLocation установить путь к HDL файлам, которые планируется
использовать.
48
6.
Оставить имя Default Library Name – work. Нажать OK. Откроется диалоговое
окно Add items to the Project.
7.
Добавить исходные файлы к проекту. Нажать Create New File. Откроется
диалоговое окно Create Project File.
8. Ввести имя файла. Нажать OK, затем закрыть окно Add items to the Project.
9. Дважды щелкнуть на имени файла во вкладке Project, откроется окна для ввода
программы.
Исходные файлы, появившиеся в закладке Project окна Workspace, имеют в поле
статус значок (?), т.к. они пока не откомпилированы
Шаг 2: Создание программы на языке VHDL.
В программе необходимо реализовать следующие элементы:
1. Создать VHDL файл содержащий синхронную RAM-память.
2. Занести значения в память из внешнего файла. Для этого необходимо выполнить
следующие действия. Пример чтения из файла представлен ниже:
В декларативной части архитектуры объявляется элемент файлового типа
file file_in : text is in "file.dat";
В декларативной части процесса чтения объявляется переменная типа line и типа
integer
variable tmp_line : line;
variable tmp_int: integer;
Считать данные сначала из файла в переменную типа line, затем из нее в
переменную типа integer
IF clk'event and clk='1' and not endfile(file_imp) THEN
readline (file_in, tmp_line);
read(tmp_line, tmp)int);
3. Создать процесс записывающий значения из памяти во внешний файл. Запись
производится аналогично. Команды для записи:
Процедура WRITE(data_line, data) записывает данные из аргумента data в
переменную типа line.
Процедура WRITELINE( file, data_line) записывает данные из аргумента data_line в
файл.
Шаг 3: Компиляция исходных файлов.
Компиляцию файлов можно осуществлять несколькими путями. Если исходный файл
один, то:
1. Щелкнуть правой кнопкой мыши по имени файла во вкладке Project.
2. В выпадающем меню выбрать Compile → Compile Selected
49
Если имеется несколько исходных файлов, то порядок следующий.
3. Установить порядок компиляции и скомпилировать исходные файлы. В меню
Compile выбрать Compile Order.
4.
Нажать Auto Generate для автоматического определения зависимостей между
файлами и компиляции файлов.
Зеленая галочка в поле статус в закладке Project рабочего окна Workspace обозначает
успешную компиляцию исходных файлов.
Шаг 4: Запуск симулятора
1.
В меню Simulate выбрать Start Simulation.
50
Откроется диалоговое окно StartSimulation. Во вкладке Design отображается список
всех элементов (объектов, конфигураций и модулей) которые могут быть
промоделированы.
2.
3.
Выставить временную шкалу. В списке Resolution выбрать ns(наносекунды).
Раскрыть библиотеку work. Выбрать описанный ранее объект-entity.
При использовании языка VHDL, существует возможность раскрыть объект для
просмотра реализованной архитектуры (struct). Если в данном объекте реализованы
несколько архитектур, существует возможность выбрать одну из них для моделирования.
4.
Нажать OK.
После запуска симулятор откроется несколько дополнительных окон: Locals,
ActiveProcesses, Objects. По умолчанию откроется вкладка sim рабочего окна. Окно
Transcript сигнализирует о том, что все исходные модули (объекты) были загружены.
Симулятор готов к использованию.
Шаг 5: Создание и запуск исполняемого do-файла
1.
2.
Выбрать пункт File → New → Source → Do.
В открытом окне написать строку для формирования входного сигнала.
force /clk 0 0 ns, 1 {20 ns} -r 40 ns
3.
4.
Данная строка формирует последовательность значений для входного сигнала:
Сохранить созданный файл. В строке имени файла написать stim.do
Запустить созданный do-файл. Для этого выполнить Tools → Tcl →Execute Macro.
В открывшемся окне выбрать файл stim.do.
Шаг 5: Запуск моделирования.
1.
Во вкладке sim рабочего окна Workspace, дважды щелкнуть имя объекта
моделирования.
51
2.
3.
4.
5.
Открыть окно Wave. Перетащить мышью объект моделирования в окно Wave.
В меню Simulate выбрать Runtime Options.
Изменить значение Default Run на 100 ns, и нажать OK.
В меню Simulate выбрать Run→Run 100 ns. Запуск также можно осуществить
командой run @100 ns в окне Transcript.
6. Переключиться в окно Wave.
Импульсы появились в окне Wave. Для удобства можно увеличить или уменьшить
масштаб кнопками
и
.
7. В окне Transcript ввести команду run для продолжения моделирования.
Команда run без аргументов, продолжает моделирование в течение следующих 100нс,
указанных по умолчанию в окне Runtime Options.
Шаг 7: Анализ результатов моделирования
1. В меню Add дважды выбрать пункт To Wave→Cursor (использовать меню Insert в
том случае если окно Wave является самостоятельным окном).
В окне Wave отображаются две желтые курсорные линии. Каждая линия снизу имеет
значение временной шкалы. Между двумя курсорными линиями отображается разница
времени.
2.
3.
В меню Wave выбрать пункт Zoom→Zoom Range.
В диалоговом окне Wave Zoom ввести значение 0 ns в строке Start и 50ns в строке
End. Нажать OK.
Аналогичное действие выполняется при нажатии правой кнопкой мыши в окне Wave и
выборе пункта Zoom Range.
52
Download