Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1158

.pdf
Скачиваний:
5
Добавлен:
07.01.2021
Размер:
922.79 Кб
Скачать

Пример:

.CLOCK 8meg

.CLOCK необязательная директива. Если значение не задано, то оно будет принято по умолчанию, в зависимости от МК. Так или иначе, это значение может быть изменено позже в окне панели управления (выбрано из имеющегося списка).

Использование директивы .CLOCK позволяет устанавливать любую частоту в допустимых пределах, иначе – флаг ошибки.

.MICRO-директива

Указывает VMLAB название микроконтроллера, использующегося в проекте.

Синтаксис:

.MICRO " < название МК> " [" < микроопции > "]

Примеры:

.MICRO "ST6225" "HWD"

.MICRO "Atmega8"

.MICRO "Atmega128" "BOOTRST=0"

Строка опций зависит от МК. В ST62 она используется для определения HW/SW сторожевого таймера. В AVR используется, чтобы определить конфигурационные биты fuse (далее по тексту фьюзы).

.MICRO обязательная директива.

.PLOT-директива

Указывает VMLAB названия (имена) узлов, которые должны быть зарегистрированы и отображены в окне осциллографа.

Синтаксис:

.PLOT V (< nodeName >) [V (<nodeName>) ...]

Пример:

.PLOT V (node_1) V (PA0) V (PB0)

.PLOT директива необязательная. Возможно многократное использование директивы .PLOT.

.POWER-директива

VMLAB имеет 3 узла напряжения: VDD, VSS и GND (или 0).

.POWER-директива устанавливает значения VDD и VSS относительно абсолютного нулевого узла GND.

GND указывает абсолютное нулевое напряжение .

VDD наиболее положительный узел напряжения питания или уровень 1 для логических элементов.

VSS наиболее отрицательный узел напряжения или уровень 0 для логических элементов.

Все логические элементы (включая вводы/выводы МК) используют VDD/VSS напряжения для своих логических уровней.

По умолчанию узлы VSS и GND совпадают, но не всегда. В схемах напряжения питания могут быть определены, как в примерах.

Синтаксис:

.POWER VDD = <значение VSS> = <значение>

Примеры:

 

.POWER VDD=2.5 VSS =-2.5

; GND центрирован.

.POWER VDD=5 VSS=0

; значение по умолчанию.

.POWER VDD=0 VSS =-5

; напряжение питания отрицательно.

.POWERдиректива необязательная, заданные по умолчанию значения приняты за VDD = 5 В и VSS = 0 В.

.RAMINIT-директива

Эта директива позволяет инициализировать оперативную память МК, т.е. установить заданные значения перед стартом моделирования. По умолчанию все позиции оперативной памяти инициализированы к ?? (неизвестное значение).

.RAMINIT инициализирует только позиции, которые ??. Например, если позиция записана вручную с $ 07 перед стартом моделирования, это значение останется, несмотря на значение, данное в .RAMINIT.

Синтаксис:

.RAMINIT < десятичное целое число от 0 до 255 >

Заметьте, что значение должно быть написано десятичным числом.

Пример:

.RAMINIT 15; установит позиции оперативной памяти в $0F Используйте эту директиву с осторожностью: это инструмент, который

помогает разработчику в некоторых случаях, но не отражает реальное состояние памяти в МК. Оперативная память обычно не инициализирована при сбросе, это дело программиста выполнить инициализацию оперативной памяти.

.STORE-директива

Устанавливает время хранения для окна осциллографа (одновременно для хранения сигналов и трассировки МК).

Синтаксис:

.STORE <значение>

Пример:

.STORE 200m ; 200 миллисекунд время хранение.

.STORE директива необязательная. Значения по умолчанию принимаются в зависимости от компьютерной памяти. Оценки вне указанного в табл. 3 диапазона усекаются к максимуму/минимуму.

Диапазоны времени хранения

Таблица 3

 

Доступная оперативная память m

Минимум

Значение по умолчанию

Максимум

m < 60 Мб

50мс

250мс

500мс

60 < m < 100 Мб

50мс

500мс

1000мс

m> 100 Мб

50мс

500мс

2000мс

.TAB-директива

Позволяет определять остановы табуляторов для данного проекта. Эта директива нужна для того, чтобы автоматически располагать исходный текст согласно установленному виду/стилю. Например, 3 для кода Cи или 8 для кода Ассемблера.

Синтаксис:

.TAB < целое число от 1 до 16 >

Пример:

.TAB 6

Заданный по умолчанию интервал позиции табуляции – 3.

.TARGET-директива

Определяет имя конечного HEX-файла, который будет произведен процессом компиляции.

Синтаксис:

.TARGET <имя файла>

