ZPilot(19.07.2021)
Пока наш доблестный цифровой археолог выкапывает из кремния F-11, я решил провести подготовку проекта к работе с 22-битной адресной шиной. Поскольку HDL-схем реальных процессоров с mmu в природе пока не существует, я решил воспользоваться все тем же старым добрым pdp2011. Это чисто синтетический процессор, не имеющий реального схемотехнического прототипа. Он построен не на микропрограммном автомате, как настоящие процессоры от DEC, а на машине состояния, является модульным и очень хорошо адаптируемым - из него можно вылепить любой pdp-11-совместимый процессор, даже 1801ВМ3, при наличии достаточной документации. Я решил сделать PDP11/70 - это один из наиболее сложных и развитых из процессоров линейки pdp-11. У него в составе есть FPU, 2 переключаемых набора регистров, режим Supervisor, программные прерывания, Unibus Mapping и много других интересных вещей. Он был содран в СССР под имененм Электроника-79, он полностью совместим со всеми ОС
Оригинальный pdp2011 написан на VHDL, и имеет довольно странную, ни с чем не совместимую шину, причем жестко синхронизированную - все операции ввода-вывода должны выполняться ровно за 1 такт. Сам процессор также жестко синхронизирован с контроллером SDRAM, собственно SDRAM и вырабатывает тактовый сигнал процессора. Мне такой подход не нравится, и он совсем не совместим с шиной Wisbone моего проекта. Поэтому я произвел глубокую переделку процессора:
- Переписал схему с многословного громоздкого VHDL на симпатичный мне компактный Verilog.
- Убрал из схемы ненужные мне элементы, вроде работы с консольным пультом.
- Отвязал процессор от SDRAM, теперь процессор и память тактируются каждый своим синхросигналом
- Полностью переделал блок ввода-вывода процессора, теперь наружу выходит стандартная шина Wishbone.
- Практически полностью переделал блок MMU для работы с шиной wishbone.
- Исправил кучу недоделок для более-менее корректного прохождения тестов XXDP CEKB*. Полностью от ошибок, обнаруживаемых тестовыми программами, я не избавился, но то, что осталось - сущая ерунда, на которую можно смело забить.
В результате в проекте появилась еще одна процессорная плата по имени PDP2011, которую можно подключить к конфигурации в том же config.v. Поскольку 22-битные процессоры гораздо сложнее 16-битных и имеют более развитый внешний интерфейс, пришлось сделать отдельную соединительную плату topboard22. У процессоров с MMU несколько раздельных линий векторного прерывания (потребовалось 2 контроллера прерываний), есть режим unibus mapping, что предполагает обработку DMA-адреса диспетчером памяти, и много других важных отличий. Старая плата для 16-битных процессоров теперь называется topboard16. Какую именно соединительную плату включать в проект автоматически решает config.v на основании выбранного процессора.
Кроме собственно процессора pdp2011, я добавил также в проект дисковый контроллер RH-70 (DB:). Этот контроллер формирует шину MASSBUS, имеющуюся в PDP-11/70. В оригинале к этой шине можно подключать несколько типов дисковых и ленточных устройств, в том числе и в смешанной конфигурации. У меня к контроллеру подключено 8 дисков типа RP06. Эти устройства хранят информацию на пакетах дисков из 12 (примерно) блинов. Такие пакеты прилично весили и выглядели довольно внушительно. В годы перестройки из этих блинов делали дециметровые антенны. Советским аналогом RP06 было устройство ЕС-5067. В прошлой жизни мне такие не попадались, в наших ВЦ стояли ЕС-5066 (аналог RP05) с вдвое более низкой емкостью.
Пакет RP06 имеет форматированную емкость 341088 блоков (166 Мб). 8 таких дисков могут вместить даже такую прожорливую ос как RSX-11M+ вместе со всей библиотекой DECUS. Физически образы дисков расположены все на той же самой SD-карте, являются посекторными образами диска и напрямую совместимы с эмулятором SIMH.
RT-11 не поддерживает работу с RP06, возможно, в силу ограничений на максимальный размер файловой системы в 32 Мб. Поэтому эти диски подключаются только к topboard22. Все остальные устройства (DX, DM, DK, DW, MY, ИРПС, ИРПР, КГД, КСМ) могут подключаться и в 16- и в 22-битной конфигурации. Так что в принципе можно сделать такую причудливую машину, как PDP-11/70 с КГД. Правда, толку от нее будет немного - почти все графические программы используют команды MFPS/MTPS для доступа к PSW и на такой машине работать не будут.
В стартовый образ диска initdisk.img я добавил диски с RSX-11M v4.8, RSX-11M-PLUS v4.6, RSTS/E v10.1. Загружайте, наслаждайтесь. Можно сделать загрузочные диски с UNIX, ULTRIX, 2.11BSD и другими юниксподобными ОС. Я их не стал включать в стартовый диск, чтобы совсем его не раздувать в размерах.
Вся информация по новому процессору вынесена в отдельный файл doc/pdp2011.pdf. Информация о корзине topboard22 и дисках DB добавлена в main-manual.pdf.
Как всегда, набор скриншотов, иллюстрирующих работу машины PDP11/70:
RSX-11M v4.8, загрузка
[свернуть]RSX-11M-PLUS, загрузка
[свернуть]RSX-11M-PLUS, монитор ресурсов RMD
[свернуть]RSX-11M, демонстрация работы ситемы экранных форм FMS-11
[свернуть]RSX-11M, широко распространенный в CCCР редактор TED. Единственный редактор с полосой разметки строки.
[свернуть]RSTS/E v10.1, загрузка
[свернуть]RSTS/E v10.1, монитор ресурсов DISPLY, часть 1
[свернуть]RSTS/E v10.1, монитор ресурсов DISPLY, часть 2
[свернуть]XXDP, тест RAM CEMJA
[свернуть]
Теперь плохие новости. В полной конфигурации с включенным FPU проект занимает около 21000 логических ячеек. Если FPU убрать из конфигурации (это задается в config.v), то проект уменьшается до 17500 ячеек. Но даже в таком виде он не вслезет в младшие FPGA. Поэтому из имеющихся в проекте FPGA-плат pdp2011 можно использовать только с QMTECH E55 и A-ESTF V2. Можно запихать его и в TANG, но только убрав из конфигурации FPU, а также или КСМ или часть дисковых контроллеров.
Теперь проект готов к 22-битной адресной шине. Ждем новогоднего подарка от доброго дедушки мороза по имени VSLAV.
Последний раз редактировалось forth32; 16.09.2021 в 09:07.
Alex_K(16.09.2021), Elias(28.09.2021), Hunta(16.09.2021), Manwe(25.10.2021), Oleg N. Cher(19.09.2021), Radon17(19.09.2021), Romych(19.09.2021), siemensC35(16.09.2021), SuperMax(16.09.2021), tnt23(25.09.2021), Unik(16.09.2021), Vslav(16.09.2021), vva(19.09.2021), xolod(16.09.2021), yu.zxpk(16.09.2021), zebest(16.09.2021)
Очень крутая работа проделана, спасибо.
Теперь будет куда F11 вставить. Он вроде ожидается не столь громоздким, ~6-8К ячеек в полной конфигурации, но это очень предварительно. Сейчас, как раз, собственно DC302 описываю.
Мощно. Спасибо. Запустил - работает. Кто помнит номер теста, который постоянно писал на экране "The quick brown fox ..."?
Эх видео работы бы посмотреть
Мои скромные железяки
Altair8800(в процессе)
ATARI 65хе
YAMAHA YIS503IIIR
PackardBell
HP Vectra 286/25n/VE/VL/VL800/VLi8, Kayak XA
AcerPower 433sv
Fujitsu-Siemens Scenic/S 2
Compaq deskpro en
МС 0511-01
Микро80(в процессе)
Микроком85
Апогей-БК01Ц
РадиоРК-86
БК0010/10-01/11/11М
ПК-8000
Львов ПК-01
Агат-9
ДВК-2(в процессе)
ДВК-3М
Вектор-06ц
Специалист
ХТ8088 nec-20
АТ286,386,486
PI-75-200ММХ
РII, III,IV
ZX-Evolution r.C3
Santaka-002
Дельта-С
Ленинград48к
[свернуть]
Приветствую сообщество.
Обнаружено отставание таймера на, приблизительно, 17 сек за минуту для реализации ДВК-3.
Для реализации PDP-11/70 отставание/опережение не отмечено. Где-то кто-то уже описал как бороться дрейфом таймера?
Странно. На всех процессорных платах генератор импульсов таймера сделан абсолютно по одной и той же схеме. Мне сейчас проверить не на чем, но в выходные я посмотрю. Тут надо просто вывести импульсы таймера наружу fpga и измерить их период.
А монитор RT-11 точно сгенерирован на таймер 50 Гц? Потому что по умолчанию во всех мониторах 60 Гц, и это вызовет как раз такое отставание.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)