Лабораторная работа №6 Контроль передачи данных
Цель работы: изучить механизм контроля по четности/ нечетности при передаче данных между внешним устройством и МП.
Теоретическ ие сведения
Передача данных между вычислительным ядром и внешним устройством осуществляется по линиям связи, на которые могут воздействовать помехи. Это может привести к искажению значения передаваемых данных. Одним из простых способов определения искажения данных является механизм контроля по четности/нечетности [1].
При контроле по четности передаваемые данные представляют собой структуру, в которой кроме информационных бит присутствует и бит четности PF. На рис. 7 представлена структура пакета, в котором для передачи данных используются 7 бит.
Рис. 7. Контроль по четности
34
Так как количество «1» в информационных разрядах нечетно, то бит четности устанавливается в единицу. При передаче происходит искажение 4-го бита. Получатель обнаруживает искажение пакета, так как количество единиц во всем пакете нечетно.
Контроль по нечетности, аналогичен контролю по четности, только здесь в бит нечетности помещают единицу, чтобы их количество было нечетно. При этом приемник фиксирует ошибку, если количество единиц в пакете четно.
На рис. 8 представлена схема организации обмена данными с внешним устройством, которая моделируется в лабораторной работе.
Рис. 8. Схема организации обмена данными между МП и ВУ с использованием контроля по четности
Внешнее устройство формирует пакет с семью информационными битами и битом четности/нечетности, который передает в порт данных адаптера. Передача данных сопровождается сигналом стробирования STB от ВУ, который фиксируется в нулевом разряде порта состояния. Микропроцессор, в свою очередь, в цикле опрашивает порт состояния, ожидая появление «1» в поле STB. Как только МП обнаруживает по-
35
явление данных, считывает пакет из порта данных и подсчитывает количество «1». Если количество единиц в пакете четно, то МП устанавливается бит ASK в «1» , иначе в ноль. Одновременно сбрасывается бит STB, тем самым сообщая ВУ о получении данных. При искажении данных внешнее устройство повторно передает пакет данных.
Ниже приведен программный код, который определяет четность количества единиц в регистре AL:
OR AL, AL |
; логическая операция для установки битов регистра флагов |
|
МП |
JP paritet |
; переход на метку paritet, если количество "1" в младшем |
|
байте результата четно |
..................... |
; команды, выполняющиеся при нечетном количестве "1" |
jmp next |
; переходим на метку next, чтобы не выполнять команды из |
|
блока paritet |
paritet :.......... |
; команды, выполняющиеся при нечетном количестве "1" |
Для контроля по четности/нечетности используется флаг PF регистра состояния МП, который устанавливается в «1», если количество 1 в младшем байте результата арифметической или логической операции четно. Поэтому первой командой является логическая операция «ИЛИ», которая не изменяет результата, а только устанавливает флаги.
Задачи:
Разработать программный код в эмуляторе Emu8086, отображающий в цикле данные с внешнего устройства (ВУ) «Paritety» на виртуальный дисплей «Led display». ВУ подключено к адаптеру, содержащему два 8-разрядных порта: порт данных Pd и порт статуса Ps. Старший разряд Pd7 используется для организации контроля по четности или нечетности. Разряд №0 порта статуса PS устанавливается в «1», когда ВУ записывает данные в порт данных. МП при чтении данных с адаптера должен сбрасывать бит Ps0. Записав 1 в разряд №1 порта Ps, МП подтверждает правильность полученного байта сигна-
36
лом ASK (проверка корректности полученных определяется по контролю четности/нечетности), иначе внешнее устройство должно повторить передачу данных. При выводе полученного байта на дисплей старший разряд Pd7 не должен учитываться.
Порядок выполнения работы :
1.Создайте новый проект в среде эмулятора Emu8086, используя шаблон «Bin template»;
2.Разработайте программный код на языке ассемблера, отображающий данные от ВУ на виртуальном дисплее с контролем по четности (нечетности). Программа перед чтением должна удостовериться, что ВУ записало данные в порт данных (бит Ps0 установлен в единицу), и проверить их на возможные искажения. Об получении корректного пакета данных МП сообщает внешнему устройству установкой бита Ps1 порта статуса в единицу, иначе внешнее устройство повторяет передачу текущего байта;
3.Запустите режим эмуляции работы процессора. Нажмите на кнопку «virtual devices» в окне эмулятора и выберите «Led_display» для отображения дисплея.
4.Запустите программу «Paritety». В открывшемся окне нажмите кнопку «Настройки» и укажите адреса портов Pd
иPs из таблицы 10 согласно своим вариантам;
5.Запустите программный код на выполнение в эмуляторе Emu8086. В программе «Paritety» выставьте вид контроля согласно варианту из таблицы 10, уберите галочку «Ошибка в бите», введите в текстовое поле число от 0 до 127 и нажмите кнопку записать. Проверьте корректность разработанного программного кода на языке ассемблера;
6.Повторите пункт 14 с моделирование одиночной ошибки при передаче данных. Для этого установите галочку «Ошибка в бите». Номер бита, в котором произойдет ошибка, выберите из табл. 10 согласно варианту;
37
Таблица 10
Варианты заданий
Номер вари- |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
анта |
|||||||||||
|
|
|
|
|
|
|
|
|
|
||
Pd |
145 |
146 |
147 |
148 |
149 |
100 |
101 |
102 |
103 |
104 |
|
Ps |
150 |
151 |
152 |
153 |
154 |
155 |
160 |
120 |
121 |
122 |
|
Код контроля |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
|
Код режима |
|
|
|
|
|
|
|
|
|
|
|
передачи |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
|
данных |
|
|
|
|
|
|
|
|
|
|
|
Номер вари- |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
|
анта |
|||||||||||
|
|
|
|
|
|
|
|
|
|
||
Pd |
148 |
123 |
124 |
125 |
126 |
127 |
130 |
131 |
132 |
133 |
|
Ps |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
|
Код контроля |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
|
Код режима |
|
|
|
|
|
|
|
|
|
|
|
передачи |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
|
данных |
|
|
|
|
|
|
|
|
|
|
7. Запустите передачу данных от ВУ «Paritety» в автоматическом режиме. Для этого выберите режим изменения передаваемых данных внешним устройством (инкремент/декремент) из табл. 11 и нажмите кнопку старт. Проверьте корректность разработанного программного кода на языке ассемблера;
|
|
|
Таблица 11 |
|
Коды задания |
|
|
Код |
Вид контроля |
|
Режим передачи данных |
1 |
По четности |
|
Инкремент |
2 |
По нечетности |
|
Декремент |
8. Оформите отчет по работе. В отчете должно содержаться:
-цель работы;
-задание;
-листинг разработанной программы;
-выводы по работе.
38