49447 (Шина расширения ISA), страница 2
Описание файла
Документ из архива "Шина расширения ISA", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "49447"
Текст 2 страницы из документа "49447"
I/OR [8] [8/16] Сигнал - I/OR (I/O Read - Чтение устройства ввода/вывода) разрешается задатчиком на шине для чтения данных из устройства ввода/вывода по адресу, определяемому сигналами SA.
I/OW [8] [8/16] Сигнал - I/OW (I/O Write - Запись в устройства ввода/вывода) разрешается задатчиком на шине для записи данных в устройство ввода/вывода по адресу, определяемому сигналами SA.
MEM CS16 Сигнал - MEM CS16 (Memory Cycle Select - Выбор цикла для памяти) разрешается 16-разрядной памятью для сообщения задатчику шины о том, что память, к которой он обращается, имеет 16-разрядную организацию и ему следует выполнить 16-разрядный цикл доступа. Если этот сигнал запрещен, то только 8-разрядный цикл доступа может быть выполнен на шине. Память, к которой выполняется цикл доступа, должна выработать этот сигнал из адресных сигналов LA.
I/O CS16 Сигнал - I/O CS16 (I/O Cycle Select - Выбор цикла для УВВ) разрешается 16 - разрядным УВВ для сообщения задатчику шины о том, что УВВ, к которому он обращается, имеет 16-разрядную организацию и ему следует выполнить 16-разрядный цикл доступа. Если этот сигнал запрещен, то только 8-разрядный цикл доступа к УВВ может быть выполнен на шине. УВВ, к которому выполняется цикл доступа, должна выработать этот сигнал из адресных сигналов SA.
I/O CH RDY [8] [8/16] Сигнал I/O CH RDY (I/O Channel Ready - Готовность канала ввода/вывода) является асинхронным сигналом, вырабатываемый тем устройством, к которому осуществляется доступ на шине. Если этот сигнал запрещен, то цикл доступа удлиняется, так как в него будут добавлены такты ожидания на время запрещения. Когда задатчиком на шине является центральный процессор или внешняя плата, то каждый такт ожидания по длительности - половина периода частоты.
SYSCLK (для тактовой частоты SYSCLK=8 МГц длительность такта ожидания - 62.5 нс). Если задатчиком на шине является контроллер ПДП, то каждый такт ожидания - один период SYSCLK (для SYSCLK=8 МГц - 125 нс). При обращении к памяти на внешней плате ЦП всегда автоматически вставляет один такт ожидания (если сигнал - 0WS запрещен), поэтому, если внешней плате достаточно времени цикла с одним тактом ожидания, то запрещать сигнал I/O CH RDY не требуется.
RESET DRV [8] [8/16] Сигнал RESET DRV (Reset Driver - Сброс Устройства) вырабатывается центральным процессором для начальной установки всех ресурсов доступа на шине после включения питания или падения его напряжения. Минимальное время разрешения этого сигнала - 1 мс.
Благодаря простоте сопряжения устройства с шиной ISA, программирование устройства не составляет труда. Необходимо лишь сравнивать числа, поступившие с линий SA [19; 0] - шина адреса, с выбранным адресом устройства. Также я учитываю состояние линий IOWR, IORD - эти сигналы указывают на попытку записи/чтения из порта.
Селектор адреса необходим для выборки соответствующего адреса в этом ЗУ, по которому находится какая-либо управляющая последовательность, или нули. При выборе адреса, который попадает в диапазон зарезервированных адресов устройством, происходит выборка управляющих четырёх бит, и передача их далее на устройство, либо элементы сравнения.
4.2 Описание работы интерфейсной части устройства
При совпадении адреса на шине с базовым, формируется бит разрешения на выходе инвертора DD9.2. После этого рассматриваются сигналы - I/OR и - I/OW. Следует отметить, что все сигналы пропущены через буферные элемента микросхемы К155АП6. Если на линии взведен сигнал - I/OR, происходит стробирование регистра хранения, и данные с шины SD [0. .7] записываются в этот регистр. Младший бит регистра не рассматривается, т.к используется для записи информации о состоянии датчика температуры в шину. Второй бит отвечает за включение-выключение нагрузки. Следовательно, если записать во второй бит 1 - включится нагреватель, и наоборот. Остальные биты данных используются для управления мультиплексором (ключами). Допустимые значения для этих бит:
000001**
000010**
000100**
001000**
010000**
100000**
Т. е. в каждый момент времени должен быть включен только один ключ. Ключи в свою очередь подключают в схем датчика сопротивления разного номинала, осуществляя тем самым регулировку порога срабатывания датчика.
В момент режима - I/OW происходит считывание данных, анализируя которые можно говорить о текущем состоянии порога датчика, включен или нет нагреватель и срабатывание ключа датчика. Анализируя полученную информацию можно в широких пределах управлять работой регулятора.
5. Описание работы принципиальной схемы
5.1 Выбор элементной базы
Вся элементная база "отечественная", предложенные варианты деталей автора приняты и в данном проекте. Критериев энергосбережения, скорости и пр. в задании нет, поэтому данные вопросы опускались, и выбирались компоненты по требуемому функционалу.
Симистор.
Единственный симистор на схеме - симистор VD2 серии КУ208Г.
Светодиод
Для индикации работы нагревателя ввели светодиод HL1 серии АЛ307БМ, который служит так же как нагрузка для высокочастотного трансформатора.
Резисторы.
В схеме используются резисторы с сопротивлением 1, 5.6, 10, 22, 47, 68 кОм. Также присутствует терморезистор RK1 серии ММТ-4.
Номинальная мощность при 70С- 0.25 Вт
Рабочее напряжение - 200 В
Максимально допустимое напряжение - 400 В
Диапазон рабочих температур - 55 +125С
Температурный коэффициент сопротивления - 100 ppm/С
Трансформатор
Т1 - стальной трансформатор Ш3x6, обмотка 1 - 600, обмотка 2 - 1000 витков провода ПЭВ-2 0.08.
Транзисторы.
Все транзисторы на схеме общего назначения КТ315Г.
Конденсаторы
C1 - К73-17 (0.47мк * 630В)
С2 (4700)
С3 (10мк * 25В)
С4-С5 (500мк * 16В)
Диоды
VD2 - КД209Б
VD3 - КД522А
Логические элементы
DD1.1-DD1.4 - К561ЛП2.
Операционный усилитель
См. пункт 5.2
Ключи
КМОП ключ К176КТ1.
5.2 Выбор интегральных микросхем
В устройстве применены микросхемы ТТЛ логики серии 155, 555, 1533. Выбор микросхем данной логики обоснован уровнями сигналов ISA, соответствующим уровням ТТЛ логики. Ниже приведены микросхемы, применяемые в устройстве.
К155ЛН1 - содержит шесть логических элементов выполняющих функцию НЕ. Условное графическое изображение микросхемы показано на рисунке 5.1.
Рисунок 5.1 – Микросхема
К155ЛН1
Микросхема типа КР1533АП6 содержит 8 двунаправленных шинных усилителей с третьим состоянием. Микросхема имеет вход переключения направления каналов и вход перехода в третье состояние E0. Условное графическое обозначение микросхемы представлено на рис.5.2.
Рис.5.2 Условное графическое обозначение микросхемы КР1533АП6.
КР155ЛЕ5 - Микросхема представляет собой четыре логических элемента 2И-НЕ.
Рисунок 5.3 Условное графическое изображение микросхемы ЛЕ5
КР1533ИД3 - представляет собой дешифратор 4-хзначного двоичного кода. При высоком уровне напряжения на входы разрешения Е выходы устанавливаются в состояние высокого уровня.
Рисунок 5.4 - Микросхема КР1533ИД3
К155ЛП5 - микросхема представляет собой 4 двухвходовых логических элемента "исключающее ИЛИ".
Рисунок 5.5 Условное графическое изображение К155ЛП5
Операционный усилитель К140УД12
Этот тип ОУ имеет следующие характеристики:
Iвх, мкА 7-50
fс, Мгц 0.3-1
Uвых, в/мкс' 0.1-0.8
Uпит, В + - (5% 15)
Iпотр., мА 0.03-0.6
Uсм, мВ 5
Кус Ц*103 50
Рис.5.6 Условное обозначение и цоколёвка операционного
усилителя К140УД12
6. Разработка графического структурного алгоритма программы
Прикладная программа, управляющая разработанным устройством, представляет собой исполняемый файл main.com. Работу устройства можно задать изначально в начале выполнения main.com, с помощью параметра D - число, заносимое в регистр RG для установки соответствующего сопротивления.
Программа должна:
1. Запросить управляющий байт.
2. Занести в указанный порт введённый байт.
3. Ожидать сигнала с шины данных, если он получен - вывести сообщение
В программе можно выделить 3 основных логических блока - занесение управляющего слова в регистр, перехват прерывания 08h, параллельное слежение за шиной данных.
Блок схема работы программы (структурный графический алгоритм) приведен в Приложении данного курсового проекта.
6.1 Разработка прикладной программы и описание её возможностей
По сложности программирования интерфейс ISA занимает среднее место между Centronics с одной стороны, и PCI и SCSI с другой. Особенностью программирования Centronics является абсолютная простота, т.к все сигналы доступны для программирования. ISA - доступность только шины данных и портов ввода-вывода, PCI - сложность программирования шины в целом.
Данная прикладная программа управляет разработанным нестандартным периферийным устройством. Это управление довольно просто, так как изначально устройство работало абсолютно автономно, и мне пришлось вводить дополнительные управляющие регистры и делать параллельные отводы от схемы, что ввело лишь небольшие усложнения в работу устройства в целом.
Программа является резидентной, т.е. находится постоянно в памяти. Загружается командой “main.com”, инициализирует устройство, и предлагает ввести байт D, где D - число, заносимое в управляющий регистр (по умолчанию оно равно 0), и выгружается “main.com u".
Находясь в памяти, программа постоянно следит за шиной данных, и если пришло сообщение о включении/выключении нагревателя, выдаёт соответствующее сообщение.
6.2 Листинг программы
comsegment segment para
org 100h
start:
main proc near
jmp first_instruction
saved_int08labeldword
old_offsdw ?
old_segdw ?
vector= (08h)
isworkingdb 0
_TCCdb 0
uninst_message db 10,13,"Uninstalling... ",'$'
message db 10,13,"Already loaded!",10,13
db "'main u' for uninstall",10,13,'$'
string db " ",'$'
input_message db “Enter number (0-7): ”,'$'
begin_message db "Wormer started",10,13,'$'
end_message db "Wormer stopped",10,13,'$'
int08_treater:
jmp gonow
db '08hook'
gonow:
push ax bx
mov bl, 0102h
in al, bl; пытаемся получить статус устройства из порта 258
and al, 10000000b
cmp al, 10000000b
je start_loop
cmp cs: isworking, 1
je end_loop
jmp leave_treater
start_loop:
mov cs: isworking, 1
push bx ax
mov bx, ds
mov ax, cs
mov ds, ax
xor ax, ax
mov ah, 09h; если нагреватель включился - выдаём сообщение об этом
lea dx, begin_message
int 21h
mov ds, ax
pop ax bx
jmp leave_treater
end_loop:
mov cs: isworking, 0
push bx ax
mov bx, ds
mov ax, cs
mov ds, ax
xor ax, ax
mov ah, 09h; если нагреватель выключен - включаем
lea dx, end_message
int 21h
mov ds, ax
pop ax bx
leave_treater: ; выход из обработчика
pop bx ax
jmp cs: saved_int08
release:
mov ah, 09h
lea dx, uninst_message
int 21h
mov ax,3508h
int 21h
mov ax,es: old_seg
mov ds,ax
mov ax,es: old_offs
mov dx,ax
mov ax,2508h
int 21h
mov ah,49h
int 21h
mov ax,4c00h
int 21h
first_instruction:
cmp byte ptr [es: 80h],1
jbe resume
mov bx, 82h