PDA

Просмотр полной версии : Временные диаграммы Вектора



ivagor
08.10.2017, 09:10
В Радиолюбителе №10 за 1992 год в статье про электронный диск (квазидиск) на РУ7 приведены (стр. 9-10) временные диаграммы обращения процессора к памяти. Плюс есть комментарии в статье. Имхо автор несколько увлекся с критикой оригинальной прошивки, заводской квазидиск на РУ5 при подключении встык безошибочно работал без всяких подстроек.
Кто-нибудь смотрел/записывал логическим анализатором сигналы реального вектора? Или может есть красивые подробные (включающие не только обращение проца, но и видеоконтроллера) временные диаграммы из другого источника? Может кто-то сам рисовал - поделитесь, если не жалко.
Кстати, еще интересно сравнение 06Ц и 06Ц.02 - в .02 похоже удалось полностью повторить нужные сигналы без D36 (РЕ3).

KTSerg
08.10.2017, 20:06
А для чего нужны временные диаграммы?

ivagor
09.10.2017, 07:08
Для полноты картины, для истории.

ivagor
09.10.2017, 16:58
Пытаюсь сам нарисовать. Странный момент - при наличии доступа проца к памяти /CAS в последних четвертьтактах активный (низкий) до упора? Если я правильно понимаю, Чеботарев в своей прошивке это изменил, но у всех кроме него же стандартная прошивка D36.
Доступ видеоконтроллера нормальный, а проца - очень долгий, явно можно было сократить (возможно пришлось бы добавить регистр).

KTSerg
09.10.2017, 20:09
У меня обычный "восточный" логгер, с максимальной частотой сканирования 24МГц, даже не знаю, возможно результаты сканирования будут очень зависеть от сдвига фаз между изучаемыми сигналами и моментом сканирования... Но попробовать посканировать можно...
Какие сигналы смотреть?

ivagor
09.10.2017, 21:54
Если брать сигналы именно с ВУ, то в первую очередь интересны /RAS, /CAS, /ЧТЗУ, /ЗПЗУ, СТЕК, /ЧТВВ, /ЗПВВ, СТРОБ СОСТ.
Остаются шины адреса памяти и ВВ и шина данных, но я так понимаю, это уже многовато. /СБРОС и /БЛК наименее интересны.
Вероятно лучше пробовать логить при работающем тесте, например техпрогона. Как я понимаю, на ВУ сигналы обращения к памяти должны быть в любом случае (в смысле и к внутренней).

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

Если снимать сигналы с ВУ, то есть один большой минус - там клоков нет. Какой-то клок выведен на ПУ, но я не помню, какой (1,5 МГц?).

ivagor
10.10.2017, 12:13
Вот что получилось по D36 с учетом информации из статьи Чеботарева

Syntal
10.10.2017, 12:41
Вот что получилось по D36 с учетом информации из статьи Чеботарева

Как-то так вживую выглядит:
https://s8.hostingkartinok.com/uploads/images/2017/10/111f5b7d10d251adcd6ea3ae4d54e9da.jpg (https://hostingkartinok.com/show-image.php?id=111f5b7d10d251adcd6ea3ae4d54e9da)

ivagor
10.10.2017, 13:06
Syntal, большое спасибо! Мою картинку надо сильно править (или просто удалить).

Syntal
10.10.2017, 13:31
Вот ещё нашел по теме:

https://s8.hostingkartinok.com/uploads/images/2017/10/8a9b6f82c4dc82aff729838c508a0ec4.jpg (https://hostingkartinok.com/show-image.php?id=8a9b6f82c4dc82aff729838c508a0ec4)

ivagor
10.10.2017, 13:50
Познавательно. Получается, что на ВУ для регенерации активен только /RAS (это логично, просто я не знал, что в векторе так сделали).

KTSerg
10.10.2017, 14:24
Странно.
У меня на 06Ц.02 сигнала /CAS на "Тесте устройств" всегда в "1". По схеме /CAS зависит от /БЛК - видимо появится при подключении Квазидиска (или я чего-то не понял).

ivagor
10.10.2017, 14:27
KTSerg, тоже познавательная информация (по крайней мере я не знал до диаграмм Syntala).

Syntal
10.10.2017, 15:15
По схеме /CAS зависит от /БЛК - видимо появится при подключении Квазидиска (или я чего-то не понял).

/БЛК заводится на РЕ3 (D37 в Векторе), которая генерирует CAS-ы для 4-ёх линеек ОЗУ в самом Векторе и на ВУ

ivagor
10.10.2017, 15:53
D37: Q1-Q4 - /CAS на внутренние РУ6, Q5 - /CAS на ВУ

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

В .02 то, кстати, без РЕ3 обошлись

KTSerg
10.10.2017, 17:26
/БЛК заводится на РЕ3 (D37 в Векторе), которая генерирует CAS-ы для 4-ёх линеек ОЗУ в самом Векторе и на ВУ
Я с 02-ым ковырялся, в нём более очевидна зависимость /CAS (с ВУ) от /БЛК.
На /CAS (ВУ) заведён выход логического ИЛИ, на вход которого подан /БЛК. Соответственно, пока /БЛК в "1", никаких /CAS на "ВУ" не поступит.

ivagor
10.10.2017, 18:35
Перечитал техническое описание в Вектор-USER. Про D37 там немного написано, в отличие от D36 (про которую буквально одна фраза). Если бы кто-нибудь дополнил и расширил это описание (и добавил про .02), было бы очень здорово.

KTSerg
16.10.2017, 20:42
Пока искал куда логером подцепиться для отлова RAS, обнаружил, что в схеме 02-го нет "источника" этого сигнала...
Все входы RAS ОЗУшек соединены, а откуда этот RAS берётся, в схеме нету, пришлось по дорожкам искать...
Выход 12 микросхемы D56, на схеме должен ещё соединяться с шиной с обозначением "71" (это и есть RAS).

svofski
17.10.2017, 15:58
ivagor, ты решил нарисовать схему Вектора в Logisim-е? ;)

ivagor
17.10.2017, 16:04
Нет, всего лишь интересуюсь некоторыми вопросами.
Погуглил 8080 для logisim - не нашел.

svofski
17.10.2017, 17:07
Нет, всего лишь интересуюсь некоторыми вопросами.
Погуглил 8080 для logisim - не нашел.

Так надо его сначала сделать.

KTSerg
17.10.2017, 18:16
"Осциллограммы" для Вектор-06Ц.02.
Поскольку логгер 8-ми канальный, на фоне общих: 12МГц, F1, F2, Mx2, RAS, CAS
Отдельно сканировал пары: ЗПЗУ, ЧТЗУ и ЗПВВ, ЧТВВ.

Скриншоты с описанием точек подключения в архиве.

ivagor
17.10.2017, 18:43
KTSerg, спасибо!
По zu_ozu - если я правильно понял, RAS на картинке уже "окончательный", а CAS - "предварительный"? Как-то они странно смещены друг относительно друга.

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

"Странно" неудачное слово. Несколько иначе, чем в 06Ц на диаграммах Syntalа

KTSerg
17.10.2017, 18:45
CAS задерживается только на одну микросхему дешифратора.
При частоте сканирования 24МГц такого интервала между фронтами импульсов не могло получиться. Значит скорее всего они реально смещены.
Честно говоря уже не помню прошивку D36 (как там фронты прошиты).
Но кто-то где-то на форуме писал, что столкнулся с этим смещением. Вроде в теме про КомбоДевайс.

Откопаю простой 06Ц, разберу, отсканирую выходы D36, посмотрим...

ivagor
17.10.2017, 19:03
По картинке TimeDiagram_Syntal.jpg я насчитал (речь об обращении проца, не видеоконтроллера): RAS - 6,5 тактов (12 МГц), CAS - 4,5 такта
По zu_ozu: RAS - 6 тактов, CAS - 5,5 тактов
И на обоих картинках смущает положение сигнала записи - он не поздновато приходит?

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

От видеоконтроллера RAS на обоих картинках по 3,5 такта. CAS в 06Ц - 2 такта. А на zu_ozu CAS от видеоконтроллера не виден

