? Keeper @ - 29 июля 03:40 Приветствую! Хотелось бы прояснить некоторые момент в работе ВМ3: 1. В некоторых источниках указано что часть диспетчера памяти вынесли в ВМ4, но в доступной документации на 1836ВМ4 об этом ни слова, более того там указано что на ВМ4 из старших разрядов адреса заводиться только А21/NS. Понятно что верить стоит документации, но все же... 2. Тут упоминалось о необходимости задержки выдачи SSYNC при BS = 0, а на сколько тактов нужно задерживать? Чем грозит подача лог. 0 на SSYNC постоянно? 3. Где можно взять описание внутренних регистров ВМ3 (Диспетчер памяти и т.п.) Помню что у меня оно где-то было, но сейчас найти не смог... 4. Сигнал UMAP (выв. 37) - для чего он нужен и что отображает? Вроде как в одном из регистров диспетчера памяти был аналогичный бит. 5. Режим запуска при W0 = 0 - стартовый адрес 173000 попадает в область внешних устройств (BS = 0), для чего так сделано? 6. При отключенном диспетчере памяти что присутствует на выходах А16 - А21?
? anonymous - 29 июля 13:24 1. Регистры для процессора плавающей запятой, 6 64-битовых и дополнительные регистры состояния, в родном DECовском исполнении находятся в ДП, о них и говорилось. 2. При подаче постоянного низкого уровня на SSYNC процессор будет реализовывать циклы на полной скорости и некоторые внешние устройства могут не успевать за ним, полная скорость нужна при работе с памятью. Это имеет смысл при использовании устройств на БМК 1801ВП1, 1806ХМ1, 1806ВП1, использовавшихся в таких машинах, если же устройства будут разработаны на современной элементной базе с достаточной производительностью, то SSYNC можно положить на землю, при этом на максимальной тактовой частоте 1836ВМ3 будет делать 6 млн. обращений к памяти в секунду. 1801ВП1 часто не успевает в таком случае даже откликаться, а если "поймает" свой адрес и выдаст какую-либо информацию, то тем самым запортит данные следующего цикла, не успев убрать данные с шины к тому времени, когда из памяти будет выбрана следующая инструкция. 3. Все регистры ВМ3, кроме MMSR3, полностью соответствуют регистрам процессора PDP11/34, MMSR3, отсутствующий в 34, однако имеет ошибку при чтении зарезервированных бит, они должны читаться как "0", а читаются "1", из-за этого на ВМ3 без пропатчивания не работают Ultrix, Unix v5-v7 и RSX11, они неверно определяют тип процессора и пытаются использовать моду супервизора, за включение которой отвечает установка в "1" трех младших бит MMSR3. Бит переключения MMU с 18 на 22-разрядную адресацию и бит включения UnibusMapping в MMSR3 ВМ3 функционируют, как им и положено. Потому возьмите фирменное описание, например, на pdp-11.org.ru 4. Он включает отображение 18-разрядного адресного пространства процессора окнами по 256кб на физическое адресное пространство при помощи внешнего дополнительного набора PAR. 5. Сделано по стандарту для всех PDP11, для загрузки с устройства DEC BDV11. 6. При адресации нижних 56к на них, в фазе адреса, высокий уровень, при обращении к адресам 0160000..017777 - низкий уровень.
? Keeper @ - 29 июля 15:32 Спасибо за ответы! Нашел описание регистров ДП, лежали под носом, взяты по ссылкам: http://155la3.ru/datafiles/km1801vm3.pdf http://155la3.ru/datafiles/km1801vm3_tu.pdf И еще один вопрос, сигнал BS при включенном ДП генерируется по виртуальному адресу (A15-A13 = 1) или по физическому после ДП (А21-А13 = 1)?
? anonymous - 29 июля 16:03 Всегда по физическому.
? anonymous - 29 июля 16:16 Там ошибки, в строке "Регистр SR3 (адрес 1777757)" адрес следует читать 17772516 в строке "При входе в пультовый режим процессор загружает в стек HSP константу 100000" - адрес начала стека 020000
? Keeper @ - 29 июля 16:48 Спасибо, буду потихоньку схему рисовать.
? Keeper @ - 29 июля 17:27 Еще вопрос :) Минимальные значения длительности ACLO,DCLO? Для 1806ВМ2 указаны 4Т, а для ВМ3 какие? И можно ли устанавливать в 0 эти сигналы одновременно, а снимать в соответствии с требованиями (RESET)? Очень хочется сделать формирователь этих сигналов на одной АГ3 :)
? anonymous - 29 июля 18:49 Это зависит от используемой ОС, по стандарту ACLO должен приходить раньше на время, достаточное для ContextSwitch примененного процессора, однако если машина не управляет атомной электростанцией, на это можно закрыть глаза и выставлять их одновременно.
? anonymous - 29 июля 18:54 Вообсще совет: не используйте АГ3 и прочую пакость с аналоговыми цепями, это только надежность машины занижает, все делается по общему тактовому сигналу, все задержки, все state-циклы.
? Keeper @ - 31 июля 01:11 Опять вопросы :) 1. ТА (выв. 36) "Сигнал выдачи адреса" - в чем практическая польза? В ДВК3М заводиться в ВП1-119 и что с ним дальше происходит не понятно... 2. ЕТ (выв. 45) "Разрешение зависания" - тоже непонятно для чего нужен. В ДВК3М просто заземлен, т.е. зависание разрешено? Что за "зависание"?
? anonymous - 1 августа 10:36 Сигнал ТА нужен при использовании внешнего дополнительного ДП, вам на него не нужно обращать внимание, он выставляется в случае, если в следующем цикле ожидается чтение из памяти или выборка инструкции, определяемая А21 в фазе данных, ВП1-119 использует его для подготовки своих дел с динамической памятью. Сигнал ЕТ определяет реакцию на отсутствие адресуемой ячейки, если он на земле, то после 128 тактов при отсутствии RPLY возникает прерывание по 4-му вектору, если он на +5в, то процессор зависает в ожидании ответа на бесконечное время, пока ответ не будет выставлен. Нужен для работы с очень медленными устройствами, потому вам тоже пока не пригодится.
? Keeper @ - 6 августа 17:51 Не нашел внятного описания логики работы сигнала /WTBT, насколько я понимаю чтение всегда производиться словами, а запись словами или побайтово. Если запись байтовая то /WTBT устанавливается в лог "0", а запись в старший/младший байт определяется значением А0, это так? Какое тогда соответствие А0 и старший/младший байт? Еще непонятна организация памяти в HALT моде, написано что в халт-моде верхние 32Кб отведены под доступ к адресному пространству в 4Мб, а нижние под ОЗУ+ПЗУ халт-моды, тогда получается что при /SEL = 0 разряд адреса А15 можно не учитывать?
? Keeper @ - 6 августа 19:32 >Какое тогда соответствие А0 и старший/младший байт? Вроде должно быть А0 = 0 D7-D0, A0 = 1 - D15-D8
? Keeper @ - 6 августа 19:39 >Какое тогда соответствие А0 и старший/младший байт? Посмотрел схему ДОЗУ для БК, все правильно при А0 = 0 (на шине А0 = 1) адресуется младший байт.
? anonymous - 7 августа 08:57 WTBT выставляется два раза, в фазе адреса и в фазе данных, в фазе адреса он нужен для того же, для чего и TA, - уведомить заранее, что за цикл собирается делать процессор, в фазе данных при WTBT=+5v вырабатываются оба сигнала выборки на память, при WTBT=gnd - если A0=gnd, то на старший байт, если A0=+5v, то на младший. В HALT-моде 1801ВМ3 не учитываются А15,А14,А13, системное ОЗУ выбирается при A12=A11=gnd, по остальным адресам - пзу. Вопреки распостранившейся через статью в МПСС информации, реализована поддержка пультового режима у ВМ3 вся в младшем банке, однако у плат МС1201.03 и .04 старшие адреса игнорируются, таким образом адресация ячеек 077000..077777, к которым производится обращение в пультовом пзу, транслируется в адреса 017000..017777 - это сделано в расчете, что на плату могут устанавливаться процессоры и с пультовым стеком с адреса 0100000, и с адреса 020000, однако в серии 1801 стек с адреса 0100000 не был реализован. Возможно, это было "исправлено" в серии 1806, однако 1806ВМ3 мне ни разу не приходилось использовать ни в работе, ни в поделках для себя, он выпускался очень ограниченным тиражом, исчислявшимся единицами тысяч штук, под нужды ВПК, впрочем ВПК он не удовлетворил и была запущена разработка 1836ВМ3. В моих поделках распределение адресов пультовой моды такое: А15 А14 А13 А12 А11 x 1 1 1 x srom 4кб пзу пультового режима x 1 1 0 1 srom 2кб пзу пультового режима x 1 1 0 0 sram 2кб рабочие ячейки пультового режима x 1 0 x x srom 8кб пзу пультового режима x 0 x x x sram 32кб озу для бэкапа видеопамяти 1801ВП1-037, чтоб спрятать экран при входе в пульт для последующего его восстановления
? anonymous - 7 августа 09:02 P.S. в таблице 0 и 1 - имеются в виду электрические уровни, а не логические в адресах со "стороны" софта
? anonymous - 7 августа 09:04 P.P.S. и, конечно же, 16кб под бэкап vdram 1801ВП1-037
? Keeper @ - 10 августа 13:27 С учетом выбранной элементной базы в HALT моде получается следующее распределение памяти: ПЗУ: 000000-007777 (4Кб) ОЗУ: 010000-017777 (4Кб) Не занято: 020000-027777 (4Кб) ПЗУ: 030000-037777 (4Кб) Не занято: 040000-077777 (16Кб) На счет 1801ВМ4, они выпускались только в планарном корпусе а-ля QFP (КА1801 вроде) или были и в ДИП? Совместимы ли КА1801ВМ4 и КН1836ВМ4 повыводно? Я тут подумываю развести под него место на плате...
? anonymous - 10 августа 15:30 Выпускались в корпусах QFP (КА1801) и Н18.64-2 (КН1801), у КА* лучше теплоотвод, нумерация выводов идет в обратном направлении по отношению к КН*, т.е. он паяется маркировкой на плату и теплоотводом вверх. В исполнении КН* 1801 и 1836 по нумерации выводов одинаковы.
? anonymous - 10 августа 16:51 Вы пультовую программу уже продумали? Может стоит стандартное распределение памяти сделать, чтоб можно было обычный пульт туда прошить(6кб 0..013777)?
? Keeper @ - 11 августа 03:56 >Может стоит стандартное распределение памяти сделать, чтоб можно было обычный пульт туда прошить(6кб 0..013777)? Можно и так, но тогда 2Кб ПЗУ и 2 Кб ОЗУ оставлю пустыми...
? anonymous - 11 августа 09:09 В каком смысле? и Озу и ПЗУ полностью использовать надо, в первом и втором банках - зеркально /CSROM = /sel*a14*a13*a12 + /sel*a14*a13*/a12*a11 + /sel*a14*/a13*/a12*/a11 /CSRAM = /sel*a14*a13*/a12*/a11 + /sel*a14*/a13*a12 + /sel*a14*/a13*/a12*a11 - и все!
? anonymous - 11 августа 09:16 Лучше, если поставить флешку и озушку, захватывающие все 32к, тогда хватит на что угодно, вот у меня пульт в младших 6кб флеша, затем 2кб системного озу, потом снова 8к флеша с драйвером графического дисплея и шрифтами, потом 16кб озу на случай использования в качестве системной консоли граф. дисплея БК... Поскольку флешки сейчас копеечные, разумно взять еще большего размера и старшие разряды сделать переключаемыми, очень удобно для отладки.
? Keeper @ - 21 августа 23:36 Посоветуйте неконфликтный адрес для порта конфигурации. Дешифрация по /BS, AD12-AD1 (чтение/запись только словами, без учета /WTBT и AD0) Текущая раскладка битов: D1 FR0 | D2 FR1 | Выбор скорости COM2 (заведены на ВП1-065) D3 FR2 | D4 FR3 | D5 CPCLC_SEL Выбор частоты COM2 4608/9216 КГц D6 NB0 | D7 NP | Выбор режима работы COM2 (заведены на ВП1-065) D8 PEV | D9 ENVT_FRQ_SEL Выбор частоты сигнала EVNT 50/100 Гц D10 ENVT_EN Разрешение выдачи сигнала EVNT (1 - разрешено) D11,D12 - по записи игнорируются, по чтению возвращают "10"
? Keeper @ - 22 августа 14:14 В ДВК3М одно ПЗУ организацией 4Кх16, как там реализованно распределение этого объема для "обычного" и HALT режимов? Где можно почитать про организацию прерываний в контексте ВМ3? Например если я хочу повесить СОМ порты на вход прерываний с найменьшим приоритетом, но СОМ порты будут первыми устройствами в цепочке (IAKO/IAKI) Как тогда быть с устройствами которые будут более приоритетными источниками прерываний? Я уже начинаю подумывать что два компорта с описаными выше режимами работы это слегка перебор, может быть оставлю один компорт в режиме 8 бит без контроля четности на скорости 19200 или 57600, т.к. нужен он будет в основном для отладки... (за одно сэкономлю ВП1-065 и EPM3064) Но тогда не будет возможности управлять частотой на входе EVNT ВМ3, от чего возникает вопрос - частота 50Гц это стандартоное значение? И чем грозит отсутствие этого сигнала, если я решу вынести источник EVNT на вторую плату?
? anonymous - 22 августа 19:28 D6 NB0 | D7 NP | D8 PEV | - Никому не нужны и никогда в реальном оборудовании не используются. D9 ENVT_FRQ_SEL - биты 1 и 2 регистра 017777546, 00=100khz, 01=10khz, 10=50hz, 11=100hz D10 ENVT_EN Разрешение выдачи сигнала EVNT (1 - разрешено) - бит 6 регистра 017777546
? anonymous - 22 августа 19:39 「D9 ENVT_FRQ_SEL - биты 1 и 2 регистра 017777546, 00=100khz, 01=10khz, 10=50hz, 11=100hz」 - регистра 017772540 * - на 017777546 перемычками переключается. В ДВК пзу в halt-моде только доступно. 「Например если я хочу повесить СОМ порты на вход прерываний с найменьшим приоритетом, но СОМ порты будут первыми устройствами в цепочке (IAKO/IAKI) Как тогда быть с устройствами которые будут более приоритетными источниками прерываний?」 - надо тогда привести IAKO на них после всех других устройств. При запрещении прерывания с приоритетом 4, который имеют COM-порты, прерываний от них не будет, пока устройство с более высоким приоритетом не выдаст запрос, когда устройство с более высоким приоритетом выдаст запрос, обработается сперва запрос от COM-порта, если таковой есть, и будет поставлен в очередь во внутренней очереди драйвера, а затем будет введен обработчик драйвера вызвавшего приоритетного устройства, это решается на уровне ядра ОС. 50Гц - стандартное значение, поддерживаемое драйвером часов всех ОС.
? Keeper @ - 22 августа 20:24 Благодарю! Эх, все, выкидываю второй СОМ порт с настройками, а ведь уже и прошивку для CPLD написал :) Тогда сделаю так: 1. ПЗУ только для HALT моды 16Кб (минус 2Кб окно для ОЗУ) 2. Один СОМ порт без настройки режимов на прерывании с максимальным приоритетом. 3. Частота EVNT 50Гц с возможностью блокировки (аппаратно, через разъем расширение, что б можно было управлять этим со второй платы)
? anonymous - 22 августа 21:10 Так что мешает сделать переключения скоростей COM-порта стандартным образом, через регистр состояния передатчика? При подаче команды загрузки ОС в пультовом отладчике ДВК, код загрузчика переписывается из пультовой моды в моду системы в ОЗУ и на него передается управление - так обошли необходимость делать окно на пзу с bios, а после загрузки этим начальным загрузчиком первичного загрузчика ОС, вся дальнеишая загрузка осуществляется считанным с диска кодом. COM не может иметь максимальный приоритет, у него для этого ног нету, чтоб вызвать прерывание с приоритетом 7, надо дернуть одновременно ноги IRQ7,6,5,4 на землю.
? anonymous - 22 августа 21:13 Т.е. IRQ 4 и есть, собственно, VIRQ, а IRQ 5,6,7 - модификаторы приоритета.
? anonymous - 22 августа 21:22 Чтоб понятнее было, работает QBUS так - приоритет 4, IRQ 4=0 приоритет 5, IRQ 4,5=0 приоритет 6, IRQ 4,5,6=0 приоритет 7, IRQ 4,5,6,7=0
? Keeper @ - 23 августа 10:36 В описании ВМ3 в МПСС есть такая фраза: "Если при включении питания установлен сигнал HLT, то процессор переходит в пультовй режим." Как это следует понимать относительно сигналов /ACLO, /DCLO?
? anonymous - 23 августа 14:40 Никак. HALT - сам по себе, ACLO/DCLO - сами по себе. Просто первая инструкция сразу трапнется в отладчик при штатной микропрограммной проверке состояния регистра прерываний.
? Keeper @ - 25 августа 15:48 Выложил схему и прошивку CPLD: http://rghost.ru/2438195 На схеме 4 корпуса ПЗУ, т.к. буду разводить под DIP32 и PLCC32. С разъемом расширения еще не определился, буду смотреть что подойдет по кол-ву выводов и доставаемости. Прошивку еще не отлаживал... Тут еще вопрос возник, стоит ли выводить на разъем расширения дополнительные сигналы для совместимости с QBUS/МПИ? Например чтоб можно было подключать стандартную периферию (а-ля КЦГД) сделав переходник.
? anonymous - 25 августа 17:01 Что называется "дополнительными" сигналами? Вообще, пугает количество корпусов, почему бы не взять более многоногую cpld и не сделать все всего на 6 корпусах? Если есть желание подключать родные платы от PDP и ДВК/Э-60, то АП6 надо заменить на стандартные 48..96мА драйверы QBUS с открытым стоком/коллектором, например ABTE16246, 74F641-1N, 530АП2, 531АП2, у серии 1533 микроскопическая нагрузочная способность. А КЦГД надо подключать не в QBUS, а через rs232 - там на шине сидит только 1801вп1-065, накоротко связанная со второй вп1-065, сидящей на шине внутреннего процессора, просто режутся 4 дорожки их соединяющие и ставится max232.
? Keeper @ - 27 августа 09:46 >Что называется "дополнительными" сигналами? QBUS22:(смотрел в файле q22-bus-01-11.pdf) Не понятно куда подключаются сигналы BIAKI,BDMGI(на сколько я понял их нужно подтянуть к "1", т.к. "до" моей платы нет цепочки устройств генерирующих прерывания),BREF (регенерация у меня скрыта и не влияет на циклы шины) МПИ:(смотрел ГОСТ 26765.51-86) РГН,ЗМД,РЗМД (что за дополнительные DMR, DMG?),ПРР4-ПРР7(зачем так извратились с IAKO?) >Вообще, пугает количество корпусов, почему бы не взять более многоногую cpld и не сделать все всего на 6 корпусах? Захотельсь сделать все на дипах :) из CPLD в PLCC корпусе есть EPM7128 (PLCC84) но они сейчас стоят неприлично дорого и особо не поможет оно. Многоногую FPGA поставлю на вторую плату, т.к. делать, например, видеоконтроллер на рассыпухе мне что-то не хочеться. >Если есть желание подключать родные платы от PDP и ДВК/Э-60, то... Понятно, тогда возложим это на плечи тех кому это может понадобиться, а я сомневаюсь что эта плата кому-то кроме меня интересна :) Кстати, когда я последний раз интересовался 531 серией на радиорынке продавцы, в основном, разводили руками, еле КР531ГГ1 нашел.
? anonymous - 27 августа 11:38 BREF/РГН вместе с BS/ВУ учавствуют в DMA-циклах в режиме блочного обмена, который используется дисками обычно. ППР4..ППР7 выведены для удобства как раз на случай, если построить в корзине цепочку по каким-либо причинам, например конструктивным-коммутационным, затруднительно - это 4 IAKO для каждого приоритета ЗПР4..ЗПР7. ЗМД/РЗМД и вход BDMGI используется на плате процессора только в многопроцессорной системе, например при построении на базе 1801ВМ1 с его встроенным арбитром SMP на 4 процессора, или при использовании механизма двухпортовой памяти в окнах 1806ВМ2/1801ВМ2. Дело в том, что 1801ВМ3 на шину вылезает монопольно, предполагая всегда, что он главный в системе, потому эти сигналы не нужны. BIAKI нужен, если цепочка предоставления прерывания обходит все платы и возвращается на плату процессора, где имеются устройства с более низким приоритетом, чем контроллеры на внешних платах - это актуально в СМ и из персоналок - в микро-ЭВМ КВАНТ. Странно, 531 - самая популярная серия, ее как раз у нас навалом, со всех заводов, последних годов выпуска - белорусского производства, она совместима по маркировке и ногам с 155/555, но в 5 раз шустрее, 133/155 работают на 10мгц, а 530/531 - на полтиннике.
? anonymous - 27 августа 11:55 В догонку: блочный обмен должен быть реализован в вашем контроллере памяти. А 530/531 - потому что QBUS-драйверы АП2 только в этих двух сериях реализовали из отечественных.
? Дмитрий - 27 августа 19:39 Ребят, где найти внятное подробное описание (желательно рус) по командам работы с числами с плавающей запятой ВМ3/4? И мот есть у кого код/алгоритм для перевода чисел в строку и обратно в плавающем формате? Код из бейсика я выдрал, а чет разобраться с ним не могу. А то с маленькими числами более менее разобрался, а вот с очень большими затык.
? Keeper @ - сегодня 20:40 Подскажите, сигнал /BS устанавливается до прихода /SYNC? Что-то я подумываю о переходе на статику, не в деньгах ведь счастье :) Последние несколько дней боролся с кросс-средствами, компилил gcc 4.4.4, gcc 4.3.5 и pcc, пока безуспешно. BinUtils 2.19.1 собираются, но вроде есть проблема с ld...