В.3.2. Структура блока ЦАП
#. АНАЛОГОВЫЕ ЭЛЕМЕНТЫ УСТРОЙСТВ ВВОДА/ВЫВОДА.
#.1. Мультиплексоры аналоговых сигналов (МАС)
Увеличение числа коммутируемых каналов.
Пример: Подключается вход «12».
#.2. Измерительные (инструментальные) программируемые усилители.
- Усиление дифференциальных сигналов
- Малый уровень собственных шумов
- Полоса пропускания – килогерцы
- Усиление – до 1000
Дифференциальный операционный усилитель.
Недостатки:
o Входное сопротивление ограничено резисторами R1, R2, R4.
o Для изменения коэффициента усиления нужно одновременно изменять сопротивление двух резисторов
o Мал коэффициент ослабления синфазного сигнала.
Конфигурация входов ПИУ
А) Общая «земля» источника сигналов и усилителя
Б) Общая «земля» источника сигналов
В) «Земли» источников сигналов не совпадают
#.3. Схемы выборки и хранения (СВХ)
- снижение динамической погрешности,
- упрощение восстановления сигнала,
- точность косвенных измерений,
- временная привязка.
#.4. Аналого-цифровые и цифро-аналоговые преобразователи
#.4.1. Системные параметры АЦП
- вид и диапазон изменения входного сигнала, входное сопротивление,
- вид выходного кода и логические уровни выходного сигнала,
- число разрядов выходного кода,
- время преобразования.
#.4.2. Системные параметры ЦАП
- вид входного кода и уровни опорных напряжений,
- полярность и диапазон выходного сигнала, нагрузочная способность,
- число разрядов входного кода,
- время установления выходного сигнала.
#.4.3. Разрешающая способность преобразователей.
#.4.4. Функции преобразования
-униполярный сигнал, прямой код
-биполярный сигнал, прямой код
-биполярный сигнал, дополнительный код
Динамические характеристики – чистое запаздывание.
#.4.5. Выбор времени преобразования АЦП
Время преобразования должно быть таким, чтобы динамическая погрешность находилась в пределах веса младшего разряда.
#.4.6. Сигналы управления типового АЦП
#.4.7. Сигналы управления типового ЦАП
#.4.8. Увеличение разрядности преобразователей
а) АЦП
б) ЦАП
#.4.9. Уменьшение разрядности ЦАП
#. БЛОКИ ОБРАБОТКИ ДАННЫХ
−Принцип использования двоичной системы счисления для представления данных и команд;
- Принцип программного управления: программа состоит из набора команд, которые выполняются процессором в определённой последовательности одна после завершения другой;
- Принцип однородности памяти: программы и данные хранятся в общей памяти. Над командами программы можно выполнять те же действия, что и над данными;
- Принцип адресуемости памяти: основная память состоит из пронумерованных ячеек, и процессору в любой момент доступна любая ячейка;
- Принцип условного перехода: при определённых условиях, последовательное выполнение программы может быть нарушено и выполнен переход на любую другую команду
Рис. #.1
#.1. Общая организация блока обработки данных
ОУ выполняет микрооперации:
a) установка регистра в заданное состояние;
b) пересылка содержимого одного регистра в другой;
c) сдвиг содержимого регистра влево или вправо;
d) логические операции над содержимым регистров;
e) сложение содержимого регистров.
И т.п.
МКОi (i=1…n) Þ МКК
Ex: Микропрограмма сложения содерж. регистров R1, R2 и запись суммы в R3.
{ (R1+R2→R3)ÞМКПК }
МКПК ~ ADD R3, R2, R1
Система команд={ МКПi, i=1…N }
Формат микрокоманды
#.2. Структурные схемы вычислителей
А) ОКОД (SISD): структура однопроцессорных систем.
Б) ОКМД (SIMD): Матричная структура.
В) МКОД (MISD): Конвейерная структура.
Г) МКМД (MIMD)
- Структура с перекрёстной коммутацией.
- Структура с многошинными связями.
- Структура с общей шиной.
-Общая шина с локальными ресурсами
#.3. Организация обмена данными микропроцессора с периферийными модулями
#.3.1. Программно-управляемый обмен.
#.3.2. Обмен по прерываниям.
А) Программный полинг.
Последовательный перебор всех адресов ПУ до погашения сигнала INT.
Чтение флагового регистра и определение приоритетного запроса.
Б) Аппаратный полинг.
В) Векторный полинг.
#.3.3. Прямой доступ к памяти.
#.4. Архитектура типового микропроцессора
#.5. Алгоритм работы типового микропроцессора
|
#.6. Распределение памяти типового микропроцессора
#.7. Микроконтроллеры
Микроконтроллеры объединяют на одном кристалле блоки процессора, памяти и типичных периферийных устройств:
- универсальные цифровые порты, которые можно настраивать как на ввод, так и на вывод;
- различные интерфейсы ввода-вывода (UART, I²C, SPI, CAN, USB, Ethernet и др.);
- аналого-цифровые и цифро-аналоговые преобразователи;
- компараторы;
- широтно-импульсные модуляторы;
- таймеры;
- контроллеры бесколлекторных двигателей;
- контроллеры дисплеев и клавиатур;
- радиочастотные приемники и передатчики;
- встроенный тактовый генератор;
- таймер реального времени;
- сторожевой таймер;
и др.
#. ПРЕДСТАВЛЕНИЕ ДАННЫХ В МИКРОПРОЦЕССОРАХ
#.1. Форматы записи чисел
натуральные числа = 0…(2N-1).
целые числа = (-2N-1)… (2N-1-1).
У всех чисел положение точки должно быть одинаковым.
Показательная форма записи.
#.2. Запись отрицательных чисел
GДОП= GОБР+1.
#.3. Формирование признаков выполнения арифметических операций
- знак результата (S)
- равенство нулю (Z)
- переполнение сетки (С)
- арифметическое переполнение (V)
-
2=00102 -2=11102 (0010→1101→1110)
5=01012 -5=10112 (0101→1010→1011)
7=01112 -7=10012 (0111→1000→1001)
9=10012 -9 →выходит за область допустимых значений (-8…7)
(5+9)=14 (7+9)=16 (5+(-7))=-2 (-2+(-5))=-7 (-5+(-7))=-12
0101 0111 0 101 1 110 1 011
100110011 0011 0111 001
1110 →14 1 0000 1 110 →-2 1 1 001→-7 10 100
← ←← ←
#.4. Приёмы работы с числами, представленными в показательной форме
В= 6,0=0,60∙101 060 –мантисса, 1 –порядок.
А=10,5=0,105∙102 0105 –мантисса, 2 –порядок,
1 > m ≥ 0,1.
А=0001010,1=0,1010100∙(2+4)
В=0000110,0=0,1100000∙(2+3)
-А=-10,510=1,1010100∙(2+4)
-В= -610=1,1100000∙(2+3).
#.4.1. Нормирование числа
00111101∙(2-1)= 01111010∙(2-2)
00001100∙(2+0)= 00000011∙(2+2)
#.4.2. Сложение (вычитание) чисел
A+B= 0,1010100∙(2+4)+ 0,1100000∙(2+3)=
= 0,1010100∙(2+4)+ 0,0110000∙(2+4)=
=1,0000100∙(2+4) - переполнение
мантиссы слагаемых надо уменьшить вдвое:
A+B= 0,1010100∙(2+4)+ 0,1100000∙(2+3)=
= 0,0101010∙(2+5)+ 0,0011000∙(2+5)=
=0,1000010∙(2+5) (0,51625∙32=16,5)
−В=1,1100000∙(2+3)→ 1,0100000∙(2+3)
А+(−В)= 0,1010100∙(2+4)+ 1,0100000∙(2+3)=
= 0,1010100∙(2+4)+ 1,1010000∙(2+4)=
=1 0,0100100∙(2+4) (0,28125∙16=4,5)
сложение уменьшаемого с дополнением вычитаемого:
А−В=А+(−В)
#.4.3. Умножение чисел
А∙В=С=10,5∙6=63
01010100 ∙(2+4)
×01100000 ∙(2+3)
01010100______
00,01111110000000 ∙(2+7) (0,4921875∙2+7=63)
Нормирование - сдвиг влево и отбрасывание восьми младших разрядов.
С=00,01111110000000∙(2+7)≈ 0,01111110∙(2+7)
При округлении после сдвига к мантиссе нужно прибавить число с единицей в старшем отбрасываемом разряде:
0000 0000 1000 0000.
#.4.4. Умножение чисел со знаком
(±A)·(±B)=(±C)
(SA|A|)·(SB|B|)=(Sc|C|)
|A|·|B|=|C|
SA=SB Þ Sc= +
SA¹SB Þ Sc= -
#. МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА F2MC-16LX (Fujitsu)
16-разрядные МК принстонской архитектуры. Производительность до 16 MIPS (млн. опер. в сек.).
Различаются
- максимальной внутренней частотой (8..24 МГц),
- типом ПЗУ (масочные ROM, PROM, EPROM),
- объёмом ПЗУ (24..384 Кбайт),
- объёмом ОЗУ (1..16 Кбайт)
- сочетанием > 15 типов периферийных устройств.
МК содержат 16-разрядное ядро, 32-разрядный аккумулятор, 24-разрядная шина адреса (16 Мбайт). Адресное пространство – 256 банков ´64 Кбайта.
#.1. Микроконтроллер MB90F591G
Flash-память - 384 Кбайта. Статическое ОЗУ - 8 Кбайтов.
Clock Controller -синтезатор тактовых частот.
UART -последовательный универсальный асинхронный приёмо-передатчик,
SPI -последовательный периферийный интерфейс,
ADC -8-канальный 10-битный аналого-цифровой преобразователь,
Reload Timer -2-канальный перезагружаемый 16-битный таймер,
Watch Timer -сторожевой таймер,
IO Timer -16-битный таймер ввода/вывода,
Input Capture -блок захвата внешних событий (6 каналов),
Output Comparator -выходой компаратор (6 каналов),
PPG -программируемый генератор импульсов,
CAN -последовательный интерфейс по стандарту CAN,
SMC -контроллер шагового двигателя (4 канала),
Sound Generator -звуковой генератор,
External Interrupt -контроллер внешних запросов прерывания (8 каналов),
General purpose I/O -порты ввода/вывода общего назначения (9 восьми- и 1 шестиразрядный порт с доступом к отдельным битам).
Потребляемый ток – до 80 мА.
#.2. Процессор микроконтроллера
16-разрядное АЛУ и 32-разрядный аккумулятор. Частота машинных тактов - 16 МГц (время выполнения команды ³ 62,5 нс).
#.2.1. Пространство памяти
#.2.2. Регистры специального назначения
а) Аккумулятор (А) – 32 разряда (AH, AL).
б) Регистр состояния процессора (PS)
Регистр кода состояния CCR:
ü С –флаг переполнения разрядной сетки;
ü V –флаг арифметического переполнения;
ü Z –флаг нулевого результата выполненной операции;
ü N –флаг отрицательного результата операции;
ü T –флаг выхода единицы за разрядную сетку при выполнении операций сдвига;
ü S –бит выбора стека (системный или пользовательский);
ü I –бит запрещения прерываний (0 –прерывания запрещены);
Регистр указателя банка регистров общего назначения RP
Маска уровня текущего прерывания ILM.
а) Счётчик команд (РС) – 16 разрядов
в) Регистры указателей банков:
- Регистр указателя банка программ -PCB
- Регистр указателя банка данных -DTB
- Регистр указателя банка дополнит. данных -ADB
- Регистр указателя банка системного стека -SSB
- Регистр указателя банка стека пользователя -USB.
Адресация памяти программ.
Адресация памяти данных.
Адресация стека.
#.2.3. Регистры общего назначения
В памяти организованы 32 банка регистров общего назначения.
Адрес банка 000180Н+(RP)∙10H, где (RP) – указатель банка регистров.
Например, двадцатый (RP=14Н) банк занимает область памяти с начальным адресом 0002С0Н.
#. Система команд микроконтроллера
Форматы данных: бит, байт, слово, двойное слово:
- 8 разрядов: байт (0…255)
короткое целое (-128…127) - 16 разрядов: слово (0…65535)
целое (-32768…32767) - 32 разряда: двойное слово (0…4 294 967 295)
длинное целое (-2 147 483 648…2 147 483 647)
Отрицательные числа – в дополнительном коде.
#.1. Способы адресации
Операнды могут располагаться:
· в регистрах общего назначения,
· в регистрах периферийных устройств,
· в специализированных регистрах микропроцессора,
· в ячейках памяти (ОЗУ и ПЗУ),
· в коде команды.
·
а) Прямая регистровая адресация
Пример: R0, RW7, RL3, A, PS – встроенные имена.
б) Косвенная регистровая –операнд находится в ячейке памяти.
ADDR=(DTB|ADB|SSB|USB),(RW0…RW3):
RW0, RW1 →DTB,
RW2 →ADB,
RW3 →SSB или USB.
Пример: @RW1.
в) Косвенная регистровая с пост-инкрементом. ADDR - как п.б); после выбора операнда - RW инкрементируется.
Пример: @RW1+.
г)
д) Косвенная регистровая со смещением.
ADDR=(DTB|ADB|SSB|USB),(RW0…RW3+слово):
Пример: @RW1+25.
е) Косвенная регистровая с индексом.
ADDR=(DTB),(RW0…RW1+ RW7):
Пример: @RW1+RW7.
ж) Косвенная по счетчику команд со смещением
Пример: @РС+1234
з) Прямая.
ü короткая прямая
ADDR=(DTB),( DPR), addr8.
ü прямая
ADDR=(DTB),( DPR), addr16.
ü прямая в области ввода/вывода (000000…0000FF)
ADDR=(00),(00), addr8
Пример: I:123.
прямая адресация бита
Пример: I:16:3.
и) Непосредственная
Пример: #127.
#.2. Типы команд
В зависимости от размера операндов (8, 16, 32 бита) команды подразделяются на одно- , двух – , четырёхбайтные. Наборы одно- и двухбайтных команд почти полностью совпадают. Четырёхбайтные команды поддерживают основные операции, но их разнообразие значительно меньше.
Приведём выборку команд, предназначенных, в основном, для работы с байтами и словами.
А) команды пересылок данных:
MOV d8, s8 s8→d8
MOVW d16, s16 s16→d16
MOVL d32, s32 s32→d32
POPW d16 @(USB,USP)- или @(SSB,SSP)- →d16
PUSHW d16 d16 →@(+USB,USP) или @(+SSB,SSP)
SWAP ALH↔ALL
SWAW AL↔AH
XCH d8, s8 d8 ↔s8
XCHW d16, s16 d16 ↔s16
EXT ALH←FF если AL:7=1, иначе - ALH←00
EXTW AH←FFFF если AL:15=1, иначе - AH←0000
Б) арифметические команды сложения и вычитания
ADD d8, s8 d8+s8→d8
ADD A, 0E021h
{A=xxxxA046; 0E021h=AB}Þ A=xxxx00F1
ADDW d16, s16 d16+s16→d16
ADDW @RW0+1, A
{A=xxxxCD04; RW0=E2A4; E2A5; E2A6,5=315D}Þ E2A6,5=FE61
ADDC A, s8 A+s8+C→A
ADDC A, 0E035h
{A=xxxxA046; 0E035h=D5; C=1} Þ A= xxxx001С
ADDCW A, s16 A+s16+C→A
ADDCW A, @RW0+
{A=xxxx2068; RW0=E024; E024=52; E025=89;C=1}ÞA=xxxxA9BB, RW0=E026
SUB d8, s8 d8-s8→d8
SUB A, #22h
{A=xxxx4901}Þ A=xxxx00DF
SUBC A, s8 A ← A-s8-C
SUBC A, R1
{A=xxxx0035; R1=54; C=0} Þ A: xxxx00E1
SUBW d16, s16 d16-s16→d16
SUBW @RW0+, A
{A=xxxx3104; RW0=E2A4h; E2A5,4h=5DAB}Þ E2A5,4h=2CA7
SUBCW A, s16 A ← A-s16-C
SUBCW A, 0E024h
{A=xxxx7558; E024h=5B; E025h=A9;C=1}ÞA=xxxxCBFC
В) арифметические команды умножения и деления
MUL A, s8 AL ←ALL×s8
MUL A, R7
{A=xxxx 0085; R7=A5}Þ A=xxxx 2BB9
MULU A, s8 AL ←ALL×s8
MULU A, R7
{A=xxxx 0085; R7=A5}Þ A=xxxx 55B9
DIV A, s8 ALL ←AL/s8; s8 ←AL mod s8
DIV A, R0
{A=1357; R0=AAh}Þ A=00C7; R0=31
DIVU A, s8 ALL ←AL/s8; s8 ←AL mod s8
DIVU A, ААh
{A=1357; R0=AAh }Þ A=001D; R0=15
MULW A A ←AH×AL
MULW A, s16 A ←AL×s16
MULW A
{A=AD01 05ED}Þ A=FE14 2EED
MULUW A A ←AH×AL
MULUW A, s16 A ←AL×s16
MULUW A
{A=AD01 05ED}Þ A=0401 2EED
DIVW A, s16 AL ←A/s16; s16 ←A mod s16
DIVW A, 7254h
{A=0000 1357; 7255h…7254=00 AA}Þ A=0000 001D; 7255h…7254h=00 15
DIVUW A, s16 AL ←A/s16; s16 ←A mod s16
DIVUW A, 7254h
{A=0000 1357; 7255h…7254=00 AA}Þ A=0000 001D; 7255h…7254=00 15
В) команды инкремента и декремента
INC s8 s8+1→s8
DEC s8 s8-1→s8
INCW s16 s16+1→s16
DECW s16 s16-1→s16
INCL s32 s32+1→s32
DECL s32 s32-1→s32
В) логические команды:
AND d8, s8 (d8 Λ s8)→d8
NOT s8 (ıs8) →s8
OR d8, s8 (d8 V s8)→d8
XOR d8, s8 (d8 Å s8)→d8
NEG s8 -s8→s8
ANDW d16, s16 (d16 Λ s16)→d16
NOTW s16 (ıs16) →s16
ORW d16, s16 (d16 V s16)→d16
XORW d16, s16 (d16 Å s16)→d16
NEGW s16 -s16→s16
Г) сравнение:
CMP A, s8 (A-s8) →флаги в CCR
CMPW A, s16 (A-s16) →флаги в CCR
Д) сдвиги:
ASR A, R0 R0 –число сдвигов. Если «1»→С, то «1»→T
LSR A, R0
LSL A, R0
RORC d8
ROLC d8
Е) битовые операции:
CLB d8:db сброс бита
SETB d8:db установка бита
WBTC d8:db ожидание сброса бита
WBTS d8:db ожидание установки бита
Ж) передача управления:
JMP M переход на метку «М»
BBC d8:db, M переход на метку «М», если бит сброшен
BBS d8:db, M переход на метку «М», если бит установлен
переходы на метку «М» по флагам в CCR (по результату сравнения)
BEQ M d=s
BNE M d≠s
BLO M d<s –сравнение без знака
BHS M d≥s –сравнение без знака
BLT M d<s –сравнение со знаком
BGE M d≥s –сравнение со знаком
CBNE s8, #d8, M если s8≠d8 –переход на метку М
DBNZ d8, M (d8-1)→d8, и если d8≠0 –переход на метку М
CALL M переход на подпрограмму М
RET возврат из подпрограммы
RETI возврат из процедуры прерывания
#.3. ОСНОВНЫЕ ПРИЁМЫ ПРОГРАММИРОВАНИЯ
А) Передача параметров в подпрограмму
- передача данные через стек, с использованием команд PUSH и POP.
- передача через банк регистров общего назначения.
- директивы .EXPORT и .IMPORT.
Б) Операции над целыми числами повышенной разрядности
1) Сложение
а) Сложить младшие байты
б) Сложить старшие байты и бит переноса С
2) Вычитание
а) Получить дополнительный код вычитаемого
б) Выполнить сложение операндов
3) Умножение
а) Умножить А0×В0 →L1L0
б) Умножить А1×В0 →E2E1
в) Умножить А0×В1 →F2F1
г) Умножить А1×В1 →D3D2
д) Сложить L1+E1 →n; c→S
е) Сложить F1+n →N; c+S→S
ж) Сложить Е2+S →Е2; с→S
з) Сложить E2+F2→m; c+S→S
и) Сложить D2+m →M; c+S→S
к) Сложить D3+S →Н
При умножении чисел со знаком, перемножаются модули сомножителей. Если знаки сомножителей различны, в качестве результата берётся дополнительный код произведения.
4) Деление
В командах деления делимое размещается в регистре удвоенной длины 2N. Если при делении частное превышает размер регистра-приёмника N, команда деления не выполняется: 03FA : 02 =01FD
Для исключения подобных случаев, делимое разделяется на две части.
5) Извлечение квадратного корня
Для вычисления целой части квадратного корня числа N, можно применить итерационный метод: квадратный корень из целого числа равен количеству последовательных нечётных чисел, сумма которых равна числу N с недостатком или избытком.
В) Организация разветвляющихся вычислительных процессов
1) Выполнение группы команд при определённых условиях
Пример: Вычислить модуль числа в регистре R0.
MOV A, R0
CMP A, #0
BP m1
NEG R0
m1: NOP
2) Многократное выполнение группы команд (цикл)
а) с фиксированным числом проходов
Пример: Вычислить четвёртую степень содержимого регистра RW0
MOV R0, #4 MOV R0, #0
MOVW A, #1 MOVW A, #1
m1: MULW A, RW0 m1: MULW A, RW0
DBNZ R0, m1 INC R0
MOVW RW0, A CBNE R0, #4, m1
MOVW RW0, A
б) с выходом из цикла по условию
Пример: Сдвигать содержимое RW0 влево, пока RW0:15≠1 и определить число сдвигов
MOV R1, #0
MOVW A, RW0
m2: CMPW A, #0
BN m1
LSLW A
INC R1
JMP m2
m1: NOP
Г) Табличные функции
Табличные функции являются структурами данных, содержащими информацию (данные или адреса), имеющую определённую связь с известным значением. Например, телефонный справочник является табличной функцией: по известной фамилии можно найти соответствующий номер телефона.
а) Табличные функции как замена формул на примере Sin(X)
Для точного вычисления синуса угла можно использовать разложение в ряд
Если требуется иметь значение синуса угла в пределах 0о…360о с шагом в один грудус, то можно составить таблицу значений синусов для углов первого квадранта 0о…90о и вместо вычислений по формуле просто выбирать из таблицы готовый результат. При этом нужно иметь в виду соотношения
х=0о…90о sin(x)
х=91о…180о sin(180o-x)
х=181о…270о -sin(x-180o)
x=271o…360o -sin(360o-x)
б) Табличное преобразование кодов
С помощью таблиц можно изменить формат представления данных, сформировать код для вывода нужного символа на дисплей или принтер, получить код для управления периферийным устройством и т.п.
в) Таблицы переходов
Вместо значений данных таблицы могут содержать адреса. Например, процедура обработки прерывания может использовать таблицу переходов для выбора разных подпрограммы в зависимости от состояния устройства.