KTSerg
17.10.2017, 19:04
Ещё раз глянул, там интервал 83.3нс - ровно один период тактовой частоты 12МГц, при сканировании - это 4 такта сканирования.
Ещё раз схему глянул...
Сканированный CAS через один лог. элемент "И" подаётся на "ВУ", а на ОЗУ поступает через дешифратор ("ИД4") и буферный "И" (на котором коммутируется ещё какой-то фигнёй)...
Сейчас лак отцарапаю, попробую прямо к ОЗУ подключиться...

ivagor
17.10.2017, 19:08
на котором коммутируется ещё какой-то фигнёй
Возможно с CAS от видеоконтроллера?

KTSerg
17.10.2017, 19:52
Подключил два CASа (от двух разных банков).
ozut - во время тестирования памяти
ozu0 - во время скролинга экрана (ОЗУ не тестируется)

Размеры режет, добавил скриншоты в архив.

Скорее всего да, на микросхеме D59 происходит подмешивание CAS от видеоконтроллера, и на первых скринах этого CASа просто не было.

ivagor
17.10.2017, 19:56
KTSerg, можно качественные версии куда-нибудь выложить (не могу буквы рассмотреть)?

KTSerg
17.10.2017, 20:02
KTSerg, можно качественные версии куда-нибудь выложить (не могу буквы рассмотреть)?
Под миниатюрами архив с полноразмерными...

ivagor
17.10.2017, 20:27
Под миниатюрами архив с полноразмерными...
:)
Теперь видно, что и длительность CAS от видеоконтроллера в .02 отличается - 3 вместо 2 в 06Ц.

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


ozu0 - во время скролинга экрана (ОЗУ не тестируется)
Видны 2 "процессорные" записи и одно процессорное чтение из памяти - похоже они попали в одну из двух оставшихся за кадром линеек ОЗУ

KTSerg
17.10.2017, 21:46
...
Видны 2 "процессорные" записи и одно процессорное чтение из памяти - похоже они попали в одну из двух оставшихся за кадром линеек ОЗУ
Сама программа ведь выполняется, команды считываются из ОЗУ, ну и пишется наверное что-то вроде стека...
Сканировал "средние" линейки ОЗУ, к ним проще подключиться...

KTSerg
19.10.2017, 18:28
Сканировал D36 Вектор06Ц.
На фоне 12МГц, F1 и F2 подключился к подписанным выходам D36.
Второй скрин, дополнительно снимал CAS с D37 и для фона ЧТЗУ, ЗПЗУ с разъёма "ВУ".

Чувствуется, что частота сканирования 24МГц маловата, иногда явно заметно, что между фронтами импульсов должен быть меньший интервал, а сканер делает шаг около 42нс.

ivagor
19.10.2017, 18:51
KTSerg, спасибо!
Меня немного смущают "полтакты" на картинках (у Syntala тоже). Например на 06c_36_37.png есть RAS чтения видео в 3 такта (12 МГц), а есть 3,5 такта. Наверно это погрешность семплирования или что-то в этом духе.

KTSerg
19.10.2017, 19:06
Скорее всего погрешность.
Когда делал второй скан, иногда фронты CAS-ов совпадали, иногда был сдвиг на пол-такта, весь CAS1 из D37 отставал.

svofski
08.07.2018, 03:37
У меня тоже есть теперь диаграммы. Я захватываю FPGA с порта ВУ и прямо в SignalTap. Без Векторовского клока, семплирующий клок 25 МГц.

Тестовая программа, которая крутится в Векторе (кваза нет, просто так out $10):
https://raw.githubusercontent.com/svofski/vector06c-lesshadoks/master/doc/buscaptures/count-and-sta-code.png

Картинка с моими изящными коментариями:

https://raw.githubusercontent.com/svofski/vector06c-lesshadoks/master/doc/buscaptures/count-and-sta.png


