Вы находитесь на странице: 1из 16

Синтез мультиплексора

Цель работы – разработка и верификация схемы мультиплексора на


базе ПЛИС Cyclone IV в среде Quartus Prime.

Краткие теоретические сведения

Мультиплексором называется устройство, имеющее несколько


сигнальных входов и один сигнальный выход. На выход подаётся значение
с одного входа, выбранного при помощи управляющего сигнала.
В случае цифрового мультиплексора, передача сигнала на выход
осуществляется его копированием с нужного входа.
Если мультиплексор имеет n управляющих входов, то они способны
адресовать до 2n информационных входов. Таким образом, передача
сигнала производится с информационного входа с номером, равном
двоичному числу, подаваемому на управляющие входы.
Лабораторная работа предполагает выполнение следующих этапов:
1. Создание проекта в САПР Quartus Prime;
2. Функциональное проектирование элемента на языке Verilog HDL;
3. Компиляция проекта;
4. Создание файла Waveform и назначение входов и выходов
элемента;
5. Симуляция работы элемента при помощи задаваемых воздействий.
Порядок работы
Для выполнения лабораторных работ используется среда
проектирования Quartus Prime 21.1 и среда моделирования QuestaSim Intel
FPGA Edition 21.1.

Этап 1 – Создание проекта в САПР Quartus Prime

Проектом в среде Quartus называется совокупность файлов,


описывающих проектируемое устройство, вместе со вспомогательными
файлами.
Для создания проекта необходимо выполнить следующие шаги:
1. После запуска Quartus Prime на верхней панели нажать на элемент
New... в меню File, в появившемся списке выбрать New Quartus Prime
Project;
2. Откроется окно мастера создания проекта New Project Wizard.
Пропустить этап Introduction нажатием кнопки Next;
3. На этапе Directory, Name, Top-Level Entity пользователю
предлагается выбрать директорию, в которой будет располагаться проект,
а также название проекта и top-level entity (главного файла проекта). Задать
значения можно вручную и с помощью окна выбора файлов и директорий.
Обратите внимание, что Quartus не создаёт подпапку для проекта, поэтому
следует создать отдельную папку самостоятельно;
4. На этапе Project Type выбрать Empty Project. Этап Add Files
пропустить;
5. На этапе Family, Device & Board Settings выбрать семейство
устройств Cyclone IV E, в списке Available devices выбрать ПЛИС
EP4CE22F17C6;
6. На этапе EDA Tool Settings выбрать Questa Intel FPGA и Verilog
HDL в строке Simulation;

7. Проверить правильность заданных данных на этапе Summary.


Выбранные параметры являются впоследствии изменяемыми.
8. Подтвердить создание проекта с помощью кнопки Finish.

Этап 2 – Функциональное проектирование элемента

Проектирование элемента в данной работе подразумевает его


описание с помощью языка Verilog HDL. Для этого в проекте нужно
создать соответствующий файл формата .v, для чего в меню File – New…
выбрать Verilog HDL File и подтвердить создание.
В открывшемся пустом файле набирается текст программы на языке
Verilog HDL. Модуль элемента мультиплексора с возможностью задания
разрядности с помощью параметра DEPTH выглядит следующим образом:

module LabMux(in, sel, out);


parameter DEPTH = 3;
input [(1 << DEPTH) - 1:0] in;
input [DEPTH - 1:0] sel;
reg out;
output out;
always @*
begin
out = in[sel];
end
endmodule

Название описываемого в данном файле модуля должно совпадать с


названием top-level entity проекта (по умолчанию, это имя самого проекта).
Имя top-level entity можно сменить в меню Assignments – Settings… –
General – Top-level entity.

По окончании редактирования файл Verilog HDL по умолчанию


сохраняется в папке проекта и автоматически добавляется в него.

Этап 3 – Компиляция проекта

После описания модуля для последующей симуляции и прочих этапов


проектирования он должен быть скомпилирован. Для этого достаточно
нажать на кнопку Start Compilation на панели инструментов.
Компиляция прошла успешно, если в сообщениях (Flow Messages) не
появилось ошибок (выделенные красным) и выведены сообщения об
успешном завершении каждого этапа, например “Quartus Prime Analysis &
Synthesis was successful. 0 errors, 3 warnings”. Обратите внимание, что
предупреждения (выделенные синим) могут сообщить полезную при
отладке информацию, если поведение синтезированного элемента
отклоняется от предполагаемого.