Эта директива обязательна только при использовании GENERIC или GCC набора файлов. При использовании ASM-набора директивы TARGET не нужно, первое .ASM имя файла в директиве .PROGRAM будет использоваться как имя конечного файла с расширением HEX.

.TOOLCHAIN-директива

Определяет цепочку файлов, которую нужно использовать, чтобы построить исполняемый файл. Возможны три значения:

"ASM": Стандартный код трансляции изготовителя МК (значение по умолчанию).

"GCC": GNU C Compiler - GNU Cи компилятор.

"GENERIC ": Спецификация файлов сторонних производителей.

Синтаксис:

.TOOLCHAIN {< "ASM" >, < "GCC" >, < " GENERIC " >}

Пример:

.TOOLCHAIN "GCC"

Эта директива необязательная.

.TRACE-директива

Указывает, что должна быть прослежена история выполнения команд микроконтроллера. Трассировка будет показан в окне осциллографа.

Синтаксис:

.TRACE

.TRACE директива необязательная. Если она не указана, трассировка не будет записываться.

.SOURCE-директива

Определяет список файлов, который будет загружен в окне Code Notebook (записной книжки кода). Эта директива допустима только с GCC и GENERIC наборами файлов. Не используйте её вместе с директивой

.PROGRAM.

Принимая во внимание, что директива .PROGRAM используется, чтобы сообщить VMLAB, какие кодовые модули (исходник и т.д.) будут использоваться, чтобы построить целевой HEX-файл, директива .SOURCE указывает VMLAB, только какой файл нужно загрузить в окно записной книжки кода.

Синтаксис:

.SOURCE <имя файла> [< имя файла > ...]

Пример:

.SOURCE "file1.c" "file2.c" "file3.c"

Совет:

Когда вы загружаете много файлов, используйте символ продолжения линии (+), чтобы сделать более читаемым ваш файл.

Пример:

.SOURCE "file1.c" "file2.c" "file3.c"

+"File4.c" "file5.c" "file6.c"

+"File7.c"

.STATS-директива

Допускает запись данных при выполнении команды View | Execution Stats. Она должна использоваться в комбинации с директивой .TRACE.

Синтаксис:

.STATS

Предостережение:

Директива STATS делает запись данных, начиная с начала моделирования. Поскольку запись может быть очень длинной, используйте эту директиву с осторожностью!

.PROGRAM-директива

Определяет спецификацию файлов, которая будет использована для создания целевого программного обеспечения, загружаемого в МК.

Для создания исходных файлов обычно используется ASM (стандартный Ассемблер изготовителя) набор файлов. Он собирается + связывается (компонуется) VMLABом, чтобы построить .HEX-файл, который в конечном счете нужно использовать для программирования ROM/EPROM МК. Все файлы, определенные здесь, будут загружены в окно записной книжки кода.

Синтаксис:

.PROGRAM " <modName> " [: " < опции связи (линковщика) > "] [" < modName > " [: " < опции связи > "]]

Примеры:

.PROGRAM "example.asm"

.PROGRAM "example.hex"

.PROGRAM "example1.asm" "example2.asm" "example3.obj"

.PROGRAM "exampe1.asm": "-P2:80-07FF" "example2.asm"

Если .TARGET-директива опущена, имя первого модуля определяет имя загружаемого конечного файла (с расширением .HEX). Первые и вторые примеры произведут загружаемый код с именем Example.hex.

Опции связи, если таковые вообще имеются, используются программой Linker, когда в программе больше чем 1 модуль, чтобы перераспределить адреса разделов. Должен использоваться синтаксис, определенный в руководстве компоновщика (Linker).

HEX-файл может быть помещен непосредственно в директиве

.PROGRAM. Используйте это, когда имеете только этот файл и нет никакого дополнительного источника или информации отладки. В таком наборе вы сможете моделировать, но никакие переменные и т.д. не сможете наблюдать.

При большом количестве файлов нужно использовать символ продолжения строки (+), чтобы сделать более читаемым ваш файл.

Пример:

.PROGRAM "file1.asm" "file2.asm" "file3.asm"

+"File4.asm" "file5.asm" "file6.asm"

+"File7.asm"

.GCCPATH-директива

Определяет путь инсталляции GCC. Эта директива допустима, если определен GCC-набор файлов.

Синтаксис:

.GCCPATH <имя пути>

Пример:

.GCCPATH " C:\WINAVR \ "

Если путь для GCC-набора не задан, VMLAB примет C:\AVRGCC\ как инсталляционный путь для GCC.

.GCCMAKE-директива

Определяет файл, который будет использован утилитой GCC make или если выбран автоматический режим. Если выбран автоматический режим, GCC-компилятор устанавливает флажки/опции, используя команду

Project | GCC makefile flags.

Синтаксис:

.GCCMAKE {< имя файла >, AUTO }

Пример:

 

.GCCMAKE "myMake.mak"

; makefile пользователя

.GCCMAKE AUTO

; автоматически обработанный makefile

.BAT-директива

Определяет MS-DOS пакетный файл (расширение BAT) для того, чтобы при выполнении формировать необходимые HEX- и COFF-файлы. Эта директива имеет силу только с GENERIC-наборами файлов.

Синтаксис:

.BAT <имя файла>

Эта директива необязательна. Если она не найдена, VMLAB предположит, что HEX- и COFF-файлы уже были сформированы и необходима только их загрузка.

.COFF-директива

Определяет COFF-файл (Common Object Format File), где можно найти символическую информацию для отладки. Эта директива должна использоваться только с опциями GENERIC-наборов файлов.

VMLAB может читать классический COFF-файл и AVR-расширенный COFF-файл (с поддержкой структур/объединений), совместимый с AVR Studio 4.x.

Если вы используете .COFF и директива SOURCE опущена, VMLAB загрузит автоматически исходные файлы, указанные внутри COFF-файла.

Синтаксис:

.COFF <имя файла>

Пример:

.COFF "myFile.cof"

Совет:

При работе только с отладчиком VMLAB можно опустить .SOURCE. Но в некоторых случаях использование .SORUCE является полезным, например, если вы хотите предотвратить загрузку стабильной и хорошо отлаженной части кода, просто используйте директиву .SOURCE, исключив упомянутый код из списка.

Директива .SOURCE является обязательной при использовании .COFFфайлов при применении VMLAB не только как отладчика, но и для

запуска компиляторов сторонних производителей при помощи командных файлов (.BAT).

4. БИБЛИОТЕКА АППАРАТНЫХ КОМПОНЕНТОВ

Доступные компоненты:

резистор;

конденсатор, соединенный с «землёй»;

диалоговый выключатель/ключ;

светодиод (LED);

аналоговые генераторы напряжения;

импульсный источник напряжения;

источник синусоидального напряжения;

источник напряжения, управляемый пользователем;

цифровые генераторы;

генератор «ступеньки» (Non-return-to-zero (NRZ) генератор);

макромодели;

операционный усилитель;

компаратор;

2-входовые И-НЕ;

8-битный цифро-аналоговый преобразователь;

интерфейс RS232, основанный на TTY;

LCD-модуль;

I2C-монитор (диалоговый);

диалоговая вспомогательная клавиатура 4x4.

Резистор

Синтаксис:

R [< instName >] <nodeName> <nodeName> <значение>

Примеры:

R load node1 node2 10К R node_a VSS 100

Не допускается нулевое значение сопротивления. Для короткого замыкания используйте маленькое сопротивление (1 Ом, например).

VDD, VSS и GND – имеющиеся без определения узлы напряжения.

Заземляющий конденсатор

Синтаксис:

C [< instName >] <nodeName> <PowerNodeName> <значение>

Примеры:

C1 node1 VSS 10n ; 10 нанофарад на «землю»

C node_a VSS 1u ; 1 микрофарад на «землю»

Конденсаторы между двумя произвольными узлами не допускаются. Второй узел должен быть всегда VSS.

VDD, VSS и GND зарезервированные узлы напряжения.

Выключатель / клавиша (ключ)

Диалоговый выключатель, управляемый одной из 16-ти кнопок панели управления.

Синтаксис:

K{0 9, A F} <nodeName1> <nodeName2> [{NORMAL, LATCHED, MONOSTABLE(<timeValue>)}]

Последнее ключевое слово управляет начальным положением ключа: NORMAL – нормально замкнут, ключ закрыт (замкнут), пока вы не

нажмете кнопку (значение по умолчанию).

LATCHED замыкаемый, ключ переключает из открытого в замкнутое состояние при нажатии.

MONOSTABLE многоустойчивый (значение времени), закрытый в

течение указанного времени.

 

Примеры:

 

K1 node1 VSS LATCHED

; Button 1

KA node_a node_b

; Button A

K3 myNode GND monostable(10m) ; Button 3

Вы можете определять матрицу 4x4 вспомогательной клавиатуры, задав 16 действий, однако это выполняется автоматически (см. ниже).

Светодиод (LED)

Это визуальный компонент. В окне панели управления доступно 8 виртуальных светодиодов. Светодиоды смоделированы как резистор с малым сопротивлением (1 Ом). Светодиод включен, когда ток через него более 1 мA. Аноды диодов всегда соединяются с VDD.

Синтаксис:

D {1 8} VDD <nodeName>

Примеры:

D1 VDD node1 ; "D1" LED в окне панели управления. Подобно тому, как происходит в реальной жизни, светодиоды при

моделировании не реагируют на очень быстрые сигналы переключения.

Совет:

Светодиод может быть соединен непосредственно с портом ввода/вывода МК, но в этом случае вы не будете видеть на нем падения напряжения с помощью виртуального осциллографа Scope. Чтобы видеть падение напряжения на выводе МК, вы должны соединить светодиод с узлом VDD через резистор примерно 500 Ом.

Импульсный генератор напряжения

Синтаксис:

V[<instName>] <nodeName> <powerNode> PULSE(<vInitial> <vFinal> <tDelay> <tRise> <tFall> <tWidth> <tPeriod>)

Примеры:

V PA0 VSS pulse(0 5 40u 0 0 50u 100u)

Vpulse node1 vss pulse (2.5 3.5 0 1u 1u 1.5m 2.5m)

Второй узел должен быть всегда VDD, VSS, GND (или 0).

Генератор напряжения, управляемый пользователем Для управления напряжением используется движок переменного

резистора в панели управления, который пользователь может перемещать во время выполнения моделирования при помощи указателя мышки.

Синтаксис:

V[<instName>]<nodeName><powerNode>SLIDER_<sliderNumber> (<vLow> <vHigh>)

Примеры:

Vth minus vss SLIDER_1(0 5) ; 0 to 5 volts (Slider #1)

V v_node vss SLIDER_3(1.5 2.5) ; 1.5 0 to 2.5 volts (Slider #3)

Вторым узлом должен быть всегда узел напряжения питания. <sliderNumber> может быть 1, 2, 3, соответствуя трем движкам панели

управления.

Несколько источников напряжения могут одновременно управляться одним и тем же движком.

Операционный усилитель (OPAMP)

Синтаксис:

X [< instName >] OPAMP <nodePlus> <nodeMinus> <nodeOut>

Примеры:

Xop OPAMP node_a node_b node_c

Макромодель OPAMP весьма проста и оптимизирована для системного моделирования. Такие характеристики, как ограниченная полоса частот, убывание коэффициента передачи и т.п., не сымитированы. Выход OPAMP ограничен напряжениями VDD и VSS.

Диалоговый NRZ цифровой генератор

Этот компонент производит цифровой сигнал «ступенька» (NRZ – Non Return to Zero), в указанном узле. Уровни напряжения – VDD, VSS и (VDD+VSS)/2 для идентификаторов сигналов 1, 0 и X.

Сигналы активизированы, когда в окне Control panel нажата кнопка KEY_x и в начале моделирования, если используется ключевое слово СБРОС. Это позволяет определять максимум 16 сигналов,

активизированных клавишами, плюс дополнительная инициализация NRZ сигналов из файлов проекта.

Синтаксис:

P[<instName>] NRZ(<timeBit>) <nodeName> KEY_<keyNumber>

"<pattern>"

 

[+

KEY_<keyNumber> "<pattern>"]

[+

RESET "<pattern>"

[+ ....]

<keyNumber> должен быть номер от 0 до 9, от А до F.

" < pattern > " должна быть или последовательность значений 0, 1 и X (максимальная длина 255), или строка с формой "file:<fileName >" для сигналов, определенных во внешних файлах.

<timeBit> интервал времени каждого цифрового элемента 0, 1 или X. Если не было СБРОСа, сигнал будет инициализирован как X.

Примеры:

P1 NRZ(20u) pb0 KEY_1 "01000110xx0000100111"

P2 NRZ(40u) myNode KEY_1 "01000110xx000"

+KEY_2 "11100011100011100011111"

+KEY_A "10100001xxxx11110100"

+RESET "101"

;Example of a 4 bits wide generator, activated by KEY_1 P0 NRZ(20u) bit_0 KEY_1 "01000110xx0000100111" P1 NRZ(20u) bit_1 KEY_1 "00000000111000000000" P2 NRZ(20u) bit_2 KEY_1 "11111111111110001111"

P3 NRZ(20u) bit_3 KEY_1 "XXXXXXXXXXXXX0000000"

;Пример образца, загруженного от файла

P0 NRZ (20u) bit_0 KEY_1 "file:myPattern.txt"

Определение сигналов во внешних файлах

Используйте любой текстовый файл с расширением, которое вы предпочитаете: TXT, DAT и т.д. Этот файл должен быть расположен в вашем рабочем каталоге с остальной частью: .PRJ-файлом и файлом исходного кода. Правила написания такого файла показываются в следующем примере:

Пример содержания для упомянутого выше файла myPattern.txt:

100100 10 X 00 00 1111

; 0, 1 и X используются как двоичные значения.

10000 11111

; Точка с запятой отделяет комментарий.

1 1 1 1 111 111100

; Пробелы и CR игнорируются.

...

; Неограниченная длина, но

100 11 11 11

; будьте осторожны: если

10111 001001 111 1

; файл огромен, VMLAB будет брать много

100 10011 11

; ресурсов памяти.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]