Картинка хорошо, но гораздо интересней самому загрузить VCD файл и повтыкать: vcd (https://github.com/svofski/vector06c-lesshadoks/blob/master/doc/buscaptures/count-and-sta.vcd)


Проанализировать ее мне помогла моя бесценная утилита для шифрации адреса в RA/CA и поворачивания фарша назад: тут (https://github.com/svofski/vector06c-lesshadoks/blob/master/doc/buscaptures/rascas.py).

В двух словах:
RA = {a9,a10,a11,a12,a13,a1,a2,~a14}
CA = {a3,a4,a5,a6,a7,a8,a16,~a15}

Syntal
08.07.2018, 11:25
У меня тоже есть теперь диаграммы. Я захватываю FPGA с порта ВУ и прямо в SignalTap. Без Векторовского клока, семплирующий клок 25 МГц.
Случайно не в Altera DE1? А то есть вопросы по подключению.


Картинка с моими изящными коментариями:
https://raw.githubusercontent.com/svofski/vector06c-lesshadoks/master/doc/buscaptures/count-and-sta.png

Проанализировать ее мне помогла моя бесценная утилита для шифрации адреса в RA/CA и поворачивания фарша назад: [URL="https://github.com/svofski/vector06c-lesshadoks/blob/master/doc/buscaptures/rascas.py"]тут[/

В двух словах:
RA = {a9,a10,a11,a12,a13,a1,a2,~a14}
CA = {a3,a4,a5,a6,a7,a8,a16,~a15}
Что есть RA и CA ? По данным формулам у меня не получается из 928D -> 34. Инверсий чисто физически вроде не должно получаться - по схеме сигналы мультиплексируются по времени и проходят через одни и теже 155КП2.

Я делаю на Altera DE1 VGA-выход, сигналы с ВУ беру. Читалка из памяти корректно работает, добавил запись с Вектора, небольшие глючки на изображении есть. Думал, что запись гребет, а тут Ваша подсказка в виде небольшого теста. У меня из 928D получается 94, делал таким образом {а6,а5,а4,а3,а2,а1,b7,b6} - по схеме Вектора вроде так должно быть. Биты а-байта захватываю по переднему фронту RAS, для b-байта по заднему фронту RAS, а у Вас по переднему фронту STROB - тут не знаю принципиально или нет, и если принципиально, то как правильно.

Сейчас переделал, чтобы получалось 34 - на экране совсем неправильная картинка. Совсем что-то запутался.

svofski
08.07.2018, 11:56
Syntal, Row Address и Column Address, то, что стробируется RAS и CAS.
С тем, как они получаются вроде и ничего сложного, но путаница. Я долго рисовал на столешнице карандашом, потом сдался и написал модельку. У Вектора шина "2" образована из 16 разрядов А[0:15], к которым приделаны еще 8 инверсных ~A[8:15]. Проводки 22,23, которые идут на D14 это инверсные биты ~a14, ~a15.

Фарш невозможно провернуть назад и в обратную сторону та же формула не годится, ее надо обратить. Например, если ra[0]=a9, то теперь a9=ra[0]. Если ra[7]=a22 = ~a14, то обратно a14=~ra[7]. Нам понадобятся оба байта, чтобы получить целиком A. Если при этом ничего не перепутать, где старший бит, где младший, не забыть, что шинные провода нумеруются с 1, а не с нуля, итд, то из 928d получится обратно 1234.

Я не ручаюсь за то, что все 100% правильно, но из моих диаграмм у меня все адреса таким образом сходятся.

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


Случайно не в Altera DE1?
Нет, это моя собственная плата с Циклоном 4, которой я скоро похвастаюсь. Буфера 74LVX4245MTC.

ivagor
09.07.2018, 10:01
Я делаю на Altera DE1 VGA-выход, сигналы с ВУ беру.
50 Гц развертка с удвоенным числом строк? Если да, то интересно, как выполняется синхронизация с прерываниями (доп. проводок? или как то по счетчику регенерации, хотя так вроде не получится). Или это не для демок и игрушек? Если это "независимое" отображение, возможно с другой (не 50 Гц) частотой, то вопросы отпадают.

svofski
09.07.2018, 12:09
Syntal, записал декодер адреса и выглядит это так:


reg [7:0] ra;
wire[7:0] ca = VU_SHAP_N;
reg [15:0] decoded_a;

always @(posedge clk_cpu) begin
if (negedge_ras_n) ra <= VU_SHAP_N;
if (negedge_cas_n) begin
decoded_a = {ca[6], ~ca[7], ~ra[7], ra[4], ra[3], ra[2], ra[1],ra[0],
ca[5], ca[4], ca[3], ca[2], ca[1], ca[0], ra[6],ra[5]};
end
end

negedge_ras_n/negedge_cas_n это семплированые фронты RAS/CAS. RAS я причем сделал с задержкой на такт, он у меня иначе слишком рано захватывался.

Про VGA с ВУ тоже очень интересно.

Improver
09.07.2018, 12:55
Я делаю на Altera DE1 VGA-выход, сигналы с ВУ беру.

Про VGA с ВУ тоже очень интересно.
Да, такая штука и мне была бы интересна. Может стоит открыть отдельную тему по нему?

Syntal
09.07.2018, 17:23
50 Гц развертка с удвоенным числом строк? Если да, то интересно, как выполняется синхронизация с прерываниями (доп. проводок? или как то по счетчику регенерации, хотя так вроде не получится). Или это не для демок и игрушек? Если это "независимое" отображение, возможно с другой (не 50 Гц) частотой, то вопросы отпадают.
Да, пока 720х576 50 Гц, но для ЭЛТ хочется 100 Гц. Для синхронизации планирую отлавливать прерывания на шине и с помощью ФАПЧ вытягивать пока их нет, хотя досконально пока вопрос не копал. Если не получится реализовать, тогда - да, только проводок, только хардкор.:v2_dizzy_punk:

Самому интересно послушать, что на этот счет умные люди могут посоветовать. Ты же в ВМ80 - спец! Просто чем больше втыкаю в шину Вектора, тем больше уверенность, что все там есть.

svofski
09.07.2018, 17:36
Syntal, если я могу помочь, сняв диаграммы в каком-то определенном случае, то сейчас удобный момент меня об этом попросить. Например, можно написать тест, который будет заполнять экран определенным образом, или что-нибудь еще. Я прогоню, у меня сейчас все для этого подключено.

Syntal
09.07.2018, 17:49
Syntal, если я могу помочь, сняв диаграммы в каком-то определенном случае, то сейчас удобный момент меня об этом попросить. Например, можно написать тест, который будет заполнять экран определенным образом, или что-нибудь еще. Я прогоню, у меня сейчас все для этого подключено.
Спасибо большое, адрес я правильно в железе получал, просто спросони на бумажке с ручкой даже по своему алгоритму 34 не мог высчитать. Запись у меня гребла, сейчас починил. Диаграммы у меня так же под рукой, SignalTap обновляю чаще чем трейдеры биржевые сводки.

ivagor
09.07.2018, 18:08
Syntal, можно попытаться обойтись без проводка отлавливая слово состояния INTERRUPT_M1 или INTERRUPT_HALT. Возможно в сочетании с информацией о счетчике регенерации. У опытных и грамотных железячников могут быть идеи получше.
svofski, у меня вопрос - полный цикл регенерации 8 строк? Можешь это проверить, или скажи, если уже проверил?

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


svofski, у меня вопрос - полный цикл регенерации 8 строк? Можешь это проверить, или скажи, если уже проверил?
Нашел в vector-user 6, что период регенерации внешнего озу 512 мкс, наверно можно и не проверять. Я так предполагал, что 8 строк x 32 адреса в строке в активной области, похоже так и есть. Правда где-то читал, что для РУ5 (в связи с ее организацией) достаточно было перебрать 128 адресов для регенерации.

svofski
09.07.2018, 18:08
ivagor, нет, я сейчас думаю о другом. Скажи, что и как замерить, пришлю vcd. Но с моим текущим сетапом 8 строк померить нереально, влезает максимум одна строка. Надо чего-то изобретать.

Syntal
09.07.2018, 18:09
Да, такая штука и мне была бы интересна. Может стоит открыть отдельную тему по нему?
Пока еще все в зачаточном состоянии. Работает только отображение режима 256х256, бордюр вообще косвенно для просмотра положения синхронизации используется. Прикрутить бордюр, режим 512х256 и вертикальный скролл думаю не должно вызвать особых проблем, а вот с ловлей синхронизации, как правильно заметил ivagor, скорее всего придется помучаться.

Вообще планируется расширенный Combodevice с еще двумя дополнительными мегафишками помимо VGA. Боюсь только, что svofski за пару вечеров накатает на 4-том Циклоне идеальный видеовыход с Вектора в FullHD через HDMI с трилинейной фильтрацией и эмуляцией всех тонкостей цветопередачи Электроника ВТЦ-201:v2_dizzy_roll:

ivagor
09.07.2018, 18:10
svofski отбой, я успел прочитать в вектор-user 6 про период регенерации.

svofski
09.07.2018, 18:17
Боюсь только, что svofski за пару вечеров накатает на 4-том Циклоне идеальный видеовыход с Вектора в FullHD через HDMI с трилинейной фильтрацией и эмуляцией всех тонкостей цветопередачи Электроника ВТЦ-201
Лол, нет. У меня другие планы сейчас. Видео я пока оставил в покое. Делаю просто кваз + эмулятор флопа + аы + джойстики. То есть тоже можно сказать Комбодевайс. Но есть один свободный пин, на который я с удовольствием выведу модулированный PAL, если ты сделаешь захват видео с шины :)

Syntal
09.07.2018, 18:26
О май гад! У Svofski остался 1 пин на 4-ом Циклоне, представляю что это будет за котлета!

svofski
09.07.2018, 18:38
Моя котлета:

https://lh3.googleusercontent.com/uMhhOeXtNKey1UMyoVpL-W4eggnpMtRsKIM0sy0IQV74gjZk-9hrnJFn8M2xe8-Ps2ItwJJbh19WfgyvDGGCoHvcUxyO1BW9OMWEJcmCV4OkIIkXf qMYS07COETj9oESDrLvl5-zZf0-7na-37SeFrNgIQ7rk76CcVSpzkXivodpEBTpYRAUZS70EGr_GgxWXH hq1SIlN75W7n01jKxJRPdhOO9dNk1cVNvkwbtutH2CG6DGL3r0 JeufKfqGjC0ub5aQouWXUzTwO6EVl4AuTYRCjkCzd0kjszKD8Q LC7LIiw-IcMt9_0BJ383LeCjAMRJM_dgS9PnOMoGOzwe1CuF-he5c7mGFiqe6FtEYfv9rDAD3FsmSY7SkeWZtgbKD-KgXT10Q3bOSAmZZw6kW6bGp6VdiVWiKF2-uwXK5Dffq6xOMWC1zT-A4hGJVTyXqc6HL3Ga7lqZQS1vneuhFwrTsza9sgcMyRloTXbE-wbnMa4l-0hqxf_FtZuwyRaetLeoRnvwB-hMXzs1Jo4aH4efgIxoZJbF-tWGXQ0dn0lCPQXlXcGMOlKSuK3opLvduonyiEx-7wTWmRE1KRSe-YG2eiqgmNb0QN6DmWvhgFN7b_QOUi6-7SOs529jads-3LtIbUT0yBG_hZ3_Sh2LgHruTZrOzHuUvBMQ=w1164-h873-no

ivagor
09.07.2018, 19:27
svofski, из-за ракурса съемки кажется, что нижняя часть платки выступает за корпус вектора, это ведь только кажется?
Выглядит симпатично, компактно, можно участвовать в конкурсе креативного дизайна плат.

svofski
09.07.2018, 19:40
ivagor, не, до стола целый карандаш свободно влезает. Просто я держу на весу, чтобы свет и фон и все такое, поэтому тени снизу нет и так кажется.

ivagor
09.07.2018, 19:43
Буквально пара слов про VGA ВУ. Если уж кидать проводки, то наверно 2 - INT и 12 МГц.

Syntal
09.07.2018, 21:36
Моя котлета:

Круть! Плата 4 слоя? А на обратной стороне есть чего?
И "ЛЕШАДОК ПОМПЕ" - was ist dast? Простите, я стал забывать родной албанский.

x-code
17.07.2018, 11:37
И "ЛЕШАДОК ПОМПЕ" - was ist dast? Простите, я стал забывать родной албанский.

Это был такой французский мультсериал про Шадоков и Гиби (в русскоязычном пространстве Шадоки по-моему упоминались только в переводе книги Жака Арсака "Программирование игр и головоломок"). Шадоки - довольно глупые и злобные птицеобразные создания с весьма своеобразной философией, один из принципов которой "в любой непонятной ситуации - качай (помпу)"

Собственно, на логотипе платы и изображены два шадока с помпой :)

Syntal
23.07.2018, 06:43
Буквально пара слов про VGA ВУ. Если уж кидать проводки, то наверно 2 - INT и 12 МГц.
По слову состояния на шине, к сожалению, не получилось достойно засинхронизироваться. После нажатия ВВОД-БЛК на прошивке 32 кБ by Timoha приходит всего 2 прерывания. ФАПЧ в принципе вытягивает, но самое неприятное, что в этот момент происходит настройка и в итоге подрыв кадра - очень некрасиво.

В итоге подрубил сигнал F50Гц, с ним все хорошо., он всегда есть. Если не используется программирование палитры во время отрисовки кадра, то все один в один. Неожиданностью оказалось, что кварцы 12 МГц в Векторе и 24 МГц в Altera DE1 дают сильный рассинхрон, на одном кадре набегает ошибка в 120-135 клоков частоты 24 МГц. Из-за этого в демке в конце видео скролл двигается не по вертикали, а по диагонали.

Ну и полоски в демке в два раза большей длины, а по вертикали в два раза уже. Это из-за использования буфера на 8 точек. Скорее всего нужно всю строку запоминать, плюс как-то запись в палитру отслеживать и корректировать на убегание частоты и то пиксель в пиксель не попадешь - вобщем жопа!

Слайды, справа тру:


https://youtu.be/fSRkTiA95bg

ivagor
23.07.2018, 07:45
Получилось здорово! Несмотря на мелкие шероховатости такая связка решает как минимум 2 проблемы
1) Большую проблему векторовской синхры. Плюс возможность подключить к современному монитору с VGA входом, у которого нормальная геометрия и можно отрегулировать положение и размер картинки.
2) Маленькую проблемку разноширинности точек в режиме 512


