СИНТЕЗ УПРАВЛЯЮЩЕГО АВТОМАТА В САПР QUARTUS


 

Синтез УА с использованием САПР Quartus в данной курсовой работе аналогичен синтезу ОА. При этом, в основном, используются логические элементы, элементы памяти (счетчики, триггеры, сдвиговые регистры) и дешифраторы.

Специально подготовленные для данной работы макрофункции находятся в каталоге с программой. Из этого каталога в проект (с помощью пункта меню Project>Add/Remove Files in Project…) добавьте необходимые файлы (регистр reg, дешифраторы dc, счетчики ct). Тогда папка с файлами проекта будет выполнять также функции из каталога пользователя. Имена и назначение элементов:

Dc3 – дешифратор с тремя входами;

Ct4 – четырехразрядный счетчик, работающий только на сложение;

Ct3pm – трехразрядных реверсивный счетчик.

 

Кроме того Вы можете воспользоваться элементами из следующих групп:

Primitives\pin;

Primitives\storage (разрешено использовать только dff – D триггер, jkff – JK триггер, srff – RS триггер, tff – Т триггер, в противном случае, программа УА не будет правильно работать с данными);

Primitives\logic;

Primitives\buffer\wire;

Others\maxplus2\74198 (реверсивный сдвиговый регистр).

При указании имени шины, необходимо помнить, что нумерацию ее линий следует начинать с нуля! Имя шины содержит квадратные скобки, где указываются номера, или диапазон номеров линий. Ниже представлена таблица условных обозначений входов и выходов внутри комбинационной схемы (КС), а также входных и выходных шин.

Таблица 9 – Условные обозначения входов и выходов КС для УА

Обозначение Пояснения
clk Обозначение тактовых импульсов
reset Обозначение сброса
x[n..0] Обозначение осведомительных сигналов (где n любое натуральное число)
xpin[n..0] Обозначение входной шины осведомительных сигналов
y[n..0] Обозначение управляющих сигналов
yy[n..0] Обозначение управляющих сигналов при выдаче на выходную шину
ypin[n..0] Обозначение выходной шины управляющих сигналов
a[n..0]   Обозначение внутренних состояний
Продолжение таблицы 9
Обозначение Пояснения
apin[n..0] Обозначение выходной шины внутренних состояний
d[n..0] (t[n..0]) Обозначение входов на D-триггере (T-триггере)
s[z..0] Обозначение входов на RS-триггере
j[z..0] Обозначение входов на JK-триггере
d(t; j; s) pin[z..0] Обозначение выходной шины входов триггеров
ct[z..0] (rg[z..0]) Обозначение входов счетчика (регистра)
Out[z..0] Обозначение выходов триггеров и счетчиков
Outpin[z..0] Обозначение выходной шины триггеров и счетчиков

 

Индексные номера (указываются в квадратных скобках) при обозначении входов элементов памяти (счетчиков, триггеров, регистров) не должны совпадать!

Если возникает ситуация, когда одной и той же шине данных необходимо задать разные имена, то для этого удобно использовать элемент wire из стандартной библиотеки Quartus. Пример использования показан на рисунке 52.

Рис. 52. Использование wire

 

Необходимо отметить, что у элементов памяти, а также дешифратора, необходимо изменить значение «inst» на «UAinst» (это необходимо для правильного функционирования программы «Управляющий автомат»). Для этого просто дважды щелкните на надписи, и внесите изменения (рисунок 53).

Рис. 53. Правильные значения «inst» у элементов схемы

 

Следующим шагом после того, как Вы завершите построение схемы, будет создание дополнительного регистра, который необходим для устранения гонок. Скопируйте в проект файлы с именем reg из каталога с программой и разместите регистр на схеме. Разрядность данного регистра должна соответствовать количеству выходных сигналов управляющего автомата (управляющие сигналы для ОА «у»). В окне MegaWizard Plug-In ManagerLPM_FF (рисунок 54) в пункте How many flipflops do you want? (Сколько входов необходимо?) укажите количество выходных сигналов для Вашей схемы (учитывая, что нумерация начинается с нуля). Нажмите Finish два раза.

Если в схеме значения некоторых выходных сигналов напрямую зависят от внутренних связей или состояния выходов КС, например y(4) формируется сигналом, поступающим с выхода a(5) дешифратора, то входную шину данных на регистре можно обозначить следующим образом: вместо y[12..0] Вы можете написать y[12..5],a[5],y[3..0].

 

 
 

Рис. 54. Окно MegaWizard Plug-In Manager

 

Схема подключения регистра указана на рисунке 55.

 
 

Рис. 55. Дополнительный регистр в схеме

 

При проектировании цифровых устройств может потребоваться элемент, отсутствующий в библиотеке моделей базовых элементов системы. В этом случае требуемый элемент можно создать на основе базовых элементов системы, а затем оформить его в виде подсхемы (макроэлемента) с прорисовкой условного графического обозначения (УГО). Для решения этой задачи необходим Символьный редактор, который позволяет создавать и редактировать УГО (символ). Символьный файл имеет расширение *.bsf.

