Особенностью процессора Z89C00 является выполнение всех арифметических операций над числами по модулю меньше 1. Процессор, главным образом, оперирует с 16 разрядными двоичными числами представленными в дополнительном коде. Старший разряд числа знаковый: 1 – означает минус, а 0 – плюс. 15 разрядов отводится под абсолютное значение числа. Абсолютное значение положительных чисел кодируются прямым кодом, а отрицательных дополнительным. Дополнительный код образуется, если все двоичные разряды абсолютного значения инвертировать и полученному числу добавить 1. Наибольшее число имеет код 7FFFH. Последняя буква H означает, что число представлено в шестнадцатиричном коде. Это же число в десятичном коде будет равно 0.9999695. Наименьшее число имеет код 8000H (-1). Наименьшее положительное число имеет код 0001Н (0.00001525). Наименьшее отрицательное число имеет код FFFFН (-0.00001525).
При выполнении операций умножения, переполнения разрядной сетки результата не происходит, но при сложении и вычитании это может произойти. Для исключения такой ситуации числа необходимо нормировать, до операции. В частности для этого предназначено включение режима сдвига на 3 разряда вправо после операции умножения (бит 9 регистра состояния). В некоторых случаях переполнение не страшно, но необходимо обеспечить наиболее близкий к истине результат. Тогда включают режим защиты от переполнения (бит 8 регистра состояния). Этот режим можно назвать режимом ограничения, поскольку реальный результат, вышедший за рамки разрядной сетки, заменяется наибольшим положительным или наименьшим отрицательным числом.
Первым вопросом при проектировании функциональных узлов на сигнальном процессоре является вопрос о синхронизации их работы. При выполнении курсовой работы следует считать, что синхронизация происходит через сигнал прерывания от устройств наиболее высокочастотного ввода/вывода. Например, если проектируется трансмультиплексор, то для этого используются импульсы дискретизации группового сигнала. Более низкочастотные импульсы дискретизации канальных сигналов обрабатываются при каждом М-ом прерывании программы, где М-число каналов. Таким образом, вопрос синхронизации частично решается внешними устройствами микропроцессорного узла.
В начале работы сигнального процессора прерывания запрещены. Их разрешают через установку бита 7 регистра состояния или с помощью специальной команды. Предварительно необходимо выполнить запись инициализации счетчиков прерываний – специальных переменных синхронизации выделяемых разработчиком.
При написании программы все переменные должны хранится в памяти данных (ОЗУ), и лишь некоторые константы в памяти программ (как правило, ПЗУ). Это связано с тем, что доступ к памяти данных более быстрый.
За распределением памяти данных и программ следует следить в течение всего времени разработки. Для этого составляются карты памяти. Для управления картой памяти программ следует использовать директиву ассемблера ORG:
ORG %Адрес
где Адрес – абсолютный адрес ячейки памяти программ.
Язык ассемблера состоит из правил записи команд, операндов и директив. Запись производится в мнемоническом коде, который переводится в код процессора специальными средствами, например, программой транслятором на персональном компьютере.
Segment bank0_bss – сегмент банка 0 памяти данных;
Segment bank1_bss – сегмент банка 1 памяти данных;
Segment code – сегмент памяти программ;
END – конец сегмента памяти программ;
ORG %Адрес – установка начального адреса в памяти программ;
X: DS N – резервирование переменных в памяти данных, где N – количество 16-разрядных переменных; X – имя переменных;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.