Вход

Просмотр полной версии : Экспериментальные процессорные модули 2х1801ВМ1 и 1801ВМ2



Vslav
26.04.2013, 00:11
Загорелся я сделать проект "ево-БК" по типу ZX-evo - то есть берем ретро-процессор и делаем к нему обвязку ПЛИС. Поскольку сейчас достаточно много недорогих отладочных ПЛИС-плат, то на первом этапе решил не возиться с повторением ПЛИС-части, а сделать простой и недорогой съемный процессорный модуль, подключаемый к такой готовой отладочной плате.

На модуле размещается собственно оригинальный процессор и схема сопряжения с 3-вольтовыми уровнями ПЛИС отладочной платы. Для начала предполагается разработка двух экспериментальных ретро-процессорных модулей:

1) на 1801ВМ1. Чтобы было веселее и интереснее этим заниматься, на модуле устанавливается два процессора с задействованием механизма конкуренции за шину. Поскольку память и реализованная на современной ПЛИС шина МПИ предполагаются быстрыми (относительно даже работающего на 6МГц процессора ВМ1), то будет любопытно посмотреть как оно работает;

2) на 1801ВМ2, тут банально предполагается один микропроцессор на модуле;

В качестве базовых ПЛИС-китов выбраны киты от Terasic на основе микросхем Altera, подключение модуля осуществляется к стандартизованному 40-пиновому разъему "GPIO" на плате кита. Сейчас у меня есть DE2-115, и заказан более дешевый DE0 (не nano), аналогичный разъем имеет и кит DE1. На базе ожидаемого DE0 планируется повторение БК-001x с оригинальным процессором ВМ1 и "апгрейды" - 2xВМ1 и на базе ВМ2. Также не исключается повторение MC1202.01/02. На упомянутых китах имеется SDRAM-память, VGA-выход, SD-карта и PS-2 разъем.

В данном сообщении я хотел бы представить первый вариант схемы модуля 2xВМ1. Второй процессор может быть отключен (отсоединением перемычками от общих DMR/SACK и подачей нулевого уровня) для реализации однопроцессорного варианта.

Обработка векторных прерываний предполагается только одним из процессоров, запросы коммутируемые, точную схему распределения прерываний можно будет установить в ходе экспериментов.

Также предполагается режим когда внешняя (по отношению к модулю) схема осуществляет доступ к внутренним регистрам процессоров (через общий DMR/DMGO/SACK) и/или процессор осуществляет доступ к внутренним регистрам парного процессора.

Ссылки на исходники текущего проекта для платы DE0:
Версия 1.0a (http://u.zeptobars.ru/yuot/1801/MOD/vmod_rev10a.rar)

Vslav
26.04.2013, 10:36
Схема модуля на 1801ВМ2 выглядит чуть-чуть попроще. Сигналы WAKI/WRQ совместного доступа к окну старших адресов для многопроцессорной системы просто заведены на коммутатор на EPM3064, пока их использование никак не планируется.

Vslav
26.04.2013, 12:33
1801ВМ3 имеет несколько больше сигналов чем ВМ1/2. Чтобы их все "утолкать" в 40-пиновый разъем предполагается использовать быстрый синхронный интерфейс а-ля SPI - MISOx, MOSIx, MSPI - с передачей нескольких значений по параллельной шине (4 ввод с модуля, 2 вывод на модуль) и тактированием учертверенной частотой процессора. Таким образом за каждый такт можно будет получать обновление 16 сигналов с процессора (A16-A21, UMAP, SEL, HLTM и выдавать обновление 8 сигналов (IRQx, HALT, EVNT, DCLO, ACLO).

bigral
26.04.2013, 13:01
1801ВМ3 имеет несколько больше сигналов чем ВМ1/2. Чтобы их все "утолкать" в 40-пиновый разъем предполагается использовать быстрый синхронный интерфейс а-ля SPI - MISOx, MOSIx, MSPI - с передачей нескольких значений по параллельной шине (4 ввод с модуля, 2 вывод на модуль) и тактированием учертверенной частотой процессора. Таким образом за каждый такт можно будет получать обновление 16 сигналов с процессора (A16-A21, UMAP, SEL, HLTM и выдавать обновление 8 сигналов (IRQx, HALT, EVNT, DCLO, ACLO).

На этих же платах 2 разьема по 40 pin, может всетаки отказаться от этих SPI до момента когда уже система будет запущенна\отлаженна? А потом уже начать отдельный проект - "адаптер процессора ВМ1 ВМ2 ВМ3 для serial интерфейсов".

Без этого дополнительного CPLD никак нельзя обойтись?

И опять встает вопрос про правильное согласование ВМx с Cyclone-ами, не хотелось бы чтоб скорость была ограниченна преобразователем уровней а также не хотелось бы чтоб этот преобразователь много потреблял. Вот тут доку интересную нашел по этому поводу: http://www.ti.com/lit/ml/scyb018e/scyb018e.pdf но она достаточно мутная для моего понимания и наполненная маркетинговым мусором. Кто-то может детально разобрать сильные и слабые стороны предлагаемых в ней решений?

Vslav
26.04.2013, 13:43
На этих же платах 2 разьема по 40 pin, может всетаки отказаться от этих SPI до момента когда уже система будет запущенна\отлаженна?

Второй 40-пиновый разъем на ките хочется использовать для подключения ретро-дисковода и CompactFlash или IDE-диска или кто там чего еще пожелает. Сразу занять его под ВМ3 - имхо, грустно как-то.
Если оно все пойдет нормально - то позже можно будет и модуль на 1810ВМ86/88 сделать - и получить допустим "Поиск-1/2" или скажем "Винницу".


А потом уже начать отдельный проект - "адаптер процессора ВМ1 ВМ2 ВМ3 для serial интерфейсов".

Я думаю что все нормально с этим "SPI" будет, на самом деле там много сигналов не особо нужны - TA например, SSYNC тоже под вопросом, BS.
Адреса старшие вообще стабильны должны быть все время цикла обмена. Ну и SPI будет привязан к частоте проца, фазу потом уже подобрать можно, то есть - каждый такт процессора в нужной фазе можно получать состояние этих сигналов процессора на "материнской плате" кита. Ну если уж во что-то упремся (пока я не вижу во что можно), то недолго ведь сделать новый модуль, имея опыт-то с первой версией.



И опять встает вопрос про правильное согласование ВМx с Cyclone-ами, не хотелось бы чтоб скорость была ограниченна преобразователем

Судя по документации - входные уровни "высокого" у ВМx вполне доступны для формирования Max-омт - >= 2.4В. Выходные драйверы у Max достаточно мощные (8mA), не говоря уже про 74LVC245, будем надеяться что все выйдет OK.



Вот тут доку интересную нашел по этому поводу: http://www.ti.com/lit/ml/scyb018e/scyb018e.pdf

Смотрел я эти согласователи - у них недостаток есть - чтобы "сдернуть" уровень надо миллиампер-полтора приложить, а наши ВМ-ы - дохлятины, только 200мкА наверх выдадут. Экпериментировать с подбором подтягивющих резисторов не очень хочется. (Надо кстати откатить номиналы на процессоре на 2к2 обратно).

---------- Post added at 12:43 ---------- Previous post was at 12:21 ----------



Без этого дополнительного CPLD никак нельзя обойтись?

Пока мне MAX представляется самым оптимальным вариантом - задержка на нем по сравнению с обычной логикой типа 74LVC/ABT незначительно больше, также предоставляет возможность быстрой перекоммутации сигналов без массированного применения паяльника, ну и какую быструю локальную (то есть на самой плате модуля) логику на нем можно реализовать. Надеюсь что однотактовый RPLY получится реализовать (смотря как контроллер SDRAM сделать - надо чтобы страницы умел держать открытыми). Для ВМ1/ВМ3 на 6МГц особых сложностей быть не должно, для оверклоченного ВМ2 @ 10МГц - посмотрим.

Модули - экспериментальные, опыты на них и должны ответить на эти вопросы. Если потом возникнет желание/интерес - можно будет сделать "начисто" плату БК на младшем подходящем Асеx1К (нужные ресурсы уже оценены будут, HDL-код откатан), например. Он 5V напрямую переживает, согласующая CPLD уйдет.

bigral
26.04.2013, 20:22
Чето мне кажеться было бы лучше вот эти всякие FDD и IDE covox-ы вешать на SPI (тем более что тогда они будут универсальными контроллерами подходящими и к UEXT разьему olimex-a и к другим MCU их навесить можно будет при желании). А процессор это самый быстрый в системе кристалл и самый главный обьект исследований в этой конструкции для него не жалко пожервовать и GPI/O-шки.

5V CPLD по-моему уже неактуальны, при такой-то их цене? На aliexpress уже появилось много "minimal FPGA" плат по нормальной цене готовых к программированию и подключению в свои устройства (есть модели подороже и с паматью сразу), так что если проблема с преобразованием уровней будет решена (именно "доступным" для аматора способом, DIP микрухой(?) или платкой с MOSFET преобразователями) то популярность такого новодела побьет все рекорды. Напоминаю что цена на б.у. плату процессора ДВК стартует с ~100$, а тут можно будет спаять самому за те же деньги.

SDRAM там действительно нужен? В новых FPGA есть RAM да и внешний SRAM не проблема сейчас.

MM
26.04.2013, 23:57
Хочется напомнить, что в 1801-й серии нет открытых коллекторов,
втекающий ток в выход может быть до 10 ма динамический, вытекающий с выхода при высоком электрическом уровне на нем - тип. 1 ма., может быть
до 5 ма реально. Согласователи единственные и неповторимые - КР531АП2 -
хорошо работают даже с 1.8 вольт ИС. Правда, вытекающий ток входа у них - 3.2 ма. Зато постоянный ток электрич. 0 выхода - 96 ма по ТУ.

Vslav
27.04.2013, 01:25
Чето мне кажеться было бы лучше вот эти всякие FDD и IDE covox-ы вешать на SPI (тем более что тогда они будут


Речь шла не про Covox-ы. Я планирую сделать простой дешевый переходник на CompactFlash или IDE HDD, для подключения его во второй 40-пиновый разъем кита DE0 (или DE1). Если получится (хватит ножек) на тот же переходник будет впихнута "физика" интерфейса к FDD - получится простой и дешевый переходник от кита к HDD/FDD.



А процессор это самый быстрый в системе кристалл и самый главный обьект исследований в этой конструкции для него не жалко пожервовать и GPI/O-шки.


А зачем жертвовать если по прикидкам и так все получается? Фаза выдачи адреса длится у ВМ3 не менее такта, все успеет пройти через мультиплексор (то что в предыдущих постах я не совсем удачно назвал SPI) даже на максимальной частоте. Тем более там еще есть возможности расширения этого мультиплексора скажем до 6 линий - весь адрес можно будет получить в основной ПЛИС (на материнке) в течение первой половины адресного такта, даже видится вариант просто тупо мултиплексирования по SYNC - пока SYNC неактивен CPLD транслирует старшие разряда адреса на выход мультиплексора, при активизации SYNC - остальные сигналы - SEL, HLTM, BS, UMAP, TA, INS. На SSYNC при этом вполне можно сразу постоянно выдавать низкий уровень, то есть фаза адреса выходит максимально короткой. OK, я заложу еще один резервный разъем и выведу туда немультиплексированные сигналы. Но не думаю что оно реально понадобится.

По документации процессор ВМ3A работает максимум на 6МГц. Ну пусть будет пробоваться оверклок до 10МГц (что сомнительно, но вдруг будет работать), при этом задержка передачи данных на примененном в моей схеме CPLD при наихудшей speed grade чипа -10N, составит всего 10нс. При этом не проблема чуть дороже купить CPLD со speed grade -7N и получить уже гарантированную задержку не более 7нс. Для схемы работающей на частоте 10МГц (время цикла 100нс) такие задержки вполне приемлемы и маловероятно что они станут причиной замедления работы всей системы. К тому же EPM3064ATC100 бывает в версии -4N (еще дороже и надо поискать, но решаемо) и имеет Tpd не более 4нс.

Кстати, 40-пиновый GPIO на DE2-115 только один - для меня это еще одна причина "втискиваться" в единый разъем. А дальше рядом на DE2 стоит мезонинный высокоскоростной разъем, к которому я не нашел в доступной продаже дешевой "ответки".



5V CPLD по-моему уже неактуальны, при такой-то их цене?


Да, 5V-толерантные CPLD/FPGA - все старых серий и дорогие. Последний альтеровский FPGA, который принимал непосредственно 5 вольт - это был Acex1K, цены на младшие EP1K10 и EP1K30 вполне приемлемые сейчас, но таки заметно повыше чем на последние Циклоны. Надо искать баланс - дороговатый Acex1K или недорогой Циклон+схема сопряжения. Имхо, пока рановато об этом думать - это чисто проблема следующего этапа (если он вообще будет кому-нибудь интересен).



преобразованием уровней будет решена (именно "доступным" для аматора способом, DIP микрухой(?) или платкой с MOSFET преобразователями) то
популярность такого новодела побьет все рекорды. Напоминаю что цена на б.у. плату процессора ДВК стартует с ~100$, а тут можно будет спаять самому за те же деньги.


Примененный мной в обсуждаемых процессорных модулях EPM3064ATC100 стоит в розницу около $3-4. Мне не кажется это заоблачной ценой. Файлы для изготовления печатных плат я выложу в открытый доступ, если у общественности будет интерес - то, думаю, найдутся люди, которые предложат такую плату как конструктор. В итоге детали и материалы для изготовления процессорного модуля на основе ВМ3 обойдутся аматору в цену не более $10 (без учета стоимости самого ВМ3) - CPLD + плата + мелочовка. Имхо, вполне доступно. К тому же платы не ожидаются особо сложными, планирую разработать максимум по 3-ему классу - при сильном желании такие можно изготовить по "лазерно-утюжной" технологии.



SDRAM там действительно нужен? В новых FPGA есть RAM да и внешний SRAM не проблема сейчас.

Посмотрим, на DE2-115 у меня есть и SRAM и SDRAM - можно будет опробовать систему на обоих типах памяти. SDRAM память - очень дешевая, имеет большой объем, поддерживает пакетный режим (полезно если на ней реализована также и видеопамять) и занимает меньше ножек ПЛИС, поэтому вполне есть резоны для ее применения. На недорогом ките DE0 - стоит только SDRAM, там вообще без вариантов.

---------- Post added at 00:25 ---------- Previous post was at 00:11 ----------



Хочется напомнить, что в 1801-й серии нет открытых коллекторов,

У ВМ1 - вход-выходы DMR, SACK разве не открытый коллектор? Они в шину должны же объединяться в многопроцессорке?



Согласователи единственные и неповторимые - КР531АП2 -


Они неповторимые для реализации "настоящего" МПИ в реальной корзине. А тут немного другая задача. Еще момент, 531-ая даст задержку рапространения Tpd порядка 3-4нс, при этом изрядно нашумит и пожрет. На обсуждаемых модулях аналогичный результат, только с меньшим шумом и жором, можно получить на CPLD с грейдом -4N, но я пока думаю что это не понадобится.

AlecV
29.04.2013, 00:49
А нафига железный процессор нужен ? Есть же HDL реализация ВМ1 достаточно полная.

https://code.google.com/p/bk0010/

Vslav
29.04.2013, 01:24
А нафига железный процессор нужен ? Есть же HDL реализация ВМ1 достаточно полная.

Ну вот.. Пришел поручик и опошлил все мероприятие :)
Хобби такое - бессмысленное и беспощадное - прикрутить железный процессор и иметь кусочек настоящего ретро в системе. Кстати, при желании можно будет в паралель запустить HDL-имплементацию и попытаться "допилить" ее до потактовой аутентичности, сравнивая в реал-тайме с оригинальным процессором.

P.S. Сегодня за вечер двухпроцессорник начерно оттрасировал. Вероятно на праздниках закончу первый модуль на 2хВМ1, а он самый сложный - дальше веселее.

Vslav
29.04.2013, 15:06
Дотрассировал двухпроцессорный модуль на ВМ1, обновленная схема и файл платы в первом посте.

Vslav
30.04.2013, 23:10
Модуль на ВМ2 готов, обновлена схема и выложен файл платы во втором посте.
Приступаю к модулю на ВМ3. Так что, на ВМ3 добавить второй разъем для возможной работы без мультиплексирования сигналов?

bigral
01.05.2013, 01:30
Так что, на ВМ3 добавить второй разъем для возможной работы без мультиплексирования сигналов?

КОНЕЧНО! очень желательно!

а что собственно "трассирование" представляет собой?

Vslav
01.05.2013, 01:47
а что собственно "трассирование" представляет собой?

"Представляет собой" конструирование платы в CAD-е - разработка топологии (прокладывание дорожек). По выложенным файлам при желании можно на заводском производстве (или дома по ЛУТ, но сложновато) изготовить печатные платы.
Я надеюсь что за праздники разработаю топологию модуля на 1801ВМ3, и уже после праздников буду заказывать изготовление всех трех модулей и плат эмулятора 1801РР1/РЕ2 (объединю это все на одной панели и закажу как одну плату - так дешевле чем по-отдельности). Для себя заказываю три комплекта, если будут еще желающие - присоединяйтесь.
PS. Процесссоры ВМ2/ВМ3 мне из Мск отправили еще 13 числа - посылки еще нет :(.

perestoronin
01.05.2013, 22:14
В личку написал на 1 комплект

Vslav
01.05.2013, 22:22
В личку написал на 1 комплект
ОК, как дойдет до изготовления - опубликую всю информацию - где будет делаться, чертеж сборной панели, примерную цену.

Vslav
18.05.2013, 00:09
Сейчас у меня на работе аврал - не получилось пока плотно засесть за модуль на ВМ3, ковыряю только совсем понемножку вечерами. Но процесс идет, энтузиазм не пропал. Приехали посылки с ВМ1, ВМ2, ВМ3. Попутно прикупил для изучения МС1201-02. На следующей неделе отдадут кит DE0. В-общем, шевелимся потихоньку.

Vslav
19.05.2013, 13:36
Трассировка модуля на ВМ3 закончена - обновленные схема и плата выложены в первом посте про ВМ3 в этой теме, теперь буду готовить герберы и компоновать несколько плат в "шаттл" для производства.

Vslav
19.05.2013, 20:54
Уффф, упаковка всех плат в шаттл, задание общих аппертур, сверловок, финальная проверка заняла почти весь день. В приложении - слои меди (верхний и нижний), слой маркировки и сверловка - все для справки в формате PDF.

Платы предполагается изготовить на Этале (последнее время там делаем опытные платы - 3-4 партии в месяц, на качество нареканий в данный момент нет), с зеленой маской и маркировкой.

На шаттле скомпонованы:
- плата двухпроцессорного модуля ВМ1
- плата процессорного модуля ВМ2
- плата процессорного модуля ВМ3
- плата эмулятора 1801РР1 - 6 штук

В зависимости от количества цена одной такой составной платы (шаттла) составит от $25 до $15. Если кто хочет получить такую экспериментальную плату (все перечисленные модули) - присоединяйтесь, я до 22 мая подожду с запуском производства. Чем больше нас наберется - тем дешевле обойдутся платы.

Примечание - платы будут "как есть" - могут быть ошибки, но фатальные (чтобы совсем уж ничего нельзя было собрать) - маловероятны. Большинство компонентов (кроме 1801) взято из собственной библиотеки и уже проверены в других проектах.

perestoronin
19.05.2013, 21:33
Может тему в барахолку заведёте? http://zx-pk.ru/market/index.php
PS. Я записываюсь на два комплекта.

Vslav
19.05.2013, 22:31
Спасибо за совет, тему в барахолке завел (http://zx-pk.ru/market/viewtopic.php?f=7&t=902)- желающих присоединиться просьба отписываться там.

hobot
28.05.2013, 18:06
http://zx.pk.ru/showpost.php?p=467631&postcount=10 - тут видно фотку платы
и краткое описание к ней (на ВМ2). Плата сама по себе интересная )

Vslav
28.05.2013, 19:37
http://zx.pk.ru/showpost.php?p=467631&postcount=10 - тут видно фотку платы
и краткое описание к ней (на ВМ2). Плата сама по себе интересная )
Да, модуль интересный, но он "заточен" для ЧПУ. Возможно что там выполнена эмуляция ВП1-035/065, есть выход на RS-232 и можно подключить внешний терминал, хотя так по фотке вроде не видно. Еще на этом модуле явно видно классический интерфейс МПИ (весьма вероятно на 531АП2), но ножевые ответки явно не под ДВК-ашные РППМ16-72.

PS. Кто не следит за темой в барахолке - сегодня платы запустили в изготовление, ждем результат через пару недель. Как будет у меня время - набросаю прошивку для MAX3064 модуля на ВМ1, для начала однопроцессорную.

PPS. Потихоньку разбираюсь с МС1201.02 и КЦГД (БК уже пережеваны :)).
МС1201 вообще простая оказалась - выбрасываем ИРПР (оставляем только внутренние регистры и имитируем отключенное устройство), выбрасываем интерфейс к ГМД-70хх (у меня в гараже, кстати, 8-дюймовый привод лежит, не помню какой точно - относительно компактный такой, но чтобы подключить - пока такого сильного фанатизма я не испытываю :)), сам МПИ внутри ПЛИС как бы не нужен и остается у нас от 1201 совсем ничего - только ВП1-035 (которую надо бы допилить добавлением скрытого приемного FIFO) и все. Получается что повторить МС1201 на ПЛИС достаточно просто - интерфейс к ВМ2, контроллер SDRAM, ROM (скорее всего просто часть SDRAM сделаю readonly) и UART типа ВП1-035. Как поднимется с внешним терминалом - уже можно будет подумать о добавлении контроллера дисководов. КЦГД же устроен сильно полюбопытнее, еще не полностью понимаю как он работает, идет интересный процесс "ковыряния".

Patron
29.05.2013, 12:22
UART типа ВП1-035. Как поднимется с внешним терминалом - уже можно будет подумать о добавлении контроллера дисководов.Эмуляция контроллера дисководов для МС1201 ( т.е. "не для БК" ) имеет смысл только в том случае, если с такого дисковода можно будет загрузить операционку, которую нельзя загрузить с TU-58 ( подключается через ВП1-035 ).

Загрузка с TU-58 требует наличия двух портов ВП1-035 (второй порт нужен для подключения терминала ). При наличии только одного последовательного порта - можно, используя мультиплексор HX - загрузить RT-11 ( Загрузка RT-11 через порт системного терминала (http://zx.pk.ru/showthread.php?t=20095) ).

Vslav
29.05.2013, 15:16
Эмуляция контроллера дисководов для МС1201 ( т.е. "не для БК" ) имеет смысл только в том случае, если с такого дисковода

Да, конечно, надо реализовывать MX и MY контроллеры, с "железным" выходом (34-контактный разъем) на реальные дисководы - с таких можно загружаться. Но думаю прямо сейчас не стоит очень уж широко развивать тему - планов много, а свободного времени - не так уж. Для начала пусть оживет реализация БК-0010/0011 на модуле с ВМ1, тогда и осмотримся насчет того что делать дальше.
Контроллер MX, TEAC и советские дисководы, а также кучка дискет в МХ-формате в наличии есть, вопрос только когда руки до этой всей красоты дойдут. MY контроллер пока не попадался.

bigral
30.05.2013, 02:54
Я могу ошибаться так как про саму БК0010\11 знаю довольно мало, но у меня сложилось впечатление, что реализовать БК-шку сложнее в разы чем типический pdp-11 CPU + SLU (как я понимаю это минимальный pdp-11 комп на котором в принципе идет почти весь софт, ну ясное дело тот что не требует HDD).

Vslav
30.05.2013, 09:39
БК очень проста, унитарна и достаточно полно документирована. Кроме того уже есть реализации на ПЛИС, куда можно будет "подглядывать". У меня в наличии работающие "живые" 0010/0011М/SMK-512 - всегда можно быстренько анализатором/осиллографом снять интересующую диаграмму. ИМХО, БК как стартовая точка - неплохой вариант.

После реализации в ПЛИС интерфейса к процессорному модулю и SDRAM контроллера с регенерацией (видео БК, кстати отлично будет регенерировать все 8К страниц SDRAM, и вполне прозрачно - SDRAM сильно побыстрее связки ВП1-037+РУ5, есть очень высокий шанс что процессору вообще не прийдется ждать) до добавления UART и получения "PDP-11+ выход на внешний SLU" будет рукой подать.

Vslav
14.06.2013, 15:46
Готовые платы приехали - в барахолке выложил фото.
Начал заниматься PE-мулятором, спаяю (нет еще всех деталей - цанговые штыри никак не прикуплю), запущу на БК-0010, и подготовлю материалы к публикации. Под РЕ-мулятор заведу отдельную тему - достаточно многофункциональное устройство выходит, много конфигураций, есть что обсудить.
По модулям - сейчас вечерами читаю толстую книжку по Верилог-у (у меня большой опыт на AHDL, на нем за несколько вечеров все накидал бы, но хочется другую методологию, это что-то навроде перехода на С с Ассемблера. Собственно, это и есть мой бонус в этом проекте - приятное изучение более высокоуровневого HDL и средств моделирования) и для первой пробы пишу прошивку для MAX3064 на модуле ВМ1. Там все просто - чисто комбинационная схема.

Vslav
17.08.2013, 13:50
РЕ-мулятор закончил, продолжаем радоваться жизни - переходим к модулям:
- почитал умную книжку по Verilog HDL, поразбирался с ModelSim
- спаял модуль на ВМ1, пока в однопроцессорной конфигурации
- написал и помоделировал прошивку EPM3064 что на модуле (сразу в расчете на 2-х процессорную конфигурацию, режим выбирается перемычками)
- создал начальный проект для DE0, генерирует 3МГц (для БК-0010) тактовой для процессора и сигналы DCLO/ACLO
- соединил платы DE0 и VM1, подал питание
- и понаблюдал старт процессора осциллографом :)

Сейчас сделаю на DE0 маленькие ОЗУ/ПЗУ на внутренних M9K блоках и буду пробовать помигать светодиодом под управлением 1801ВМ1.

http://s019.radikal.ru/i607/1308/c3/fac718ad88a3t.jpg (http://radikal.ru/fp/d7e9a2047111480098b9356e45420f82)

Питание от DE0 по +5В не очень - просаживается до 4.8 (там диоды Шоттки на DE0 стоят), но вопрос решаемый, можно подать на DE0 чуть повышенное +5.25В через разъем USB.

Vslav
10.09.2013, 09:34
Кратенько в свободной форме напишу про ход проекта:
Наконец-то у меня Verilog HDL "пошел" - поймал фишку, что называется, а то раньше только не очень большие (до тысячи триггеров самый большой) проекты на AHDL делал.
На днях переделал полностью иерархию, все таки как для первого проекта задумка великовата, сразу не особо удачно получилось - пришлось переписать и переложить все по полочкам.
Самый-самый верх - это Тестбенч, все симулируется в ModelSim. В этом Тестбенче (внутри) пока два кубика - Плата и модуль Процессора. По мере разработки добавлю модуль SDRAM и что там нужно будет для отладки/симуляции. Модуль Процессора - сменный (пока только вариант ВМ1), модуль Платы тоже сменный (сейчас DE0), то есть для моделирования/тестирования можно в любой момент сменить кубик проца, что соответствует примененному реальному "экспериментальному процессорному модулю".
Модуль Платы - это собственно синтезируемый код, который помещается в микросхему FPGA. Сменой этого модуля можно легко перейти на другую платформу - например, DE2-115 или на свою собственную плату (которую, возможно, буду разрабатывать - DE0 не полностью устраивает как финальное устройство). В модуле Платы (DE0 или другая) внутри вложен еще кубик - называется Система, тут варианты планируются БК-0010, БК-0011M, МС1201.xx.
Внутри кубика Системы имеется два основных кубика - процессорный Хаб и собственно Устройства (отвечает за карту памяти). Процессорный Хаб имеет унифицированный интерфейс внутрь (шина типа AHB lite), а наружу (в смысле на реальные физические пины) зависит от примененного процессорного модуля - то есть внутри системы можно будет применить любой из ВМ1/2/3 и быстро производить смену - фактически только определив пару `define в файле конфигурации. На выходе получим например БК-0010 на любом из этих процессоров. Также, при желании, можно заменить Хаб на синтезированный процессор - то есть тогда внешний процесорный модуль вообще не нужен. Ессно, внутри этих кубиков выделяются мелкие общие из которых постепенно вырисовывается своя библиотека.
Да, стараюсь писать портируемо - альтеровские фишки выносятся в модули-обертки, чтобы при желании и на Xilinx/прочие можно было быстро перенестись.
Вот такой зоопарк выходит, немного наворочено, зато можно на выходе из набора кубиков построить несколько разных систем - и все из одного проекта.
Сейчас конкретно пишу процессорный Хаб для ВМ1, модуль "устройства" пока простой - 1К ОЗУ и 1К ПЗУ внутри ФПГА. Думаю что очень скоро первая программка на реальном ВМ1 пойдет - не только симулирую, но и периодически заливаю синтез в реальную плату и смотрю анализатором/скопом что там происходит.
Много времени тратится на поиск всяких подробностей о ВМ1, который толком не документирован. Например позавчера практически выяснял какая же ему нужна задержка для снятия ACLO после DCLO - тексты в Сети утверждают что надо аж 70 мс, а реальные БК-шки - снимают ACLO менее чем через 1 мкс. Про регистры межпроцессорной связи вообще пока нет ясности.
Ну как-то так. Процесс идет, не очень быстро (работать работу тоже надо), но зато очень интересно.

Vslav
26.11.2015, 21:00
Доделал прошивку MAX3064 и запустил модуль пока с одним 1801ВМ1А. В плату DE0 сделал проект на котором тестировался ПЛИС-овый вариант ВМ1, просто написал мост QBUS<->Wishbone и заменил на реальный процессор на внешнем модуле. В системе есть 8К ОЗУ с загруженной программой и порт 065, подключенный по RS-232 к PC. Работает таймер 50Гц и прерывания от консоли.

Для начала немножно позанимался оверклокингом, разогнал до 7.2МГц (100/14), процессор выпуска 9009. Вроде часок отработал, не завис, на питании 4.76 вольта, греется несильно. Запущу арифметический тест и буду пробовать поднять частоту еще. Длительности высокого и низкого уровня тактового сигнала могут регулироваться отдельно, пока равны, подъем питания еще в запасе, в-общем, можно отрываться ))) На 8.3МГц сразу не заработало.

Добавлю в проект логический анализатор, софтовые тесты, и все выложу. Также выпаял один золотой ВМ1Г выпуска 8905, будет еще один модуль, для проверки реальных процессоров А/Г. Ну и второй ВМ1А надо пробовать установить, но это уже когда видеоконтроллер появится.

- - - Добавлено - - -

Собрал модуль на 1801ВМ1Г, тоже устойчиво заработал на 7.2 МГц при 4.76 вольтах. Успешный разгон две из двух попыток, Ангстрем к концу 80-ых свою технологию отладил.

Vslav
27.11.2015, 23:16
Добавил логический анализатор (SignalTap), теперь можно не отходя от монитора смотреть чего там на шине реального процессора происходит. На прерывание таймера добавил переключатель, теперь можно отключать, как в реально машине, а то мешает тестам 401/404. Тест 401 зациклил, выводит счетчик циклов на семисегментный индикатор не плате.
Выкладываю первую ревизию 1.0a (http://u.zeptobars.ru/yuot/1801/MOD/vmod_rev10a.rar) для платы DE0
В первом посте темы будут выкладываться обновленные ссылки.

Vslav
06.12.2015, 15:58
Модуль на 1801ВМ2 успешно заработал. Процессоры устойчива работают на 10МГц. На 12,5МГц из 4-х штук не захотел ни один.
Также спаян модуль с 1801ВМ3, там с прошивкой МАХ придется чуток повозиться.
Выглядит вот так:
http://s017.radikal.ru/i414/1512/b3/f40b3a3e7a3ct.jpg (http://s017.radikal.ru/i414/1512/b3/f40b3a3e7a3c.jpg)

Vslav
08.12.2015, 12:07
Запустил модуль 1801ВМ3. Есть некоторые непонятки, просто изложу ситуацию.
SSYNC сидит на земле, стабильное питание 4.75В, все временные диаграммы обмена по шине в норме (смотрел анализатором).
Пробовал три экземпляра процессоров, с датами 9002 (без точки), 9202 (с точкой), 9201 (без точки).
Прогнал тест вычисления числа Пи.
На частоте 4.2 МГц все три процессора работают правильно, никаких проблем нет, работает в цикле часами.
На частоте 5.0МГц есть странность - при включенных прерываниях таймера 50Гц (подключено к EVNT) процессор теряет управление.
Если прерываний таймера нет, то число Пи на 5МГц считается успешно (просто время не отсчитывается)
Все три процессора после сбоя ведут себя одинаково - при новом прерывании EVNT они сохраняют состояние по адресу 076:074, и стартую с нулевого адреса (нет обращения к вектору 100!), при этом нормальный режим работы не восстанавливается. В итоге выяснилось, если есть инструкция считывания данных со значением 177777 (например mov #177777, R0, регистр значения не имеет, или mov adr, R1 (в ячейке 177777)) то происходит сбой.
Запрет прерываний в момент выполнения такой инструкции не помогает, видимо имеет место какой-то аппаратный сбой внутри процессора.
Еще особенность - сразу при включении питания, пока процессор холодный, то может правильно работать на 5Мгц, по мере прогрева - начинаются проблемы. То есть, на ошибку в FPGA-платформе непохоже, там сразу бы не работало.

Все материалы по модулям vmod_rev12a.rar (http://u.zeptobars.ru/yuot/1801/MOD/vmod_rev12a.rar)

Titus
08.12.2015, 12:21
Пожалуй, без реверса ВМ3 не обойтись ;)

Vslav
08.12.2015, 12:24
Пожалуй, без реверса ВМ3 не обойтись ;)
А может лучше 1811ВМ1? :) Надо бы к нему переходник спаять и погонять.
1801ВМ3 не демонcтрирует чудес производительности и явно уступает 1801ВМ2. Похоже что введение уже трех режимов (пользователя, ядра и пульта) уже критично сказалось на микропрограмме.

Titus
08.12.2015, 13:02
А может лучше 1811ВМ1?
Как угодно. Хотя он в плане эмуляции ретрокомпов менее интересен. Главное вм2 добить.

Vslav
08.12.2015, 14:28
Как угодно. Хотя он в плане эмуляции ретрокомпов менее интересен. Главное вм2 добить.
ВМ2 добьем :). Но 1801ВМ3 или 1811ВМ1 все равно нужен, хочется же RSX-11M нормально запустить.

MM
08.12.2015, 18:51
Если 1801ВМ3 трапует при чтении числа 177777 - верный косяк трекинга шины.
У БИС 1801ВМ3 ножки не сильнее 1801ВМ1, так что дребезга на МПИ - более, чем достаточно.
Вообще, для полного понимания процессов внути устройств на 1801ВМ3 необходим 32-х канальный осциллограф, не менее 4 бит на канал, не менее 100 мгц строб - там будет все ясно.
*
Переход к выполнению с 000000 адреса - ВМ3 в пульт валится. Пока не выберется из пульта - все прерывания запрещены, включая ЕМТ.
Вероятно, или гнилой тактовый сигнал - не пропорция 50%, или недостаточно питания - +5.70 в. может и не хватать.
Так же обязательно необходимо предусмотреть подтяжки до +5 в - особенности реализации процессора, например см. о тактировании Z80 - тоже строго до +4.5 в, не менее.
*
Правильная реализация малогабаритной ( до 120х120 мм ) системы на 1801ВМ3 - от ног процессора подтяжки 1 ком до +5. 00 в, потом канал 530АП2, с др. стороны 530АП2 - подтяжка 150 ом к +5в. - если есть несколько потребителей сигнала, или 330 ом - если 1 потребитель. Коаксильность МПП - крайне желательна.
*
1801ВМ3А при 6 мгц 0 тактов СОЗУ ( SSYNC - 0v ) выдает не менее 1.5 млн рег-рег, что реально никак не делает 1801ВМ2А при любом разгоне. Типовой 1801ВМ3А отлично гонится до 6.75 мгц.

Vslav
09.12.2015, 00:39
Если 1801ВМ3 трапует при чтении числа 177777 - верный косяк трекинга шины.
Он не трапует именно по чтению 177777 - данные читает успешно, проблемы возникают позже при прерывании на входе EVNT.



У БИС 1801ВМ3 ножки не сильнее 1801ВМ1, так что дребезга на МПИ - более, чем достаточно.

Там все соединения точка-точка, то есть просто отрезок провода от микросхемы к микросхеме, и очень близко к ножке процессора установлен резистор 2K2 на +3.3. ПЛИС не нужен уровень +5В, ей отлично +3.3CMOS хватает. Правда корпус здоровый, длинный проводник внутри корпуса процессора никуда не делся. Картинка - желтый DIN, выход процессора, голубой читаемый ~AD0, сигнал формируется 74LVC245.

http://s018.radikal.ru/i528/1512/de/b68499251d4e.png (http://radikal.ru/big/08321a1b6865491e990b36d4e50787a2)

Шина данных немного шумит, я делал в основной ПЛИС степпинг для читаемых данных - разбил вывод на шину на 4 такта (100МГц), в первом такте выводятся линии [3:0], во втором [7:4], в третьем [11:8], в последнем [15:12], теперь при чтении 177777 физические нули не сразу толпой из 16 штук на шину вываливаются. Это немного снизило видимые шумы на осцилографе, но проблему не решило.



Вообще, для полного понимания процессов внути устройств на 1801ВМ3 необходим 32-х канальный осциллограф, не менее 4 бит на канал, не менее 100 мгц строб - там будет все ясно.

Есть логический анализатор до 36 каналов (не SignalTap в ПЛИС, а обычный железный анализатор), до 4Гигасемплов/секунда, показывает что с циклами шины все OK. Осциллограф в форме сигналов криминала особого не видит, уровни и выбросы приемлемые, борьбы никакой не видно.



Переход к выполнению с 000000 адреса - ВМ3 в пульт валится.

Да, валится в пульт, выход HLTМ переходит в низкий.
Я сделал прерывание EVNT по кнопочке - кнопочку нажал, возникает одиночный импульс. Если нигде не читается 177777, то процессор нормально прерывается по 100 вектору. А если было где-то чтение 177777 (ранее, не в прерываемой инструкции!, поэтому то запрет прерываний и не помогал) - то улетает в пульт, причем сразу, по фронту EVNT.

Картинка: [http://s017.radikal.ru/i414/1512/20/8a3dc102afe4t.jpg (http://s017.radikal.ru/i414/1512/20/8a3dc102afe4.png)]
Там видно и степпинг по данным (значение устанавливается за несколько тактов) и видно что по EVNT сразу не стал читать вектор 100, как при обычном прерывании, а пошел сохранять PSW по адресу 076, и PC по адресу 074. В сохраняемом PSW никакого криминала не видно.



Вероятно, или гнилой тактовый сигнал - не пропорция 50%

Да, был слегка "гнилой". С пропорциями все ОК, но иногда в середине фазы были очень приличные помехи уровнем до полутора вольт. Я стал искать причину, пробежал вторым каналом осциллографа по выводам процессора, и помеха оказалась синхронна с линией AD3. Прикол, ставишь щуп AD3 - и помеха на CLK пропадает. Я припаял туда 10пФ и сигнал на CLK стал таким (включено послесвечение, показать что в других циклах тоже все OK):

http://s017.radikal.ru/i414/1512/01/8b63c45f159d.png (http://radikal.ru/big/cfdcdcbba6f14e5eacb2ec9ea45114d4)

После этого процессор уверено стартанул на 6.25МГц. После обнаружения такого прикола я долго лазил по плате с осциллографом, сделал степпинг в ПЛИС, ограничил токи выводов ПЛИС, добавил Slew Rate (зарезал немножко фронты), все это не помогло, источником помехи является сам процессор. Почему ему помогло 10пФ на одной линии - не очень понятно.



, или недостаточно питания - +4.70 в. может и не хватать.

Подал питание +5.2В от внешнего источника, проблема осталась. Процессор кушает при вычислении Пи всего 150мА, так что греется несильно - 0.75Вт всего.



Так же обязательно необходимо предусмотреть подтяжки до +5 в

Предусмотрено, 2К2 на +3.3в. Это усиливает верхние ключи для выходов процессора, внешним схемам +5В не нужны. Процессору +5V сигналы тоже не нужны, входной буфер (я не видел пока, по аналогии с ВМ1/ВМ2) устроен так что ему именно достаточно +2.4В (как в даташите) для полного открытия транзистора. Практика - критерий истины - число Пи на 6.25МГц успешно считается в полностью 3.3-вольтовой среде.



Правильная реализация малогабаритной ( до 120х120 мм ) системы на 1801ВМ3 - от ног процессора подтяжки 1 ком до +5. 00 в, потом канал 530АП2

Все это прекрасно, но втыкать абсолютно некуда - Циклоны принципиально больше 4.6вольта не переживают, а еще и частенько горят от выбросов.



1801ВМ3А при 6 мгц 0 тактов СОЗУ ( SSYNC - 0v ) выдает не менее 1.5 млн рег-рег

Мне такого добиться не удалось. Там выше выложена диаграммка (с прерыванием которая), из нее следует что самый короткий цикл занимает 5 тактов извлечения инструкции, причем видно что процессор снимает DIN по второму фронту CLK при активном RPLY, точно как это делают ВМ1/ВМ2. Возможно ВМ3 заканчивает цикл по первому же фронту CLK активного RPLY (слегка нарушая спецификацию МПИ), значит RPLY просто не сразу был обнаружен. Статья в МПСС по ВМ3 говорит что данные принимаются по срезу CLK после обнаружения RPLY на фронте CLК. То есть DIN по первому CLK снять нельзя - устройство уйдет с шины, прочтется мусор. Точно мы это узнаем когда реверс ВМ3 закончим. У меня итоговая производительность на 6МГц/5тактов - 1.2Мипс. Такое я увидел на блоке инструкций mov R,R. Также видно что один такт тратиться между циклами, но RPLY снимается быстро, SYNC снимается позже, то есть мы ничего тут сделать не можем. У Вас точно получалось извлекать и исполнять инструкцию за 4 такта?




1801ВМ3А отлично гонится до 6.75 мгц.

Уже посчиталось Пи на 7.14МГц, на сигналах 3.3В и питании +4.75В. Все правильно считает, но вот по EVNТ валится в пульт. Я вот думаю, а может забить на этот EVNT? Сделаю его векторным, буду просто 100 подсовывать и усе. Векторные же от 065-ой никак не виснут.

MM
09.12.2015, 01:55
1. 1801ВМ3А - птица глючная, может быть что всё-таки подтяжки до +5в. критичны.
2. В каком состоянии выводы разрешений прерываний - их надо установить в вид, как на блоке ВМ3А, или на МС1201.03.
3. Какой текст запускающей последовательности ( например, адреса 173000 ) - и особенно содержимое ячейки 000102 ?
4. Прописан ли ДП по типу пусковой последовательности из RT-11 ( гуглится ДЕССом в любом приличном диске с RT-11 ), длина - порядка 000100. Искать - по адресам регистров ДП.
5. Если взять и навешать на каждый выв. АД0-АД15 конденсатор КМ5 зеленый квадратный 51 пф на общий ( 16 шт. ) - глюк с числом 177777 сохраняется ?
6. В Пульте прописать следующее :
000000 : 012737 000040 172516 077501 005037 172516 077501 000770
На выв. UMAP присобачить желтый светик с резистором - при переходе в пульт светик будет мигать.
7. Можно для опытов соединить TA и SSYNC через задержку несколько десятков нс - и проверить, сохранится ли глюк 177777 ?
Если да - значит, напишем в комметариях еще 1 новость...
*
Был как-то слух, что выв. прерываний в 1801ВМ3 не только входы, но и выходы - где-то на Фантом-Саннате обсуждалось.
*
Быстродействие с SSYNC=0v. я считал на непрерывной последовательности рег-рег, в угловатом коде, разумеется, будет заведомо ниже, до 2-х раз.
*
Для получения быстродействия разработчики ВМ3 забили болт на стандарт МПИ - т.е. никакие такие 100...200 нс и т.п. логика шины не выдерживаются, всё аномально и забегает за ( соседние события шины ). Если бы соблюдать все стандарты - то больше 1.2 млн ну никак не получить.

- - - Добавлено - - -

Попробуйте такой текст :
173000: 012737 173100 000100 012737 000340 000102 106427 000000
173020: 012737 000040 172516 077401 005037 172516 077401 000770

173100: 012700 000100 012737 000040 172516 012701 020000 077101
173120: 005037 172516 012701 020000 077101 077014 000002 000000

Да, а в R6 что находится при возниконовении прерывания по таймеру ???

- - - Добавлено - - -

Обсуждение входов-выходов прерываний :
http://www.phantom.sannata.ru/forum/index.php?t=14066
Сообщение от 04 авг. 2013 г. из г. Хабаровск.

Vslav
09.12.2015, 02:53
Все материалы по модулям - тут (http://u.zeptobars.ru/yuot/1801/MOD/), включая исходники программ и ПЛИС-ок.


2. В каком состоянии выводы разрешений прерываний - их надо установить в вид, как на блоке ВМ3А, или на МС1201.03.

Что имеется ввиду? На IRQ3 приходит запрос от 065, остальные IRQ - в высоком. HALT высокий, на EVNT - или импульс по кнопке, или 50Гц меандр, зависит от переключателя. По IRQ3 (пробовал еще IRQ0) никаких замечаний нет, все прекрасно работает, вектор извлекается, по нему обработчик. На HALT никаких помех.



3. Какой текст запускающей последовательности ( например, адреса 173000 ) - и особенно содержимое ячейки 000102 ?

512-байт блока по адресу 173000 отмаплено физически в 000000. По 000000/173000 стоит jmp @#start.
Вероятно надо добавить отдельный блок, чтобы не путалось.



4. Прописан ли ДП по типу пусковой последовательности из RT-11 ( гуглится ДЕССом в любом приличном диске с RT-11 ), длина - порядка 000100. Искать - по адресам регистров ДП.

Нет, не прописано пока. Диспетчер же должен быть выключен после сброса.



5. Если взять и навешать на каждый выв. АД0-АД15 конденсатор КМ5 зеленый квадратный 51 пф на общий ( 16 шт. ) - глюк с числом 177777 сохраняется ?

Прикол в том что ему сейчас 177777 дается кусками, сначала на шине появляется 177400, потом переходит в 177777 (степпинг). Попробую конденсаторы, похоже ему фронт резкий на AD3 не нравился.



Быстродействие с SSYNC=0v. я считал на непрерывной последовательности рег-рег, в угловатом коде, разумеется, будет заведомо ниже, до 2-х раз.

Я проверял на пачке инструкций mov R0, R1 - с десяток подряд, потом br в начало - 5 тактов на инструкцию у меня вышло. В диаграммах по документации никакой ясности нет. Поэтому важно узнать - Вы на реальном процессоре видели 4 такта на инструкцию (это легко в таком же программном цикле по периоду SYNC увидеть), или моему процессору что-то не нравится и он не выходит на максимальную скорость.



Обсуждение входов-выходов прерываний :
http://www.phantom.sannata.ru/forum/index.php?t=14066

53 нога FFPTRP подключена через резистор 1К к +3,3в, никаких импульсов на ней нет.
Если 53 оторвать от резистора, то не работает. Если прицепить 53 к 3 (SYNC), тоже не работает.
Остальное уже завтра пробовать буду. 53 вряд ли выход, скорее это непонятный вход (то есть не только сопроцессором трапает).

MM
09.12.2015, 04:39
Вероятно, дело - в R6, в его контенте. При возникновении IRQ100 проц пишет по адресу, указанному в R6.
*
Я не пользуюсь безалкогольным пивом, резиновыми женщинами и эмуляторами чего-либо для замеров производительности.
Проверено пару лет назад на блоке ВМ3А - и результаты замеров - в соответствующей теме на БК0010.орг.
( К сожалению, на указанном ресурсе полный ( полнейший ) балаган, и даже нет возможности дать точную ссылку на результаты замеров производительности блока ВМ3А с 0в. на SSYNC. Отмечу только, что результат считался по натуральному внешнему секундомеру, а маркер выполнения - сигнал UMAP ( т.к. все остальные регистры, разумеется, при tАпредSYNC=180 нс - недоступны. )
*
Один аномальный мыслитель из России вообще насчитал у 1801ВМ3А-6 мгц 2 млн рег-рег - но он не предоставил фото стенда, и т.п. косяки "замеров" - якобы мерил по цифровому осциллографу в тактах ЦП.
*
Рекомендую достать платку 6 слоев ВМ3А и собрать нечто, похожее на блок ВМ3А - это принципиально упростит процесс разработки приложений, особенно под RT-11 - ИМХО. И снимет 95% вопросов,т.к. даже на такой малышке заметны изрядные косяки БИС 1801ВМ3А по части электрики.
*
Методика измерения - сначала меряется холостой цикл, потом - полный, и в итоге из полного вычитаем время холостого цикла. Ну или пишем 64 кода 010001, потом - Бренч Начало, и приблизительно оцениваем в тактах диаграмму МПИ.

- - - Добавлено - - -

Вот диаграмма чтения ВМ3 - из краткого ТО :
http://storage2.static.itmages.ru/i/15/1209/h_1449625077_2922523_b84f5a1c6a.jpg (http://itmages.ru/image/view/3285892/b84f5a1c)

Как я и предполагал - адрес ставится вовсе не на 180 нс перед SYNC, а всего лишь на 90 нс.

CodeMaster
09.12.2015, 08:41
Я вот думаю, а может забить на этот EVNT? Сделаю его векторным, буду просто 100 подсовывать и усе.

А потом ракеты падают ...

Vslav
09.12.2015, 11:08
А потом ракеты падают ...
Спокуха, все под контролем :)

В-общем, подумал я раз 10 пФ на AD3 сразу заметно снижает помеху, и проблемы вылазят если читается 177777, то вопрос аппаратный. Поменял схему степпинга, раньше было побайтно - выдавался на шину сначала младший байт, через 10 нс старший. А на схеме каждый байт выдается отдельной микросхемой 74LVC245, поэтому решил сделать чередование - выдаются сначала четные биты, потом нечетные, одна микросхема за такт будет приводить максимум 4 линии. Помогло очень заметно - стал проходить тест таймера (вывод тиков в цикле), а Пи стал виснуть не сразу и по-другому. Тогда на каждый AD процессора припаял 10 пФ и все заработало! Уже полчаса гоняю на 7.14МГц, все устойчиво работает. Попробовал 8.3МГц, стартует но подвисает, надо сделать более точно устанавливаемую частоту чтобы нащупать границу, а от у меня только деление 100/(2*N)

Посмотрел трассировку платы модуля - там реально не очень удачная - младший байт AD пересекает длинный разрыв в подстилающем слое GND (там заливка почти везде с обратной стороны), причем в этом разрыве идет EVNT. И потом еще один очень длинный разрыв пересекаетсмя под процессором, все это приводит к повышенной (условно) индуктивности линии и переходным процессам, которых видимо достаточно чтобы повлиять на микросхему процессора. В-общем, 10пФ на шину данных помогли, всем спасибо за помощь. Осталось разобраться с 4 тактами на команду, реально это или нет.

- - - Добавлено - - -


Отмечу только, что результат считался по натуральному внешнему секундомеру, а маркер выполнения - сигнал UMAP ( т.к. все остальные регистры, разумеется, при tАпредSYNC=180 нс - недоступны. )
...
Методика измерения - сначала меряется холостой цикл, потом - полный, и в итоге из полного вычитаем время холостого цикла. Ну или пишем 64 кода 010001, потом - Бренч Начало, и приблизительно оцениваем в тактах диаграмму МПИ.

Это косвенный метод. Желательно проделать прямые измерения - набрать пачку последовательных команд mov R0, R1 и запустить на нее бесконечный цикл. И осциллографом наблюдать за SYNC, если период 4 такта, то буду искать у себя непонятку (на моем стенде минимальный цикл 5 тактов). Сделал сейчас вариант очень быстрого снятия RPLY - все равно процессор при высоком SYNC проводит бесполезный такт и итоговая длина цикла 5 тактов.



Как я и предполагал - адрес ставится вовсе не на 180 нс перед SYNC, а всего лишь на 90 нс.

Это нестрашно, МПИ внутри ПЛИС синхронизируется с клоком 100МГц, достаточно предустановки адреса всего на 20нс.
Выложил ревизию 1.2B (http://u.zeptobars.ru/yuot/1801/MOD/vmod_rev12b.rar)

- - - Добавлено - - -

Пачка mov R0,R1 в цикле выглядит так (укоротил, только цикл): [http://s019.radikal.ru/i601/1512/9e/d57a279174c7t.jpg (http://s019.radikal.ru/i601/1512/9e/d57a279174c7.png)]
Видно что процессор теряет такт при высоком SYNC, не начинает почему-то новый цикл сразу.

Patron
09.12.2015, 12:05
точно получалось извлекать и исполнять инструкцию за 4 такта?Результаты тестирования (http://zx-pk.ru/showthread.php?t=14702&p=689411&viewfull=1#post689411) это подтверждают :



.RUN OP1
Op1 - v1.1
CPU KHz: 3930 > 3954
CPU KHz: 3954

SOB : 18 ! Last SOB : 9 ! Br : 15 ! BCS : 7 ! BCC : 15 ! SeC : 4

R0 (R0) (R2)+ @(R2)+ -(R1) @-(R1) Addr (PC)+ @Tab(R0)

Tst 4 13 14 21 14 23 15 11 23
TstB 4 13 14 21 14 23 15 11 23
Inc 4 17 18 25 18 26 21 21 30
IncB 4 22 22 28 22 30 27 27 35
Clr 4 13 14 24 14 23 18 18 25
ClrB 4 18 18 28 18 25 23 23 31
MTPS 25 35 39 45 36 46 39 32 46
MFPS 18 25 26 37 26 34 28 28 36
XOr 4 20 21 28 21 29 23 23 31
SwaB 9 23 27 31 24 32 27 27 35
SXt 9 19 23 30 20 28 24 24 31

Program completed.

Vslav
09.12.2015, 14:05
Результаты тестирования (http://zx-pk.ru/showthread.php?t=14702&p=689411&viewfull=1#post689411) это подтверждают :

Да, тесты погонять на моем стенде надо (чуток пропатчив, у меня нету пока RT-11, или уже проще дождаться запуска RT-11). Но ситуация еще прикольнее - я снизил частоту процессора до 5МГц, и он стал извлекать и исполнять mov R0, R1 за три такта :), что прекрасно видно на диаграмме:
http://s43.radikal.ru/i101/1512/91/2f3e2ce16da1t.jpg (http://s43.radikal.ru/i101/1512/91/2f3e2ce16da1.png)
Не успевает RPLY, видимо, быстро проходить через MAX3064 до проца на 7.2МГц.

Patron
09.12.2015, 15:37
у меня нету пока RT-11RT-11 можно загрузить через HX на любой конфигурации с портом терминала, если поместить в память и запустить загрузчик HX ( или начальный загрузчик TU-58 ).

...

Следующий этап - эмуляция контроллера HD первой версии ( подробнее ЗДЕСЬ (http://zx-pk.ru/showthread.php?t=17277&p=436263&viewfull=1#post436263) ).

Контроллер HD должен выполнять команды "мгновенно", поэтому при работе с реальным процессором - процессор надо останавливать на время выполнения команд контроллером HD.

Vslav
09.12.2015, 16:41
Простое решение - эмуляция контроллера HD первой версии ( подробнее ЗДЕСЬ (http://zx-pk.ru/showthread.php?t=17277&p=436263&viewfull=1#post436263) ).
Памяти пока всего 16К, на основе внутренней памяти ПЛИС, поэтому не до загрузки по HX или контроллеров.

PS: работает на 7.2МГц, а на 5МГц по EVNT все также валится в пульт. У него почему-то стек становится равным 100, вместо вектора. Где-то можно почитать когда ВМ3 уходит в пульт, кроме запроса и инструкции HALT, а также двойной ошибки?

MM
09.12.2015, 17:28
Еще 1801ВМ3 любит валится в пульт при переразгоне.
Т.к. эта БИС до сих пор имеется в составе ВС РФ, в открытых источниках нет по ней почти никакой информации.
*
По ТО выходит, что для максимального быстродействия вся информация должна приходить в проц за не менее , чем 10 нс до наступления фронта такта - в т.ч. и отрицательного.
( ТО было на болгарском, читал лет 20 назад ).
*
Диаграмму сваливания по таймеру можно ?
*
10 пф на АДх - мало. Надо не менее, чем тройную емкость 1 трека АДх - а она заведомо больше 20 пф будет.
*
Насчет текста теста - лучше его в DESS вывести, а сюда поместить скриншот DESS.

Vslav
09.12.2015, 22:41
В-общем, дело не в процессоре оказалось, вернее не только в нем.
Прицепил железный анализатор (достаточно хлопотно цеплять его) и в итоге пришел к ловле события по срезу выхода HLTM процессора. И вот когда наступает переход в пульт (срез на HLTM), оказывается-то фронта EVNT близко нету, но EVNT всегда низкий. Стал копать а что же есть, и оказалось что ACLO падает на 4 такта CLK, далее процессор выбирает слово по 173000 и пытается на это слово перейти (это следующий вопрос почему так), там нечетный адрес (код инструкции перехода 0137) и уже честный уход в пульт со стеком 20000.

Ложный короткий АCLO формируется MAX3064, в котором внутри расположен сдвиговый регистр. На входе CLK этого MAX3064 из-за работы процессора формировалась помеха, в итоге вместо одного такта считалось два и в сдвиговом регистре оказывался вместо DCLO/ACLO значения HALT/EVNT. EVNT был нулевой и попадал на ACLO. Сдвиг производится с частотой CLK, вывод значений на выходы CLK/4.

Вот такая ситуация, процессор работает, создает помеху, но не себе, а рядом расположенной быстрой CPLD, которая охотно ее ловит. Вылечилось конденсатором 39пФ непосредственно на входе MAX3064. А вообще виноват Terrasic с его идиотской цоколевкой разъема, где земля и клок разнесены изрядно, когда трассировал платы модулей мне это очень не понравилось. Добавлялось 10пФ на шину, степпинг - все это помеху снижало, вероятность глюка на клоке MAX3064 снижалась. Но не обнуляло, поэтому поменяли частоту, режим процессора сменился, помеха сменилась и стала снова проявляться.

Сейчас все успешно работает, проверил с тремя процессорами, на 4-х частотах.

Следующий вопрос - максимальная производительность. Подсчет Пи 1000 знаков, EIS On:
4MHz - 63.22 сек, минимальный цикл 3 такта
http://s019.radikal.ru/i634/1512/21/87ab7955066dt.jpg (http://s019.radikal.ru/i634/1512/21/87ab7955066d.png)

5MHz - 56.04 сек, минимальный цикл 4 такта (не успевает установка RPLY на первый фронт CLK)
http://s017.radikal.ru/i429/1512/fd/ba0f46e43f91t.jpg (http://s017.radikal.ru/i429/1512/fd/ba0f46e43f91.png)

6.25МНz - 47.08 сек, минимальный цикл 5 тактов (не успевает установка RPLY на первый фронт CLK и снятие RPLY)
http://s008.radikal.ru/i304/1512/ff/b8399cbfadb4t.jpg (http://s008.radikal.ru/i304/1512/ff/b8399cbfadb4.png)

7.14MHz - 41.52 сек, минимальный цикл 5 тактов (не успевает установка RPLY на первый фронт CLK и снятие RPLY)
http://s008.radikal.ru/i304/1512/ff/b8399cbfadb4t.jpg (http://s008.radikal.ru/i304/1512/ff/b8399cbfadb4.png)

В-общем, есть смысл еще побороться за быстрый RPLY - 1801ВМ3 может выбирать и исполнять инструкции регистр-регистр за 3 такта, поэтому заявленные 2млн/сек при частоте 6МГц не выглядят байкой.

- - - Добавлено - - -



Т.к. эта БИС до сих пор имеется в составе ВС РФ, в открытых источниках нет по ней почти никакой информации.

Так что, реверсить не будем? А то ветку закроют? :)



Диаграмму сваливания по таймеру можно ?

[http://s017.radikal.ru/i414/1512/20/8a3dc102afe4t.jpg (http://s017.radikal.ru/i414/1512/20/8a3dc102afe4.png)]
Но это не совсем сваливание, это так таймер в пульте обрабатывается, оказалось. То есть, на момент прихода st_irq (таймер) процессор уже в пульте.



10 пф на АДх - мало. Надо не менее, чем тройную емкость 1 трека АДх - а она заведомо больше 20 пф будет.

Помеху от процессора уменьшило, поэтому и эти 10пФ снимать не буду пока. Самому процессору, видимо, все равно - он по слишком медленной технологии сделан чтобы успевать ловить такие короткие импульсы.



Насчет текста теста - лучше его в DESS вывести, а сюда поместить скриншот DESS.
В архиве есть исходник, компилирутся MACRO-11 под RT-11 в эмуляторе Patron-a, можно собрать и поместить куда нужно, скриншотом не отделаться - он там большой.

MM
09.12.2015, 23:12
Сигнал ACLO обрабатывается по-разному - в начале и конце импульса.
Кстати, по адресу 173000 должен располагаться исполняемый код, и число 137 - это всё-таки команда JMP #@......

В ТО говорилось о необходимости выполнять весь обвес 1801ВМ3А-6 на 530-й серии и минимальных резисторах-подтяжках, для получения максимального быстродействия.

- - - Добавлено - - -

Добавлю. Определить точную группу "А" кристаллов 1801ВМ3 можно по-цеховому - проц включается в норм. режим, на 6 мггц и меряется его ток потребления.
Реальные образцы группы "А" отлично гонятся до 7.5 мгц и при этом не нуждаются ни в обдуве, ни в теплоотводе, причем на 7.5 мгц ( в корпусе, разумеется ).
Весьма важный фактор - наряжение подложки. Если она закорочена на общий - будет гиганский ток потребления, до 0.5 а и более.

hobot
09.12.2015, 23:33
скриншотом не отделаться - он там большой. Смотря где его делать, если в эмуляторе Patrona там надо ползунок установить
принудительно на самый верх, тогда с момента запуска системы будет рулон скопирован в буфер.

Vslav
10.12.2015, 09:03
Посканировал на чтение область системных регистров (170000-177776), ничего особенного в 1801ВМ3 не нашлось:



172300/077516 SYS_PDR0
172302/077516 SYS_PDR1
172304/077516 SYS_PDR2
172306/077516 SYS_PDR3
172310/077516 SYS_PDR4
172312/077516 SYS_PDR5
172314/077516 SYS_PDR6
172316/037516 SYS_PDR7

172340/007777 SYS_PAR0
172342/007777 SYS_PAR1
172344/007777 SYS_PAR2
172346/007777 SYS_PAR3
172350/007777 SYS_PAR4
172352/007777 SYS_PAR5
172354/007777 SYS_PAR6
172356/007677 SYS_PAR7

172512/007777 DM_PARH2
172516/177717 DM_SR3

177572/000000 DM_SR0 (error register)
177574/000000 DM_SR1 (always 0)
177576/001636 DM_SR2 (command address)

177600/077516 APP_PDR0
177602/077516 APP_PDR1
177604/077516 APP_PDR2
177606/077516 APP_PDR3
177610/077516 APP_PDR4
177612/077516 APP_PDR5
177614/077516 APP_PDR6
177616/077516 APP_PDR7

177640/007777 APP_PAR0
177642/007777 APP_PAR1
177644/007777 APP_PAR2
177646/007777 APP_PAR3
177650/007777 APP_PAR4
177652/007777 APP_PAR5
177654/007777 APP_PAR6
177656/007777 APP_PAR7

177776/000004 PSW


- - - Добавлено - - -

Быстрое снятие RPLY оказалось просто перенести в MAX3064 на плате модуля. Теперь новые циклы начинаются быстро, без пропуска такта при высоком SYNC, на 6МГц обеспечивается 1.5Мипс регистр-регистр. На частоте 7.14 МГц 1000 знаков Пи стало считаться 39,66 секунды, вместо 41,52, прирост реального быстродействия около 5 процентов. Диаграмма пачки инструкций mov R0, R1 выглядит теперь так (быстрое снятие RPLY тут не видно явно, это сигналаы на шлейфе с платы DE0, а не на процессоре, но длительность цикла уменьшилдась до 4 тактов):

http://s004.radikal.ru/i205/1512/64/884a4af207f6t.jpg (http://s004.radikal.ru/i205/1512/64/884a4af207f6.png)

Patron
10.12.2015, 12:39
...

Надо бы ещё снять осциллограмму чтения, записи и модификации регистра 177706 процессора 1801ВМ1.

Vslav
10.12.2015, 13:54
"неуклонно растет процент жиров в масле" (с)
Чтение по Wishbone можно запускать сразу, как только обнаружен спад ~SYNC. Внутренняя шина DE0 успевает завершить чтение еще до активации DIN, остается только его дождаться и выдать данные на внешнюю шину. В итоге для 1801ВМ3 достигнута ultimate performance - 3 такта на инструкцию регистр-регистр, что для 6МГц составляет 2Мипс. Впрочем, все прекрасно разгоняется и работает на 7.14 с теми же тремя тактами:

http://s018.radikal.ru/i525/1512/29/0991d36b8bd5t.jpg (http://s018.radikal.ru/i525/1512/29/0991d36b8bd5.png)

RPLY на диаграммах ранний, означает внутреннюю готовность данных, на вывод процессора подается этот сигнал OR-енный с DIN/DOUT чтобы процессор RPLY раньше времени не увидел.
1000 знаков Пи стало считаться на 7,14 за 37,32 секунды - еще 5 процентов улучшение.

Посмотрел статью в МПСС'86 номер 4, там таки написано что производительность при 6МГц - 2млн операций, на данном модуле с 1801ВМ3 такая производительность достигнута. И результаты по вычислению Пи показывают что ВМ3 по эффективности на такт вполне превосходит J11.

- - - Добавлено - - -


...
Надо бы ещё снять осциллограмму чтения, записи и модификации регистра 177706 процессора 1801ВМ1.
Они все для регистров 1777xx одинаковы - RPLY формируется одинаково, одна особенность - для 177702 иногда может не отвечать. Диаграмма: [http://s020.radikal.ru/i701/1512/71/3e64c1f738fct.jpg (http://s020.radikal.ru/i701/1512/71/3e64c1f738fc.png)]
Смотреть на st_ar - это RPLY транслированный прямо с ножки процессора. st_rply - это то что плата отвечает. Видно что при обращении к 177706 st_ar есть, а st_rply - нет.

Обновленная Версия 1.2c (http://u.zeptobars.ru/yuot/1801/MOD/vmod_rev12c.rar)

Patron
10.12.2015, 14:45
.

Из осциллограмм следует, что между циклом DATIO и следующим за ним циклом DATI у процессора 1801ВМ1 не остаётся времени на снятие сигнала BSY.

На осциллограммах этот сигнал не показан, поэтому интересно, что конкретно происходит на реальной шине с сигналом BSY после цикла DATIO.

Vslav
10.12.2015, 20:01
.
Из осциллограмм следует, что между циклом DATIO и следующим за ним циклом DATI у процессора 1801ВМ1 не остаётся времени на снятие сигнала BSY.
На осциллограммах этот сигнал не показан, поэтому интересно, что конкретно происходит на реальной шине с сигналом BSY после цикла DATIO.
Так и происходит, процессор не снимает BSY: [http://s017.radikal.ru/i434/1512/f2/1cd78f784a26t.jpg (http://s017.radikal.ru/i434/1512/f2/1cd78f784a26.png)]
Смотреть на сигнал st_ar, на данной диаграмме на него заведен BSY с процессора.

Vslav
31.05.2019, 14:41
http://www.1801bm1.com/files/images/lsi-11-pcb-31-05-2019.jpg

Такая вот красота сегодня приехала, будет натуральный стимпанк.

zx_
02.06.2019, 20:11
Vslav, что на такой красоте в конце концов должно получиться?

CodeMaster
02.06.2019, 20:53
что на такой красоте в конце концов должно получиться?
Quad ВМ1

Vslav
03.06.2019, 06:23
Quad ВМ1
Не-а :) Это плата под 581-ый комплект. Пришло время вернуться к истокам - запустить полноценный клон LSI-11. А не эти ваши новоделы серии 1801 :)
Тут плата многофункциональная - и прочитать микромы можно (первый шаг) и процессор поднять, и запустить WCS (Writable Control Storage) с отладчиком микрокода. Вкусняшко.

Vslav
07.06.2019, 21:22
http://www.1801bm1.com/files/images/lsi-11-pcb-07-07-2019.jpg

Прочитал на "стимпанке" микРОМы 581РУ1/РУ2/РУ3.
Выяснилась некоторая путаница с базовыми адресами:
РУ1 -10008
РУ2 - 00008
РУ3 - 20008 (содержит расширение FIS)
Содержимое совпадает с обрывками из книги Захарова и руководству по ремонту М2.
Прочитанное выложено на гитхабе в ветке next (текущая рабочая, не релиз).
Есть дизассемблер написанный добрым человеком (https://github.com/brouhaha/cp16dis) и оригинальный DEC-овский ассемблер микрокода, есть теперь что поразбирать.

Ал-р
05.07.2019, 15:16
http://www.1801bm1.com/files/images/lsi-11-pcb-31-05-2019.jpg
Такая вот красота сегодня приехала, будет натуральный стимпанк.
-
нет картинки
По прямой ссылке http://www.1801bm1.com/files/images/lsi-11-pcb-31-05-2019.jpg
(Не удаётся получить доступ к сайту)

Vslav
05.07.2019, 18:07
-
нет картинки
По прямой ссылке http://www.1801bm1.com/files/images/lsi-11-pcb-31-05-2019.jpg
(Не удаётся получить доступ к сайту)
Сервер утром переехал на другую площадку, сегодня обновлю доменную запись.