кварцы 12 МГц в Векторе и 24 МГц в Altera DE1 дают сильный рассинхрон
Это было более чем ожидаемо, поэтому предлагал взять 12 с вектора. Сам я не пробовал использовать EXT_CLOCK. Правда надо еще по уровню согласовать.
Но это все так, придирки, показанный в видео вариант уже офигенный!

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


12 с вектора
Возможно лучше брать 6 с выхода D35 (D70 в .02), все равно на pll подавать.

svofski
23.07.2018, 11:52
Очень круто получается! Согласен, что надо запоминать целиком строку.

По поводу разъезда, может быть попробовать сделать подстройку частоты в DE1? Получать ее неправедно с фазового аккумулятора, а значение приращения интерактивно регулировать кнопками. Будет как у старинных механических телевизоров :)

ivagor
23.07.2018, 12:17
с фазового аккумулятора
Писал (давно) в ветке по твоему v06cc, что при тактировании видео фазовым аккумулятором получалось не очень хорошо. По памяти вспоминать конкретику не буду, чтобы не ошибиться. Возможно я тогда тактировал аккумулятор слишком маленькой частотой, не помню.

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

Нашел про фазовый аккумулятор для видео (http://zx-pk.ru/threads/8635-vektor-06ts-altera-de1.html?p=678561&viewfull=1#post678561)

svofski
23.07.2018, 12:43
Да, с разрядностью на больших частотах проблема.

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

А кстати, демка NONAME DEMO как-то особенно мутузит режим 512.

ivagor
23.07.2018, 12:51
NONAME DEMO как-то особенно мутузит режим 512
"Режим FAKE 1024"? Грабил я оттуда обе фазы этой картинки, ближе к вечеру выложу (лучше в демо-теме). На мой субъективный взгляд это просто fake, реального эффекта я там не разглядел.

Syntal
23.07.2018, 14:38
Очень круто получается! Согласен, что надо запоминать целиком строку.
Фигня получается - я пока даже никак не соображу как синхронизовать запись в палитру цветов с положением для выводимого пикселя. Даже если буфер на строку делать. Очень интересно как у Вас в Vector-06cc для DE1 сделано - используется буфер на строку или на весь кадр и как именно палитра запоминается - все равно же два раз одну строку выводить?


По поводу разъезда, может быть попробовать сделать подстройку частоты в DE1? Получать ее неправедно с фазового аккумулятора, а значение приращения интерактивно регулировать кнопками. Будет как у старинных механических телевизоров :)
Не совсем понял суть. Я пытался упихать эти 120-130 клоков рассинхрона, раскидывая по одному пикселю в конце каждой VGAшной строки, срыва синхронизации нет, но картинку корежит на этих областях.

ivagor
23.07.2018, 15:34
как синхронизовать запись в палитру цветов с положением для выводимого пикселя
2 буфера на строку (2x256 байт, каждая точка 8 бит BBGGGRRR), пока один выводится, другой "рендерится" на основе содержимого памяти и палитры. "Рендеринг" в теневой буфер (должен быть) синхронизирован с вектором, в чем, как я понимаю, основная сложность.

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


2x256 байт
Пара уточнений:
1) Если с бордюром, то больше
2) Учитывая режим 512 нужно в 2 раза больше

Syntal
23.07.2018, 15:39
2) Маленькую проблемку разноширинности точек в режиме 512
Это ерунда, забыл про инверсию цветов - вот где скрещенные паяльники раскалялись до красна.

Это было более чем ожидаемо, поэтому предлагал взять 12 с вектора. Сам я не пробовал использовать EXT_CLOCK. Правда надо еще по уровню согласовать.
Возможно лучше брать 6 с выхода D35 (D70 в .02), все равно на pll подавать.
Блин, а для меня такой разбег показался нонсенсом, там же ppm точность должна быть. Нужно попробовать в Вектор воткнуть другой современный кварц на 12 МГц и сравнить с советским.
На ВУ конечно много неиспользуемых сигналов остается, но заводить еще 12 МГц как-то перебором кажется, хотя " ... Not that we needed all that for the trip, but once you get locked into a serious drug collection, the tendency is to push it as far as you can." (С) Страх и ненависть в Лас-Вегасе.

ivagor
23.07.2018, 15:45
Если "рендерить" всю строку, включая невидимую часть, то один буфер 768 байт

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

На ВУ конечно много неиспользуемых сигналов остается, но заводить еще 12 МГц как-то перебором кажется
Кстати, можно наоборот - сгенерировать в DE1 12 МГц и подать в вектор (но опять согласование уровней).

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

При генерации 12 МГц в DE1 и подаче в вектор в принципе можно ограничится этим одним проводком, 50 Гц в DE1 в этом случае должны четко соответствовать векторовским.

svofski
23.07.2018, 16:55
Опоздал, так что я только поподдакивать ivagor-у. Все так, запоминать в буфер уже настоящий цвет, а не код цвета.

BTW, ppm это так себе точность, у нас этих m 12 штук за секунду набегает. И потом одно дело способность держать заданную частоту, другое дело задание этой самой частоты. Пилили кристалл рашпилем, уж как получилось. От характеристик схемы тоже многое зависит. У Вектора топорный генератор, но даже его по идее можно сделать подстраиваемым в небольших пределах.

А что если синхронизироваться по СТРОБЪ.СОСТЪ? Они нерегулярны, но разбегание по ним должно быть можно подстраивать.

Syntal
23.07.2018, 18:39
Кстати, можно наоборот - сгенерировать в DE1 12 МГц и подать в вектор (но опять согласование уровней).

При генерации 12 МГц в DE1 и подаче в вектор в принципе можно ограничится этим одним проводком, 50 Гц в DE1 в этом случае должны четко соответствовать векторовским.
Мне кажется, это 5 баллов! Спасибо!!! Если удастся завести Вектор с клока FPGA, все можно сделать красиво, наверняка и все метастабильности уйдут.


Если "рендерить" всю строку, включая невидимую часть, то один буфер 768 байт
Не хочется столько места в FPGA тратить на буфера, а с внешней памятью нужно прикинуть на какой частоте получится утрамбовать все это дело.

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


