При разработке микропроцессорных систем в среде
Proteus встречается одна довольно неудобная ситуация:
в работоспособную систему весьма затруднительно загрузить какую-либо программу непосредственно в
ОЗУ.
Если в
ПЗУ Proteus загружает указанный файл типа
.bin или
.hex при старте симуляции, то загрузки файла
в
ОЗУ разработчики не предусмотрели.
Решить проблему можно по-разному: подключить виртуальную карту памяти (как поступил в своём проекте
коллега
PVV), создать ROM-диск и загружать ПО с него, я использовал последовательный интерфейс и
загрузку через витуальный терминал, да хоть магнитофон эмулировать можно, только если в процессе
загрузки работает сам эмулируемый процессор, то вся процедура весьма долгая, поскольку эмуляция самой
микропроцессорной системы - затратна по ресурсам компьютера.
Я сейчас
исследую насколько корректно модель микропроцессора 6502 исполняет свою систему команд, и
для этого загружаю в ОЗУ из ПЗУ через процессор код теста размером в 12 Кбайт, и эта процедура отнимает
до 5 минут времени при каждой загрузке.
Поэтому я решил для ускорения процесса использовать чисто аппаратную загрузку программы в ОЗУ без
участия самог
О процесора, то есть, сделать некоторое простое подобие
контроллера ПДП (
DMA).
Для загрузки в систему с моделью процессора
65С02 следует активизировать вход
READY (у
i8080 это -
HOLD), процессор должен перевести шины в высокоимпедансное состояние и остановиться, передав контроль
управления шинами
контроллеру ПДП.
Схема у меня получилась следующая:
Линейка счетчиков подсчитывает входные импульсы и формирует 16 адресных линий. Первый счетчик в линейке
используется для формирования стробов
/RD из
ПЗУ и
/WR в
ОЗУ.
После прихода сигнала
/RESET низкого уровня от микропроцессорной системы схема делает довольно
длительную задержку, чтобы МПС в любом случае закончила свои процессы и освободила шины.
Схема посылает сигнал захвата шин сразу же.
После этого по шине адреса формируются сигналы необходимого числа адресов (я использовал 16 Кбайт),
после чего уровень
лог.1 с
адресной линии 14 выключает счетчики и оключает схему ПДП ото всех шин
и снимает сигнал захвата шин.
Я также отключаю через тристабильный буфер сигнал входного такта, после чего схема потребляет весьма
мало ресурсов (порядка 14%) и не мешает эмуляции микропроцесорной системы.
На следующем скриншоте моделируется
схема тестирования контроллера ПДП с микросхемами ПЗУ и ОЗУ пока
без микропроцессорной системы.
Сравнение идентичных областей памяти показывает, что содержимое
ОЗУ идентично содержимому
ПЗУ, а весь
процесс переброски 16 КБайт информации занимает меньше минуты.
Схемы находятся в следующем архиве: