Дэйв Пламмер, бывший инженер Microsoft и мастер утилит Task Manager, Windows Pinball, а ныне создатель TMOG, снова взялся за интересный проект. Увидев, сколько нулей в ценнике за мегабайт памяти для его старого PDP-11, он решил взять дело в свои руки и создать новую плату ОЗУ.
PDP-11 был выпущен в 1970 году, а более поздние модели могли оснащаться до четырех мегабайт памяти. Пламмер привлек к работе ChatGPT и онлайн-симулятор схем EasyEDA, хотя и отметил, что раньше не занимался такими сложными проектами. Поскольку многие модели PDP-11 использовали платы Q-Bus для основных системных компонентов, он разработал эту ОЗУ как отдельную карту, а затем протестировал ее на бэкплейне вместе с другой платой, содержащей центральный процессор M8190 системы.
Сверху он разместил FPGA Lattice MachXO2, выполняющий роль контроллера памяти (модель 2000HC, если вам интересно), подключенный к четырем микросхемам памяти ISSI объемом 1 МБ. Добавив микросхему ввода-вывода U2S, блок DIP-переключателей, порты связи и горсть конденсаторов, он получил законченную схему. Дизайн платы M8190 имеет 22-битную шину и выделяет верхние 256 КБ для ввода-вывода и ПЗУ.
Однако это был не первый удачный проект. Пламмер столкнулся с несколькими неудачными попытками, так как раньше никогда не программировал FPGA-чипы. После нескольких попыток он исправил это, но затем попал в классическую ловушку PDP-11.
Конструкция шины памяти машины означает, что она может обрабатывать только целые слова (два байта) за раз и рассматривает младший бит в адресе памяти как селектор “линии”, который выбирает между младшим или старшим байтом в слове.
При чтении ЦП сам выбирает нужный байт, но “контроллер памяти” Пламмера все равно должен возвращать два. Аналогично, при записи бит-селектор должен быть прочитан, а затем выбран правильный байт, чтобы обновлялся только он, поскольку линии шины по-прежнему будут нести целое слово, которое в противном случае могло бы записать недопустимые данные.
Пламмер, по-видимому, не знал об этом раньше, и один из комментаторов пошутил, что он “создал 4 МБ памяти, которые оказались 2 МБ”, на что он ответил, что память “возвращает только каждое второе слово”, что соответствует упомянутой схеме. Хотя дальнейших обновлений нет, поскольку многие комментаторы указали на это, мы предполагаем, что он реализовал простое исправление в своем коде FPGA.
Один человек предложил обойти всю проблему и реализовать память программно через Raspberry Pi, подключенный напрямую к шине PDP. Пламмер ответил, что он, по сути, уже сделал это на прошлой неделе с помощью современной интерфейсной платы QBone DEC, которая, в свою очередь, содержит Beaglebone Black (аналогичный Raspberry Pi).
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Bruno Ferreira




