№4041 621.382.81(07) C-232 КАФЕДРА КОНСТРУИРОВАНИЯ ЭЛЕКТРОННЫХ СРЕДСТВ МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ СБОРНИК ЛАБОРАТОРНЫХ РАБОТ по курсу «Математическое моделирование микроэлектронных устройств ЭВС» Для студентов специальности 210202 ФЭП Таганрог 2007 2 УДК 621.382.81(076.5) Составитель: Е.Б.Лукьяненко Сборник лабораторных работ по курсу «Математическое моделирование микроэлектронных устройств ЭВС». – Таганрог: Изд-во ТРТУ, 2007. – 33 с. Лабораторные работы подготовлены по разделам: «Аналогоцифровое моделирование в системе PSpice» и «Моделирование цифровых устройств с использованием языков Verilog и VHDL». В аналого-цифровом моделировании рассмотрено создание пользовательских библиотек, моделирование аналитических зависимостей, исследование устойчивости линейных электронных схем, моделирование параллельных АЦП. Для моделирования цифровых устройств применяются языки описания Verilog и VHDL. Рассмотрено описание иерархических проектов на языке Verilog. Работы выполняются с использованием САПР OrCAD 9.1 и программы синтеза MAX+PlusII фирмы Altera. Ил. 17. Библиогр.: 4 назв. Рецензент: О.Н.Негоденко, канд. техн. наук, профессор кафедры МЭТ БИС ТРТУ. 3 Лабораторная работа №1 Создание пользовательских библиотек в программе OrCAD 9.1 При работе с программой схемотехнического моделирования OrCAD 9.1 пользователь часто сталкивается с ситуацией, когда используемый элемент отсутствует в библиотеках программы или имеет условное графическое обозначение, отличающееся от принятого в отечественных стандартах. В таких случаях можно создать собственную библиотеку с набором требуемых элементов. 1.1. Создание библиотеки На первом этапе создается собственно библиотека с оригинальным именем. При этом выполняются следующие шаги: по команде Программы/OrCAD Release 9.1/Pspice Model Editor открывается редактор моделей Pspice Model Editor; по команде File/Save As сохраняется библиотека под оригинальным именем, например Student.lib, в необходимой папке (C:\Program Files \ OrCAD \ Capture \ Library \ Pspice \ Student.lib); по команде File / Create Part открывается окно, в котором выбирается библиотека Student.lib, нажимается кнопка ОК. Таким образом создаются две библиотеки: student.lib, в которой будут содержаться математические описания компонентов, и student.olb с условными графическими обозначениями элементов; для открытия доступа к библиотеке student.lib библиотека записывается в файл C: \ Windows \pspice91.ini. В разделе [PSPICE NETLIST] дописывается строчка с продолжающимся номером Line3=.lib “student.lib” 1.2. Запись в библиотеку резисторов и конденсаторов Резисторы и конденсаторы записываются в библиотеку в следующем порядке: 4 открывается программа Capture CIS; по команде File / Open / Library открываются библиотеки analog.olb и student.olb; копируются перемещением (при нажатой клавише Ctrl)! из библиотеки analog.olb в библиотеку student.olb сначала резистор, а затем конденсатор. Графика резистора отличается от принятого в России. Его графику можно изменить. Для этого: в OrCAD Capture CIS по команде File / Open / Library открыть библиотеку student.olb; выделить резистор и в контекстном меню, открывающемся после нажатия на правую кнопку мыши (ПКМ), выполнить команду Edit Part (редактирование символа). Открывается окно с изображением резистора. В этом окне удаляем прежнее изображение резистора: щелкнув левой кнопкой мыши (ЛКМ) на линии изображения резистора, выделяем эту линию, и нажимаем клавишу del. При этом может создаваться ситуация, когда вместе с линией выделяется и вывод элемента, что приведет к его удалению. В таком случае, прежде чем удалить вывод, просмотрите и запомните (запишите) его параметры из окна, которое открывается после двойного щелчка ЛКМ на выводе элемента. Затем можно удалить линию вместе с выводом. Далее отключить привязку к сетке и нарисовать прямоугольное тело резистора. Отключить привязку можно, щелкнув ЛКМ на пиктограмме Snap to Grid , которая при отключении привязки окрашивается в красный цвет. Нарисовав прямоугольник, изображающий тело резистора, включите привязку к сетке и по команде Place / Pin добавьте удаленный вывод, предварительно заполнив в открывшемся окне параметры вывода, которые вы записали ранее. Изображение конденсатора совпадает с отечественным и его можно не менять. 1.3. Запись в библиотеку транзисторов Транзисторы создаются с помощью программы PSpice Model Editor. Откройте в ней библиотеку student.lib. По команде Tools / Options откроется окно (рис. 1), которое необходимо отредактировать. 5 Рис. 1 Заполнить строчки для автоматического создания графики символов, в строчке User defined part library указать путь к библиотеке символов student.olb, в строчке Part in an existing part library указать путь к файлу modeled.ets. Далее транзистор можно создать двумя способами. 1 способ. По команде Model / New создается математическая модель транзистора путем ввода параметров биполярного транзистора. Подробно этот процесс описан в [1]. 2 способ. По команде Model / Copy From в создаваемую модель транзистора копируются параметры математической модели имеющегося транзистора, которые потом можно отредактировать. В лабораторной работе рекомендуется использовать второй способ. Предварительно надо открыть файл библиотеки bipolar.lib и выбрать имена копируемых транзисторов (по параметрам и по типу проводимости: n–p–n или p–n–p). 6 Чтобы транзистор появился в библиотеке, надо закрыть OrCAD Capture и открыть эту программу заново. 1.4. Создание модели операционного усилителя Создадим математическую модель и графическое изображение операционного усилителя (ОУ) типа K544UD2. На входе этого ОУ включены дифференциально два p-канальных полевых транзистора с управляющим p–n-переходом. Параметры ОУ приведены в табл. 1. Таблица 1 Параметр Обозначение параметра К544UD2 Напряжение питания, В Максимальное выходное напряжение, В Скорость нарастания выходного напряжения, В/с Потребляемая мощность, Вт Емкость коррекции, Ф Входной ток смещения, нА Коэффициент усиления постоянного напряжения Частота первого полюса, Гц Частота второго полюса, МГц Коэффициент подавления синфазного сигнала Выходное сопротивление на низких частотах, Ом Выходное сопротивление на высоких частотах, Ом Ток короткого замыкания, А Еп Vмакс 15 13 SR 20*106 Pd Cc Iвх 0,21 15*10-12 0,1 Av-dc f1 f2 20 000 500 20 CMRR 50 000 R0-dc 50 R0-ac I0 25 0,02 Два параметра необходимо получить расчетным путем: f0 – частота единичного усиления, расчитываемая по формуле f0=f1(Av-dc). Phi – запас по фазе на частоте единичного усиления 7 Phi f 180 ( arctg 0 ). 2 f2 Цоколевка ОУ приведена на рис. 2. U1 7 3 2 + V+ - V- 6 4 K544UD2 Рис. 2 Для создания модели ОУ открываем библиотеку student.lib в программе Model / Editor. По команде Model / New откроется окно. В строчке Model написать имя модели (K544UD2), в строчке From Model в раскрывающемся списке выбрать строку “Operational Amplifier”. В поле Technology выбрать тип JFET (полевой транзистор на входе), в поле Input Stage – тип PJF (p-канальный полевой транзистор), в поле Compensation выбрать тип Internal (внутренняя коррекция). Нажать кнопку ОК. Далее вводить порциями параметры ОУ. Автоматически полученное графическое обозначение ОУ необходимо скорректировать. Открыть программу Capture CIS. По команде File / Open / Library открыть библиотеку student.olb. Выделить обозначение ОУ и в контекстном меню выбрать команду Edit Part. Навести курсор на вывод ОУ и дважды щелкнуть ЛКМ. Открывается окно, в котором редактируются номера выводов и их отрисовка (вместо слова Line выбирается слово Short – короткий вывод). Затем выполняется команда Place / Text и наносится номер вывода на вывод. Этот номер будет потом виден при установке элемента. 1.5. Проверка созданных моделей элементов Для проверки работоспособности моделей элементов нарисуем в программе Capture CIS (проект Analog or Mixed) схему мультивибратора на ОУ (рис. 3.) 8 R2 10k R1 Uпор 3 2k V1 U1 7 2 + V+ - V- 0 Q1 KT315 6 4 K544UD2 + 15V dc Вых Ео KT361 15V dc Q2 V2 0 R3 IC= 1V 1k C1 1n 0 Рис. 3 Мультивибратор генерирует прямоугольные импульсы, частота которых определяется сопротивлениями резисторов R1, R2, R3 и емкостью конденсатора С1. Пороговое напряжение в схеме равно U пор Е0 . 1 R2 / R1 Отсюда R2 = R1(E0 – Uпор)/Uпор. Период колебаний равен T = 2R3C1ln(1+2R1/R2). Лабораторное задание 1. Создать библиотеку под именем student и внести в нее резистор, конденсатор, транзисторы КТ3102 (n-p-n) и КТ3107 (p-n-p), ОУ K544UD2. 2. Промоделировать схему мультивибратора, собранную из библиотечных элементов. Установить частоту колебаний 1 – 10 кГц. 9 Лабораторная работа №2 Моделирование аналитических зависимостей При моделировании электронных устройств часто бывает, что отдельные элементы (например, микроэлектронные датчики) имеют нестандартные характеристики. Для таких элементов необходимо построить математическую модель, реализующую заданную аналитическую (или экспериментальную) характеристику. Для приближенного изображения заданной функции выбирают аппроксимирующую функцию. Процесс нахождения и вычисление значений этой функции называется интерполяцией. Наиболее распространенной является параболическая интерполяция, когда в качестве интерполирующей функции берется многочлен вида P(x) = A0 + A1x + A2x2 +…+ Anxn. Для нахождения интерполяционного многочлена используется формула Лагранжа n (x a ) s n P( x) bi i 0 s 0 s i n (a . i as ) (1) s 0 s i Пример. Экспериментально получены параметры (табл. 2), определяющие некоторую эмпирическую функцию Таблица 2 X P(x) a0 = 23,30 a1 = 24,25 a2 = 25,25 a3 = 26,10 b0 = 299 b1 = 328 b2 = 373 b3 = 415 10 Найдем параболу третьей степени, проходящую через четыре данные точки. 1 способ. Аппроксимирующая функция рассчитывается по формуле (1) путем подстановки значений ai, bi: P ( x) b0 b2 ( x a1 )( x a 2 )( x a3 ) ( x a 0 )( x a 2 )( x a3 ) b1 (a 0 a1 )( a 0 a 2 )( a 0 a3 ) (a1 a 0 )( a1 a 2 )( a1 a3 ) ( x a 0 )( x a1 )( x a3 ) ( x a 0 )( x a1 )( x a 2 ) b3 . (a 2 a 0 )( a 2 a1 )( a 2 a3 ) (a3 a 0 )( a3 a1 )( a3 a 2 ) Подставляя из табл.2 значения a и b, рассчитаем функцию: P(x) = – 1,7992x3 + 138,4x2 – 3497,8x + 29444 (2) 2 способ. С целью упрощения вычислений используем табл. 3. Таблица 3 x b q a0 = 23,3 b0 = 299 = B0 a0 = 23,3 b0 = 299 = B0 a0 = 23,3 b0 = 299 = B0 b2 b0 q2 a 2 a0 a0 = 23,3 b0 = 299 = B0 b3 b0 q3 a3 a 0 r s b1 b0 q1 B1 a1 a0 q 2 q1 r2 a 2 a1 B2 q3 q1 r3 a3 a1 r3 r2 s3 a3 a 2 B3 11 Аппроксимирующая функция равна P(x) = B0 + B1(x – a0) + B2(x – a0) (x – a1) + B3(x – a0) (x – a1) (x – a2). Отсюда находим полином: P(x) = – 1,7992x3 + 138,4x2 – 3499x + 29450. Для построения модели полагаем в качестве X входное напряжение V1, а выходное напряжение, численно равное P(x), сформируем, используя полученную формулу. Для реализации модели применяем блоки из библиотеки ABM.olb. Блоки выполняют функции, представленные на рис. 4. const abs 1.000 A BS Ист очник пост оянного на пряжения glimit diff d/dt Вычит ание на пряжений laplace 10 1 1 +s 0 Усилитель жес ткий огра ничит ель mult Перемножитель Пре образование Ла пла са pwr PWR 1.0 Ст епе нная функция (1,0 - показат ель ст епени) gain 1E3 1.0 Абс олютна я ве личина 1k differ limit Дифференцирующе е Усилитель ус тройс тво log log10 10 LOG LOG10 0 Ограничите ль sqrt Нат ура ль ный лога рифм sum Де сят ичный лога рифм exp EXP SQRT Корень квадрат ный Экспоне нта Суммирова ние на пряжений Рис. 4 Реализация функции с помощью блоков показана на рис. 5. 12 X X 2 X 3 V1 P(x) 0V dc -1.7992 R1 1k 0 -34 99 138.4 0 29450 Рис. 5 Напряжение источника постоянного напряжения V1 задается в пределах изменения переменной X. Выходное напряжение P(x) рассчитывается программой согласно формуле (2). Лабораторное задание Задана в графическом виде экспериментальная функция. 1. Аналитически рассчитать аппроксимирующую функцию. 2. Реализовать функцию в виде схемы, состоящей из библиотечных блоков, и промоделировать ее. Определить погрешность аппроксимации. Лабораторная работа №3 Исследование устойчивости линейных электронных схем Основной динамической характеристикой электронной схемы с обратной связью является ее устойчивость. В зависимости от характера переходного процесса различают три случая поведения схемы после возмущающего воздействия. 13 1. Схема не может восстановить равновесного состояния. Значение управляемой переменной все больше отклоняется от заданного. Такая схема называется неустойчивой. 2. Схема возвращается к равновесному состоянию. Такой переходный процесс называется сходящимся, а схема – устойчивой. 3. Схема характеризуется установившимися периодическими колебаниями. Схема находится на границе асимптотической устойчивости. Математическая формулировка условий, которым должны соответствовать коэффициенты характеристического уравнения, описывающего схему, называется критерием устойчивости. Критерии устойчивости делятся на алгебраические и частотные. 3.1. Анализ устойчивости по амплитудно-частотным характеристикам Исследуется схема с разомкнутой обратной связью (рис. 6). Gain 1E3 V1 1 1 1 + s*2u 1 + s*3u 1 Out 1 + s*4u 1V ac 0V dc R1 1k 0 0 Рис. 6 Запускаем процесс моделирования. После его окончания в программе моделирования OrCAD Pspice A/D нажимается кнопка Add Trace . В окне Add Trace удаляются галочки в строках Current (токи) и Alias Names (псевдонимы). Выводим АЧХ в децибелах. Для этого сначала нажимаем ЛКМ на символе DB[ ] в поле Function, а затем – на выходной переменной V[out] в поле Simulation Output Value. В строке Trace Expression появится запись DB[V[out]]. Нажимаем кнопку ОК. На экран выводится АЧХ. 14 Затем по команде Window / New Window открываем новое окно. Нажимаем кнопку Add Trace. Будем формировать фазочастотную характеристику (ФЧХ). В поле Function выбираем символ P (Phase – фаза) и далее выбираем выходную переменную V[out]. Нажимаем кнопку ОК. На экран выводится ФЧХ. Чтобы просмотреть обе характеристики одновременно, выбираем команду Window / The Horizontaly. По характеристике АЧХ (предварительно сделав это окно активным, щелчкнув ЛКМ на окне АЧХ) определяем частоту, на которой усиление равно 1 (0 дБ). Обозначим эту частоту f (1) (частота единичного усиления). Для точного определения частоты используем курсор (кнопка Toggle Cursor . Щелком ЛКМ в области определяемой точки на кривой устанавливаем в эту точку курсор. Его можно перемещать по кривой, нажимая кнопки «влево», «вправо» или посредством повторного щелчка мыши. Из таблички Probe Cursor считываем значение частоты f (1). По характеристике ФЧХ (сделав это окно активным) определяем фазовый сдвиг схемы с цепью обратной связи на частоте f (1). Схема находится на границе устойчивости, если при усилении 0 дБ фазовый сдвиг равен минус 1800. При фазовом сдвиге больше минус 1800 схема неустойчива. С учетом запаса по фазе, равном 600, фазовый сдвиг усилителя не должен превышать минус 1200. Тогда схема будет абсолютно устойчива. 3.2. Анализ устойчивости с помощью критерия Найквиста Критерий основан на анализе амплитудно-фазовой характеристики (АФХ) разомкнутой схемы. Устойчивость определяется на основе критерия Найквиста, который формулируется следующим образом: схема устойчива в замкнутом состоянии, если в разомкнутом состоянии ее амплитудно-фазовая характеристика для частот 0 не охватывет точку d с координатами (-1, j0) (рис. 7). 15 jQp (-1,j0) =0 Pp d Рис. 7 Для анализа используется схема, приведенная на рис. 6. АФХ строится путем замены переменных по осям X и Y на вещественную и мнимую составляющие. Маркеры на схему не устанавливаются. Нажимаем на кнопку Edit Simulation Settings. Выбираем вид анализа AC Sweep. В установках анализа проставляем галочку в поле «Логарифмическая шкала». Выбираем диапазон частот от 100 Гц до 10 МГц и количество точек на декаду, равном 100. Затем схему запускаем на моделирование командой Run PSpice. В программе OrCAD PSpice A/D отложить по оси Y мнимую часть выходного напряжения. Для этого в командную строку поместить значок мнимой части IMG() и затем в скобках разместить выражение V(out). Получится IMG(V(out)). Нажать кнопку ОК. Затем переименовать ось X. Для этого по команде Plot / Axis Setting активизировать переключатель Xaxis, в поле Scale установить шкалу Linear и нажать кнопку Axis Variable. В командной строке ввести действительную часть выходного сигнала по формату R(V(out)). Нажать кнопку ОК. Устойчивость схемы определить по критерию Найквиста. 16 3.3. Анализ устойчивости методом фазовой плоскости Собрать схему с обратной связью (рис. 8). out d/dt Gain 1k V1 = 0 V 2 = 0.00001 TD = 0 TR = 0 TF = 0 PW = 10u PER = V1 dif 1.0 1 1 + s*2u 1 1 + s*4u R1 1k 0 0 Рис. 8 При анализе устойчивости методом фазовой плоскости необходимо построить зависимость производной выходного сигнала (dif) от самого выходного сигнала (out): Vdif = (Vout). Для моделирования используется директива анализа переходных характеристик .tran. Время анализа выбирается равным 100 мкс. Сделав установки в окне Edit Simulation Settings, запускаем схему на моделирование. В программе PSpice A/D сначала строим зависимость Vout(t), а затем переименовываем ось t в значение V(dif) так, как мы это делали для критерия Найквиста. По виду полученной кривой можно судить об устойчивости схемы: если кривая расходящаяся, то схема неустойчива, если сходящаяся, то устойчивая. 17 Лабораторная работа №4 Математическая модель параллельного АЦП Параллельные аналого–цифровые преобразователи (АЦП) обладают максимальным быстродействием. Схема двухразрядного АЦП приведена на рис. 9. Vоп=+10 В Vx R1 a 1k A1 R2 b 1k + - Компаратор R3 c 1k + - Компаратор R4 d 1k + - U1A Компаратор Кодопреобразователь + - 1 2 74A CT04 V B1 U2A 1 2 74A CT04 V U3A C1 1 2 74A CT04 V Компаратор R5 1k 0 Рис. 9 АЦП работает следующим образом. На все неинвертирующие входы компараторов подается аналоговый сигнал Vx. На инвертирующие входы компараторов подаются опорные напряжения, образованные резистивным делителем R1-R5. Полученный на выходах компараторов код abcd преобразуется в двоичный код с помощью кодопреобразователя (дешифратора). Соответствие между входными и выходными кодами приведено в табл. 4. 18 Номер строки a b c d A1 1 2 3 4 5 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0 0 0 0 1 Таблица 4 B1 C1 0 0 1 1 0 0 1 0 1 0 Функции A1, B1, C1 можно определить с помощью минтермов. Например, для С1 можно записать: C1 = abcd + abcd. Согласно полученному выражению синтезируется электрическая схема из элементов И-НЕ, ИЛИ-НЕ, НЕ и др. Логические элементы выбираем из библиотеки 74ACT.olb. Аналогично поступаем для разрядов А1, В1. Для построения компаратора используем блоки из библиотеки ABM.olb (рис. 10). Vоп GLIMIT 5 Vx 10k 0 Рис. 10 Компаратор и кодопреобразователь удобно представить в виде блоков, внутренним содержанием которых являются разработанные схемы. Иерархический блок создается по команде Place / Hierarchical Block (значок команды 11. ). Открывается окно, показанное на рис. 19 Рис. 11 В поле Reference вводится позиционное обозначение блока, в поле Implementation type указывается тип иерархического блока. Если на нижнем уровне иерархии будет создаваться электрическая схема, то выбирается тип блока Schematic View. В поле Implementation Name записывается имя блока. Поле Path and Filename не заполняется. В поле Primitive (тип блока) выбирается значение No, т. е. блок, имеющий иерархическую структуру. Нажимается кнопка ОК. Затем рисуется контур блока. Для этого нажимается ЛКМ и перемещением курсора наносится прямоугольный контур символа иерархического блока. При выделенном блоке по команде Place / Hierarchical Pin (значок команды ) вводятся имена выводов блока. В диалоговом окне команды (рис. 12 ) указываются: Рис. 12 20 имя вывода – на панели Name; тип вывода (вход, выход и т.д.) – на панели Type; тип цепи (scalar – одиночная цепь, bus – шина) – на панели Width. Затем вывод располагается в необходимом месте внутри контура блока и его расположение фиксируется при щелчке ЛКМ. В контекстном меню выбирается строчка Edit Properties и нажимается ЛКМ. В открывшемся окне указываются параметры второго вывода, нажимается кнопка ОК и т.д. Завершается установка выводов по команде End Mode из контекстного меню. После создания рисунка блока переходят на нижний уровень иерархии (команда Descend Hierarchy из контекстного меню, которая активна при выделенном блоке). Появляется окно, приведенное на рис. 13. Рис. 13 В поле Name записывается имя блока, под которым он будет занесен в менеджер проектов. В соответствии с предложением в верхней строчке окна блоку дается имя, присвоенное при его создании. Нажимается кнопка ОК. На нижнем уровне иерархии располагаются порты, соответствующие выводам созданного блока. Далее рисуется схема блока (или копируется через буфер обмена из другого проекта). Порты перемещаются к соответствующим точкам схемы и соединяются с ними проводниками. В схеме блока нельзя использовать графические обозначения «корпус» и глобальное имя корпуса GND. Переход на верхний уровень иерархии выполняется по команде Ascend hierarchy из контекстного меню. Лабораторное задание 1. Разработать схему параллельного АЦП. 21 2. Промоделировать АЦП. При моделировании выбрать режим .tran и подавать на вход Vоп прямоугольные импульсы с передним фронтом длительностью 10 мкс и амплитудой от 0 до 10 В. Лабораторная работа №5 Описание цифровых комбинационных схем на языке VERILOG и их моделирование Язык Verilog разработан в 1984 г. фирмой Gateway Design Automation и был ориентирован на внутреннее использование. В 1989 г. фирма Cadence приобрела Gateway и открыла Verilog для общего пользования. В 1995 г. был определен стандарт языка: IEEE1364-1995. Язык используется как для моделирования цифровых устройств, так и для описания синтезируемых проектов. Ведущие пакеты синтеза на ПЛИС (Synopsis, Cadence, Mentor Graphics и др.) поддерживают синтез с описаниями на языке Verilog. Структура Verilog напоминает язык C и является контекстнозависимым, т.е. строчные и прописные буквы различаются. Все ключевые слова задаются в нижнем регистре (строчные буквы). Мы рассмотрим применение языка Verilog на примере его использования при описании мультиплексора. Обозначение мультиплексора приведено на рис. 14. in1 in2 in3 in4 MUX Out a1 a2 Рис. 14 Под воздействием адресного кода, подаваемого на входы а1 и а2, выбирается один из входных сигналов in1 – in4, который и переда- 22 ется на выход Out. Возможны различные варианты описания мультиплексора. 5.1. Реализация на уровне логических вентилей Предполагается, что используются стандартные вентили not, and, or, которые описываются по формату: not (nota1, a1). Здесь not – стандартный вентиль «НЕ», nota1 – произвольное имя выхода вентиля, а1 – имя входа. Мультиплексор на языке Verilog запишется следующим образом: module mult1 (out,in1,in2,in3,in4,a1,a2); output out; //выход input in1,in2,in3,in4,a1,a2; //входы wire nota1,nota2,w,x,y,z; //внутренние цепи not (nota1,a1); //инверторы not (nota2,a2); and (w,in1,nota1,nota2); // w=in1*a1*a2 and (x,in2,nota1,a2); // x=in2*a1*a2 and (y,in3,a1,nota2); // y=in3*a1*a2 and (z,in4,a1,a2); // z=in4*a1*a2 or (out,w,x,y,z); // out=w+x+y+z endmodule 5.2. Реализация мультиплексора с помощью логических операторов Поразрядные логические операторы обозначаются символами: ~ – отрицание; & – логическое «И»; | – логическое «ИЛИ»; ^ – исключающее «ИЛИ»; ^~ – исключающее «ИЛИ – НЕ». Учитывая, что алгебраическое выражение для выходной переменной мультиплексора имеет вид 23 out=in1*a1*a2+in2*a1*a2+in3*a1*a2+in4*a1*a2 запись на языке Verilog получим в следующем виде: module mult2 (out,in1,in2,in3,in4,a1,a2); output out; input in1,in2,in3,in4,a1,a2; assign out=(in1 & ~a1 & ~a2) | (in2 & ~a1 & a2) | (in3 & a1 & ~a2) | (in4 & a1 & a2); endmodule Ключевое слово assign непрерывно осуществляет назначение цепи Out. Значение Out заново вычисляется, когда меняется хотя бы один из операндов. 5.3. Реализация с помощью оператора выбора case Этот способ наиболее нагляден и наименее трудоемок. module mult3 (out,in1,in2,in3,in4,a1,a2); output out; input in1,in2,in3,in4,a1,a2; reg out; //выход определен как регистр always @ (in1 or in2 or in3 or in4 or a1 or a2) case ({a1,a2}) //условием является объединение 2'b00: out=in1; //(конкатенация) переменных а1,а2 2'b01: out=in2; //в двухразрядное число 2'b10: out=in3; 2'b11: out=in4; endcase endmodule Числа, записанные в двоичном коде, обозначаются буквой b. Первая цифра (2) говорит о количестве разрядов двоичного числа. Ключевое слово always означает, что действие выполняется непрерывно, пока процесс моделирования не будет остановлен соответствующей директивой. Список переменных, заключенных в круглые скобки и находящихся после слова always, называется списком чувствительностей. 24 При изменении хотя бы одного из операндов всегда вычисляется новое значение функции. 5.4. Реализация с помощью условного оператора В этой конструкции используется тернарный оператор, который разделяет три операнда двумя операторами. Например: r=s?t:u. Здесь s, t, u – операнды; ?: – тернарный оператор. Приведенное выражение читается так: R= if S is true then T else U (если s – истина, тогда t, иначе u). С помощью условного оператора мультиплексор описывается следующим образом: module mult4 (out,in1,in2,in3,in4,a1,a2); output out; input in1,in2,in3,in4,a1,a2; assign out=a1 ? (a2 ? in4 : in3) : (a2 ? in2 : in1); endmodule 5.5. Моделирование схемы мультиплексора Моделировать описания будем в программе MAX+PlusII. Рекомендуется следующий порядок работы. Создать четыре папки для размещения файлов проекта: lab5a, lab5b, lab5c, lab5d. Ввести имя проекта. Для этого выбрать в меню команду File / Project / Name. В поле Directories указать папку для размещения файлов проекта. В поле Project Name ввести имя проекта, предварительно удалив все расширения. Имя проекта должно совпадать с именем модуля верхнего уровня! По команде MAX+PlusII / Text Editor открыть окно текстового редактора. Написать текстовый файл на языке Verilog. По команде File / Project / Save & Check проверить программу на наличие синтаксических ошибок. При сохранении текста программа предложит расширение по умолчанию *.tdf. Это расширение необходимо удалить и написать расширение *.v, означающее, что текстовый файл написан на языке Verilog. 25 По команде MAX+PlusII /Waveform Editor создать входные сигналы. В окне дважды щелкнуть ЛКМ на строке, расположенной под заголовком Name. В строке Node Name написать имя входного/выходного сигнала, в поле I/O Type указать тип сигнала (Input или Output). Нажать кнопку ОК. Для исследуемого мультиплексора установить параметры сигналов: щелкнув ЛКМ на имени сигнала In1, нажать кнопку , набрать 1 в окне Increment By, и 1 в строке Multiplied By. Нажать кнопку ОК. Для In2 набрать 1 и 5 соответственно. Для In3 оставить уровень логического «0», для In4 установить уровень логической «1», нажав на кнопку . Для a2 выбрать значения 1 и 10, для a1 – 1 и 20. Выбрать команду File / Project / Save, Compile & Simulate. В открывшемся окне нажать кнопку Open SCF. Лабораторное задание 1. Описать четыре варианта мультиплексора на языке Verilog. 2. Промоделировать каждое описание мультиплексора в программе MAX+PlusII. 3. Просмотреть выходной сигнал и сделать заключение о работоспособности мультиплексора. Лабораторная работа №6 Описание иерархических проектов на языке VERILOG Для реализации иерархического проекта возможны два подхода: сверху вниз (Topdown) и снизу вверх (Bottom up). Рассмотрим применение метода Bottom up на примере схемы Етриггера, приведенной на рис. 15. 26 eff d mux nor in1 MUX =1 in2 en out muxout dff T norout d a1 q q c DD1 DD2 r DD3 c Рис. 15 Схема состоит из микросхем мультиплексора (mux), библиотечного компонента «исключающее ИЛИ» (nor) и d-триггера (dff). Эти три микросхемы являются модулями нижнего уровня. Модулем верхнего уровня является совокупность всех микросхем. Он обозначен eff. Сначала описываются модули нижнего уровня, а затем модуль верхнего уровня, в котором ставятся в соответствие имена выводов модулей нижнего уровня именам выводов модуля верхнего уровня. Внутренним цепям, соединяющим микросхемы, присваиваются произвольные имена. Ниже приведено описание на языке Verilog иерархического проекта, показанного на рис. 15. //Описание D-триггера module dff (q,d,c); output q; input d,c; reg q; always @ (posedge c) q=d; endmodule //описание мультиплексора с инверсией module mux (out,in1,in2,a1); output out; input in1,in2,a1; 27 assign out=a1?~in1:~in2; endmodule //описание модуля верхнего уровня module eff (q,d,en,r,c,); output q; input d,en,r,c,; wire norout, muxout; mux mux0 (muxout, d, q, en ); (out) (in1) (in2) (a1) nor (norout, r, muxout); dff dff0 (q, norout, c); (q) (d) (c) endmodule Моделирование схемы производится в программе MAX+PlusII так, как описано в лабораторной работе №5. Лабораторное задание 1. Составить описание заданной преподавателем схемы на языке Verilog. 2. Промоделировать схему в программе MAX+PlusII. Лабораторная работа №7 Описание цифровых комбинационных схем на языке VHDL и их моделирование Комбинационные схемы могут быть описаны на языке VHDL с использованием последовательных операторов: if – then – else (если – тогда – иначе), case – when (для случая, когда), с помощью параллельных операторов: when – else (когда – иначе), with – select – when (выбрать, когда), вставкой компонента логической схемы или булевским уравнением. Рассмотрим описания четырехвходового мультиплексора (рис. 16). 28 Таблица 5 a b c d Таблица истинности MUX X S1 S0 Рис. 16 S0 S1 X 0 0 1 a 0 1 1 7.1. Использование булевского выражения Логические операции описываются ключевыми словами and («И»), not («НЕ»), or («ИЛИ»). Мультиплексор на VHDL описан ниже. Library ieee; use ieee.std_logic_1164.all; entity mux1 is port (a,b,c,d,S1,S0: in std_logic; X: out std_logic); end mux1 architecture beh of mux1 is begin X<=(a and not S0 and not S1) or (b and not s0 and S1) or (c and S0 and not S1) or (d and S0 and S1); End beh; 7.2. Использование оператора «if – then – else» Library ieee; use ieee.std_logic_1164.all; entity mux2 is port (a, b, c, d: in std_logic; s: in std_logic_vector (1 downto 0); 0 b c 1 d 29 x: out std_logic); end mux2; architecture beh of mux is begin process (a, b, c, d, s) begin if s="00" then x<=a; elsif s="01" then x<=b; elsif s="10" then x<=c; else s="11" then x<=d; end if; end process; end beh; 7.3 Использование оператора «case – when» Library ieee; use ieee.std_logic_1164.all; entity mux3 is port (a, b, c, d: in std_logic; s: in std_logic_vector (1 downto 0); x: out std_logic); end mux3; architecture beh of mux3 is begin process (a, b, c, d, s) begin case s is when "00" => x<=a; when "01" => x<=b; when "10" => x<=c; when others => x<=d; end case; end process; end beh; 30 7.4. Использование оператора «when – else» С помощью оператора параллельного присваивания мультиплексор описывается так: Library ieee; use ieee.std_logic_1164.all; entity mux4 is port (a, b, c, d: in std_logic; s: in std_logic_vector (1 downto 0); x: out std_logic); end mux4; architecture beh of mux4 is begin x <=a when s="00" else b when s="01" else c when s="10" else d; end beh; 7.5. Использование оператора «with – select – when» При селективном параллельном присваивании сигнала условия выборки сигнала в описаниях when должны быть взаимно исключающими: Library ieee; use ieee.std_logic_1164.all; entity mux5 is port (a, b, c, d: in std_logic; s: in std_logic_vector (1 downto 0); x: out std_logic); end mux5; architecture beh of mux5 is begin with s select x <= a when "00", b when "01", c when "10", d when others; end beh; 31 При отображении в схему эти описания неравнозначны. Синтезаторы пытаются минимизировать логические схемы, но структура результирующей схемы во многом соответствует структуре исходного оператора. Так, операторы if – then – else и when – else порождают многоступенчатые приоритетные схемы, в которых первыми отрабатываются первые строки этих операторов. Операторы with – select – when и case – when порождают более быстрые схемы параллельного действия. 7.6. Моделирование VHDL-описания Моделирование производится в САПР OrCAD 9.1. Открывается программа Capture CIS и создается проект Programmable Logic. Выбирается тип Altera и семейство MAX 7. По команде Design / New VHDL File создается заголовок для VHDL-файла. В открывшееся окно вносится текст VHDL-файла. Написанный файл проверяется на наличие синтаксических ошибок по команде Check Syntax из контекстного меню. Затем активизируется менеджер проектов (щелчком ЛКМ) и по команде Tools / Simulate VHDL-файл запускается на моделирование. В окне выбирается функциональное моделирование In Design. После нажатия на кнопку ОК загружается программа моделирования цифровых схем OrCAD Simulate. Моделирование начинается с задания входных сигналов по команде Stimulus / New Interactive. В диалоговом окне (рис. 17) можно выбрать один из трех типов сигналов: Basic – сигнал, задаваемый набором моментов времени изменения логических состояний; Advanced – расширение сигнала типа Basic с возможностью задания циклов повторения, Clock – периодический сигнал. 32 Рис. 17 Для исследуемого мультиплексора достаточно использовать сигналы типа Clock. Установив тип сигнала, нажимаем на кнопку Browse и выбираем один из входов, для которого затем задаются длительности логической 1 и логического 0. После создания входных сигналов выполняется моделирование по команде Simulate / Run. Результаты моделирования отображаются в графическом виде в окне [Wave]. Лабораторное задание 1. Описать на VHDL заданную преподавателем комбинационную схему в различных вариантах. 2. Промоделировать VHDL-описание в САПР OrCAD 9.1. 33 Библиографический список 1. Коноплев Б.Г., Лукьяненко Е.Б., Фомичев А.В. Сборник лабораторных работ, выполняемых с использованием программы Electronics Workbench 5.00 –Таганрог: Изд-во ТРТУ, 2003 – 37с. №3304. 2. Лукьяненко Е.Б., Ивченко В.Г., Лещенко А.В. Руководство к лабораторной работе «Проектирование цифровых и аналогоцифровых узлов в САПР OrCAD 9.1». – Таганрог: Изд-во ТРТУ, 2002. – 32с. №3180. 3. Лукьяненко Е.Б. Руководство к практическим занятиям «Проектирование ПЛИС с использованием САПР OrCAD 9.1». – Таганрог: Изд-во ТРТУ, 2003. – 35с. №3277-а. 4. Стешенко В.Б. EDA. Практика автоматизированного проектирования радиоэлектронных устройств. – М.: «Нолидж», 2002. 34 Лукьяненко Евгений Борисович Сборник лабораторных работ по курсу Математическое моделирование микроэлектронных устройств ЭВС Ответственный за выпуск Лукьяненко Е.Б. Редактор Корректор ЛР 020565 от 23.06.1997 г. Печать офсетная. Формат 60 x 841/16. Усл. п. л. – Заказ № Подписано к печати Бумага офсетная. Уч.- изд. л. – Тир. 100 экз. “С” ___________________________________________________________ Издательство Таганрогского государственного радиотехнического университета ГСП 17А, Таганрог, 28, Некрасовский, 44 Типография Таганрогского государственного радиотехнического университета ГСП 17А, Таганрог, 28, Энгельса, 1