Важная информация

User Tag List

Страница 85 из 174 ПерваяПервая ... 818283848586878889 ... ПоследняяПоследняя
Показано с 841 по 850 из 1740

Тема: Реверс-инжиниринг УКНЦ (1515ХМ1&2, 1801ВП1, 1801ВМ2)

  1. #841

    Регистрация
    09.04.2009
    Адрес
    Зеленоград
    Сообщений
    449
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    429
    Поблагодарили
    196 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    @Titus, выложи, пожалуйста, схемы ХМ2-001, ХМ2-003 в формате пикада, а то в PDF поиск по названиям сигналов не работает.
    Последний раз редактировалось Ynicky; 09.08.2020 в 09:28.

  2. #841
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #842

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,394
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,219
    Поблагодарили
    873 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Ynicky Посмотреть сообщение
    @Titus, выложи, пожалуйста, схемы ХМ2-001, ХМ2-003 в формате пикада, а то в PDF поиск по названиям сигналов не работает.
    Только в 003 я начал некоторый рефакторинг работы с памятью, и еще не закончил. Ничего принципиально не поменялось, поменялась оптимизация и полярности сигналов. И в блоке прерываний тоже)
    Вложения Вложения

    Эти 2 пользователя(ей) поблагодарили Titus за это полезное сообщение:

    Alex_K(09.08.2020), Ynicky(09.08.2020)

  4. #843

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,394
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,219
    Поблагодарили
    873 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию Описание циклов памяти видеоконтроллера

    Описание циклов памяти видеоконтроллера.

    Один цикл памяти видеоконтроллера равен 4 тактам PCLK (PCLK - PixelClock). Один такт - это 80нс, или 12.5МГц, или одна точка в высоком разрешении экрана.
    Все четные циклы отданы видеоконтроллеру, а нечетные - контроллерам памяти ПП и ЦП, или арбитру ПП и ЦП в составе видеоконтроллера, если это необходимо.
    В итоге на 800 горизонтальных точек высокого разрешения (640 видимых точек и 160 точек интервала HBlank) приходится 100 циклов памяти видеоконтроллера. А на один кадр развертки - 100 * 312 = 31200 циклов памяти видеоконтроллера. Учитывая, что за один цикл читается три поля памяти (два плана из ОЗУ ЦП, и один план из ОЗУ ПП), за один кадр видеоконтроллером читается 93600 байт информации.
    В дальнейшем, циклом памяти будем называть цикл памяти видеоконтроллера.


    Интервал HBlank:

    Во время интервала HBlank (точки 640..799, циклы памяти 80..99) для каждой строки происходит два процесса:

    1. Регенерация памяти.
    2. Считывание новых данных из списка строк ПП.

    Причем, считывание новых данных из списка строк ПП происходит в течение всех 312 строк развертки, а не только видимых 288 строк.


    Регенерация памяти:

    Регенерация памяти происходит прозрачным способом в цикле HBlank (циклы 80..99, всего 20 циклов).

    Старший байт адреса - всегда CTR_MEM_ADR_H (регистр адреса строки экрана).
    Младший байт адреса изменяется от 0 до 127, и составляется из:

    0./VCTR_D3./VCTR_D2./VCTR_D1./VCTR_D0./HCTR_D5./HCTR_D4./HCTR_D3

    Таким образом, за каждые 16 линий развертки (0.58мс) будет регенерирована вся память. Исключение составляют линии экрана 304..311 (8 линий развертки), во время которых будет регенерирована лишь половина памяти, после чего начнется следующий кадр, и регенерация возобновится сначала. Таким образом, период регенерации, попавший на последние 8 линий экрана будет длиться не 0.58мс, а 0.29 + 0.58 = 0.87мс. Исходя из вышеперечисленных параметров, подойдет любая память с матрицей 128x512 (т.к. регенерируется только 128 строк памяти), и периодом регенерации >= 0.9мс.

    Для ОЗУ ПП циклы 88..95 (8 циклов) - это всегда циклы чтения списка строк экрана.

    Таким образом, для ОЗУ ПП:
    Циклы 80..87 - это регенерация 8 строк памяти.
    Циклы 88..95 - это 8 циклов чтения списка строк.
    Циклы 96..99 - это 4 побочных цикла повторной регенерации 4 строк памяти.

    Для ОЗУ ЦП:
    Циклы 80..87 - это регенерация 8 строк памяти.
    Циклы 88..95 - повторная побочная регенерация 8 строк памяти.
    Циклы 96..99 - 4 побочных цикла повторной регенерации 4 строк памяти.


    Чтение списка строк (циклы 88..95):

    Чтение списка строк происходит только из ОЗУ ПП. ОЗУ ЦП в это время повторно регенерируется, как было описано выше.
    Адрес элемента списка составляется из битов 15..3 регистра ENTRY_ADR и HCTR_D5.HCTR_D4.HCTR_D3 для четырехсловного элемента списка, и из битов 15..2 регистра ENTRY_ADR и HCTR_D4.HCTR_D3 для двухсловного элемента списка.

    Если бит 1 (ENTRY_SIZE) регистра ENTRY_ADR (регистр адреса следующего элемента списка) равен нулю, то циклы 88..91 читают данные в никуда (используется при двухсловном элементе списка).

    Если бит 1 (ENTRY_SIZE) равен единице, то в циклах 88..91 читаются два слова четырехсловного элемента списка (используется при четырехсловном элементе списка):

    Если бит 2 (ENTRY_DATA_Q2) = 0:
    Цикл 88: Чтение регистра CUR_CON_L (младшая часть первого слова регистра управления отображением).
    Цикл 89: Чтение регистра CUR_CON_H (старшая часть первого слова регистра управления отображением).
    Цикл 90: Чтение регистра DISP_CON_L (младшая часть второго слова регистра управления отображением).
    Цикл 91: Чтение в никуда.

    Если бит 2 (ENTRY_DATA_Q2) = 1:
    Цикл 88: Чтение регистра COL_CON_1_L (младшая часть первого слова регистра управления цветом).
    Цикл 89: Чтение регистра COL_CON_1_H (старшая часть первого слова регистра управления цветом).
    Цикл 90: Чтение регистра COL_CON_2_L (младшая часть второго слова регистра управления цветом).
    Цикл 91: Чтение регистра COL_CON_2_H (старшая часть второго слова регистра управления цветом).


    Цикл 92: Чтение регистра МЕМ_ADR_L (младшая часть регистра адреса начала строки).
    Цикл 93: Чтение регистра МЕМ_ADR_H (старшая часть регистра адреса начала строки).
    Цикл 94: Чтение регистра ENTRY_ADR_L (младшая часть регистра адреса следующего элемента списка).
    Цикл 95: Чтение регистра ENTRY_ADR_H (старшая часть регистра адреса следующего элемента списка).

    Регистр ENTRY_ADR_L буферизирован. В цикле 94 данные сперва загружаются в регистр ENTRY_ADR_CACHE, а уже в цикле 95 переписываются в ENTRY_ADR_L синхронно с обновлением ENTRY_ADR_H.


    Отображение одной строки экрана (точки 0..640, циклы памяти 0..79):

    Каждый цикл происходит чтение памяти по адресу CTR_MEM_ADR. Это не зависит ни от разрешения экрана, ни от того, активен ли в данный момент интервал VBlank.
    Счетчик CTR_MEM_ADR (адрес строки) загружается из списка строк в конце каждой строки (циклы 92 и 93), и инкрементируется при переходе от одного знакоместа к другому. В зависимости от разрешения экрана - это каждая 8, 16, 32 или 64 точка, что соответствует каждому 1, 2, 4 или 8 циклу памяти. Во время интервалов VBlank и HBlank инкремента не происходит.


    Интервал VBlank (строки 288..311):

    Интервал VBlank практически не влияет на работу видеоконтроллера, за исключением того, что во время строк 291..293 вырабатытвается синхросигнал V_SYNC, а во время строки 292, и позиции 0..511 (цикл памяти 0..63) выставляется сигнал EVNT (сетевой таймер 50Гц).

    Также во время интервалов HBlank и VBlank блокируется инкремент счетчика CTR_MEM_ADR (адрес строки), а видеовыход маскируется, выдавая нули на PL0, PL1, PL2 и Y, и единицы на /P0, /P1, /P2.


    Начальное состояние регистров:

    В начале каждого кадра по сигналу EVNT (первые 64 цикла 292-й строки) инициализируется содержимое регистров:
    1. ENTRY_ADR (регистр адреса следующего элемента списка) = 0x00B8 (курсор выключен, двухсловный элемент списка).
    2. ENTRY_ADR_CACHE (буферный регистр для ENTRY_ADR_L) = 0x00 (ненужное действие).
    3. CUR_FLIP_TRIGGER - курсор выключен.
    4. Регистры палитры COL_CON_1_L, COL_CON_1_H, COL_CON_2_L и COL_CON_2_H инициализируются значениями 0x10, 0x32, 0x54, 0x76 соответственно (все цвета от черного к белому, пониженной яркости).
    5. CUR_CON (первое слово регистра управления отображением) = 0x0008 (курсор в 0-й позиции, символьный, цвет черный повышенной яркости).
    6. Биты 4 и 5 регистра DISP_CON (второe словo регистра управления отображение) сбрасываются (высокое разрешение), биты 0..2 (эмфазис компонент R, G, B) - без изменения.

    Замечание: Если после включения компьютера ни разу не использовать 4-хсловный элемент списка с инициализацией регистра управления отображения, то эмфазис (выделение) цветовых компонент будет установлен как попало.


    p.s.: При более рациональном построении видеоконтроллера, гораздо больше циклов памяти могло бы быть отдано ПП и ЦП. Нагрузка на память оправдана только для разрешения 640. В более низких разрешениях память простаивает (циклы чтения идут в никуда). Также циклы памяти HBlank могли бы быть отданы ПП и ЦП.
    Последний раз редактировалось Titus; 09.08.2020 в 15:17.

    Эти 6 пользователя(ей) поблагодарили Titus за это полезное сообщение:

    Alex_K(09.08.2020), BlaireCas(30.10.2020), nzeemin(09.08.2020), tnt23(13.08.2020), Ynicky(09.08.2020), yu.zxpk(09.08.2020)

  5. #844

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,472
    Поблагодарили
    524 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Titus, не понял отсюда такой момент - влияет ли масштабирование в строке на количество обращений к памяти? Т.е. если все строки будут x2, то значит ли что обращений будет почти вдвое меньше, или столько же?
    А, увидел постскриптум, тогда понятно - обращений столько же, экономии нету :-(

  6. #845

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,394
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,219
    Поблагодарили
    873 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    А, увидел постскриптум, тогда понятно - обращений столько же, экономии нету :-(
    Вообще никакой экономии нет ни от чего) Память насилуется и в хвост, и в гриву, и зачастую половина этого насилия вхолостую.

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

    Цитата Сообщение от Titus Посмотреть сообщение
    Каждый цикл происходит чтение памяти по адресу CTR_MEM_ADR. Это не зависит ни от разрешения экрана, ни от того, активен ли в данный момент интервал VBlank.
    Вот здесь то, о чем ты спрашивал.
    Иными словами, если разрешение 640, то мы для каждого байта экрана делаем одно чтение из памяти. Самый рациональный режим. Если разрешение 320, то мы каждый байт читаем два раза. Если 160, то 4 раза, если 80, то 8 раз.

    Этот пользователь поблагодарил Titus за это полезное сообщение:

    nzeemin(10.08.2020)

  7. #846

    Регистрация
    09.04.2009
    Адрес
    Зеленоград
    Сообщений
    449
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    429
    Поблагодарили
    196 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вопросы к @Titus - у. В ХМ2-001 на элемент Y_MEMORY_A должен приходить инверсный сигнал /INIT или положительный, для обнуления (или установки с учетом выходной инверсии) выхода?
    А также сигнал KEY_MISMATCH будет в 1 когда Y_MEMORY_B и Y_MEMORY_C равны?

  8. #847

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,394
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,219
    Поблагодарили
    873 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Ynicky Посмотреть сообщение
    А также сигнал KEY_MISMATCH будет в 1 когда Y_MEMORY_B и Y_MEMORY_C равны?
    Да.
    Возможно, я еще что-то переоптимизирую, поменяю где-то полярности и в этой схеме.

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

    Цитата Сообщение от Ynicky Посмотреть сообщение
    на элемент Y_MEMORY_A должен приходить инверсный сигнал /INIT или положительный, для обнуления (или установки с учетом выходной инверсии) выхода?
    Да, я думаю, что полярность его перепутана. Надо исправить на INIT.

  9. #848

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,394
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,219
    Поблагодарили
    873 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию Особенности работы видеоконтроллера по краям кадра

    Особенности работы видеоконтроллера ХМ1-136 по краям кадра на примере режима высокого разрешения 640 точек.




    Правый край кадра:

    Такт 8 (такт 640 HCTR) - Защелкивание в регистрах REG_PLANE0,1,2 последнего байта экрана. Сигнал HBLANK становится активным, но пока что ни на что не действует.
    Такт 8-15 - Последовательный вывод точек 0..7 в REG_PAL_ADR.
    Такт 15 - По переднему фронту сигнала PSG (при активном HBLANK) устанавливается INIT_BIT_CTR.
    Такт 17 - По заднему фронту CLC1 снимается сигнал ENABLE_PLANES.
    Такт 18 - Видеопорт выключается.


    Левый край кадра:

    Такт 8 (такт 0 HCTR) - Снятие сигнала HBLANK.
    Такт 15 - Снятие сигнала INIT_BIT_CTR.
    Такт 16 - Защелкивание в регистрах REG_PLANE0,1,2 первого байта экрана.
    Такт 17 - Установка сигнала ENABLE_PLANES.
    Такт 18 - Видеопорт включается.


    Реальный вывод изображения задерживается на время 10 пикселей высокого разрешения. Из которых задержка 8 пикселей - это регистры REG_PLANE0,1,2, из которых последовательно выдается регистру палитры 8 пикселей. Задержку на 1 пиксель дает регистр палитры REG_PAL_ADR. И, наконец, задержку на 1 пиксель дает выходной регистр видевыхода REG_VIDEO.

    Эти 4 пользователя(ей) поблагодарили Titus за это полезное сообщение:

    Alex_K(12.08.2020), nzeemin(12.08.2020), Ynicky(13.08.2020), yu.zxpk(12.08.2020)

  10. #849

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,394
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,219
    Поблагодарили
    873 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Некоторые дополнения к ХМ2-003.

    1. У элемента H40 следует инвертировать выход (внимание для @Ynicky, который делает модель по донепричесанным реверсам).
    2. Недокументированный и невыведенный выход UNK активен всякий раз, когда идет обращение к регистру, отсутствующему в ХМ2-003. Это может быть, как просто несуществующий регистр, так и любой регистр в составе другого устройства на шине. Устаналивается по DIN/DOUТ, и сбрасывается при снятии SYNC.
    3. Недокументированный выход FD (делитель CLK на 1.5, и выдающий 4.16МГц) я думаю, следует расшифровать, как Frequency Divider.
    4. Из-за того, что в режиме ST сигнал RPLY выдается сразу же, возможно не исключен конфликт при доступе к какому-либо регистру или ячейке памяти, на который настроена ловушка адреса. Это надо проверять конкретнее.
    5. На мой взгляд, ловушку адреса в чип запихнули только потому, что он полу-пустой. Чтобы хоть чем-то его заполнить, сделали ловушку.

    Эти 2 пользователя(ей) поблагодарили Titus за это полезное сообщение:

    Alex_K(13.08.2020), Ynicky(13.08.2020)

  11. #850

    Регистрация
    09.04.2009
    Адрес
    Зеленоград
    Сообщений
    449
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    429
    Поблагодарили
    196 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    У элемента H40 следует инвертировать выход
    Он уже с инверсией. Т.е. нужно убрать инверсию?
    И еще, наверное, A40.A41 должен быть XOR, а не OR.

Страница 85 из 174 ПерваяПервая ... 818283848586878889 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 32
    Последнее: 18.12.2024, 18:19
  2. Реверс-инжиниринг игры Boovie
    от Oleg N. Cher в разделе Программирование
    Ответов: 41
    Последнее: 09.01.2022, 23:07
  3. Реверс инжиниринг печатной платы
    от Filin в разделе Несортированное железо
    Ответов: 36
    Последнее: 11.03.2018, 22:46
  4. Куплю 1515ХМ1-6006, 1515ХМ1−6008
    от moxjemi в разделе Барахолка (архив)
    Ответов: 3
    Последнее: 10.01.2012, 17:23
  5. 1801ВМ2 А и Б
    от dk_spb в разделе ДВК, УКНЦ
    Ответов: 2
    Последнее: 03.05.2010, 11:51

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •