Сделайте коммит в основную ветку со cвоей платой.
А автор проверит и смержит со своей веткой.
Вид для печати
Сделайте коммит в основную ветку со cвоей платой.
А автор проверит и смержит со своей веткой.
Мне вот и самому интересно, почему картинка съезжает вбок на некоторых мониторах, причем на разных - по-разному. Все отличие формируемого моим модулей видеосигнала от стандартного в том, что пиксельклок у меня 50 Мгц, а по стандарту VESA для сигала 800*600*75 он должен быть 49.5 Мгц. Неужели это как-то повлияло? Отличие-то ничтожное, всего 1%.
Но делать 49.5 Мгц как-то не хочется. Это надо задействовать еще один канал PLL, и я сомневаюсь, что он сможет сделать 49.5 Мгц из 50 без ощутимого дрожания фазы. Особенно на TANG-плате, там PLL совсем странный и неудобный в настройке.
На моих Samsung и HP еще и не помещается во вертикали. Поэтому использую телевизор.
- - - Добавлено - - -
Автор ответил. Кое-что понял и воплотил.
Понизил частотк до 50МГц; вернул sdcard_sclk = sdclk; PLL altpll_component.clk2_divide_by = 64, altpll_component.clk2_duty_cycle = 50, altpll_component.clk2_multiply_by = 1, altpll_component.clk2_phase_shift = "0".
Заработало!!!. Загрузка с DX, MY, RK. Вижу все диски. Идут тесты Т0 и др., остальные не пробовал.
Осталось неясно как частота clk2 может влиять на что-то еще кроме sdspi. И также неясно, что делать
с DRAM_ADDR[12], на моей QMDAZZ адресная шина 0-11.
Надо привести их в порядок и разобраться с пока непонятными мне глюками: грузится только с RK0 и DX0, да и то только вот так:
Скрытый текст
Пока наш доблестный цифровой археолог выкапывает из кремния 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.
Очень крутая работа проделана, спасибо.
Теперь будет куда F11 вставить. Он вроде ожидается не столь громоздким, ~6-8К ячеек в полной конфигурации, но это очень предварительно. Сейчас, как раз, собственно DC302 описываю.
Мощно. Спасибо. Запустил - работает. Кто помнит номер теста, который постоянно писал на экране "The quick brown fox ..."?
Эх видео работы бы посмотреть
Приветствую сообщество.
Обнаружено отставание таймера на, приблизительно, 17 сек за минуту для реализации ДВК-3.
Для реализации PDP-11/70 отставание/опережение не отмечено. Где-то кто-то уже описал как бороться дрейфом таймера?
Странно. На всех процессорных платах генератор импульсов таймера сделан абсолютно по одной и той же схеме. Мне сейчас проверить не на чем, но в выходные я посмотрю. Тут надо просто вывести импульсы таймера наружу fpga и измерить их период.
А монитор RT-11 точно сгенерирован на таймер 50 Гц? Потому что по умолчанию во всех мониторах 60 Гц, и это вызовет как раз такое отставание.
Мой порт ДВК FPGA для MiSTer заработал с образами дисков с файловой системы. Выделенная SDCARD больше не нужна.
https://github.com/xolod79/MC1201/bl...1_20211030.rbf
Пока работа самого ядра не очень стабильна. WIP!
Уважаемый forth32, уважаемые коллеги!
Портирую проект на плату https://www.waveshare.com/wiki/CoreEP4CE10
По скудоумию своему не придумал ничего более, нежели изменить проект AX4010. Впоследствии, конечно, перепишу в отдельный проект платы и выложу на свеобщее обозрение, но пока именно так.
С vga пришлось поступить не по-людски, оставив только по одному биту из цапа - заработало.
С PS/2 чудеса - не встало на пины разъема с VGA, отсадил на другую гребенку, но при всем этом отчего-то с подачи питания не работает, работает только после передергивания питания +5 В клавиатуры.
Тесты проходят (за исключением LP :).
Но имеем нерабочую SD, в чем может быть проблема? Я ее отсадил на свободные пины, вроде все должно работать, НО обращения к ней нет.
Записал dd корректно, сама карта - SDHC 32 Gb. Читается, sd_extract извлекает из нее (прямо с адаптера) под линхами все диски, диски монтируются в pdp11...
@172140/000040 37
@172142/
BUS ERROR
@B
RK0
@
И да, вопрос - ПС как нажать?
С чем может быть связано? Пины менял, там все чисто. Светодиод на самой плате SD горит только питания. Светодиоды обращения к дискам молчат.
Еще вопрос относительно выбора банка - мы не цепляем кнопки физические?
hdl/topboard16.v: input [3:0] sw_diskbank, // дисковый банк
hdl/topboard16.v: .start_offset({1'b0,sw_diskbank,22'h0}),
И в исходниках по умолчанию действительно первый банк?
Немного сумбурно, но хоть какой-то прогресс есть у меня...
Может быть SD-контролер, используемый в дизайне, не правильно инициализирует SDHC?
Не поддерживает какие-то capabilities, или в SPI mode не переключает, или еще что-то?
p.s. Я забросил разбираться с проблемой у меня.
Странно себя ведет клавиатура. питание передернешь и ок, а со старта - нет.
Что касается модуля - он вот такой https://www.waveshare.com/wiki/Micro_SD_Storage_Board
А подтянуть 3.3В можно ведь и
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to sdcard_miso
?
Или физически через 1К резистор?
Отдельный модуль SD - гемор. У меня такой заработал на OMDAZZ только на 2.5МГц и при очень коротких проводниках, сильно перепутанных (замена на короткий шлейф опять привела к нерабочему состоянию).
- - - Добавлено - - -
На VT52 клаве (которая через PS/2) правый ALT работает, а вот в Putty так и не нашел :(
У меня работал вот такой очень простой модуль. https://3d-diy.ru/wiki/arduino-modul...d-card-reader/
Вы посмотрите активностью на ногах CS, CLK, MISO, MOSI присутствует ?
Еще есть момент, у автора в модуле hdl\sdspi.v тактовая частота для SDCard генерируется постоянно. А по спецификации она должна вырабатываться только при передачи данных.
http://elm-chan.org/docs/mmc/mmc_e.html
Это работает нормально, но есть вероятность что могут быть нюансы.
Осцилографом.
И
SignalTap в Quartusе
Да, этого должно быть достаточно.
Недавно мой товарищ столкнулся с проблемой на этом модуле, когда собирал эмулятор Спектрума на esp32, там тоже не все гладко, нужно впаивать резистор в разрыв между одним из выводов слота SD и микросхемой конвертера уровней.
Может задержку инициализации нужно сделать? Но у меня такой проблемы не было.
[QUOTE=ZPilot;1147349]Да, этого должно быть достаточно.
/QUOTE]
К сожалению, ничего не изменилось.
Напрягает BUS ERROR. тальным путем установлено, чаще проявляется, когда медленно набираешь команды...
Кстати, я смутно помню вообще пультовые команды и адреса. Букварь есть у кого? Спасибо
ЗЫ
@172140/000040 (ПС - правый альт же?)
R1/151040
попадаю в регистры отчего-то
@172142/
@177406/000000 177400^
R4/000100
@177406/
BUS ERROR
@177406/000000 177400^
R2/000000
@177404/
BUS ERROR
@177404/000200 5
@0 000004
Ошибки же? Коды бы...
Все включено, только принтер отключил
`define KSM_module // текстовый контроллер КСМ
`define KGD_module // графический контроллер КГД
`define IRPS2_module // второй последовательный порт ИРПС
//`define IRPR_module // параллельный порт ИРПР
`define RK_module // диск RK-11/RK05
`define DM_module // диск RK611/RK07
`define DW_module // жесткий диск DW
`define DX_module // гибкий диск RX01
`define MY_module // гибкий диск двойной плотности MY
`define bootrom_module // монитор-загрузчик M9312
В Quartusе меню Tools зайдите в RTL Viewer. Что там видно?
Приехала породистая AX4010.
Попробовал залить прект чисто под нее. Не пойму, клавиатура заработала, на указанных пинах, но отчего-то работает только сброс терминала и включениие/выключение таймера.
Кнопка программа-пульт никакого эффекта не приносит. Наблюдаем только строку состояния и курсор. Пульта нет :(
Что может быть не так?
В модуле в принципе перебрал параметры
`define STARTUP 3'b001
Банк на SD в исходниках оставил без изменений
Upd: тест запускается, при 3'b101 - вместо выход в пульт
странное что-то
Ура. с носителей запустился RK
А тем временем уважаевый Vslav выпустил wishbon модель процессора F11
https://github.com/1801BM1/cpu11/tree/master/f11