Да он и так сделал все, что мог.. но до меня не доходит :(
Вид для печати
Удалось выкроить немного времени для моей УКНЦ.
Подключил осциллограф в следующие точки на плате: CE, RE, RPLY, 1AD15 и увидел следующую картину (сразу после сброса): https://ibb.co/G0b0XXV
Безадресное чтение из регистра (тяжело судить только по старшему байту) - правильно, адрес РЕ2 - правильно.
По идее ПП первых 6 байт читает правильно, вот 208: https://ibb.co/nPb4hpc
Я не знаю, может 7 и 8 байты он уже читает из другого адреса, а возможно это и есть косяк.
Все сигналы правильные. Там ещё читается слово по адресу 0172660 (содержимое 0450).
Можно попробовать отсоединить буфер от управления (сигналы A/B(20) и BK(41)) и пустить напрямую сигналы с AD00 по AD15. Но этот буфер используется в качестве развязки по ёмкостной нагрузке, а у слотов ВУ1 и ВУ2 ёмкость хорошая.
Я правильно понимаю, что это D22 (КР1801ВП1-055)?
те закоротить параллельно: AD0-V0..AD8-W0..AD15-W7?
или проще выпаять D22и соединить шину AD? Но что тогда делать с сигналами AR1, K1RPLY, RTA3?
Что я должен получить в итоге? Полный запуск ПП с очисткой экрана и каким-то текстом?
Или включение ЦП, тк сигналы приходят на D24 который управляет ACLO и DCLO?
- - - Добавлено - - -
Проверил сейчас D22, вход/выход, сразу после сброса сигналы на входе совпадают с сигналами на выходе, только у старших разрядов 1 такт данных отсутствует, а дальше сигнал совпадает шагов 5 подряд. Я думаю, что процентов на 90, но буфер живой.. как минимум в 1 сторону, от ПП к K1AD.
- - - Добавлено - - -
Alex_K, скажите, а можно ли отключить D24 (КА1515ХМ1-031)? Я так понимаю она не только управляет ЦП, но еще и клавиатурой и может еще чем-то.. Может она гадит и не дает правильно стартануть ПП?
Нельзя отключить буфер D22 из-за AR1 без него процессор стоит колом. Выпаял я его, ПП висит.
- - - Добавлено - - -
Похоже я нашел причину. Тк я выпаял D22, решил проверить не замыкают ли между собой дороги шины K1AD и получилось следующие: все проводники шины с 0 по 11 и с 13 по 15 имеют одинаковое падение напряжения при измерении тестера в режиме диодной прозвонки, а так же с землей и +5В, а K1Ad12 (20 нога D24 - КА1515ХМ1-031) висит в воздухе (вернее стала небольшой емкостью). В общем, такого быть не должно. В связи с этим ищу эту микросхему, может у кого завалялась :)
После подачи и снятия питания картина поменялась, если я правильно понял, после выключения питания микросхема остается в случайной коммутации..
Максимально-допустимое напряжение на выводе данных свыше питания в 1801-й серии ( и др. МОП серий СССР ) - 0.50 в. При напряжении свыше 1.5 в. возникает пробой информационного вывода ( на питание и/или на общий ).
Частично это не так в 1801РЕ2 - там наконец поставили нормальную защиту от "радиолюбителей :cool_std:".
Ну как бы там КА1515ХМ1-031 у которой входы завязаны только на КР1801ВП1-055 (которая была выпаяна). Плюс режим диодной прозвонки тем и хорош, что напряжение 1В.
- - - Добавлено - - -
Но все равно проверил входы/выходы, вроде все целы (судя по наличию сигнала более или менее нормального вида)
Да вы правы, замерял осциллографом, 2.3 В. Надеюсь этого не хватить, чтобы пробить 1801 серию (5В она) и 1мА не хватит чтобы спалить в случае переполюсовки.
В общем, у меня получилось как и советовал Alex_K и видимо заканчивается 90% попыток ремонта УКНЦешек, мне подогнали такую же, но рабочую.. тесты проходят без ошибок, но почему-то изображение по видеовыходу задрано вверх и влево.. LAT - видно наполовину..
Продолжаю ковырять неисправную УКНЦ, отпаял K1RPLY (27 нога D24), подвесил через резистор на 5В, чтобы посмотреть, если Д24 выбирается, то она должна что-то отвечать, но там пусто, а на линии K1RPLY без Д24 сигнал есть. Сигнал и должен быть так как Д22 пропускает через себя RPLY от ПЗУ делая его K1RPLY. Не нравится мне Д24, тихая она какая-то ни каких сигналов от нее нет, конечно, это порт, а он должен быть выбран, но K2ALCO который из нее выходит такое чувство, вообще в обрыве.
В общем, готов приобрести КА1515ХМ1-031, вдруг у кого есть..
Спасибо! :)
Как не странно, но БК, УКНЦ, ДВК и им подобные прошли мимо меня от слова совсем. Мой первый комп рк-86, в виде конструктора купленный в магазине Электроника, потом самосборный Ленинград и такой же АТМ-Турбо, а потом сразу 486 (вернее была еще Искра и Ассистент, но Ассистент школьный а Искра университетская, так что это не в счет).. Поэтому о ДВК-подобных машинах толком ни чего не знаю, в клубе пока я наблюдатель.
Странно. Во-первых, такие вещи, обычно, актуальны для КМОП. Тех, у которых изоляция элементов выполнена обратносмещенными pn-переходами. В структуре таких (Б)ИС присутствуют паразитные тиристоры, обычно, запертые. А вот подача на выходы (входы-выходы) напряжений выше питающего или ниже нуля может открыть кого-то из них. После чего открывается некоторое количество соседних с ними паразитных тиристоров и все они дружно пытаются закоротить источник питания. Результат, обычно, неутешительный. А при обесточенных микросхемах, обычно, особых проблем от прозвонки не бывает. Ну, конечно, если не звонить советской Цешкой с током полного отклонения миллиампер, так, 30-50, тут никто не сдюжит. А цифровые мультиметры, в большинстве своём, гораздо деликатнее: у них ток при прозвонке не более 1 мА.
Ну, и 1801 - ни разу не КМОП. Так, что в тот факт, что кто-то убивал их советской Цешкой я, конечно, охотно верю, а чтобы их можно было убить мультиметром DT830 - нет, не верю...
Сделал на SMM32L476 нечто подобное Ремулятора.. Вернее прослушку которая сидит на шине, слушает сигнал Sync и AD и отправляет в уарт около 128 первых адресов на ШД, вот что я получаю:
Скрытый текст
160000 160002 160300 160302 172660 160304 160306 160310 160312 160314 160316 177716 446 444 4 6 442 440 14 16 0 2 436 434 10 12 0 2 432 430 10 12 0 2 426 424 10 12 0 2 422 420 10 12 0 2 416 414 10 12 0 2 412 410 10 12 0 2 406 404 10 12 0 2 402 400 10 12 0 2 376 374 10 12 0 2 372 370 10 12 0 2 366 364 10 12 0 2 362 360 10 12 0 2 356 354 10 12 0 2 352 350 10 12 0 2 346 344 10 12 0 2 342 340 10 12 0 2 336 334 342 340 10 12 0 2 336 334[свернуть]
Все это адреса, начиная со включения питания.
Если я правильно понимаю, то вот это:
Скрытый текст
BMI 160464$ ; Запуск в ЦП
BIT #20,@#177716 ; ЦП в режиме HALT ?
BEQ 160332$ ; Нет[свернуть]
У меня ЦП в режиме HALT.. Я не знаю, как с этим бороться..
- - - Добавлено - - -
Посмотрел 29 ногу Д3 там высокий уровень, те ЦП физически не в HALT.
- - - Добавлено - - -
Вот здесь https://ibb.co/HnYzCmz скриншот с большим количеством адресов, адреса идут последовательно, как их выставляет ПП на шине с РЕшками, различие в адресах из-за того, что в первом случае запись сразу после включения, а на скриншоте после Сброса.
Тут внешний вид моей поделки: https://ibb.co/8dZBhnD
Дописал чтение данных:
Скрытый текст
160000:C0E0 160002:8000 160300:C417 160302:B0F5 172660:2801 160304:000A 160306:0611 160310:3581 160312:DF35 160314:1000 160316:CEFF 177716:0126 444:0004 177777:0006 177777:0122 440:000C 0:000E 0:0000 177777:0002 177777:011E 434:0008 0:000A 10020:011A 430:000C 0:000E 0:0000 177777:0002 177777:0116 424:0008 0:000A 10020:0112 420:000C 0:000E 0:0000 177777:0002 177777:010E 414:0008 0:000A 10020:010A 410:000C 0:000E 0:0000 177777:0002 177777:0106 404:0008 0:000A 10020:0102 400:000C 0:000E 0:0000 177777:0002 177777:00FE 374:0008 0:000A 10020:00FA 370:000C 0:000E 0:0000 177777:0002 177777:00F6 364:0008 0:000A 10020:00F2 360:000C 0:000E 0:0000 177777:0002 177777:00EE 354:0008 0:000A 10020:00EA 350:000C 0:000E 0:0000 177777:0002 177777:00E6 344:0008 0:000A 10020:00E2 340:000C 0:000E 0:0000 177777:0002 177777:00DE 334:0008 0:000A 10020:00DA 330:000C 0:000E 0:0000 177777:0002 177777:00D6 324:0008 0:000A 10020:00D2 320:000C 0:000E 0:0000 177777:0002 177777:00CE 314:0008 0:000A 10020:00CA 310:000C 0:000E 0:0000 177777:0002 177777:00C6 304:0008 0:000A 10020:00C2 300:000C 0:000E 0:0000 177777:0002 177777:00BE 274:0008 0:000A 10020:00BA 270:000C 0:000E 0:0000 177777:0002 177777:00B6 264:0008 0:000A 10020:00B2 260:000C 0:000E 0:0000 177777:0002 177777:00AE 254:0008 0:000A 10020:00AA 250:000C 0:000E 0:0000 177777:0002 177777:00A6 244:0008 0:000A 10020:00A2 240:000C 0:000E 0:0000 177777:0002 177777:009E 234:0008 0:000A 10020:009A 230:000C 0:000E 0:0000 177777:0002 177777:0096 224:0008 0:000A 10020:0092 220:000C 0:000E 0:0000 177777:0002 177777:008E 214:0008 0:000A 10020:008A 210:000C 0:000E 0:0000 177777:0002 177777:0086 204:0008 0:000A 10020:0082 200:000C 0:000E 0:0000 177777:0002 177777:007E 174:0008 0:000A 10020:007A 170:000C 0:000E 0:0000 177777:0002 177777:0076 164:0008 0:000A 10020:0072 160:000C 0:000E 0:0000 177777:0002 177777:006E 154:0008 0:000A 10020:006A 150:000C 0:000E 0:0000 177777:0002 177777:0066 144:0008 0:000A 10020:0062 140:000C 0:000E 0:0000 177777:0002 177777:005E 134:0008 0:000A 10020:005A 130:000C 0:000E 0:0000 177777:0002 177777:0056 124:0008 0:000A 10020:0052 120:000C 0:000E 0:0000 177777:0002 177777:004E 114:0008 0:000A 10020:004A 110:000C 0:000E 0:0000 177777:0002 177777:0046 104:0008 0:000A 10020:0042 100:000C 0:000E 0:0000 177777:0002 177777:003E 74:0008 0:000A 10020:003A 70:000C 0:000E 0:0000 177777:0002 177777:0036 64:0008 0:000A 10020:0032 60:000C 0:000E 0:0000 177777:0002 177777:002E 54:0008 0:000A 10020:002A 50:000C 0:000E 0:0000 177777:0002 177777:0026 44:0008 0:000A 10020:0022 40:000C 0:000E 0:0000 177777:0002 177777:001E 34:0008 0:000A 10020:001A 30:000C 0:000E 0:0000 177777:0002 177777:0016 24:0008 0:000A 10020:0012 20:000C 0:000E 0:0000 177777:0002 177777:000E 14:0008 0:000A 10020:000A 10:000C 1000:000E 0:0002 177777:0004 177777:0006 4:0008 0:000A 10000:0002 0:000C 1000:000E 0:0002 10000:0004 2000:FFFE 177772:E07C 124340:E07E 100001:E0A8 177425:E0AA 143747:E0AC 2025:F5B2 40001:0140 160256:6E01 160260:FF15 160614:3F0A 160616:2414 172664:3A01 472:E190 37420:E192 16024:F5B0 24001:0128 160624:C017 160626:B0F5 172660:2801 160630:D00B 160632:5010 450:0000 160634:9010 452:E19E 150020:012C 160640:1011 456:E1A2 50021:0130 160644:9011 462:E1A6 420:0134 160650:1200 160652:1110 160654:0310 466:E1AE 12000:E1B0 10420:E1B2 140427:0138 160664:B0F5 172660:2801 160666:4410 160670:076D 160672:1C00 504:1010 160674:1301 170714:7700 170716:B403 172604:C015 172606:0100 172610:8700 172612:0C01 177770:E004 114340:E006 100001:E098 177425:E09A 113747:E09C 12025:F5B2 40001:0140 160236:6E01 160240:FF15 160574:3301 160576:E615 160744:C417 160746:B0F5 172660:2801 160750:0611 160752:0381 160754:DF15 160756:0200 160760:6825 22550:E1F2 172025:E1F4 34000:E1F6 13000:013E 160770:3461 160772:013E 34000:E1FC 17615:E1FE 134365:F5B8 0:E200 33411:E202 1004:0126 163006:0115 163010:0201 161004:3EE7 163012:F709 163016:4094 163020:FC02 163476:1BBD 163022:8400
[свернуть]
вот такая вот красота..
160000 160002 - читается вектор начального пуска
160300 160302 172660 - выполнение команды MOV @#172660$,R4
160304 - выполнение команды CLR R0
160306 - выполнение команды MOV R4,SP
160310 - выполнение команды BMI 160464$
160312 160314 160316 177716 - выполнение команды BIT #20,@#177716
А вот при исполнении этой команды не удается прочитать регистр 0177716, возникает прерывание TRAP4, сперва в стек ложатся текущие PC и PSW, это 446 444. Читается значение вектора TRAP4, это 4 6. Ну а так как ОЗУ ещё не инициализировано и после включения питания там всякий мусор, то уже дальнейшее исполнение не имеет смысла.
ZPilot, а можете подсоединится к выводам с 1 по 16 буфера 1801ВП1-055 и посмотреть что творится за буфером.
- - - Добавлено - - -
Некорректно сделано. Байты перепутаны местами, да и лучше представлять в восьмеричном виде. Чтение будет только если при активном SYNC и DIN есть ответ RPLY. Так как при чтении регистра 0177716 ответа RPLY нет, то далее всякий бред. А там есть и запись в ОЗУ сигналом DOUT.
Блин, я ж это специально сделал, открыл прошивку в хекседиторе и там был именно такой порядок, думал, что так нужно. Переделаю, не вопрос, к тому же -1 операция на Асме, все быстрее будет.
Я так понимаю что выводы есть не что иное как XS1 и XS2 - разъемы, куда вставляется, например, контроллер дисковода? Если да, то вот, что я уже сделал: https://ibb.co/MM2dkVb, осталось только подпаять провода от STMки.
Кстати, а что я увижу на этой шине? Увижу как читаются ПЗУ или через буфер данные не пройдут?
Вообще логгер МПИ для слотов расширения УКНЦ - вполне востребованная вещь будет, ИМХО.
А файл выходных данных потом можно будет открывать в DESS.SAV в эмуле ДВК господина Патрона.
Да уж.. Какое громкое название для вот этого:
Скрытый текст
__asm__(
".equ SYNC, (0x1UL << (7U)) \n\t"
".equ RPLY, (0x1UL << (1U)) \n\t"
".equ RE, (0x1UL << 0) \n\t"
".equ INVERT, 0xFFFF \n\t"
"movw r3,#0x7FF \n\t" //cycle 0 to 0x7FF step 1, number get data
"movw r4,#0x0 \n\t" //cycle 0 to 0xFF step 2, 2 byte get data (16-bit)
"movw r2,INVERT \n\t"
"start: \n\t"
//wait sync to hight
"sync_h: \n\t"
"ldr r1,[%[porta]] \n\t"
"tst r1,SYNC \n\t"
"beq sync_h \n\t"
//wait sync to low
"sync_l: \n\t"
"ldr r1,[%[porta]] \n\t"
"tst r1,SYNC \n\t"
"bne sync_l \n\t"
//save port C to mass
"ldrh r1,[%[portc]] \n\t"
"eor r1,r2 \n\t" //invert address
"strh r1,[%[mass],r4] \n\t" //save adress to mass
"add r4,#2 \n\r" //add shift to nember of mass
"sub r3,#1 \n\r" //increment number
"cmp r3,0x0 \n\r" //if end to mass goto end
"beq end \n\r"
//wait RE, if first Sync, then no data, then goto start
"re_sync_l: \n\t"
"ldr r1,[%[porta]] \n\t"
"tst r1,SYNC \n\t"
"bne start \n\t" //if SYNC is high then no data goto start
"tst r1,RE \n\t" //wait low RE
"bne re_sync_l \n\t"
//Wait RPLE
"rply_l: \n\t"
"ldr r1,[%[porta]] \n\t"
"tst r1,RPLY \n\t" //wait low RE
"bne rply_l \n\t"
//
"ldrh r1,[%[portc]] \n\t"
"eor r1,r2 \n\t" //invert data
"rev16 r1,r1 \n\t" //converts 16-bit big-endian data into little-endian data
"strh r1,[%[mass],r4] \n\t"
"add r4,#2 \n\r"
"sub r3,#1 \n\r"
"cmp r3,0x0 \n\r"
"bne start \n\r"
//"str r0,[%[mass]]\n\t"
//"strh r8,[%[porta]]\n\t"
//"str r9,[%[porta]]\n\t"
//"b start\n\t"
"end: \n\r"
:
:[mass]"r"(mass),[portc]"r"(portc),[porta]"r"(porta)
:"memory","r0","r1","r2","r3","r4"
);
[свернуть]
- - - Добавлено - - -
Я читал при активном SYNC, EDIN и RPLY, STMка подключена вместо 205 ПЗУ, это не правильно?
Да, разъемы XS1 и XS2 тоже стоят за буфером. Здесь просто интересно, как за буфер проходят сигналы линий адреса-данных. Ведь D24 (1515ХМ1-031) тоже стоит за буфером. Тут данных читать не надо. Надо видеть какие адреса проходят. Ибо если буфер или схема управления буфером неисправны, то на D24 не будет поступать адрес и он не сможет ответить на команду чтения, то и возникнет прерывание TRAP4. Если же адрес с SYNC поступают нормально, надо проверить нет ли разрывов в сигналах DIN и RPLY.
Тут такое дело, что адресный обмен происходит только при активном SYNC. Т.е. если после выставления адреса и выставления DIN, не было ответа RPLY при активном SYNC, то ничего не прочитано. Также при записи по сигналу DOUT, вроде процессор выставил данные для записи, выставил DOUT, но если ответа RPLY не было, то и запись не произошла. Есть ещё цикл обмена, который называется "чтение-модификация-запись", т.е. если надо прочесть данные по конкретному адресу, модифицировать их и туда же записать, то сначала выставляется адрес, потом по DIN читаются данные, SYNC остается активным, потом по DOUT записываются новые данные.
- - - Добавлено - - -
Отвечают только на сигналы DIN и DOUT, если адрес был их. Т.е. если в буфере барахлит какая-то линия, то вместо адреса 0177716 может придти, к примеру, 0177616. Естественно такого адреса нет на шине, потому процессор на сигнал DIN не дождется ответа RPLY, соответственно возникнет прерывание TRAP4.
Я делал так, жду высокий SYNC (неактивный), жду низкий SYNC(активный), читаю адрес, жду EDIN (низкий/активный), если во время ожидания SYNC стал высоким/неактивным, то перехожу в начало, если нет, то жду RPLE, а потом читаю данные и в начало.
- - - Добавлено - - -
Ага, дошло!!! Если все хорошо и комп работает, то ответ будет всегда, а если какие-то косяки, то "местный тайм аут"
Если во время ожидания RPLY SYNC стал неактивным, то и данные не прочитаны. Ибо по такому алгоритму уже можно дождаться RPLY от следующего цикла.
- - - Добавлено - - -
В системах PDP-11 во время адресного обмена устройство должно отвечать на сигналы DIN и DOUT сигналом RPLY. Если за 64 такта ответа не последовало, то считается, что устройство отсутствует на шине и процессор прерывается по прерыванию TRAP4. Таким образом можно просканировать страницу ввода-вывода и узнать какие регистры есть на шине.
Ясно, добавлю еще проверку на приход RPLY, кстати, можно сделать так, если RPLY не пришел, а пришел SYNC, то в память микроконтроллера записать какой-нибудь хитрый код.. ну там 0х1234, тогда будет ясно, что в этом месте словил тайм аут.
к сожалению, СТМка не в состоянии отсчитать такты выше мегагерца, во всяком случае 4й серии, а моя L476RG вообще разогнана из штатных 80 до 120 МГц, хотя хватало и штатных, но больше - не меньше :)
По хорошему логгер надо на верилоге делать, но сейчас все ПЛМки 3.3 В, значит нужен конвертер уровней.
А зачем их считать, такты? МПИ ведь асинхронная... Когда я сочинял свой AZ, у меня даже F103 с его 72 МГц вполне справлялся с МПИ, только оптимизацию прищлось сделать по скорости (дефолтно она по размеру). Только тот факт, что контроллер обязан отвечать по МПИ и в то время, когда он манипулирует с SD-карточкой (состояние "Занято"), а не только когда он свободен и ждет команды, заставил меня прикрутить туда аппаратный распознаватель адресов МПИ (на простейших ПЛИС). Если бы, получив команду, можно было просто отключиться от МПИ на время ее исполнения, так хватило бы и единственного МК.
А нельзя получить адрес из МПИ, сказать занято, сделать манипуляции с сд-картой, снять занято?
ну, L476 мало чем от 103 серии отличается (только пониженным потреблением), да и взял я ее только потому, что она у меня есть :)
Вот кстати да, у меня тут мысль возникла, а почему нельзя прикрутить к Сетевому адаптеру сд-шку, по идее там же все сделано за нас, только интерфейс соорудить? Только прикрутить не к входу/выходу, а к логической части, тогда и скорость можно поднять.
Если под занято Вы понимаете - карта не отвечает, но нельзя - при попытке обратиться к её адресам получим прерывание по вектору 4
Э? К какому такому сетевому адаптеру? Который в УК-НЦ? Так есть уже вариант AZ для УК-НЦ - именно вместо сетевого адаптера
RPLY - это НЕ сигнал готовности устройства выполнить следующую операцию. Это сигнал о том, что ведомое устройство приняло запрос от ведущего устройство (обычно процессор) на обращение к своим регистрам (или ячейкам памяти) и выполнило его. Никакого отношения к долговременным операциям (типа чтения сектора с диска) он НЕ имеет. Для этого используется бит в одном из регистров устройства, традиционно - 7-ой.
И если обратиться к РЕГИСТРАМ устройством, а оно не выдаёт сигнал RPLY, потому что занято выполнением долгоиграющей операции, получим прерывание по вектору 4
И я про него
Ну так это же замечательно, принимаем запрос, выставляем RPLY, ответом шлем, что мы тормозные, нам надо подумать. А чтоб не занимать ЦПУ микроконтроллера отдадим работу с СД - ДМА, а ЦПУ оставим слушать шину. Теоретически, это можно провернуть, а на практике, попробую провернуть ДМА на УАРТе, выставлю скорость обмена под мегабит (хотя этого мало) и посмотрю на чем споткнется.
я имел ввиду, можно ли использовать 065 для того, чтобы реализовать работу с СД?
Ответ - это прочитанный из (выбранного) регистра набор бит, если был запрос на чтение или сигнал о том, что то, что было выставлено на шину как данные, которые надо записать в (выбранный) регистр были записаны. Безусловно, какой то бит в каком то регистре может означать, что ЗАНЯТ и что устройство не будет реагировать ни на что, пока выполняется (долгоиграющая) операция. Именно такой подход сначала хотели реализовать, но - не реализовали. Все объяснения почему - не помню, ищите в соответствующих темах
Проблема PDP - если устройство хочет работать по DMA - в нём ДОЛЖНА БЫТЬ реализована логика работы по ДМА - как минимум - регистр текущего адреса и счётчик. То есть или Вы вещаете это всё на проц микроконтроллера или делаете аппаратную поддержку. Причём, не зависимо от того, как это будет сделано, соответствующий модуль должен работать по правилам QBus - с уведомлением PDP-11, что ему нужен цикл прямого доступа, выставлением DIN или DOUT, ожиданием RPLY-я и с выдержкой времянок. В далёкие времена, когда AZ ещё только проектировался и я имел к процессу отношение, я предлагал сделать DMA. В результате - в AZ DMA нет. Почему - вопрос к создателям, потому что с некоторого момента я уже не участвовал в проекте. В текущем виде он мне не интересен, поэтому чего там и как - все вопросы к создателям.
На том, что -65 не поддерживает ни в каком виде DMA.
Макс скорость, с которой 065 может посылать или принимать (правильно оформленные) байты - 57600 бит в секунду. Причем в этим биты входят (как минимум) два служебных, то есть на каждый байт передаётся (как минимум) 10 бит. Вопрос - а sd так умеет? Или у него свой протокол?
Разве RPLY это не сигнал от устройства, что готов ответ и процессор его может прочитать?
Проблема в том, что я говорил о ДМА только в микроконтроллере.. те.. ДМА в STMке отправляет/принимает данные из сд-карты в массив памяти, а уже процессор микроконтроллера передает данные на шину УКНЦ. По идее можно ДМА в УКНЦ, но надо разбираться, что с ним и как.. Весь вопрос в том, если в этом хоть какой-то здравый смысл? Хотя о чем я?! Тут все за гранью..
А разве не все равно какой у кого протокол когда у нас прокладка в виде микроконтроллера?
- - - Добавлено - - -
Для объемов памяти УКНЦ - выше крыши!
Только это не совсем стандартная скорость и что бы её использовать - нужно, что бы с другой стороны стоял такой же 065-ый. Так что - слабо-практический сценарий.
Хотя на 1201.2018 и мультиконтроллере я могу выставить любую скорость. Ради интереса попробовал 230400 (выше, я так думаю, надо кварц менять), но на такой скорости при работе по прерываниям ВМ3 начинает захлёбываться - работать в RSX, скажем, становилось практически не возможным.
- - - Добавлено - - -
У Вас неправильное понимание принципов работы по QBus
Не вижу ни слова про микроконтроллер
Это вы сначала попробуйте - а потом скажете. Флоп - 250 кбит/в секунду, то есть в четыре раза медленней
У меня вообще нет понимания работы QBus в принципе, о чем я писал ранее.. мало того УКНЦ вообще прошла бы мимо меня если бы не то обстоятельство, что мне попалась дохлая УКНЦ, попалась бы рабочая, я бы ее включил и выключил, положив на полку!
У меня нет цели разработать под нее что-то такое Ах какое, я просто пытаюсь отремонтировать. Все что вы здесь прочитали -это плоды попыток ремонта и вольные рассуждения, как бы грузануть в нее хоть что-то с минимальным вложением ресурсов..
В общем, чтоб ни кого не ввести в заблуждение и для четкого понимания дела вот аллегория: я - это зубной врач пытающийся отремонтировать в своем гараже старый Бьюик.
буфера FIFO на передачу и прием нужны
байт по 16
- - - Добавлено - - -
на базаре есть много разных микроконтроллеров (в том числе - ретро) с аппаратным параллельным портом. Правда 8бит. легко сажается на МПИ
Самый древний - Intel 8041/8042 использовался как контроллер интерфейса клавиатуры AT и до 4-x мышей ps/2
Из современных - PIC16 какие-то имеют
Для целий отладки и тестирования железа на шине Qbus. DMA используется чисто для захвата шины. И дальше на ней можно делать все что хочешь. Как это сделано в QBUS Blastere. И не каких сложностей нам нет!
Если вкратце - проц выставляет адрес и команду - читать. Если адрес принадлежит какому-то устройство, оно выставляет данные и RPLY. По RPLY проц считывает с шины данные и снимает запрос. На выдачу ответа и RPLY у устройства есть очень небольшое время, ну скажем - 10 мкс. Если устройство за это время не ответит сигналом RPLY, проц считает, что данный адрес никому не принадлежит и переход к обработке ситуации - адрес не существует.
Если устройству для выполнения работы требуется больше времени, то используется другой подход - проц (через регистры устройства) выдаёт команду на операцию, что то типа - записать в ячейку 177000 число 10, в ячейку 177002 число 1, после чего устройство начинает выполнять команду, а проц может заняться другими делами или организовать опрос устройство на предмет готовности. Опрос выглядит как - прочитать число из ячейки 177004. Если оно не 200 - то переход опять на чтение из ячейки 177004. Когда из ячейки прочитается 200 - значит, устройство закончило выполнять операцию - и может получать результат. Каждое такое чтение или запись - всегда сопровождается RPLY-ем. Ну или вариант - по завершению устройство выдаёт запрос на прерывание.
Результат можно получить или считывая содержимое какой то ячейки (для блочных устройств - каждое последующее чтение выдаст следующий байт) или DMA - тогда устройство должно поддерживать DMA и ему ещё надо задать - адрес, с которого будет записано считанное и сколько читать. И опять же - процессор одним из двух способов (опрос или прерывание) должен быть оповещён, что операция завершена.
В общем случае - не спасёт. Для решения проблемы DEC в DH-11 сделала даже вариант работы по DMA, но - только на передачу. На приём - не спасёт
- - - Добавлено - - -
Но тестировать работу процессора по программе. Что бы это протестировать, нужно ещё периодически шину освобождать - ровно на одну команду
Народ, если я так понял, я всех запутал! Когда я говорил о ДМА и скорости в мегабит, я имел в виду только микроконтроллер, а так же, микроконтроллер должен был выступать в роли отвечающего устройства (сервера) на сетевом адаптере, единственное, я хотел его включить не на вход/выход, а напрямую к 065. Как то так.. Прошу прощения, если кого запутал!
- - - Добавлено - - -
А разве это:
и это:
как-то противоречит друг другу? По моему суть одна: пишем/читаем и везде ответ после RPLY. И естественно нужно уложиться в тайм ауты.