А что если синхронизироваться по СТРОБЪ.СОСТЪ? Они нерегулярны, но разбегание по ним должно быть можно подстраивать.
Я пробовал так, 2 прерывания при старте загрузчика из ПЗУ, а потом уйма кадров до загрузки проги без прерываний. ФАПЧ отстраивается и по 2 прерываниям, но рассинхрон по задающим частотам двух кварцев, плывущий по времени (наверное с прогревом) и к тому же дрожащий в последнем разряде, сводят попытки учитывать еще и моменты программирования палитры к выносу мозга. Это интересная задачка, я уже стал подумывать отлавливать на шине машинные циклы и использовать то, что в Векторе они кратны 4 тактам, но ivagor выше предложил более простое и элегантное решение - буду его пробовать.

svofski
31.07.2018, 18:10
Syntal, вот как надо :)

https://youtu.be/BpNP9b3aIfY

ivagor
31.07.2018, 18:13
В детстве иногда видел на тв сигнал от соседской денди, в основном они играли в танчики. Это, конечно, на порядки менее круто чем в видео, но из этой серии.

svofski
31.07.2018, 18:16
У Вектора так все торчит и фонит, что можно делать квазидиск и захват VGA бесконтактно. Просто кладешь его на такой матрасик с hdmi out-ом.

KTSerg
31.07.2018, 18:35
Syntal, вот как надо :)
...
Ну, про это уже очень много лет назад говорили, что с улицы, сидя в машине можно принимать изображение с мониторов в офисе.
По этой причине, в серьёзных офисах делали радио-изоляцию, экранировали...

Для Вектора я делал радио-модуль подключения к телевизору без проводов, схема была в Вектор-Юзере. Изображение было ч/б и мягко говоря не очень крутое, но работало.

ivagor
31.07.2018, 18:59
Для Вектора я делал радио-модуль подключения к телевизору без проводов, схема была в Вектор-Юзере. Изображение было ч/б и мягко говоря не очень крутое, но работало.
Если модулятор подключать проводом к антенному входу, то качество изображения будет лучше. А в беспроводном варианте разве что от соседей ловить.

Improver
01.08.2018, 09:26
Для Вектора я делал радио-модуль подключения к телевизору без проводов, схема была в Вектор-Юзере. Изображение было ч/б и мягко говоря не очень крутое, но работало.
Тоже делал подобный модулятор (он ещё сохранился, кстати), по простейшей схеме на одном транзисторе из какого-то журнала Радио. Статья в журнале, кстати, никакого отношения к Вектору или другим ПК не имела. Долго этим модулятором пользовался, а потом телек на цветное изображение переделал и надобность как-то отпала... А недавно попробовал его использовать на современных телевизорах -- не ловят, по всей видимости, надо всё-таки синхроимпульсы в Векторе править.


Если модулятор подключать проводом к антенному входу, то качество изображения будет лучше. А в беспроводном варианте разве что от соседей ловить.Да, без провода шумов было много, а с проводом -- не хуже, чем по "видео".

Syntal
02.08.2018, 20:52
Syntal, вот как надо :)

Не, мне так не надо. Видно же, что у нее палитра не прописывается и разрешение 512х256 не поддерживается:v2_dizzy_roll:

Мне как-то так надо:


https://youtu.be/ueawV2ISOM0

svofski
02.08.2018, 21:06
Результат потрясающий! Особенно приятно, что помогли многочисленные тесты, которые в свое время писали для отладки эмуляторов.

Как получилось с клоком, Вектор клочится от FPGA?

Syntal
02.08.2018, 22:38
Результат потрясающий! Особенно приятно, что помогли многочисленные тесты, которые в свое время писали для отладки эмуляторов.
Мелкие шероховатости все же есть, на видео не заметно. Тесты ivagorа попили кровушки конечно. Для себя я так и не понял, почему в тесте с записью регистра скролла - scrltst2 - конечней строкой записи получается последняя строка бордюра, а не 24 строка после прерывания? Я SignalTapом смотрел сигнал ~WVA, который поступает на разрешающий пин счетчиков, - у него 2 окна и к последней строке бордюра он уже отработал и не дергается. Вобщем подогнал картинку под результат.


Как получилось с клоком, Вектор клочится от FPGA?
Да, тупо отпаял по одной ножке кварца и резюка, что в Векторовском генераторе стоят и подал 12 МГц с DE1. Ты будешь троллить, но пришлось опять использовать сигнал F50Гц с Вектора для отстройки на начало кадра. Строб состояния на шине приходит всегда с разной задержкой к КСИ. Оставил пока так, может потом придет мысля как в ПЛИС его получить.

svofski
02.08.2018, 23:16
Что ты, троллить не буду!

А как по разному СТРОБЪ приходит, вообще всегда, или все-таки в зависимости от кода. Кажется, что если программа ждет прерывания в HLT, то должно быть всегда одинаково. А если нет, то как повезет.

ivagor
03.08.2018, 06:52
12 МГц с DE1
Чем хорош клок с DE1, что с ним можно еще и побаловаться, меняя в небольших пределах. При обычном проце скорее в сторону уменьшения. При наличии экзотики (ВМ80 в керамике, 8080A-1, ВМ1) можно даже попробовать немного разогнать.
Но это, как обычно у меня, странные маргинальные идеи, а если по существу - картинка выглядит здорово!

ivagor
03.08.2018, 10:06
Строб состояния на шине приходит всегда с разной задержкой к КСИ
Можно пофантазировать на тему уточнения положения КСИ при использовании слова состояния в сочетании с:
1) Счетчиком регенерации;
2) Детектором команд. Можно параллельно с процом вектора детектировать команды и определять, сколько в них байт и сколько тактов они выполняются. И с приходом прерывания корректировать.
Но проводок кинуть намного проще.

svofski
03.08.2018, 12:26
У Вектора должно быть фиксированное количество тактов на кадр. Значит, раз уж мы один раз выбрали какую-то позицию для КСИ, то дальше просто считаем клоки и все должно стоять, как вкопанное. Или F50Гц только для начальной установки используется?

Syntal
03.08.2018, 16:41
А как по разному СТРОБЪ приходит, вообще всегда, или все-таки в зависимости от кода. Кажется, что если программа ждет прерывания в HLT, то должно быть всегда одинаково. А если нет, то как повезет.

Ну вот например, запущенный Бейсик, 4 последовательных отрезка прихода КСИ - здесь это сигнал f50. Он четко отсчитывает 312 строк 384 точки. С шины ВУ я ловлю сигнал СТРОБ и если 0-бит шины данных равен 1 генерирую interrupt. Все 4 импульса оказываются с различной задержкой от фронта f50. Сверху длительности разбега.

https://s8.hostingkartinok.com/uploads/images/2018/08/e954136d9cdfa071d0ed5a2c47b1691f.bmp (https://hostingkartinok.com/show-image.php?id=e954136d9cdfa071d0ed5a2c47b1691f)

https://s8.hostingkartinok.com/uploads/thumbs/2018/08/e954136d9cdfa071d0ed5a2c47b1691f.png (https://hostingkartinok.com/show-image.php?id=e954136d9cdfa071d0ed5a2c47b1691f)

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


У Вектора должно быть фиксированное количество тактов на кадр. Значит, раз уж мы один раз выбрали какую-то позицию для КСИ, то дальше просто считаем клоки и все должно стоять, как вкопанное. Или F50Гц только для начальной установки используется?
Если использовать F50Гц, то все стоит четко, сейчас так и сделано. Если же не использовать этот сигнал и пытаться отстроиться по сигналам ВУ, то засада.

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


Можно пофантазировать на тему уточнения положения КСИ при использовании слова состояния в сочетании с:
1) Счетчиком регенерации;
2) Детектором команд. Можно параллельно с процом вектора детектировать команды и определять, сколько в них байт и сколько тактов они выполняются. И с приходом прерывания корректировать.
Но проводок кинуть намного проще.

А вот подробнее про счетчик регенерации можно? Что имеется ввиду?

ivagor
03.08.2018, 16:56
А вот подробнее про счетчик регенерации можно?
В 4х тактном цикле 2 слота для общения вектора с внешней памятью - для проца и для регенерации (или наоборот, забыл). Счетчик регенерации на ШАП с RAS без CAS. По данным из Вектор-USER его период 8 строк, 32 значения в строке (в активной области изображения, как я понимаю). На временных диаграммах svofski счетчик регенерации четко видно.

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


Все 4 импульса оказываются с различной задержкой от фронта f50.
svofski это упомянул

если программа ждет прерывания в HLT, то должно быть всегда одинаково. А если нет, то как повезет.
ну и я фантазировал по этой причине.

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


32 значения в строке (в активной области изображения, как я понимаю)
Возможно остальные 16 значений (там, где бордюр и синхра) являются повторениями половины из 32х, это надо уточнять. Если да, то это неприятный (усложняющий) момент.

svofski
03.08.2018, 18:24
Если использовать F50Гц, то все стоит четко, сейчас так и сделано. Если же не использовать этот сигнал и пытаться отстроиться по сигналам ВУ, то засада.
Правда ли, что при отсуствии F50Гц мы можем приделать такую воображаемую ручку сдвига момента начала кадра, которой можно будет отстроиться один раз при включении и потом забыть?

В моих диаграммах счетчик видно, но я никогда не вдавался в подробности происходящего. Уверен, что можно изловчиться и отловить его, но само по себе явление RAS без CAS на ВУ недостаточный признак, поскольку CAS без БЛК на ВУ не проходит вообще. Syntal уже отлавливает прохождение всей картинки, значит эта наука уже развита.

И вот тут вопрос с подковыркой: если получается поймать вообще все данные, которые проходят через видеоадаптер, почему нельзя просто по адресу выборки этих данных сделать вывод о том, что наступил момент КСИ? Пробежали все адреса экрана, отсчитали +32 строки с клювиком и сделали КСИ. Почему это не получается?

Меня интересует все это с точки зрения возможности добавить в Шадков функцию снятия скриншота. Это точно не сегодня и не завтра, но и в текущем виде Шадки еще полгода назад были гипнагогией. Для одного скриншота требования не такие жесткие, как для вывода на монитор. В принципе для скриншота в первом приближении вообще не нужен момент КСИ, нужны только адреса и данные (ну и история записи в регистры для прокрутки и палитры).

ivagor
03.08.2018, 19:03
само по себе явление RAS без CAS на ВУ недостаточный признак
Дополнительно можно учесть то, что эти значения появляются строго раз в 4 векторовских такта и изменяются регулярно и предсказуемо. Правда, повторюсь, не знаю, что там на бордюре.

Имхо самый простой вариант - настроиться один раз при старте загрузчика. Там прерывание после HLT и проблем быть не должно. А потом просто отсчитываем по 59904 такта.

ivagor
04.08.2018, 08:50
RAS без CAS на ВУ недостаточный признак
Посмотрел временную диаграмму и можно предложить вариант попроще, чем я вчера выдумывал:
1. Фиксируем значение ШАП по переднему фронту RAS. Проверяем, что нет ЧТВВ или ЗПВВ.
2. На момент заднего фронта RAS проверяем, есть ли ЧТЗУ или ЗПЗУ. Если нет - значит мы фиксировали с ШАП счетчик регенерации.

Syntal
04.08.2018, 09:46
Правда ли, что при отсуствии F50Гц мы можем приделать такую воображаемую ручку сдвига момента начала кадра, которой можно будет отстроиться один раз при включении и потом забыть?
У меня сделано сейчас так: по приходу F50Гц образно обнуляются счетчики горизонтальных и вертикальных позиций экрана для VGA. Так как 12 МГц поступают на Вектор с DE1, получается полный синхрон, по приходу следующего F50Гц в счетчиках уже будет по нулям. Можно не ловить F50Гц, счетчики будут сами по себе отсчитывать позиции, но тогда при выводе на бордюре получается произвольное положение обратного хода луча и видно как он палитру прописывает, скролл крутит и т.п. Кнопки приделать и крутить туда-сюда с точностью до пикселя не проблема, но какой в этом смысл и все равно на глазок получится.


И вот тут вопрос с подковыркой: если получается поймать вообще все данные, которые проходят через видеоадаптер, почему нельзя просто по адресу выборки этих данных сделать вывод о том, что наступил момент КСИ? Пробежали все адреса экрана, отсчитали +32 строки с клювиком и сделали КСИ. Почему это не получается?
Я наверное не объяснил как у меня сделано и отсюда недопонимание. Я отлавливаю на шине все операции записи в старшую половину ОЗУ Вектора, скидываю в SRAM DE1, дополнительно также записываю операции записи в порты 02, 03, 0C-0F и на основе этих данных генерирую картинку в VGA-формате. Если честно не знаю есть ли на ВУ данные видеоадаптера - не думал об этом.

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


Дополнительно можно учесть то, что эти значения появляются строго раз в 4 векторовских такта и изменяются регулярно и предсказуемо. Правда, повторюсь, не знаю, что там на бордюре.

Присмотрелся к счетчику регенерации, очень перспективно выглядит! Значения EF и E0 всегда при смене кадра постоянны, к тому же все RASы приходят кратно, а последний на 1 пиксель раньше - какой-то краевой эффект, но очень полезным получается. Самое замечательно, что циклограмма выполняется еще до сброса проца при включении питания. Нужно попробовать реализовать такой способ и посмотреть какие будут результаты.

https://s8.hostingkartinok.com/uploads/images/2018/08/34c1bbba09eb68d7c817c71428adeb32.gif (https://hostingkartinok.com/show-image.php?id=34c1bbba09eb68d7c817c71428adeb32)

svofski
04.08.2018, 11:50
Кнопки приделать и крутить туда-сюда с точностью до пикселя не проблема, но какой в этом смысл и все равно на глазок получится.
Это был мысленный эксперимент, чтобы понять как устроена синхронизация. Теперь понятно.



Я наверное не объяснил как у меня сделано и отсюда недопонимание. Я отлавливаю на шине все операции записи в старшую половину ОЗУ Вектора, скидываю в SRAM DE1, дополнительно также записываю операции записи в порты 02, 03, 0C-0F и на основе этих данных генерирую картинку в VGA-формате. Если честно не знаю есть ли на ВУ данные видеоадаптера - не думал об этом.
А я почему-то думал, что прямо по данным видеоадаптера на ВУ. Я тоже не знаю наверняка, есть ли они там, но по-моему нет ничего отрезающего данным путь во время видеодоступа.



к тому же все RASы приходят кратно, а последний на 1 пиксель раньше
Это же специально для синхронизации VGA-адаптеров =)

ivagor
04.08.2018, 12:29
по данным видеоадаптера на ВУ.
Учитывая объем видеоданных каждый кадр для их "показа" на ВУ нужно было бы или вывести 32х битную шину данных или отдельную шину видеоданных меньшей разрядности, но большей скорости. Например 8ми битную шину видеоданных и менять там данные каждый такт. Через имеющиеся на ВУ шины затруднительно протолкнуть видеоданные вектора в real time.

svofski
04.08.2018, 12:46
Выходы мультиплексоров D11-D14, которые формируют сигнал на ШАП, идут напрямую к ОЗУ. Выходы ОЗУ, все 32, заведены на мультиплексоры D41-D44, выходы которых идут на ШД через буфер D28, а выборка осуществляется проводами 22,23 (ШАВВ5 и ШАВВ6), то есть частью адреса. Эти же выходы идут параллельно на сдвиговые регистры D48-D45, откуда из них уже получается видеосигнал.

К сожалению ivagor как всегда прав.

ivagor
04.08.2018, 13:28
ivagor всегда прав, кроме тех случаев когда он не прав, тут не поспоришь.
В связи с темой прокачки видеоданных через ВУ вспомнил про "Приключения колобка" (Вектор-user 13 и 14). Серьезно эту рекламу я не воспринимал ни тогда ни сейчас, но об осуществимости написанного в 14 номере задумывался. Цитата: "512x256 точек, 64 (шестьдесят четыре) цвета одновременно. Минимальные аппаратные переделки RAMдиска".
Тут возможны как минимум 2 варианта:
1) 64 цвета в режиме 512 считаются аналогично тому, как у вектора получаются 8 цветов в этом режиме (четные/нечетные точки). Т.е. нужно дополнительно "всего" 16 Кб на экран. Их можно прокачать через выведенную на ВУ шину данных, если эксклюзивно отдать видеоконтроллеру доступ к КД в активной области (процу останется доступ на бордюрах).
2) Честные 64 цвета в режиме 512. Дополнительно к векторовским 32 Кб нужно дополнительно 64 Кб. Прокачать их через ВУ без переделок не представляется возможным. Вероятно "минимальные аппаратные переделки" включали подпайку проводков многобитной шины данных от КД.