Этап 4 – Создание файла временных диаграмм (Waveform)

Файлы University Program VWF (Vector Waveform File) используются


для отладки работы разработанных модулей путём задания воздействий на
входах элементов и последующей симуляции в соответствующих
программных модулях.
Для создания Waveform нужно выбрать в меню File – New… элемент
University Program VWF.

Перед заданием входных воздействий необходимо вывести входы и


выходы элемента в списке слева. Для этого выполняются следующие
действия:
1. В меню Edit или после нажатия правой кнопкой мыши по пустому
пространству слева выбрать элемент Insert Node or Bus…;
2. Выбрать меню Node Finder…;
3. Нажать на кнопку List. В списке слева должны появиться все входы
и выходы модуля. Модуль должен быть предварительно скомпилирован,
если в него вносились изменения;
4. Нажать на кнопку “>>”. Все входы и выходы должны
появиться в правом списке, что означает их добавление в Waveform;

5. Нажать на кнопку ОК в меню Node Finder и в меню Insert Node


or Bus.
Все входы и выходы мультиплексора должны появиться в списке
слева. Справа можно увидеть значения на входах и выходах элемента: на
входах все значения по умолчанию нулевые, на выходах – неопределённые
(Х).
В данной работе все входные значения поступают на элемент через
шины – несколько объединённых под одним именем и
проиндексированных входов. Шину можно раскрыть для редактирования
отдельных входов нажатием на стрелку слева от её имени.
Для последующей симуляции необходимо создать тестовые
воздействия на входных шинах элемента. Для входов in это будет сделано
заданием значения напрямую шине, для входов sel – заданием высокого и
низкого уровней сигнала на произвольно выбираемых промежутках:
1. Нажать на строку in в списке слева;
2. Нажать на кнопку Arbitrary Value на панели инструментов;

3. В появившемся окне задать значение, поступающее по шине.


Оно должно состоять из числа битов, равного разрядности шины. Значение
может задаваться как в виде двоичного числа, что целесообразно в данной
работе, так и в виде восьмеричного, шестнадцатеричного, десятичного и
других чисел, для этого есть возможность выбрать систему счисления в

списке Radix;
4. Значения на входах in должны измениться соответствующим
заданному значению на шине образом;

5. При раскрытой в Waveform шине sel выбрать на одном из


входов небольшой временной промежуток прямоугольным выделением

мышью;
6. Задать высокий уровень сигнала на данном входе на данном
временном промежутке нажатием на кнопку Forcing High;

7. Повторить для остальных управляющих входов, создавая


различные комбинации на управляющей шине.

Этап 5 – Симуляция работы элемента

Для отладки спроектированного модуля осуществляется его


функциональная и/или временная симуляция с помощью среды
моделирования.
Симуляции в САПР Quartus делятся на два вида:
● функциональная – используется для проверки корректности работы
модуля, нет временных задержек при выполнении операций;
● временная – используется для проверки быстродействия модуля,
присутствуют временные задержки, вследствие чего понижается
стабильность работы схемы при частых изменениях уровней сигналов.
Для проверки корректности работы мультиплексора будет
использоваться функциональная симуляция при помощи среды
моделирования QuestaSim. Перед симуляцией необходимо добавить
настройку запуска среды:
1. В окне редактирования Waveform перейти в меню Simulation –
Simulation Settings;
2. В поле ModelSim Script найти флаг -novopt и удалить его;
3. На его место добавить флаг -voptargs=+acc;
4. Сохранить настройки и вернуться к Waveform нажатием кнопки
Save.
Функциональная симуляция запускается нажатием соответствующей
кнопки на панели инструментов в редакторе Waveform.
После её нажатия должно открыться окно вывода прогресса
симуляции. Если все настройки верны, в нём не должны появиться ошибки
и после симуляции откроется отдельное от редактора Waveform окно со
смоделированной временной диаграммой.

Можно осуществить проверку корректности работы модуля по


полученным выходным значениям мультиплексора. Будет удобнее, если
управляющее значение будет выводиться в виде десятичного числа, а не
двоичного. Чтобы изменить систему счисления для значения сигнала
нужно нажать правой кнопкой мыши на строку с выбранным входом или
выходом в списке слева, выбрать пункт меню Radix и в выпадающем
списке выбрать Unsigned Decimal (десятичное число без знака).

Вам также может понравиться