СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №8/2014

ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 66 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 8 2014 Cross (выражение, 0) Cross (выражение, +1) Cross (выражение, –1) Событие Событие Событие Событие Проектирование аналоговых и аналого-цифровых интегральных схем с использованием языка Verilog-AMS Часть 2. Аналоговые события Во второй статье цикла рассматривается обработка аналоговых событий в Verilog-A модулях. Рассмотрены примеры использования аналоговых событий для описания компараторов и самотактируемых схем. Дмитрий Осипов (Москва) А НАЛОГОВЫЕ СОБЫТИЯ Событие – это частичное изменение состояния схемы. Например, событие может быть связано с перепадом вход- ного или внутреннего сигнала. Язык Verilog-A позволяет описывать моду- ли, детектирующие или регистрирую- щие какие-либо события (например, перепад напряжения) и реагирующие на них. Таким образом, языковая кон- струкция Verilog-A может быть разби- та на две части: первая – это описание события, а вторая – описание реакции схемы на это событие. Общий вид опи- сания аналогового события и его обра- ботчика таков: @ ( описание_события) обработка_ события; Описание аналогового события отли- чается от описания события в языке Verilog тем, что аналоговые события не являются блокирующими. Это означа- ет, что модуль будет выполняться даже в том случае, если событие не проис- ходит. Просто та часть, где описана реакция на событие, будет пропускать- ся. В случае если событие произошло, то тогда его обработка и будет выпол- нена исключительно в момент насту- пления события. Поэтому описание реакции схемы на событие не должно содержать оператор «<+», то есть изме- нение значения сигнала невозможно внутри обработчика события, что есте- ственно, так как в аналоговом модели- ровании сигналы должны быть описа- ны в каждой точке моделирования. Можно описывать реакцию схемы не только на одно событие, но и на группу событий, используя оператор or (или): @ ( описание_события1 or описание_события2 ) обработка_ события; Язык Verilog-A содержит несколько «детекторов» событий, различающих- ся по классу обрабатываемых событий. К основным типам событий относятся, прежде всего, регистрируемые детек- торами пересечения порога, поведе- ние которых схоже с конструкциями Posedge и Negedge в языке Verilog. То есть события, наступающие при опре- делённом изменении входного сигна- ла. Второй тип событий в Verilog-A – это события по таймеру, то есть наступаю- щие в определённое время моделиро- вания. Такие события обычно исполь- зуются при написании тестовых окру- жений на Verilog-A. Рассмотрим эти типы событий под- робнее. Д ЕТЕКТОРЫ ПЕРЕСЕЧЕНИЯ ПОРОГА Для детектирования событий, связан- ных с пересечением порога, Verilog-A предлагает две функции Cross (пересе- чение) и Above (превышение). Функция Above во многом аналогична функции Cross и в настоящее время не рекомен- дуется к использованию, поскольку в новых версиях аналоговых симуля- торов она может и не поддерживаться. Функция Cross используется для опи- сания аналогового события, которое происходит при пересечении аргумен- том функции нуля в заданном направ- лении. Кроме того, Cross позволяет контролировать временной шаг для достижения необходимой точности пересечения. Ниже представлен общий вид функции Cross: cross (арг, <направление>, <временной_допуск>, <допуск_по_ значению_выражения>) Параметры <направление>, <времен- ной_допуск>, <допуск_по_значению_ выражения> являются опциональны- ми. Все аргументы, за исключением направления, являются веществен- ными числами или выражения- ми. Направление же задаётся целым числом. Если параметр <направление> уста- навливается равным 0 или не устанав- ливается вовсе, то событие наступает, когда значение выражения пересекает ноль в любом направлении. Если зна- чение направления равно +1, то собы- тие считается наступившим только при условии, что значение выражения пересекает ноль во время возрастания. При установке направления –1, собы- тие происходит, если значение выра- жения пересекает ноль во время спа- да (см. рис. 1). Для контроля допусков по точно- сти детектирования пересечения слу- жат аргументы <временной_допуск> и <допуск_по_значению_выраже- ния>. Если задан <допуск_по_значе- нию_выражения>, то событие прои- зойдёт тогда, когда модуль значения выражения станет меньше, чем аргу- мент <допуск_по_значению_выраже- ния>. Если задан <временной_допуск>, то событие произойдёт внутри задан- Рис. 1. Поведение функции Cross в зависимости от значения аргумента <направление> © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy