Знакомство с пакетом OrCad 9.1. Урок 8. Моделирование схем
Может показаться странным, но в пакете OrCAD 9.1 имеется два моделятора. «Родной» моделятор — программа OrCAD Simulate — работает с VHDL-моделями и пригодна только для цифровых схем, а программа PSpice A/D, заимствованная из пакета DesignLab 8 фирмы MicroSim, использует соответственно SPICE-модели и библиотеки этой же компании. Она применяется как для цифровых, так и для аналоговых и смешанных (аналого-цифровых) схем. Оба моделятора вызываются из графического редактора OrCAD Capture, который, напомним, является еще и управляющей оболочкой (рис. 1).
Все статьи цикла:
- Знакомство с пакетом OrCad 9.1. Урок 1. Структура и возможности OrCAD 9.1, (Компоненты и технологии №1’2002)
- Знакомство с пакетом OrCad 9.1. Урок 2. Проектирование схем, (Компоненты и технологии №2’2002)
- Знакомство с пакетом OrCad 9.1. Урок 3. Проектирование иерархических блоков, (Компоненты и технологии №3’2002)
- Знакомство с пакетом OrCad 9.1. Урок 4. Редактор свойств Property Editor, (Компоненты и технологии №4’2002)
- Знакомство с пакетом OrCad 9.1. Урок 5. Как создать свою личную библиотеку, (Компоненты и технологии №5’2002)
- Знакомство с пакетом OrCad 9.1. Урок 6. Как создавать символы компонентов, (Компоненты и технологии №6’2002)
- Знакомство с пакетом OrCad 9.1. Урок 7. Как задавать внешние воздействия, (Компоненты и технологии №7’2002)
- Знакомство с пакетом OrCad 9.1. Урок 8. Моделирование схем, (Компоненты и технологии №8’2002)
- Знакомство с пакетом OrCad 9.1. Урок 9. Как проектировать схемы c шинными структурами, (Компоненты и технологии №9’2002)
Таким образом, в САПР OrCAD используется не один универсальный, а два специализированных моделятора. Естественно, возникает вопрос, когда и какой применять? Чтобы ответить на него, рассмотрим возможные типы проектов в этом пакете. На рис. 2 показана уже известная нам диалоговая панель New Project. Напомню, что она вызывается командой File/New/Project (урок 1). Мы можем выбрать любой из четырех типов.
Первый тип проектов называется Analog or A/D Mixed Mode. В нем используются интегрированные в OrCAD библиотеки PSpice (графические описания *.olb и функциональные модели *.lib из САПР DesignLab_8 фирмы MicroSim). Они находятся в папке OrCAD_9/Capture/Library/Pspice. Понятно, что, хотя схема проекта создается в редакторе OrCAD Capture, моделировать ее надо в PSpice A/D. Запускается моделятор из менеджера проекта командой PSpice/Run (рис. 1). Позднее мы в деталях рассмотрим, как это делается.
Второй тип проектов называется PC Board Wizard. Кажется, что он нам совсем не подходит, ведь речь (судя по названию) идет о проектировании печатных плат. Однако — это «ловушка». Именно данный тип проекта надо выбрать, если мы собираемся вести разработку на микросхемах малой и средней степени интеграции и впоследствии моделировать его. Что же касается названия, то оно подчеркивает лишь возможность выполнить после моделирования (или вместо него) еще и разводку печатной платы. Важно отметить, что в этом режиме у нас есть альтернатива: проекты PCB PSpice или PCB Simulate.
- Проекты PCB PSpice создаются, если на диалоговой панели PCB Project Wizard (рис. 3) вы установите флажок Enable project simulation и выберете верхнюю строчку: Add analog or mixed signal simulationresources. Этот проект будет моделироваться программой OrCAD PSpice A/D.
- Проекты PCB Simulate создаются в том случае, если вы при установленном флажке выбрали нижнюю строчку: Add VHDL-based digital simulation resources (рис. 3). Такой проект обрабатывается «родным» моделятором OrCAD Simulate.
Третий тип проекта — Programmable Logic — позволяет синтезировать и моделировать несложные устройства программируемой логики. Это делается с помощью программ OrCAD Capture и OrCAD Simulate. Более сложные проекты выполняются с привлечением специализированных программных средств фирм, производящих ПЛИС, таких, как Altera, Xilinx и т. п. Например, фирма Altera предлагает для названных целей систему проектирования Max+Plus ІІ [1].
Четвертый тип проекта используется только для создания и документирования принципиальных схем. Моделирование и разработка печатных плат в нем невозможны.
Таким образом, для цифрового моделирования выбор фактически сужается до проектов типа PCB. Рассмотрим технологию проектирования и моделирования схем в этих режимах.
PCB PSpice-проекты
- Создаем новый проект, набрав команду File/New/Project….
1.1. Вводим его имя, например, test_dc (дешифратор 2>4).
1.2. Указываем его место на диске, например, E:OrCAD_9dc. Если названной папки не существует, она будет создана автоматически.
1.3. Задаем тип проекта, в нашем случае надо выбрать опцию: PC Board Wizard — моделирование и трассировка печатных плат для стандартной логики нижнего и среднего уровней интеграции.
- На панели PCB Project Wizard устанавливаем флажок Enable Project Simulation и выбираем верхнюю кнопку: Add analog or mixed-signal simulation resources. Другими словами, будем выполнять моделирование с помощью SPICE-моделей и моделятора PSpice A/D.
- Добавляем к списку используемых в проекте библиотек (по умолчанию их четыре) еще одну — 7400.olb. В ней находятся цифровые элементы, и, в частности, нужные нам компоненты 7404 и 7408 с логическими функциями НЕ и 2И соответственно.
- Делаем активным окно SCHEMATIC1:PAGE1 (оба имени устанавливаются по умолчанию и могут быть заменены пользователем). В этом окне рисуем схему, которая в нашем примере содержит шесть элементов — два инвертора 7404 и четыре вентиля 7408 (рис. 4).
4.1. Размещаем элементы (команда Place/Part…).
4.2. Соединяем их проводниками (команда Place/Wire).
4.3. Задаем проводникам пользовательские имена — алиасы (команда Place/Net Alias…). Помните, контур с именем надо «прислонить» к тому проводнику, который вы именуете, чтобы он касался цепи.
4.4. Устанавливаем маркеры в точках, которые хотим наблюдать на экране при выводе результатов (команда PSpice/Markers/Voltage Level).
4.5. Вводим генераторы внешних воздействий для входных сигналов A0 и A1. Если рассматривать их как элементы двухразрядной шины A[1..0], то нам понадобится только один двухразрядный стимул DigStim2 (команда Place/Part, библиотека SOURCSTM). Задаем ему имя, например, Implementation = A_bus1. Точнее, это даже не имя стимула, а имя той временной диаграммы, которую он будет генерировать. Командой Place/Bus рисуем шину и присваиваем ей имя A[1..0]. Подключаем к ней выход генератора стимуловDigStim2 и проводники A0 и A1 (рис. 4).
Важно помнить, что шина должна называться так же, как и имена входящих в нее цепей. Что касается атрибута Implementation, то его значение может быть произвольным, но его нельзя задать в формате шинного имени (квадратные скобки вообще игнорируются).
В редакторе внешних воздействий Stimulus Editor вы можете определить несколько вариантов описания сигнала, подаваемого на шину A[1..0], например, A_bus1 и A_bus2, и моделировать одну и ту же схему на разных наборах входных сигналов. Для этого достаточно сменить лишь значение атрибута Implementation с A_bus1 на A_bus2.
4.6. Задаем временные диаграммы для шинного сигнала A_bus1. С этой целью выделяем генератор DSTM1 и командой Edit/PSpice Stimulus вызываем графический редактор входных сигналов Stimulus Editor (рис. 5). Согласитесь, встреча со старым и хорошим «знакомым» всегда приятна. Лично мне этот редактор стимулов нравится не только тем, что в нем эпюры сигналов можно просто рисовать мышкой, но и тем, что редактируемый сигнал виден на фоне других сигналов, с которыми он должен работать во взаимодействии.
Для тех, кто не разделяет моих чувств к данному приложению или просто не знаком с ним, назову основные его команды: Edit/Add
(добавить переключение), Edit/Attributes…
(редактировать переключение) и Plot/Axis Setting
(установить параметры). Более подробное описание этого редактора можно найти в руководстве [2].
- Создаем профайл моделирования, например, test_dc.sim, в который заносим параметры моделирования своего проекта (команда PSpice/New Simulation Profile). Пока вы не создали этот файл, система не допустит вас к командам запуска на моделирование. Вероятно, неспроста последовательность команд в меню PSpice и иконок на панели инструментов выстроена в нужном порядке.
На вкладке Analysis (активной по умолчанию) устанавливаем желаемый вид анализа — Time Domain (Transient) и финальное время моделирования, например, Run to time = 1000 ns, а на вкладке Option (рис. 6) — способ моделирования Gate-level Simulation и режим задержек, например, Typical.
Вы можете создать не один, а несколько профайлов моделирования, например, test_dc_typ.sim и test_dc_max.sim, и моделировать свою схему при номинальных или максимальных задержках. Для выбора конкретного варианта надо сделать соответствующий профайл активным. Выделим его (рис. 7), затем щелчком правой кнопкой мыши вызовем всплывающее меню и исполним команду Make Active. Активный профайл будет помечен символом «!».
- Командой PSpice/Run запускаем свой проект на моделирование. Через некоторое время на экране монитора появляется рабочая панель моделятора OrCAD PSpice A/D с результатами моделирования (рис. 8).
Если вы работали с пакетом DesignLab 8, то вас ждет еще одна встреча со старым «знакомым» — постпроцессором моделирования Probe. Впрочем, не совсем так. В пакете OrCAD 9 моделятор PSpice A/D и постпроцессор Probe (продукты фирмы MicroSim) объединены в одну программу, которая сохранила старое название PSpice A/D. Пользователям, незнакомым с этими приложениями, советую обратиться к литературе [2].
PCB Simulate-проекты
- Создаем новый проект, набрав команду File/New/Project…
1.1. Вводим его имя, например, test_mux4 (мультиплексор 4>1).
1.2. Указываем его место на диске, например, E:OrCAD_9mux4. Если названной папки не существует, она будет создана автоматически.
1.3. Задаем тип проекта (в нашем случае надо выбрать опцию PC Board Wizard — моделирование и трассировка печатных плат для стандартной логики нижнего и среднего уровней интеграции).
- На панели PCB Project Wizard устанавливаем флажок Enable Project Simulation и выбираем нижнюю кнопку: Add VHDL-based digital simulation resources. Другими словами, будем выполнять моделирование с помощью VHDL-моделей и моделятора OrCAD Simulate.
- Добавляем к проекту две библиотеки: ttl.olb и ttl.vhd. В первой находятся графические изображения цифровых элементов, и, в частности, нужные нам компоненты 7404 (инвертор), 7432 (2ИЛИ) и 7411 (3И). Во второй — их математические VHDL-модели.
- Делаем активным окно SCHEMATIC1:PAGE1 (оба имени устанавливаются умолчанием и могут быть заменены пользователем). В этом окне рисуем схему, которая в нашем примере содержит девять элементов: два инвертора 7404, четыре вентиля 7411 и три вентиля 7432 (рис. 9).
4.1. Размещаем элементы (команда Place/Part…).
4.2. Соединяем их проводниками (команда Place/Wire).
4.3. Задаем проводникам пользовательские имена — алиасы (команда Place/Net Alias…). Помните, контур с именем надо «прислонить» к тому проводнику, который вы именуете, чтобы он касался цепи.
- Делаем активным окно менеджера проекта и запускаем команду Tools/Annotate… С помощью этой команды автоматически проставляются позиционные обозначения компонентов и выполняется их упаковка по корпусам. Надо заметить, что при размещении компонентов проставляются их позиционные обозначения: U1A, U2A и т. д.Однако имена секций A, B, C и т. д. редактор не отслеживает, помещая каждый новый компонент в новый корпус и присваивая ему секцию A. Да и то такая работа будет выполняться только в том случае, если по команде Options/Preferences на вкладке Miscellaneous установлен флажок Automatically reference placed parts (в окне Auto Reference).
Поэтому, закончив чертеж, приходится выполнять автоматическую упаковку элементов по корпусам. Выполняя эту работу, не забудьте установить на диалоговой панели Annotate в окне Action (действия) флажок Unconditional reference update — обновление позиционных обозначений и упаковочной информации всех элементов схемы.
- Активизируем команду Tools/Simulate… При этом автоматически создается список цепей (Netlist) моделируемой схемы в формате языка VHDL и предлагается на выбор один из двух возможных способов моделирования. Выбираем режим In Design — моделирование обычных цифровых устройств.
- Проекты типа PCB Simulate обрабатываются другой программой моделирования, а именно OrCAD Simulate. Она автоматически запускается из оболочки графического редактора OrCAD Capture (рис. 1), и появляется запрос о загрузке схемы в текущий момент. Выбираем кнопку «Да». Если в проекте есть ошибки, они появятся в окне Session Log. Устранив их, повторно загрузим проект командой Simulate/Reload Project.
- Зададим временные диаграммы на входах мультиплексора. С этой целью активизируем команду Stimulus/New Interactive… и выберем закладку Clock. Нажав кнопку Browse…, укажем имя первого входного сигнала D0 и зададим его временную диаграмму. Те же операции проделаем для остальных информационных входов D1, D2,D3 и селекторных входов A0 и A1. Способы задания внешних воздействий подробно рассмотрены на предыдущем уроке.
- Командой Simulate/Run запустим свой проект на моделирование, скорректировав финальное время моделирования Run Time = 6400 ns. Через некоторое время появится рабочая панель моделятора OrCAD Simulate с результатами моделирования (рис. 10).
Конечно, положительный результат радует, но мы так торопились получить его, что пренебрегли некоторыми весьма важными операциями. Они необязательны для исполнения, однако для сложных проектов не будут лишними.
Вернемся в графический редактор OrCAD Capture и, активизировав окно менеджера проектов, исполним команду Tools/Design rules Check… Если команда недоступна, значит, в окне менеджера проекта не выделена схема, для которой мы хотим выполнить поиск электрических ошибок. Исправим оплошность и повторим попытку.
Теперь команда доступна для исполнения. Щелкнув на ней мышкой, увидим диалоговую панель с соответствующим названием (рис. 11). Мы желаем контролировать не только ошибки, но и предупреждения(warnings), поэтому установим флажок Create DRC markers for warnings. Кроме того, чтобы увидеть на экране результаты проверки, установим флажок View Output. В этом случае они запишутся в файл *.drc (в рассматриваемом примере — в файл mux4.drc), и его содержимое появится на экране.
Ошибок в нем не зарегистрировано. Оно и понятно, ведь результаты моделирования налицо. Но посмотрите, сколько предупреждений. Значит, мы что-то не доработали. В основном замечания сводятся к двум видам:
- Net has no driving source A1 — цепь не имеет источников запуска;
- Net has fewer than two connections Q — цепь имеет менее двух соединений.
Если вы посмотрите на принципиальную схему, то увидите на ней DRC-маркеры (небольшие колечки зеленого цвета). Двойной щелчок на маркере открывает панель, поясняющую характер ошибки или предупреждения. Разобравшись с характером предупреждений, попробуем устранить их. Оказывается все дело в том, что мы на входных и выходной цепях не «повесили» иерархические порты.
Активизируем команду Place/Hierarchical Port… или щелкнем на иконке
. Разместим на схеме входные (PORTRIGHT-L) и выходной (PORTLEFT-L) порты, назвав их теми же именами, что и цепи, к которым они подключены. Повторив проверку схемы, мы с удовлетворением обнаружим, что теперь нет не только ошибок, но и предупреждений (рис. 12).
Напомню, что иерархические порты нужны еще и для того, чтобы автоматически генерировать оболочку-шаблон test bench, в которую позднее можно вписать тестовые VHDL-наборы входных сигналов. Технология создания таких VHDL-тестов была рассмотрена на предыдущем уроке.
Литература
- Стешенко В. Б. ПЛИС фирмы ALTERA: проектирование устройств обработки сигналов. М. ДОДЭКА. 2000.
- Шалагинов А. В. Цифровое моделирование в САПР DesignLab 8. Уроки для beginner’a: Учеб. пособие. Новосибирск Изд-во НГТУ. 2000.