12.
Работа с системой моделирования.
Система моделирования предназначена для того, чтобы упростить поиск
неисправностей, используя сравнение реакции реального устройства с его
математической моделью. В системе уже присутствует ряд описаний
наиболее распространённых микросхем серии ТТЛ, который при
необходимости можно расширить. Для работы с системой моделирования
используются два представления - настройка каналов и отдельная команда.
Настройка каналов обычно используется для работы с клипсой, для
входного контроля микросхемы на контактной панели, а также для
тестирования моделей небольших плат через краевой разъём, а отдельная
команда - для работы с микросхемой на плате без использования клипсы.
В этом
режиме канналы для анализа задаются в виде списка в порядке
подключения выводов модели.
Программа для тестирования микросхемы 133ЛА3 через клипсу или контакную
панель:
new
init enall
exe "base.crt"
// настраиваем соответствие каналов анализатора выводам микросхемы на
клипсе или панели
{16b}="p1" {15b}="p2" {14b}="p3"
{13b}="p4" {12b}="p5" {11b}="p6"
{10b}="p7"
{09b}="p8" {08b}="p9" {07b}="p10" {06b}="p11"
{05b}="p12" {04b}="p13" {03b}="p14"
// для комбинационных схем можно использовать случайные настройки
{p1^p14}=nf,r
// настраиваем выходы микросхемы и выводы питания в третье состояние
для чтения уровней
{p3,p6,p8,p11,p7,p14}=nf,x
// включаем режим логического анализатора для всех выводов микросхемы
{p1^p14}=la
@start=1000
@fr=100000
// запускаем режим работы с моделью - сравнение 14 выводов с моделью chip/ttlla3
{p1^p14}=sim>
"chip/ttlla3"
В режиме сравнения при полном совпадении каналы показываются на синем
фоне, при неполном совпадающая часть подкрашивается зелёным,
несовпадающая - красным, а части с неопределённым состянием -
малиновым. Неопределённое состояние может проявлятся при отсутствии
питания и при работе триггеров в запрещённых состояниях. Можно также
просмотреть диаграммы объекта диагностирования и модели по отдельности.
В случае
необходимости проверки микросхемы в плате и при отсутствии
клипсы можно также воспользоваться режимом работы с пробником:
new
init enall dprb
// важно установить режим работы пробника
exe "base.crt"
. . . // настраиваем каналы для работы платы
{PRB}=nf,x
// устанавливаем пробник в третье состояние для чтения уровней
{PRB}=la
@start=1000
@fr=100000
@SIMNAME=1 // режим вывода имён каналов из описания модели вместо
номеров выводов
// запускаем режим работы с моделью при помощи пробника
sim
"chip/ttlla3"
В этом режиме диаграммы снимаются пробником для каждого вывода по
отдельности. При этом показываются и подсвечиваются нужным цветом
сигнатуры канала. Для надёжного съёма сигнатуры следует снимать её
трижды, если все три раза совпадают, сигнатуры высвечиваются зелёным
цветом.
При таком тестировании очень важно создать такую тестовую
последовательность для платы, при которой элементы памяти, если они
есть, работают в правильном режиме и тест заканчивает
последовательность переключений состояния платы всегда в одном и том же
состоянии, то есть два и более повтора теста всегда дают один и тот же
результат. Следует исключить возможность того, что состояние платы
после теста будет зависеть от её начального состояния. В таком случае
плату можно привести в стабильное состояние однократным запуском теста
(start) перед запуском или во время работы системы моделирования.
Важно помнить что запрещённые состояния триггеров приводят к
неопределённости в результатах тестов и при использовании пробника эта
неопределённость нарастает. Например, если RS-триггер,
собранный на отдельных элементах (например, 133ЛА3) перевести в
состояние с активными R и S входами, результат будет
определён, но при одновременном их переключении в неактивное
состояние триггер может переключиться в любое состояние. Это состояние
может казаться стабильным, если выходы имеют разную нагрузку или
ёмкость, но подключение пробника в таких случаях выводит схему
из равновесия. Как следствие, последовательный контроль входов и
выходов для схемы в нестабильном состоянии даёт искажённую картину и
может показать ложную неисправность.
Список
существующих моделей и назначение их выводов доступно в окне
библиотеки моделей (кнопка
панели инструментов консоли
MACS).