Под макроэлементом понимается определенным образом оформленная и записанная в рабочую библиотеку проекта схема, которой поставлен в соответствие рисунок УГО. Макроэлементы целесообразно использовать для оформления функционально законченных частей сложного проекта. Само собой разумеется, что оформление схемы в форме макроэлемента выполняется после ее отладки.

 
 

Создадим для примера два таких элемента. Первый элемент представлен на рисунке 55.

 

Рис. 55. Макроэлемент 1

 

Выберите File>New. В появившемся окне укажите Block Diagram/Schematic File. Сохраните схему, задав ей содержательное имя, отражающее назначение данного макроэлемента.

Разместите на схеме следующие элементы (рисунок 56):

 
 

2 элемента input и 1 элемент output из библиотеки libraries/primitives/ pin; элементы not и xor из libraries/primitives/logic.

 

Рис. 56. Схема макроэлемента 1

 

Скомпилируйте проект, нажав кнопку Start Compilation, или выбрав пункт File>Processing>Start Compilation в главном меню. Выполните команду File>Create/Update>Create Symbol Files from Current Fileиз главного меню. Сохраните файл <имя_Вашего_макроэлемента>.bsf в папке проекта.

 
 

Перейдите на вкладку с основной схемой Вашего проекта и щелкните левой кнопкой мыши дважды по пустому месту. Появится окно библиотеки символов. Перейдите в папку Project и выберите только что созданный макроэлемент (рисунок 57).

 

Рис. 57. УГО макроэлемента

 

 
 

Теперь элемент можно разместить на схеме.

Создадим следующий элемент, представленный на рисунке 58.

 

Рис. 58. Макроэлемент 2

 

Выберите пункт File>New>Block Diagram/Schematic File. Создайте схему, приведенную на рисунке 59.

 

 
 

Рис. 59. Схема макроэлемента 2

 

 
 

Выберите File>Create/Update>Create Symbol Files from Current File. Внешний вид макроэлемента можно изменить. Для этого выберите File>Open. Укажите файл <имя_Вашего_макроэлемента>.bsf. В появившемся окне Вы можете редактировать изображение элемента по своему усмотрению или как представлено на рисунке 60.

Рис. 60. УГО макроэлемента 2

 

Для проверки работы УА необходимо создать специальную временную диаграмму. Для этого выберите в меню File>New. Далее укажите Vector Waveform File. Появится новая вкладка. Слева находится таблица, в которой столбец Name отвечает за названия входных и выходных шин (портов), а столбец Value отображает значения входов/выходов. Чтобы все порты из Вашего проекта оказались в этом списке сделайте следующее. Щелкните правой кнопкой в пустом месте таблицы. В появившемся контекстном меню выберите пункт Insert>Insert Node or Bus. Далее нажмите Node Finder. В графе Filter укажите «Pins: all» и нажмите кнопку List (рисунок 61). Слева появятся все наименования портов из Вашей схемы. Далее нажмите кнопку «>>» (Copy all to Selected Nodes List – Скопировать все в список выбранных узлов). Нажмите ОК дважды.

 

 
 

Рис. 61. Окно Node Finder

 

Найдите в таблице сигнал CLK. Щелкните по нему правой кнопкой мыши. Выберите Value>Clock…(или нажмите Ctrl+Alt+K) В Time Period необходимо указать параметры стробирующего сигнала, а именно период (Period), значение которого можно оставить по умолчанию 10 нс, и длительность сигнала высокого уровня в течение этого периода (Duty cycle –оставьте 50%). Нажмите ОК.

Найдите в таблице сигнал Reset. Щелкните по нему правой кнопкой мыши. В контекстном меню выберите пункт Value>Arbitrary Value (Ctrl+Alt+B). Задайте параметры как на рисунке 62.

 

 

Рис. 62. Окно «Arbitrary Value»

 

 
 

Зайдите в меню Processing>Simulator Tool (рисунок 63). В Simulation Mode выберите Functional. В Simulation Input укажите файл <имя_Вашего_проекта>.vwf. После этого нажмите кнопку Generate Functional Simulation Netlist (процедуру Generate Functional Simulation Netlist необходимо проводить после каждого изменения проекта).

 

Рис. 63. Диаграмма

 

 

 
 

Если возникли ошибки, необходимо их исправить. Обязательно поставьте галочку в пункте Overwrite simulation input file with simulation results.

 

Рис. 64. Окно Simulation Tool

 

Далее перейдите на вкладку с файлом .vwf попробуйте указать некоторые входные сигналы xpin, аналогично работе с сигналом Reset выбирая курсором нужный временной диапазон, и задавая ему значения. Срабатывание идет по фронту синхроимпульса, поэтому изменять значения линий входной шины нужно до начала такта и после сигнала общего сброса Reset.

Нажмите Ctrl+I или в меню Processing>Start Simulation и запустите процесс модуляции. После того как он закончится, Вы можете снова выбрать вкладку с файлом .vwf и подтвердить изменения. По результатам диаграммы при необходимости нужно подогнать длительность тактового сигнала так, чтобы функционирование УА было стабильным.

В полученном файле диаграмм обнулите все сигналы кроме CLK и Reset. Запустите процесс модуляции (Processing>Start Simulation). Cохраните данный файл как <имя_Вашего_проекта>_.vwf.

 



Дата добавления: 2022-02-05; просмотров: 336;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.018 сек.