И это еще не считая требуемых доработок самого вектора.

svofski
04.08.2018, 13:40
Адаптер Syntal уже является по сути новым видеоадаптером для Вектора. Сейчас он максимально совместим с оригиналом, но никто ведь не мешает поддержать в нем то, чего изначально не было. Например: запись с маской слоев, запись с маской бит, копирование сразу 4 слоев через теневой буфер. Ну в общем EGA.

KTSerg
04.08.2018, 16:23
Адаптер Syntal уже является по сути новым видеоадаптером для Вектора. ... Ну в общем EGA.
Тогда уж проще на ISA-шину повесить настоящую видеокарту :)

Improver
15.08.2018, 10:51
В двух словах:
RA = {a9,a10,a11,a12,a13,a1,a2,~a14}
CA = {a3,a4,a5,a6,a7,a8,a16,~a15}
Интересно, такая раскладка битов будет одинакова для разных версий Вектора? Т.е. для первых выпусков и для "02"...

svofski
15.08.2018, 11:32
Improver, я надеюсь, что да. Если не ошибаюсь, это связано с организацией видеопамяти: видеоадаптер считает подряд строка за строкой, а из памяти надо выбирать столбиками. В моей излюбленной схеме формирование адресов зашифровано в D11-D14 на второй странице.

Improver
21.11.2018, 12:59
В описании к омскому КД есть упоминание о том, что сигнал СТЕК приходит после сигнала RAS, причём это даже названо ошибкой разработчиков Вектора, но на диаграммах в этой теме я, к сожалению, не нашёл графика с сигналом СТЕК... :(
KTSerg, svofski, и все у кого есть такая возможность, прошу, снимите, плз., дополнительно логи этого сигнала по отношению к сигналам RAS, CAS, ЗПЗУ и БЛК во время записи на КД в режиме "стек", можно прямо с "ВУ". В особенности интересует, как ведут себя эти сигналы при записи первого и второго байта при команде "PUSH ...". Для общего понимания...

svofski
21.11.2018, 23:19
Я сопереживаю, но у меня сейчас к сожалению стенд разобран и диаграмму в ближайшие дни снять не смогу, а все старые лежат в теме про Шадков. По-моему с сигналом СТЕК все было нормально, разнос у меня наблюдался с сигналом ЧТЗУ, вот как здесь (https://zx-pk.ru/threads/29311-leshadok-pompe-plata-rasshireniya-dlya-vektora-06ts.html?p=970932&viewfull=1#post970932).

Improver
22.11.2018, 09:03
Я сопереживаю, но у меня сейчас к сожалению стенд разобран и диаграмму в ближайшие дни снять не смогу, а все старые лежат в теме про Шадков.Это совсем не срочно, можно сделать и потом. Пока хватит графиков из Шадков. :)


По-моему с сигналом СТЕК все было нормально, разнос у меня наблюдался с сигналом ЧТЗУ, вот как здесь (https://zx-pk.ru/threads/29311-leshadok-pompe-plata-rasshireniya-dlya-vektora-06ts.html?p=970932&viewfull=1#post970932).Хорошо, если так. На этом графике, кстати, VU_STACK начинается и правда после RAS, но это не так плохо, хуже то, что он заканчивается до завершения CAS...

KTSerg
22.11.2018, 15:10
В описании к омскому КД есть упоминание о том, что сигнал СТЕК приходит после сигнала RAS, причём это даже названо ошибкой разработчиков Вектора, ... прошу, снимите, плз., дополнительно логи этого сигнала по отношению к сигналам RAS, CAS, ЗПЗУ и БЛК во время записи на КД в режиме "стек", можно прямо с "ВУ". В особенности интересует, как ведут себя эти сигналы при записи первого и второго байта при команде "PUSH ...". Для общего понимания...
По большому счёту нужна программка, выполняющая в цикле команды, которые сформируют нужные сигналы.
Зная, код программки, легче потом интерпретировать результат...

Improver
22.11.2018, 16:23
По большому счёту нужна программка, выполняющая в цикле команды, которые сформируют нужные сигналы.
Зная, код программки, легче потом интерпретировать результат...Это запросто, вот, например:

.ORG 00100h
L_MAIN: MVI A, 1Ch ; 00011100b -- вкл. 3 банк как стек на КД
DI ; запрещаем прерывания
OUT 010h ; отправляем в порт
LXI D, 0FF0h ; чем заполнять
LXI H, 1000h ; сколько/2
LXI SP,0E000h ; указатель на стек
L_LOOP: PUSH D ; заполняем через стек...
DCX H
MOV A, L
ORA H
JNZ L_LOOP ; зациклено
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
EI ; разрешаем прерывания
JMP L_MAIN ; начинаем всё с начала
.END

Этот тест в цикле отправляет 2000h байт в стек по адресам с DFFFh до C000h.
Откомпилированный вариант: 66995

KTSerg
22.11.2018, 19:36
Это запросто, вот, например:
...
Этот тест в цикле отправляет 2000h байт в стек по адресам с DFFFh до C000h.
Откомпилированный вариант: ...
Вектор 02-ой.
Циклы идентичны, растягивал на скриншотах одну пару СТЕК.
Частота сканирования 24МГц, интервал 41.7нс.
Скринов сделал несколько из разных частей сканов, видно что фронты сигналов то совпадают, то нет, разница в 41.7нс.

Improver
23.11.2018, 14:34
KTSerg, большое спасибо, это именно то, что нужно. Ещё одна просьба того же плана: захватить логи теперь при чтении из стека КД, по линиям RAS, CAS, СТЕК, БЛК и, желательно, ещё увидеть момент изменения адреса на ШАП (достаточно, думаю, будет подключить ШАП0)...
Вот программка для теста:

.ORG 00100h
L_MAIN: MVI A, 1Ch ; 00011100b -- вкл. 3 банк как стек на КД
DI ; запрещаем прерывания
OUT 010h ; отправляем в порт
LXI H, 1000h ; сколько/2
LXI SP,0C000h ; указатель на стек
L_LOOP: POP D ; читаем стек...
DCX H
MOV A, L
ORA H
JNZ L_LOOP ; зациклено
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
EI ; разрешаем прерывания
JMP L_MAIN ; начинаем всё с начала
.END
Откомпилированный вариант: 67000

KTSerg
23.11.2018, 19:07
... захватить логи теперь при чтении из стека КД, по линиям RAS, CAS, СТЕК, БЛК и, желательно, ещё увидеть момент изменения адреса на ШАП (достаточно, думаю, будет подключить ШАП0)...
...
По каналам сканера: СТЕК, RAS, CAS, ЧТЗУ, БЛК, ШАП0, ШД0.

Период сканирования 42нс - слишком редко, для таких вещей...

KTSerg
27.11.2018, 08:02
Давно думал, сделать для таких (требующих точности) целей, аппаратный сканер...
Даже делал на нескольких макетных платах. Но несколько макеток синхронизировать сложно...
Лучшая, со многих точек зрения, основа для сканера, это дисплеи. Быстродействие хорошее, встроенный автоинкремент адреса. :)
А для значительного повышения "частоты сканирования", подключить параллельно несколько дисплеев, и стробы подавать на них со сдвигом по фазе.
Получится, что каждый из дисплеев работает на частоте, скажем 20МГц, а 5 штук дадут уже 100МГц. :)
Останется только выгрузить из них инфу... Вот тут проблеммс, самые "крутые" дисплеи (из тех, что я видел), не имеют такой возможности (чтение из дисплея)... :(
А до ПЛИСа у меня так руги (или мозги) и не дошли...

svofski
27.11.2018, 13:31
Правильно, из ЭЛТ получается осциллограф, а из цифрового дисплея -- логический анализатор. А информацию с него, раз так не дает, выкачивать установленной напротив камерой =)

btw, есть уже готовые опенсорсные анализаторы на ПЛИС, вот один из них:
https://blackmesalabs.wordpress.com/2016/10/24/sump2-96-msps-logic-analyzer-for-22/
Так что совсем не обязательно все делать самому с нуля. Очевидно, что для Вектора, да и для 100% всех остальных ретрокомпьютеров, понадобится блок сопряжения с 5 вольтами.

