Смекни!
smekni.com

Вычислительная система обработки данных в реальном времени (стр. 3 из 4)

or Cl, 00000001b ; SW < – UF

mov Al, Ch

and Ax, 0001h ; результат < – UF

jmp @@LABEL7

@@LABEL3:

xor Ax, Ax ; результатом будет 0

mov Dl, Cl ; Dl < – SW

mov Dh, Cl ; Dh < – SW

and Dx, 0001100001100000b ; замаскируем по операндам

cmp Dl, 01000000b ; X(i)==0?

je @@LABEL4 ; да – на выход

cmp Dh, 00011000b ; X (i‑1)==бесконечность?

je @@LABEL4 ; да – на выход

test Ch, 00001000b ; результат = бесконечность

jnz @@LABEL4

mov Ax, 0FFFFh ; результат < – максимум

@@LABEL4:

cmp Dl, 01100000b ; X(i)==бесконечность?

jne @@LABEL5

or Cl, 00000010b ; SW < – OF

@@LABEL5:

cmp Dh, 00010000b ; X (i‑1)==0?

jne @@LABEL6

or Cl, 00000100b ; SW < – div0

@@LABEL6:

cmp Dh, 00011000b ; X (i‑1)==бесконечность?

jne @@LABEL7

or Cl, 00000001b ; SW < – UF

@@LABEL7:

Полный текст программы работы процессора с учетом самотестирования, настройки интерфейса и вычисления функции приведен в приложении А.

Размер всей программы составляет 226 байт, что позволяет ограничиться размером ПЗУ в 1 Кбайт (512К´16). Организовать такую память можно путем параллельного подключения двух микросхем КМ1608РТ2 [5]. Более того, данная программа не требует сохранения промежуточных результатов в памяти, что позволяет исключить из состава устройства ОЗУ.

Разработка функциональной схемы УВ

Рассмотрим функциональную схему УВ раздельно по ее блокам.

Блок АЦП

Функциональная схема данного блока является достаточно простой. Она представляет собой набор АЦП, цифровые выходы которых подключены к порту A блока интерфейса через специальный разъем.

Блок цифровой обработки

Блок цифровой обработки состоит из: микропроцессора, буферных регистров, шинных формирователей, генератора тактовых импульсов, микросхем памяти и дешифратора управляющих сигналов, объединенных для организации однопроцессорной системы [7].

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

Элементы соединены для организации однопроцессорной системы с памятью и портами ввода-вывода.

Блок интерфейса

Блок интерфейса состоит из: микросхемы интерфейса, шинных формирователей и буферных регистров (для подключения к системной шине), логики управления системной шиной, дешифратора системного адреса и логики управления готовностью и чтением результата.

Логика управления системной шиной заключается в выдаче сигнала IO16, информирующего о передаче 16‑разрядных данных.

Дешифратор системного адреса необходим для определения факта обращения к УВ со стороны ПЭВМ. Для обращения к проектируемому устройству зарезервированы два адреса, на которые оно будет откликаться: 320h – для чтения результата и 322h – для чтения слова состояния и для записи управляющего слова.

Логика управления готовностью и чтением результата предназначена для исключения ситуаций, когда процессор подготовил новые данные, а предыдущие еще не были считаны. Данная операция осуществляется путем подачи на вход TEST процессора сигнала неготовности на время, пока результат не будет считан. Процессор ждет разрешающего уровня на данном входе, а затем приступает к формированию следующего результата.

Функциональная схема проектируемого УВ приведена на отдельном чертеже К2.006.223.Э2.

Разработка принципиальной схемы УВ

Блок АЦП

Блок АЦП конструктивно разрабатывается как отдельный модуль, подключаемый к устройству через специальный разъем типа RS‑232.

Выбранный тип микросхемы АЦП К1107ПВ4 имеет ряд особенностей. Выходные уровни данной микросхемы соответствуют ЭСЛ логике, что требует наличия преобразователей уровня для подключения к устройству. В качестве преобразователей уровня используется микросхема К500ПУ125.

Кроме того, микросхема АЦП имеет напряжение питания –5,2 В, что требует подключения стабилизатора напряжения. В данном случае это стабилизатор напряжения отрицательной полярности К142ЕН10. С помощью такого же элемента формируется напряжение –2 В, необходимое для подключения цифровых выводов микросхем через сопротивления 100 Ом.

Регулировка напряжения гистерезиса отсутствует в связи с тем, работа микросхем АЦП будет производиться на малых частотах (5 МГц).

Входное напряжение подается в модуль через специальный разъем типа 3.5 mm Mono Telephone plug. Аналоговая земля соединяется с цифровой землей.

Схема электрическая принципиальная блока АЦП приведена на отдельном чертеже К2.006.223.Э3.2.

Блок цифровой обработки

Основным элементом данного блока является микропроцессор К1810ВМ86, на вход MN/MX которого подается напряжение высокого уровня, что соответствует минимальному режиму. Входы CLK, RESET и READY подключены к ГТИ. Выходы BHE, AD0‑AD15 демультиплексируются с помощью буферных регистров и шинных формирователей и образуют шину адреса и шину данных. Выходы M/IO, WR и RD используются для формирования сигналов управления памятью и внешними устройствами (портами). Выходы NMI, INT, INTA, HOLD и HLDA не используются за ненадобностью.

