Автор работы: Пользователь скрыл имя, 03 Ноября 2013 в 21:46, курсовая работа
В заданной РЭС осуществить управляющую функцию по одному из заданных параметров с помощью контроллера, построенного на МПК, разработать электрическую принципиальную схему проектируемого контроллера и составить программу (драйвер) реализуемую управляющую функцию на языке Ассемблер заданного МПК.
В каждом конкретном случае разработчик должен определить, какая часть названных средств и в каком объеме может удовлетворять поставленной задаче. Наиболее распространенной и общей для одноплатных микроконтроллеров является структура с тремя шинами, представленная на рис. 1.1. Шиной системы называют физическую группу линий передачи сигналов, имеющих схожие функции в рамках системы.
Схема будет выглядеть так
Рис. 2.11
Синтезируем схему для управления ПЗУ1. Составим таблицу истинности и карту Карно, где переменные будут у1, А0, .
y1 |
А0 |
ПЗУ1 |
ПЗУ1=А0Úу1 | |
0 0 0 0 1 1 1 1 |
0 0 1 1 0 0 1 1 |
0 1 0 1 0 1 0 1 |
0 0 1 1 1 1 1 1 |
Рис. 2.12 |
Синтезируем схему для управления ПЗУ2. Составим таблицу истинности и карту Карно.
y1 |
А0 |
ПЗУ2 |
ПЗУ2= | |
0 0 0 0 1 1 1 1 |
0 0 1 1 0 0 1 1 |
0 1 0 1 0 1 0 1 |
0 1 0 1 1 1 1 1 |
Рис.2.13 |
Селектор адреса портов ввода/вывода. Построение селектора адреса портов не отличается от построения селекторов адреса памяти. В них тоже используются дешифраторы. Адресное пространство портов может занимать 256 адресов (при 8 разрядном адресе) или 65536 адресов (при 16 разрядном адресе). Все адресное пространство разбивается на блоки (окна), в которые подключаются порты ввода/вывода. Минимальный размер окна ¾ 4 адреса (практически все периферийные БИС требуют 4 адреса).
При делении адресного пространства на окна используются старшие адреса А15...А9 (А7...А3). Также как и селектор адреса памяти, селектор адреса портов ввода/вывода должен срабатывать только при обращении к портам. Для этого в качестве сигналов синхронизации можно использовать сигналы . На рис. 17 показана схема селектора адреса портов разделяющее адресное пространство 300H...31FH на 16 окон по 2 адреса. Если в схеме на рис. 16 дешифратор 155ИД3 заменить на 555ИД7 то получим 8 окон по 4 адреса.
Рис. 2.14
На схеме дешифратор 555ИД7 делит зону 2К адресов на 8 окон по 256 адресов. Дешифратор К155ИД3 делит зону 300H...31FH на 16 окон по 2 адреса. Генератор 555АГ3 вырабатывает сигнал для синхронизации работы медленнодействующего порта с микропроцессором.
Если селектор адреса порта получается слишком сложным, то необходимо использовать микросхемы ПЗУ или программируемые логические матрицы (ПЛМ).
В этом случае селектируемый адрес зависит не от схемотехнических решений, а от прошивки ПЗУ или ПЛМ. Такой подход обеспечивает простую реализацию выбора нескольких адресов. Изменить селектируемый адрес (или зону адресов) можно заменой ПЗУ (ПЛМ).
Рис. 2.15
Возможно также комбинирование ПЗУ (ПЛМ) с другими микросхемами, например, с дешифраторами или компараторами кодов. Если необходимо обрабатывать больше разрядов адреса, чем имеется адресных входов у микросхемы ПЗУ, то можно каскадировать две или более микросхем.
При обработке радиотехнической информации большой объем занимает фильтрация.
Фильтр ¾ устройство, с минимальным ослаблением передающее колебания частот, которые попадают в область полосы пропускания.
На рис. 3.1 показана схема цифрового фильтра 2-го порядка, на рис. 3.2 алгоритм обработки сигнала в нем. Нумерация точек в схеме цифрового фильтра соответствует нумерации переменных yi, хранящих формируемые в этих точках значения, т. е. y1, y2, y3, y4 (и, следовательно, ячейки памяти, выделенные для хранения значений этих переменных) имеют значения, совпадающие со значениями величин в точках 1, 2, 3, 4 схемы цифрового фильтра.
Рис. 3.1
Блоки 1, 2 схемы алгоритма значения у2, у1, сформированные в предыдущем повторении цикла, передают соответственно в y3, y2 и отражают, таким образом, задержку, предусмотренную в схеме цифрового фильтра между точками 3 и 2, 2 и 1. Ячейка у5 используется как вспомогательная ячейка для формирования произведений.
Из 14 содержащихся в схеме алгоритма блоков пять блоков (блоки 4, 6, 8, 10, 12) предусматривают выполнение операции умножения, и основное время, затрачиваемое на исполнение алгоритма, связано именно c выполнением этих блоков. Возможно ускорение исполнения алгоритма, если предусмотреть параллельное выполнение операций умножения, т.е. пять предусмотренных в алгоритме операций умножения выполнять одновременно, используя, пять различных устройств умножения. Так как время, затрачиваемое на исполнение других блоков в схеме алгоритма относительно невелико, то при параллельном выполнении умножения примерно в пять раз сократится время однократного исполнения цикла алгоритма и, следовательно, в пять раз возрастут быстродействие цифрового фильтра и предельная широкополосность обрабатываемых фильтром сигналов.
Рис. 3.2
;*****************************
; Программа рекурсивного
;*****************************
TITLE Макрокоманда сдвига SHIFT@
SHIFT@ MACRO var1, var2
lea di,var1
lea si,var2
mov cx,2
rep movsw
ENDM
;-----------------------------
SSEG SEGMENT PARA STACK 'STACK'
db 256 dup (0)
SSEG ENDS
;-----------------------------
DSEG SEGMENT PARA PUBLIC 'DATA'
xn dw 1 dup (0) ; Входной сигнал
Xnf dd 1 dup (0) ; Входной сигнал формат ПЗ
ynt dd 1 dup (0) ; Выходной сигнал
a0 dd 1 dup (?) ;
a1 dd 1 dup (?) ;
a2 dd 1 dup (?);
b1 dd 1 dup (?) ;
b2 dd 1 dup (?) ;
y1 dd 1 dup (0)
y2 dd 1 dup (0)
y3 dd 1 dup (0)
y4 dd 1 dup (0)
y5 dd 1 dup (0)
SIGN db 1 dup (0)
SIGL db 1 dup (0)
DSEG ENDS
;-----------------------------
CSEG SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CSEG, DS:DSEG, ES:DSEG, SS: SSEG
;-----------------------------
;----- Основная программа ----------
LINK2 PROC FAR ; Главная подпрограмма
mov ax,DSEG
mov ds,ax
mov es,ax
start: push cx
SHIFT@ y3, y2 ; y3 = y2
SHIFT@ y2, y1 ; y2 = y1
mov ax,0
in al,port51
mov xn,ax
mov bl,0
mov si,xn
call ITOF ; преобразование целого xn в формат ПЗ, результат в BX:SI
mov Xnf,si
mov Xnf+2,bx
lea di,y1 ; ü
lea si,Хnf ; ô
add si,index ;ý
mov cx,2 ;ô y1 = x(nT)
rep movsw ;þ
SHIFT@ y5, y3 ; y5 = y3
lea si,y5
lea di,b2
call MULT ; y5 = y5*b2
lea si,y1
lea di,y5
call FSUMMA ; y1 = y1+y5
SHIFT@ y5, y2
lea si,y5
lea di,b1
call MULT ; y5 = y5*b1
lea si,y1
lea di,y5
call FSUMMA ; y1 = y1+y5
;-----------------------------
SHIFT@ y5, y1
lea si,y5
lea di,a0
call MULT ; y5 = y5*a0
SHIFT@ y4, y5 ; y4 = y5
SHIFT@ y5, y2
lea si,y5
lea di,a1
call MULT ; y5 = y5*a1
lea si,y4
lea di,y5
call FSUMMA ; y4 = y4+y5
SHIFT@ y5, y3
lea si,y5
lea di,a2
call MULT ; y5 = y5*a2
lea si,y4
lea di,y5
call FSUMMA ; y4 = y4+y5
lea di,ynt ; ü
lea si,y4 ; ô
; add di,index ;ý
mov cx,2 ; | y(nT) = y4
rep movsw ; þ
;
jmp start
;=============================
MULT PROC FAR
; Первый операнд X находится в регистрах BX:SI,
; второй Y в регистрах DX:DI, произведение
; возвращается в регистрах BX:SI.
; При возникновении особого случая CF=1
;
; lea si,X ; в нашем случае не используются
; lea di,Y ; в нашем случае не используются
;
mov bx,[si+2]
mov si,[si]
mov dx,[di+2]
mov di,[di]
MULF: ; Проверить операнды на нуль
mov ax,bx ; Проверить на 0
or ax,si ; первый операнд
jz @@M1 ; Произведение равно 0
mov ax,dx ; Проверить на 0
or ax,di ; второй операнд
jnz MULF1 ; Операнды не равны 0
xchg bx,dx ; Произведение равно 0
xchg si,di
@@M1: jmp MULF8
;
; Операнды не нулевые, можно умножать.
; Образовать знак произведения, восстановить мантиссы.
MULF1: mov ch,bh ; Знак произведения
xor ch,dh ; в регистре CH
shl bx,1 ; Восстановить скрытый бит
stc ; мантиссы первого операнда
rcr bl,1
shl dx,1 ; Восстановить скрытый бит
stc ; мантиссы второго операнда
rcr dl,1
; Сложить порядки.
mov al,bh ; Сложить в AL
add al,dh ; смещенные порядки
jc MULF2 ; Возник перенос
sub al,127 ; Вычесть смещение
jnc MULF3 ; Можно умножать
jmp MULF8 ; Возникло антипереполнение
MULF2: add al,129 ; Учесть потерю 256 из-за переноса
jnc MULF3 ; Можно умножать
jmp MULF8 ; Возникло переполнение
; Можно умножать мантиссы.
MULF3: mov bh,al ; Порядок произведения в BH
xor dh,dh ; Подготовить место
xor ax,ax ; для произведения
mov cl,dl ; Освободить регистр DX
; Здесь начинается цикл
MULF4: mov ax,si ; Умножить младшие
mul di ; слова мантисс
mov WORD PTR TEMP,dx ; Сохранить старшую часть
mov al,bl
mov ah,0
mul di
add WORD PTR TEMP,ax ; Учесть результат
jnc NEXT ; в полном произведении
inc dx
NEXT: mov WORD PTR TEMP+2,dx
mov al,cl ; Умножить следующие
mov ah,0 ; части мантисс
mul si
add WORD PTR TEMP,ax
jnc NEXT1
inc dx
NEXT1: add dx,WORD PTR TEMP+2
mov al,bl ; Умножить старшие
mul cl ; байты мантисс
add ax,dx ; Образовать полное произведение
mov bl,ah ; и разместить его
mov ah,al ; в регистрах BL:SI
mov al,BYTE PTR TEMP+1
mov si,ax
; Проверить нарушение нормализации влево.
MULF6: or bl,bl ; Проверить старший бит мантиссы
jns MULF7 ; Нарушения нормализации нет
inc bh ; Увеличить порядок на 1
stc ; CF=1
jz MULF8 ; Возникло переполнение
jmp MULFA ; Переполнения нет
MULF7: shl si,1 ; Сдвинуть мантиссу
rcl bl,1 ; влево на один бит
; Формирование результата
MULFA: add ch,ch ; Знак во флаге переноса
rcr bh,1 ; Знак числа на месте
rcr ch,1 ; Младший бит порядка в CH
or ch,7fh ; Образовать маску
and bl,ch ; Образовать 2-й байт произведения
lea di,Z
mov [di],si
mov [di+2],bx
MULF8: ret
MULT ENDP
;=============================
; подпрограмма сложения чисел в формате ПЗ
;=============================
FSUMMA PROC FAR
; 1. Сравнение порядков для определения большего
@S:
mov cl,[si+2] ; Занесение в регистр CX
mov ch,[si+3] ; двух старших байтов числа X в ФПЗ.
mov dl,[di+2] ; Занесение в регистр DX
mov dh,[di+3] ; двух старших байтов числа Y в ФПЗ.
; ДЛЯ ВЫЧИТАНИЯ НАДО В СТРОКЕ 30 УДАЛИТЬ
;ТОЧКУ С ЗАПЯТОЙ
; XOR DH,80H
;
rol cx,1 ; Занесение порядка числа X в CH
ror cl,1 ; (и знака в бит 23).
rol dx,1 ; Занесение порядка числа Y в DH
ror dl,1 ; (и знака в бит 23).
;
cmp ch,dh ; Сравнение порядков X и Y
js @L1 ; Переход, если (CH) < (DH) (Px < Py).
;
; 2. Нахождение разности порядков
; Примечание. Из большего порядка вычитается меньший,
; чтобы разность порядков была неотрицательной
;
; 2.1. Порядок X не меньше порядка Y (Px ³ Py) (CH)³(DH).
mov ah,ch ; Нахождение разности порядков или другими