ЛЕКЦИЯ 8 ( ) Тема 2. Цифровое моделирование Задачи, решаемые методом цифрового моделирования Процесс логического моделирования Модели цифровых сигналов и логических элементов
Понятие логического моделирования Под логическим моделированием понимают полное и точное программное воспроизведение поведения цифровой схемы по ее функциональному и/или структурному описанию и заданным наборам входных сигналов. При ручном проектировании модель представляется действующим макетом или опытным образцом (прототипом). При автоматизированном проектировании действующий макет заменяется имитационной (программной) моделью проекта, а натурные или физические эксперименты – модельными (машинными). В модель легко вносить любые изменения и таким образом улучшать проект до тех пор, пока он не достигнет требуемого качества.
Старая и новая парадигмы, пример Парадигма – образец решения исследовательских задач
Разновидности проектирования
Задачи, решаемые методом логического моделирования 1.Основная задача логического моделирования - проверить правильность функционирования цифровой схемы до её фактического (физического) воплощения 2.Исследование временных характеристик схемы - быстродействия, времени выполнения операций, максимальных частот счёта или сдвига. Обнаружение состязаний и рисков сбоя. Задержки. 3.Контроль временных соотношений - времени предустановки и времени удержания, минимальной длительности сигналов. 4.Разработка контролирующих и диагностических тестов. Моделирование неисправностей. 5.Сравнение альтернативных вариантов схемных решений и выбор наиболее подходящего. «Тирания альтернатив». До 70% времени работы над проектом тратится именно на его верификацию
Задачи, решаемые методом логического моделирования 6.Контроль выходов компонентов на допустимую нагрузку. 7.Контроль компонентов схемы на допустимую мощность рассеяния. 8.Выявление не устанавливаемых элементов по сигналам сброса или начальной инициализации. 9.Выполнение статистических оценок, например определение процента выхода годных схем, которые невозможно сделать на единичных опытных образцах. 10.Проведение климатических, чаще всего температурных испытаний.
Процесс логического моделирования Моделирование выполняется аналогично проверке схемы вручную. Экспериментируя с действующим макетом, инженер устанавливает уровни напряжений на входах схемы и наблюдает выходные сигналы на экране осциллографа. В случае логического моделирования он имитирует эти действия с помощью специальной программы, называемой моделятором (симулятором, имитатором). Разница в том, что реальные, физические сигналы заменяются программно генерируемыми и наблюдаются они не на осциллографе, а на экране монитора.
Процесс логического моделирования С точки зрения обработки данных моделирование сводится к трём основным процессам: Составление описания моделируемой схемы на некотором языке (ЯОО - язык описания объектов) и ввода его в ЭВМ. Описание можно задать в виде схемы, списком компонентов и связей (NetList), в форме табличного представления, в виде диаграммы состояний ЦА. Контроль описания (например, поиск плавающих входов, закороченных выходов, дублированных имён) и трансляция его в объектный код. Программа контроля ERC – Electrical Rules Check. Выполнение экспериментов с программной моделью, имитирующей работу схемы. Перед началом моделирования задаются наборы входных сигналов, исходное состояние схемы, контрольные точки для наблюдения, конечное время моделирования.
Графическое представление процесса логического моделирования Ввод описания схемы NetList Библиотеки графических описаний компонентов Автоматическая генерация модели схемы Библиотеки математических моделей компонентов ЯОО Проектировщик & Y=A and B; Модель схемыМоделятор proceduremain Инструментальные средства моделирования Диаграммы входных сигналов Исходное состояние схемы Управление выводом Специальные условия Метод моделирования Результаты моделирования Рабочая программа ЯОЗ M1 – принцип дельта T M2 – принцип дельта Z min typical max температура неисправности Компилирующее моделирование Компоновщик Линковщик
Модели цифровых сигналов Круг задач, решаемых методом логического моделирования, определяется в первую очередь числом различимых состояний, которые может принимать цифровой сигнал. Каждому состоянию сопоставляется свой индивидуальный символ, а их совокупность составляет алфавит моделирования. Простейший алфавит - двоичный, используемый в старых АСМ, содержал битовый набор {0, 1}. Так как в этом случае любой сигнал может принимать только два значения (0 и 1), то смену логического уровня вынужденно приходилось считать мгновенной. Реальный сигнал Порог Двоичная аппроксимация Событие – мгновенное переключение Достоинство – экономичность. Позволяет решать только одну главную задачу моделирования – проверить работу схемы
Модели цифровых сигналов При троичном моделировании {0, 1, Х} переключающийся сигнал можно изобразить более реалистично, например 0Х1 или 1Х0. Такая запись означает, что при смене состояния элемента его выходной сигнал в течение некоторого времени (пока формировался фронт или спад) имел неопределенное значение. 0 1 X Переключение 0X1 Переключение 1X0 0 1 X 0X1 Active-HDL 8.1 X – неизвестное значение Трёхзначный алфавит {0,1,X} используется в языке PML (САПР PCAD 4.5) X присваивается сигналу на выходе ЛЭ во время переходного процесса. X присваивается выходам триггера после подачи на его входы запрещённых комбинаций сигналов X присваивается выходам триггера в начале моделирования, когда его состояние неизвестно
Модели цифровых сигналов При моделировании компонентов с динамическими входами (триггеры, счётчики, регистры, память) очень удобно фиксировать моменты переключения сигналов в том или ином направлении. С этой целью в алфавит моделирования добавляются ещё два значения: или / или R (от слова Rise - фронт) - переключение сигнала вверх; или \ или F (от слова Fall - спад) - переключение сигнала вниз. В САПР OrCAD 9.1 (PSpice проекты) используется шестизначный алфавит {0,1,X,R,F,Z}
Модели цифровых сигналов Для моделирования шинных структур в алфавит допустимых значений сигналов вводится ещё одно Z-состояние, то есть состояние высокого импеданса на выходе, когда он фактически оторван от нагрузки: {0,1,X,R,F,Z}. Весьма распространён четырёхзначный алфавит {0,1,X,Z}. Он используется в таких языках описания аппаратуры как Verilog, ABEL, AHDL (Altera), DSL (DesignLab). Четырёхзначный алфавит часто называют алфавитом синтеза ПЛИС.
Модели цифровых сигналов Для более точного представления сигналов (более адекватного моделирования) можно использовать два основных приёма: Расширять алфавит моделирования (так мы уже действовали); Вводить понятие логической силы сигнала (strength level). В качестве примера рассмотрим расширенный алфавит моделирования языка VHDL type bit is (0,1); - базовый, встроенный тип сигнала. Алфавит {0,1} type std_ulogic is (U,X,0,1,Z,W,L,H,-); - расширенный тип сигнала. Алфавит {U,X,0,1,Z,W,L,H,-} Расширенный тип сигналов расположен в отдельном пакете std_logic_1164, находящимся в библиотеке ieee. Поэтому чтобы включить этот тип сигналов в модель, необходимо перед ней разместить строки:
Модели цифровых сигналов Язык VHDL Алфавит {U,X,0,1,Z,W,L,H,-} U – от слова Uninitialized – дословно «не инициализировано» Это означает, что сигналу в программе вообще не присваивались какие- либо значения; обеспечивает контроль корректности инициализации - – безразличное состояние (Dont Care) Это означает, что сигнал может принять любое из разрешённых значений, что не повлияет на работу схемы. В книгах и справочниках безразличное состояние часто обозначают символами «d» или «*». JK-триггер R C J K Q NQ Сброс 1 * * * 0 1 При синтезе ЦА в запрещённых состояниях вместо «*» вы можете поставить 0 или 1 и получите разные схемные решения. В САПР выбор конкретного значения отдаётся на откуп компилятору с целью оптимизации проектируемого устройства. Пример. Язык DSL в САПР DesignLab 8. В выражении Y =.X.; компилятор по умолчанию PLSyn поставит Y = 0;
Модели цифровых сигналов Active-HDL 8.1 Графическое представление значений цифрового сигнала. Понятия сильного (force) и слабого (weak) сигналов X – forcing unknown 0 – forcing zero 1 – forcing one W – weak unknown L - weak zero (слабый ноль) H - weak one (слабая единица) Слабый сигнал формируется от источников, называемых драйверами. Они имеют высокое выходное сопротивление по сравнению с источниками сильных сигналов. Например, схема с открытым коллектором или эмиттером.
Модели цифровых сигналов SDRZ 0S0D0R0Z0 1S1D1R1Z1 XSXDXRXZX Вернёмся к понятию логической силы сигнала (strength level). Мы уже знаем, что расширение возможностей моделирования, повышения его адекватности, может достигаться не только увеличением алфавита моделирования, но и введением понятия «уровня логической силы сигнала». Впервые эта идея была реализована в языке PML пакета PCAD 4.5. Пример: Язык Verilog имеет всего 4х-значный алфавит моделирования {0,1,X,Z}, но одновременно 8 значений логической силы. Логическая сила S > D > R > Z
Модели логических элементов При построении моделей логических элементов могут учитываться следующие свойства: выполняемая функция; задержка распространения сигнала; нагрузочная способность; пороги срабатывания; длительность фронтов; случайный разброс задержек; температурные изменения параметров (например, временных задержек, уровней логического нуля и единицы и т.п.). Заметим, что чем выше значимость алфавита моделирования и чем больше свойств учитывается в модели, тем больше ресурсов (процессорного времени и памяти) требуется для прогона модели. По этой причине в современных системах моделирования число разрешённых значений цифрового сигнала обычно не превышает 4..9, а из возможных свойств, как правило, моделируется только функция, временная задержка и нагрузочная способность.
Булевские модели Булевские модели логических элементов работают с двоичным алфавитом {0,1} и могут быть реализованы в виде: логического уравнения, таблицы истинности или блок-схемы алгоритма IN1 IN2 OUT1 & AND2 IN1 IN2 OUT1 & AND2 IN1 IN2 OUT1 & AND2 F1 F2 Y1 Потоковое описание схемы: Y1 = A & B; (PCAD 4.5, язык PML) Y1 = A * B; (DesignLab 8, язык DSL) Y1
PROCEDURE AND2 ( INPUT IN1, IN2 ; OUTPUT OUT1 ); TRUTH_TABLE IN2, IN1 :: OUT1; 1, 1 :: 1; END TRUTH_TABLE; END AND2; Булевские модели IN1 IN2 OUT1 & AND2 IN1 IN2 OUT1 & AND2 IN1 IN2 OUT1 & AND2 F1 F2 Y1 IN1IN2OUT Алгоритмическое описание Табличное описание Язык DSL Начало Конец IN1=0 IN2=0 OUT1=0OUT1=1 Да Нет Да Нет
Булевские модели Обычно булевские модели применяются для синхронного потактового моделирования (принцип дельта Т) без учёта задержек. Это самое примитивное моделирование. Главное его достоинство – простота и экономичность. При булевском моделировании время разбивается на такты (принцип t). Длительность такта выбирается так, чтобы в пределах одного такта ни один сигнал не переключился более одного раза. Реальное переключение переносится на начало того такта, в пределах которого оно произошло. Переключение считается мгновенным. Задержка распространения сигнала от входа F1 (или F2) до выхода Y1 не моделируется, так как оба переключения переносятся на начало такта Т2 (или Т4) и становятся одновременными. Модельное время F1 F2 Y1 Такт Реальный сигнал Булевская модель T0T1 T2 T3T4T5T6 Риск сбоя Мгновенное событие «Иголка» Glitch
Булевские модели Обычно один такт соответствует одному набору входных сигналов и обрабатывается за один цикл работы моделятора. С каждым циклом в счётчик модельного времени добавляется единица, то есть модельное время продвигается по тактам в соответствии с выражением: Т:=Т+1. В реальной схеме из-за перекрытия фронтов сигналов F1 и F2 на выходе элемента 2И может появиться короткий импульс - риск сбоя (такт Т6). Булевские модели не в состоянии предсказать появление таких иголок, весьма опасных для работы цифровой аппаратуры. Булевское моделирование решает только одну главную задачу любого моделирования – проверку правильности функционирования цифровой аппаратуры
Троичные модели Троичные модели в отличие от булевских имитируют возникновение переходных процессов при смене уровней сигналов. При троичном моделировании такт разбивается на два полутакта. В течение первого полутакта переключающийся сигнал принимает значение Х (изменяется), а на втором полутакте достигает нового значения. В троичных моделях используется трёхзначный алфавит {0,1,X}
Троичные модели Модельное время F1 F2 Y1 Реальный сигнал Риск сбоя 0 1 X Модель риска сбоя Троичная модель 1 X X Такт T6 Полутакт неопределённости Полутакт определённости IN1 IN2 OUT1 & AND2 IN1 IN2 OUT1 & AND2 IN1 IN2 OUT1 & AND2 F1 F2 Y1 IN1IN2OUT IN1IN2OUT1 0X0 X00 1XX X1X XXX M2 M3 1X0 0X1 0X0 таблица истинности элемента 2И для трёхзначной логики
Троичные модели Признаком риска сбоя служат одинаковые значения сигнала на соседних тактах и значение Х на полутакте неопределенности между ними. 0011XX Риск сбоя Троичное моделирование отражает только сам факт переключения сигнала и не уточняет, сколько времени длилось переключение, и где именно в пределах такта оно происходило. Другими словами, длительность Х - состояния при троичном моделировании всегда равна полутакту и никак не связана с реальным временем переключения сигнала.
Многозначные модели Многозначные модели позволяют более точно описать поведение реальных элементов, однако по сравнению с троичными моделями ничего принципиально нового они не содержат. Для сравнения рассмотрим таблицы истинности элемента 2И при двоичном, троичном и пятизначном моделировании. OUT1 IN2 01X IN X X0XXXX 0 X X 0 XX IN1 IN2 OUT1 & AND2 IN1 IN2 OUT1 & AND2 IN1 IN2 OUT1 & AND2 F1 F2 Y1 X ? IN1 IN2 OUT1 & AND2 ? IN1 IN2 OUT1 & AND2 M2M3 M5
Модели логических элементов с учётом задержек Эти модели в отличие от троичных имитируют задержки в явном виде. Чтобы отобразить задержку, надо указать истинное положение переключающегося сигнала на временной оси. Моделирование задержек при потактовом способе продвижения модельного времени (принцип дельта T). Чтобы отразить задержку, надо повысить разрешающую способность по времени, то есть разделить такт на более мелкие единицы времени, называемые квантами (микротактами) или шагами. Например, в пакете PCAD такт называется CYCLE, а квант - STEP. 1 A Y A Y Квант Такт tз = 8 квантов Задержка представляется целым числом – числом квантов
Модели логических элементов с учётом задержек В моделях с учётом tз в явном виде такт нарезается на кванты. Причем величина кванта должна составлять малую часть задержки, например 1ns. Цикл работы моделирующей программы теперь привязывается не к такту, а к кванту. Поэтому, чтобы смоделировать работу схемы в течение одного такта, моделятору придётся выполнить гораздо больший объём работы, а именно столько циклов, сколько квантов помещается на длине такта. Теперь с точностью до кванта можно указать моменты истинных переключений на входах и выходах, а также вычислить целым числом квантов задержку распространения. Остается только смоделировать её. Классическая модель логического элемента с учётом задержки содержит два блока. Первый – реализует логику (функцию), второй – чистую задержку. φ tз = 0 B A C YсYс Y Логический блок Блок задержки Yс (от слова синхронный) мгновенно реагирует на изменения входных сигналов Динамическая модель в PSpice проектах
Модели логических элементов с учётом задержек AYсYс Логический блок LOGICEXP PINDLY Счётчик tз Контейнер Yс Контейнер Y Y NextCurrent Хранит будущее значение Хранит текущее значение Блок задержки Возможная реализация блока задержки для потактового моделирования Счётчик задержки работает на вычитание. При синхронном переключении выхода Yс новое значение записывается в контейнер будущих значений, а в счётчик tз заносится задержка, с которой новое значение Yс должно появиться на выходе Y.
Модели логических элементов с учётом задержек В процессе продвижения модельного времени (tкванта = tкванта + 1) задержка в счётчике tз уменьшается, по не «растает» до нуля. Будущее значение выхода становится текущим, а это означает, что содержимое левого контейнера надо переписать в правый. Моделирование задержек при событийном механизме продвижения модельного времени (принцип дельта Z). Мы рассмотрели вариант, когда задержка моделируется внутри каждого логического элемента. Такое решение приводит к значительным затратам ресурсов инструментальной ЭВМ. Другая возможность смоделировать реальную задержку заключается в том, чтобы спланировать новое событие на выходе и рассчитать момент его наступления t(Y) по простому правилу: t(Y) = t(Yс) + tз Но t(Yс) – это текущее модельное время t(текущее) Значит для любого события (переключения) можно спланировать время наступления будущего события как t(будущее) = t(текущее) + t(задержки)
Модели логических элементов с учётом задержек Вычисленное событие помещается моделятором в очередь будущих событий ОБС, которая отсортирована в хронологическом порядке. Как видно, вся работа по имитации задержек перекладывается на моделятор, которому требуется только указать величину задержки относительно текущего модельного времени. Заметим, что округлять ее до целого числа квантов теперь совсем не обязательно. На языке VHDL это делается весьма элегантно: Y