Курсовая работа: Вычислительная система обработки данных в реальном времени
Микросхема КР556РТ17.
Рис.6. Параллельный порт
ППЗУ представляет собой микросхему, предназначенную для хранения программы, которую пользователь может самостоятельно записать в нее. Операция программирования заключается в разрушении плавких перемычек на поверхности кристалла импульсами тока. Матрица до программирования, то есть в исходном состоянии, содержит однородный массив проводящих перемычек, соединяющих строки и столбцы во всех точках их пересечений. Программу в ППЗУ мы записывать не будет, предполагаем, что она уже находится там. Эта микросхема содержит 512 байт, а время выборки адреса 50нс, что на много меньше 200нс (время одного такта). Микросхема представлена на рис.7. Опишем используемые выводы.
А0-А8 - входы, по которым выбирается адрес в микросхеме ППЗУ;
DО0- DО7 - выходы, по которым передаются данные, содержащиеся в заданной ячейке памяти;
С S1 , CS2 , и - выводы выбора микросхемы, которые свидетельствует и одновременно и о считывании информации из нее. Каждый из них должен иметь соответствующее активное состояние, то есть CS1=CS2=1 и ==0. Нарушение этого условия хотя бы для одного из входов исключает доступ к накопителю для считывания. В этом случае микросхема будет находится в состоянии хранения, в котором выходы принимают Z- состояние.
Разработка программного обеспечения
Программа, находящаяся в ПЗУ, состоит из следующих блоков: непосредственное тестирование ПЗУ, обработка заданной функции и программирование параллельного порта. Блок - схема программы представлена на рисунке 8. Далее более детально будут рассмотрен каждый из блоков.
Рис.7. Программируемое ПЗУ
Тест ПЗУ
Тестирование ПЗУ заключается в суммировании содержимого всех мнемокодов программы, иными словами значений, находящихся по адреса ПЗУ. Каждый адрес содержит 16 - разрядный код, который соответствует определенной команде процессора. Вначале устанавливается начальный адрес кода программы. Перебор всех адресов делается в цикле, в котором проверяется достигнут ли адрес последний ячейки памяти, если это не так, то цикл вновь возобновляется. В противном случае, если достигнута последняя ячейка памяти, полученный результат суммы сравнивается со значением находящимся в определенном адресе ПЗУ за пределами основной программы. Это число должно быть получено ранее, путем ручного подсчета или же самой программой, которая тестирует ПЗУ. Это производится несколько раз для правильности результата, так как от него в дальнейшем будет зависеть: программа продолжит свое выполнение или же перейдет на участок, в которой будет находиться команда останова. Если тестирование ПЗУ закончилось не успешно, то до останова микропроцессора, он посылает сигнал в порт вывода - параллельный порт, в котором устанавливает значение, свидетельствующее об ошибки.
Здесь приводим участок кода программы, тестирующей ПЗУ.
movsi, ADDR_OF_BEGINING_OF_ROM
movax, 0
loop:
add ax, [si]
incsi
cmpsi, ADDR_OF_END_OF_ROM;
jneloop
cmpax, CONTROL_SUM_OF__ROM
jeALL_GOOD
jmpERROR_ROM
ALL_GOOD:
; участок кода реализуемой функции
ERROR_ROM:
mov al,02h
out 02h,al
hlt