ivagor
27.11.2018, 13:59
А есть ли сравнительно дешевые и быстрые анализаторы? 96MSPS это, конечно, уже хорошо, но может есть побыстрее и не сильно дороже? Или как вариант, есть ли анализаторы с возможностью внешней синхронизации (например для вектора от его 12 МГц)?

Improver
27.11.2018, 15:00
(например для вектора от его 12 МГц)Там же 3 МГц, вроде... Или для анализатора нужно четырёхкратное превышение частоты для точности захвата?

svofski
27.11.2018, 15:42
Там же 3 МГц, вроде
3МГц это условная частота тактов процессора. Основной задающий генератор работает на 12 МГц и все сигналы на шине соответственно тактируются ими.

Что до использования этих 12 МГц самим анализатором, по-моему это не лучшая идея. Желательно как раз четырехкратно превысить 12 МГц, тогда будет хорошо видно что и относительно чего и насколько запаздывает.


А есть ли сравнительно дешевые и быстрые анализаторы?
Осциллографы Rigol каких-то серий, при наличии какой-то примочки, вроде бы умеют умеют 16 каналов. Но не факт, что очень хорошо. Может быть кто-нибудь из счастливых обладателей расскажет.

dk_spb
27.11.2018, 16:30
Есть, уже на форуме много раз обсуждали. На Ali продают (или продавали?) LWLA1034

svofski
28.11.2018, 14:39
LWLA1034 похоже уже ушли. Похоже, что анализатор du jour это Hantek 4032L. На форуме eevblog обсуждали:
https://www.eevblog.com/forum/testgear/hantek-ht4032l-logic-analyser/
Там, конечно, суровые, обставленные с 4 сторон измерительной аппаратурой с пола до потолка дяди ворчат на то, что дескать конденсаторы на питании не той марки, но по совокупности факторов по-моему его не заплевали и даже нашли какие-то положительные стороны.

ivagor
28.11.2018, 15:20
Характеристики у Hantek 4032L крутые, скорость выборки раза в 3 выше, чем у LWLA1034, но и цена примерно во столько же раз больше.

svofski
28.11.2018, 16:08
Не только скорость выборки, но и глубина буфера.

ivagor
28.11.2018, 16:23
Да уж, памяти на порядки больше

ivagor
03.07.2019, 16:58
Пока искал куда логером подцепиться для отлова RAS, обнаружил, что в схеме 02-го нет "источника" этого сигнала...
Все входы RAS ОЗУшек соединены, а откуда этот RAS берётся, в схеме нету, пришлось по дорожкам искать...
Выход 12 микросхемы D56, на схеме должен ещё соединяться с шиной с обозначением "71" (это и есть RAS).
Посмотрел схему .02. Вижу, что /RAS, который идет на ВУ, формируется на D87.3\08. MX1, формируемый на D56.5\10, отстает от этого /RAS на 30-40 нс, что примерно достаточно для защелкивания адреса строк в РУ6 и РУ5. Не вижу смысла, зачем было бы делать разные /RAS для ВУ и для внутреннего ОЗУ. Но если все же /RAS для РУ6 берется с D56.6\12, то разница между таким /RAS и MX1 всего 15-20 нс (что по справочникам мало для Г), но MX1 еще переключает КП2, т.ч. надо приплюсовать время его переключения к 15-20 нс и суммарно получается достаточное запаздывание.
Где в схеме формируется таинственный сигнал 71 я не нашел, но если в реале нет соединения D56.6\12 c /RAS РУ6, то проще всего предположить, что при рисовании схемы ошиблись в одной цифре - на листе 1 - 51 (c D87), на листе 2 - 71 (на РУ6).

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

Ну и наличие таких (30-40 нс) разносов сигналов подтверждает необходимость логического анализатора с частотой оцифровки хотя бы 48 МГц, а лучше больше.

KTSerg
03.07.2019, 18:16
Посмотрел схему .02. Вижу, что /RAS, который идет на ВУ, формируется на D87.3\08. MX1, формируемый на D56.5\10, отстает от этого /RAS на 30-40 нс, ...
30-40 нс измерены логером или посчитаны исходя из параметров микросхем? Учитывалось, что в 02-ых каких только серий не применяли: 155, 555, 1531, 1533.. ещё что-то уже не помню, и всё это на одной плате одновременно...

ivagor
03.07.2019, 18:28
Посчитал, исходя из того, что D87 - 1531ЛА3, D56 - 155ЛН3. Для данных конкретных двух микросхем именно такое сочетание вполне оправдано, D87 д.б. быстрая, а D56 - потормознее.

ivagor
04.07.2019, 07:26
Где в схеме формируется таинственный сигнал 71 я не нашел, но если в реале нет соединения D56.6\12 c /RAS РУ6, то проще всего предположить, что при рисовании схемы ошиблись в одной цифре - на листе 1 - 51 (c D87), на листе 2 - 71 (на РУ6).
Нашел "половину сигнала" 71 на листе 1 - подтяжка к высокому уровню, между D64 и разъемом ВУ. Места его формирования так и не вижу, все же очень похоже, что 51 с D87 и есть 71. Вот для MX1 и формирование и подтяжка к высокому уровню изображены рядом.
Ну и для полноты картины CASы (больше для себя, чтобы не забыть). /CAS на ВУ - D92.3\08. /CASы на РУ6 - D59\11,03,06,08.

ivagor
04.07.2019, 19:04
Все же схемы .02 вызывают вопросы не только с /RAS. Например вот пара случаев:
Тут 90
69449
А тут? Вроде 98?
69450
Источник сигнала 90 найти легко, а вот 98 (вроде же это 98?) не смог найти.
На втором листе пара раз встречается сигнал 170. Сигналов 101-169 не видел.

Serg6845
04.07.2019, 20:33
Все же схемы .02 вызывают вопросы не только с /RAS. Например вот пара случаев:
Тут 90
69449
А тут? Вроде 98?
69450
Источник сигнала 90 найти легко, а вот 98 (вроде же это 98?) не смог найти.

КМК во втором случае тоже 90. восьмерка в номинале резистора совсем по другому выглядит.

svofski
04.07.2019, 20:43
Ну осталось найти еще третью подтяжку куда-нибудь к -5В и будет настоящий лебедь, рак и щука.

ivagor
04.07.2019, 20:58
КМК во втором случае тоже 90
Согласен, и там и там больше всего похоже на 90.

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

Похоже там вот в таком стиле лучше было нарисовать (это другой фрагмент схемы, но идея вроде та же)
69451
конденсатор после D65.1\06 тоже есть. Может им места не хватило.

ivagor
16.07.2019, 08:08
На днях узнал из этикетки 565РУ6, как правильно интерпретировать их маркировку точками. И у меня создалось впечатление (по фоткам плат), что в большинстве 06Ц установлены РУ6В, а не РУ6Г. А значит оставаясь практически в рамках характеристик ОЗУ можно было переделать 06Ц на ускоренное однотактное обращение видеоконтроллера, при этом процу останутся три такта из четырех (предполагаю, что харьковский вариант турбирования делал именно это). Прозрачного доступа не получится, т.к. нет регистров промежуточной выборки для видеоконтроллера.
Но есть две проблемы:
1. Вызывает сомнение работоспособность классических квазов с таким "турбированным" вектором.
2. Изменение таймингов команд создаст проблемы при общении с магнитофоном. Но это скорее всего можно поправить программно отключаемым тормозом, включенным по умолчанию.

svofski
16.07.2019, 13:28
Вспоминая Шадков: для вовремя полученного ответа нужно, чтобы и вопрос был задан вовремя. Может быть более медленные ОЗУ не справлялись с поздно или несинхронно приходящими запросами.

ivagor
16.07.2019, 16:51
Судя по старту-1200, где использовали самые медленные советские динамические озу с организацией 16kx1, у вектора большой запас по быстродействию озушек (да и по временным диаграммам, снятым реальщиками).
С шадком на мой малокомпетентный взгляд часть проблемы была связана с несинхронностью его работы с вектором (но разработчики не вывели 12 МГц на разъем, тут к ним претензия). А с реальным квазом из опыта проблема возникала с увеличением длины шлейфа, при подключении встык проблем не было.
"Турбированный" вектор с однотактным циклом обращения к памяти скорее всего усугубил бы проблему и тщательно настроенные классические квазы могли бы отказаться работать.