При
необходимости можно также добавить собственные модели. Библиотека
моделей выбирает данные из каталогов системы моделирования, где
хранятся отдельные модели и их описание.
Структура основных каталогов системы моделирования:
- VectorLAB
- macs
- simsys
- crosslink -
этот каталог содержит исходные файлы описания моделей высокого уровня
в файлах *.cds
Кроме описаний моделей базовых логических элементов, построенных из
моделей нулевого уровня, он также содержит компилятор моделей
modmaker32 и каталоги с дополнительными моделями. Модели из этого
каталога не компилируются в подключаемые модули сами по себе, они
используются как фрагменты для построения других моделей.
- base -
базовые описания сложных элементов, в частности, основных видов
триггеров. Эти модели также не компилируются в подключаемые модули и
используются как фрагменты.
- basetest -
описания моделей для тестирования описаний базовых элементов
(фрагментов моделей). Представляют собой описания для генерации
подключаемых модулей, включающих отдельные базовые элементы и
используются для проверки целостности системы моделирования и
корректности её работы при внесении изменений в базовые модели. Это же
относится и к подкаталогам:
- base -
описания для тестирования сложных моделей (триггеры и пр.)
- level0
- описания
для тестирования моделей нулевого уровня
- ttl
- описания
для тестирования моделей нулевого уровня,
предназначенных для построения серии ТТЛ.
- ttl
- описания
для тестирования базовых моделей, характерных для
серии ТТЛ
- boards -
законченные описания для плат. Используется для создания моделей плат
и их фрагментов и генерации для них подключаемых модулей.
- chip -
законченные описания микросхем. Используется для создания
подключаемых модулей моделей микросхем.
- ttl -
базовые описания фрагментов для построения моделей серии ТТЛ.
Используются только как фраменты.
- models - содержит
промежуточные описания моделей на языке C++, сгенерированные из
описаний в формате cds. Каталог содержит базовые описания, используемые
как фрагменты для построения моделей более высокого уровня. Структура и
назначение подкаталогов идентична каталогу crosslink, за исключением
подкаталога level0.
- base
- basetest
- boards
- chip
- level0 -
описания моделей нулевого уровня, на основе которых строится всё
остальное.
- ttl -
описания моделей нулевого уровня для серии ТТЛ.
- ttl
- sim32 -
подключаемые модули, скомпилированные из исходного кода модулей,
сгенерированных в каталоге simcode. Модули из этого каталога и его
подкаталогов используются при работе системе моделирования в MACS. Файл
модели имеет расширение .sim32, в файлах с расширением .alias
содержатся частичные или полные названия элементов, для которых
функционально походит соответствующая модель.
- simcode -
описание расположения выводов моделей в файлах *.pin и исходный код
для генерации подключаемых модулей в файлах *.cpp. Из этих файлов
компилируются модули sim32, использующиеся в системе моделирования под
управлением MACS.
В самом
основании системы моделирования лежат модели нулевого уровня,
на основе которых построены базовые модели.
В библиотеке нулевого уровня находятся 10 моделей:
- and2 - логическое И
- copy - операция копирования
входа на выход
- gen0 - генератор логического
0
- gen1 - генератор логической 1
- mx8 - мультиплексор 8 в 1
- not - логическое отрицание
- or2 - логическое ИЛИ
- stub - заглушка, обрывающая
дальнейшее распространение сигнала.
- xor2 - исключающее ИЛИ
- zgate - элемент, переводящий
выход в третье состояние
Для серии
ТТЛ дополнительно определены две модели, находящиеся в
подкаталоге ttl:
- opendrain - трансляция
состояния выхода для выхода с открытым коллектором
- power1 - элемент контроля
наличия питания. Если на общем выводе не логический ноль или на выводе
питания не логическая единица, вывод микросхемы переводится в
неопределённое состояние.
Из моделей
нулевого уровня построены базовые модели, такие как
многовходовые элементы И, ИЛИ, мажоритарные элементы и пр. Базовые
модели также используют для собственного описания другие базовые
модели. Для триггеров также определены базовые фрагменты, кроме того
для серии ТТЛ добавлены дополнительные модели, расширяющие контроль
питания.
На основе базовых моделей и моделей нулевого уровня можно построить
модели внутренней структуры микросхем, плат и фрагментов плат. Любое
описание можно включить в любое другое описание и построить более
сложную модель.
Для создания новой модели нужно сначала создать исходное описание в
формате cds, которое предсталяет собой список связей.
Рассмотрим описание микросхемы ЛА3, которое должно быть
создано в файле ttlla3 каталога macs/simsys/crosslink/chip:
//
секция описания компонентов модели
$F
// описывается внутреннее название элемента и его тип через двоеточие
// можно описать каталог, например ttl/power4
// для описаний плат можно использовать описания микросхем,
// например chip/ttltm2
// название микросхемы (здесь d1, d2 и т.п.) не может содержать
// символ подчёркивания - "_"
d1:nand2 d2:nand2
d3:nand2 d4:nand2 pwr:ttl/power4
// здесь мы используем базовую модель 2И-НЕ и контроль питания
// по 4 выходам. Для контроля питания указан подкаталог, где
// содержится модель, для базовых моделей и моделей нулевого уровня
// каталог считается одним и тем же каталогом верхнего уровня,
// то есть для 2И без инверсии
// это выглядело бы как d1:and2 d2:and2 и т.д.
//
секция описания входов модели
$X
// здесь описываются имена входов, которые будут использованы,
// как точки входа сигналов при соединении элементов
a1 b1 a2 b2 a3 b3 a4
b4
gnd
vcc
//
секция описания выходов модели, точки выхода сигналов
$Y
q1 q2 q3 q4
//
секция описания внутренних связей
$Z
// внутренние связи - "провода", которыми связаны входы, выходы
// и элементы модели
za1 zb1 za2 zb2 za3
zb3 za4 zb4
zq1
zq2 zq3 zq4
pwgnd
pwvcc
pwq1
pwq2 pwq3 pwq4
$M
// вход a1 соединяем с внутренней связью za1
a1:za1
// то же для входа b1 и до входа b4 далее
b1:zb1
a2:za2
b2:zb2
a3:za3
b3:zb3
a4:za4
b4:zb4
//
первый вход элемента d1 соединяем со связью za1, второй со связью zb1
// порядок соединения в пары значения не имеет
d1_1_0:za1
d1_2_0:zb1
// первый выход соединяем со связью zq1
d1_0_1:zq1
// обратите внимание на правила кодирования: первое число - номер
входа,
// второе - номер выхода, при этом один из номеров должен быть равен 0
//
таким же образом соединяем остальные модели
d2_1_0:za2
d2_2_0:zb2
d2_0_1:zq2
d3_1_0:za3
d3_2_0:zb3
d3_0_1:zq3
d4_1_0:za4
d4_2_0:zb4
d4_0_1:zq4
//
входы питания соединяем с внутренними связями
gnd:pwgnd
vcc:pwvcc
//
входы элемента контроля питания соединяем с соответствующими
// связями
pwr_1_0:pwgnd
pwr_2_0:pwvcc
pwr_3_0:zq1
pwr_4_0:zq2
pwr_5_0:zq3
pwr_6_0:zq4
//
и выходы тоже
pwr_0_1:pwq1
pwr_0_2:pwq2
pwr_0_3:pwq3
pwr_0_4:pwq4
//
внутренние связи для выходов соединяем с выходами модели
q1:pwq1
q2:pwq2
q3:pwq3
q4:pwq4
//
конец описания, в этой секции можно писать что угодно
$E
тут можно писать любые комментарии
Для наглядности также можно также рассмотреть модель RS-триггера с
инверсными входами - сравните таблицу коммутации с метками на схеме:

$F
d1:nand2 d2:nand2
$X
nS nR
$Y
Q nQ
$Z
znr zns z1 z2
$M
ns:zns
nr:znr
zns:d1_1_0
z2:d1_2_0
z1:d1_0_1
d2_1_0:z1
d2_2_0:znr
d2_0_1:z2
z1:q
z2:nq
$E
┌─┬────┐
│_│ │
────oS│ Q ├────
│ │ │
│_│ _ │
────oR│ Q o────
│ │ │
└─┴────┘
Вернёмся к описанию микросхемы ЛА3. После того, как составлен файл
описания, следует создать файл
соответствия выводов микросхемы. Без него создание подключаемого модуля
невозможно, можно только скомпилировать промежуточное описание, как
фрагмент для построения других моделей.
В файле соответствия будут определён порядок передачи входов и выходов
модели. Рассмотрим содержимое файла ttlla3.pin в каталоге
macs/simsys/simcode/chip:
#
133/136/155/1533 ЛА3 ЛА9 ЛА11 ЛА13 ЛА15 ТЛ3
pinout:
a1 b1 a2 b2 a3 b3 a4 b4 gnd vcc q1 q2 q3 q4
ttlla3:
1 2 4 5 9 10 12 13
7 14 3 6 8
11
ttltl3:
1 2 4 5 9 10 12 13
7 14 3 6 8
11
#
133/136/155/1533 ЛА12
#
a1 b1 a2 b2 a3 b3 a4 b4 gnd vcc q1 q2 q3 q4
ttlla12:
1 3 5 6 11 12 14 15
8 16 4 7 9
13
#
134 ЛБ1 А/Б
#
a1 b1 a2 b2 a3 b3 a4 b4 gnd vcc q1 q2 q3 q4
ttllb1:
2 3 5 6 8 9
13 14 11 4 1 7 10 12
Строки, начинающиеся символом # - комментарии. В строке, начинающейся
ключевым словом pinout перечислены входы и выходы модели в том же
порядке, в котором они находятся в файле описания. Определяющим здесь
является порядок, заданный в файле описания, список в файле
соответствия нужен для упрощения расстановки номеров выводов.
Один файл может использоваться для генерации нескольких разных моделей.
В приведённом примере описаны 4 модели: ЛА3 и её аналоги с
отличающимися электрическими и временными характеристиками; триггер
Шмитта с функциональностью, идентичной ЛА3 (выводы полностью
соотвествуют ЛА3, он выделен в отдельную модель лишь для упрощения
работы с библиотекой); ЛА12 - полный функциональный аналог ЛА3 в
корпусе с 16 выводами; 134ЛБ1 - функциональный аналог ЛА3 с центральным
расположением выводов питания.
Следующим этапом является содание промежуточного описания
модели на языке C++.
Для этого используется компилятор моделей modmaker32. После запуска его
в каталоге macs/simsys/crosslink с именем модели в командной строке
будет сгенерировано промежуточное описание и исходный код для генерации
модели:
modmaker32
chip/ttlla3
Можно также сгенерировать исходный код для остальных моделей, описанных
в файле ttlla3.pin:
modmaker32
-layout ttlla12 chip/ttlla3
modmaker32
-layout ttllb1 chip/ttlla3
modmaker32
-layout ttltl3 chip/ttlla3
Теперь осталось скомпилировать подключаемый модуль из исходного кода
модели. Для этого существует пакетный файл в каталоге
macs/simsys/simcode:
builddll
chip/ttlla3
Модель будет скомпилирована при помощи Visual C++ 2008 Express и
полученный подключаемый модуль будет помещён в каталог
macs/simsys/sim32/chip под именем ttlla3.sim32.
Можно создать модули и для остальных моделей, основанных на ЛА3:
builddll
chip/ttlla12
builddll
chip/ttllb1
builddll
chip/ttltl3
Последнее, что осталось сделать - подготовить описание модели для
библиотеки. Для этого в каталоге macs/simsys/sim32/chip нужно создать
файл ttlla3.alias:
ЛА3
00
ЛА9
03
ЛА11
26
ЛА13
38
ЛА15
Таким образом, по описанию в ttlla3.alias модель ttlla3.sim32 подходит
для
тестирования микросхем ЛА3, ЛА9, ЛА11, ЛА13, ЛА15, а также их
зарубежных аналогов 00, 03, 26 и 38. То есть, её можно использовать для
133ЛА3, К1533ЛА3, К155ЛА9, 74LS00, 74ALS03 и т.д Такие же описания
следует создать и для ЛА12, ЛБ1 и ТЛ3.
Если в описании сделать более детальное описание, включающее в себя
серию, спектр аналогов сузится. Так, например, модель dtlli1 подходит
только для 109ЛИ1 и не может быть использована для
тестирования 133ЛИ1.
Та же схема построения моделей используется и для плат, за исключением
того, что каталоги chip меняются на boards.