Генератор тактовых импульсов К1810ГФ84 формирует собственные синхроимпульсы, для чего к его входам X1 и X2 подключен кварцевый резонатор, а к входу TANK – RC‑цепочка. Сигнал RES на вход ГТИ подается с системной шины. На вход RDY подается сигнал от схемы управления системной шиной (см. блок интерфейса), предназначенный для запрещения работы на время обращения к УВ со стороны ПЭВМ. Это необходимо для избежания коллизий одновременного доступа к портам ввода-вывода.

Для организации памяти используются микросхемы КМ1608РТ2. В процессе работы процессор будет обращаться лишь к самому старшему 1 Кбайту памяти и к небольшому числу портов. Данный факт позволяет в рамках курсового проекта сократить разрядность шины адреса до 10 при обращении к памяти и до 4 при обращении к портам, что позволяет заметно сократить аппаратные затраты и уменьшить сложность устройства.

Блок интерфейса

Микросхема параллельного интерфейса К580ВВ55 позволяет подключать к ней до трех 8‑разрядных внешних устройств (портов). Для организации 16‑разрядных портов параллельно устанавливаются две такие микросхемы. К порту A обеих микросхем подключается блок АЦП. Порт B подключен к системной шине и используется для выдачи результат. Порт C первой микросхемы используется для выдачи на системную шину слова состояния, а порт C второй микросхемы используется для приема слова управления.

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

Логика управления готовностью и чтением результата предназначена для исключения ситуаций, когда процессор подготовил новые данные, а предыдущие еще не были считаны. Данная операция осуществляется путем подачи на вход TEST процессора сигнала неготовности на время, пока результат не будет считан. Процессор ждет разрешающего уровня на данном входе, а затем приступает к формированию следующего результата. Аппаратно логика реализована на одном D‑триггере, устанавливающимся в 1 при записи результата в порт и сбрасывающимся в 0 при чтении из порта. Выход данного триггера соединен с входом TEST процессора.

Логика управления системной шиной заключается в выдаче сигнала IO16, информирующего о передаче 16‑разрядных данных. Также, данная логика формирует управляющие сигналы, отпирающие необходимые буферы на входах и выходах портов, а также сигнал RDY на ГТИ, запрещающий вырабатывать синхроимпульсу на время обращения со стороны системной шины.

Факт обращения со стороны системной шины определяется с помощью дешифратора системного адреса. Для обращения к проектируемому устройству зарезервированы два адреса, на которые оно будет откликаться: 320h – для чтения результата и 322h – для чтения слова состояния и для записи управляющего слова.

Принципиальная схема проектируемого устройства приведена на чертеже К2.006.223.Э3.1.

Разработка программного обеспечения УВ

При разработке программного обеспечения УВ следует читывать следующие детали. Устройство реагирует только на два адреса: 320h – данные и 322h – управляющее слово (для записи) и слово состояния (для чтения). В связи с особенностями построения УВ при работе со словами управления и состояния необходимо использовать младший байт данных системной шины.

Старший бит слова состояния установленный в 1 информирует о готовности нового результата. В противном случае, с порта данных можно прочитать старое значение. Более того, если результат оказался нулевым, то это может означать исключительную ситуацию или бесконечность. В этом случае для определения действительного результата следует проводить анализ слова состояния.

Ниже приведен фрагмент программы для работы с проектируемым устройством. Программа «вешает» процедуру чтения и обработки сигнала на прерывание от таймера. Полученные результаты записываются в некоторый файл. В случае если устройство не исправно, в файл будет записано соответствующее сообщение, а вектор прерывания не будет перегружен.

386

portDAT EQU 0320h

portCW EQU 0322h

portSW EQU 0322h

S_STACK SEGMENT PARA STACK 'stack'

DB 32 DUP('stack')

S_STACK ENDS

S_DAT SEGMENT PARA PUBLIC 'data'

msgErrDevice label dword

db 'Устройствосломано!'

outData dd ?

FName label dword

db 'output.dat', 0

FHandler dw ?

oldVect label dword

oldIp dw ?

oldCs dw ?

IntVect dd Int8

S_DAT ENDS

PRG_COD SEGMENT PARA PUBLIC 'code'

ASSUME CS:PRG_COD, DS:S_DAT, SS:S_STACK

Int8 PROC FAR ; модуль перегруженного прерывания

pusha ; сохраним все регистры

in Al, portSW ; читаем SW

test Al, 10000000b ; результат готов?

jz @@EXIT ; нет – на выход

in Ax, portDAT ; читаем результат

cmp Ax, 0 ; исключительная ситуация

jne @NO_EXEPTION ; нет – переход

; обработка исключения (может отсутствовать)

;…

@NO_EXEPTION:

mov word ptr [outData], Ax ; сохраним результат в файле

mov Ah, 40h

mov Bx, Ds:FHandler

mov Cx, 2

lds Dx, outData

int 21h

@@EXIT:

popa ; восстановим регистры

iret

Int8 ENDP

SetInt8 PROC

pusha

mov Ax, 3508h ; сохраним старый вектор прерывания