User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 27

Тема: LEN2PENT: как доработать тайминги ?

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    796
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    260
    Спасибо Благодарностей получено 
    274
    Поблагодарили
    145 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию LEN2PENT: как доработать тайминги ?

    "Сказка про велосипед" или "изобретение белого бычка". Это вроде бы уже много раз было, я пытался найти решение среди готовых, но те, что находил - не совсем полноценны.
    А интерес в том, чтоб из Ленинграда-1 сделать машину для демок, совместимую по таймингам с пентагоном. Цель, скорее, академическая - ибо демо-пентагонов в том или ином виде у нас у всех навалом. Но хочется разобраться и получить не "что-то близкое", а точно повторяющее.

    Итак, ленинград-1 128к, кварц 14,0 Мгц, включение счетчика D4 - выв.1,9,15 - GND, выв.10 - +5v; счетчик D5 - выв.9 - GND.
    Память 41256, /WAIT отключен.
    В таком виде имеем 320 строк и 71680 тактов/INT - уже почти пентагон.
    Нажмите на изображение для увеличения. 

Название:	1.jpg 
Просмотров:	354 
Размер:	54.7 Кб 
ID:	74872

    Пытался переключать INT (вход на C2) на сигнал /КС (кадровый синхроимпульс), получается начало INT примерно по концу КС, как у фирменной машины, но это не то, что нам надо. Полистал темы на предмет доработок INT, например, эту, нашел там вариант формирователя INT на триггере ТМ2 по подобию Скорпиона, где INT начинается по началу кадрового синхроимпульса, а заканчивается по активному уровню /H6.
    Нажмите на изображение для увеличения. 

Название:	int_scorpion.jpg 
Просмотров:	337 
Размер:	13.6 Кб 
ID:	74875

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

Название:	int_CPLD.jpg 
Просмотров:	290 
Размер:	18.7 Кб 
ID:	74876
    Сигнал INT с инверсного выхода триггера еще раз инвертируем на DD1.6 (подключаем к выв.13 DD1) - это чтобы не резать дорожки. Можно, конечно, с прямого выхода сразу процессору сигнал отдать.
    Инвертор на тактовом входе триггера нужен для переключения именно по фронту начала КС (назовем это "началом", чтобы не путаться между передним и задним фронтом у инверсного сигнала). В результате имеем очередное очень близкое "почти":

    Нажмите на изображение для увеличения. 

Название:	2.jpg 
Просмотров:	331 
Размер:	50.9 Кб 
ID:	74873Нажмите на изображение для увеличения. 

Название:	3.jpg 
Просмотров:	338 
Размер:	46.9 Кб 
ID:	74874

    Но глядя в демки обнаруживается, что начало INT запаздывает на ~17 знакомест (или на 136 пиксельных интервалов или на 68 тактов).
    Нажмите на изображение для увеличения. 

Название:	across.jpg 
Просмотров:	289 
Размер:	29.5 Кб 
ID:	74877Нажмите на изображение для увеличения. 

Название:	rage.jpg 
Просмотров:	311 
Размер:	31.4 Кб 
ID:	74878

    В связи с чем вопрос: что его задерживает, ведь нет же никаких RC-цепочек ? Или у ленинграда КС чем-то сдвинут ? Ткните носом, где я ошибаюсь, pls.

    И второй вопрос: если действительно задерживается и это какая-то особенность ленинграда, может можно формировать INT в следующем кадре ? Т.е. ловить начало КС, отсчитывать нужное число тактов (хоть пиксельклока, хоть другого, менее частого сигнала) и формировать начало и конце INT в совершенно точный момент времени ? (как это сделано у всех CPLD-клонов, но там свои счетчики).
    У ПЛИСки после схемы расширения памяти и нескольких корректировок дешифрации осталось 5 свободных ног и 20 макроячеек - вроде должно хватить на достаточно большой по разрядности счетчик и схемы контроля.
    Такой велосипед уже кто-то изобретал ? К чему лучше привязаться и как посчитать моменты начала/конца INT ?

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

  3. #2

    Регистрация
    28.06.2020
    Адрес
    г. Краснодар
    Сообщений
    74
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    39
    Поблагодарили
    35 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я делал INT самым простым способом (и не очень правильным) из документа LENTOPEN2. В общем-то всё получилось но это аналоговая схема требует точного подбора номиналов и зависит от питающего напряжения. Подсказать что-то по вашей схеме не могу но может будет полезна информация из документа "Доработка INT Pentagon" (сохранял откуда-то с форума).
    И доработку BORDER-а брал из схемы Leningrad-2012.
    Вложения Вложения

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

    valerium(08.03.2021)

  4. #3

    Регистрация
    31.03.2008
    Адрес
    Москва
    Сообщений
    735
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    37 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    ZXM-Phoenix rev.01 2048K, VG93 hw emulator

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

    valerium(08.03.2021)

  5. #4

    Регистрация
    30.12.2018
    Адрес
    г. Москва
    Сообщений
    1,375
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    384
    Поблагодарили
    346 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от valerium Посмотреть сообщение
    Но глядя в демки обнаруживается, что начало INT запаздывает на ~17 знакомест (или на 136 пиксельных интервалов или на 68 тактов).
    Нажмите на изображение для увеличения. 

Название:	across.jpg 
Просмотров:	289 
Размер:	29.5 Кб 
ID:	74877Нажмите на изображение для увеличения. 

Название:	rage.jpg 
Просмотров:	311 
Размер:	31.4 Кб 
ID:	74878

    В связи с чем вопрос: что его задерживает, ведь нет же никаких RC-цепочек ? Или у ленинграда КС чем-то сдвинут ? Ткните носом, где я ошибаюсь, pls.
    да, сдвинут.
    http://sksb3.no-ip.org:8085/lenin_ks.png
    сверху - /SS, в середине - /BS, внизу - /KS

    кадровый синхроимпульс формируется из сигнала /BS, поэтому начинается не в начале ТВ строки, а в начале графической строки, после бордера.
    можно попробовать перекинуть 5 ногу D5 с 5 ноги D8 на инвертированный /KS (свободные инверторы вроде есть)

    глючу. инвертированный /SS разумеется...

    И второй вопрос: если действительно задерживается и это какая-то особенность ленинграда, может можно формировать INT в следующем кадре ? Т.е. ловить начало КС, отсчитывать нужное число тактов (хоть пиксельклока, хоть другого, менее частого сигнала) и формировать начало и конце INT в совершенно точный момент времени ? (как это сделано у всех CPLD-клонов, но там свои счетчики).
    У ПЛИСки после схемы расширения памяти и нескольких корректировок дешифрации осталось 5 свободных ног и 20 макроячеек - вроде должно хватить на достаточно большой по разрядности счетчик и схемы контроля.
    Такой велосипед уже кто-то изобретал ? К чему лучше привязаться и как посчитать моменты начала/конца INT ?
    изобретал и на аналоговых схемах (2шт. 155АГ1) - не понравилось, плавает от температуры.
    на плиске можно наверно - если ресурсов хатит...
    Последний раз редактировалось Serg6845; 08.03.2021 в 11:48.

    Зверинецъ

    Специалист (был когда-то "совсем стандарт") - 1988-2023
    Ленинград1 +256К +AY+BDI+VGA выход +Ethernet (Speccyboot) +Xmodem (115200)+divmmc
    Ленинград2 + CF карта
    Платформа 8085+Z80+CPLD (Специалист МХ2 +SD +FDD +PS/2kbd)
    БК0010-01 стоковый
    [свернуть]

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

    valerium(08.03.2021)

  6. #5

    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    796
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    260
    Спасибо Благодарностей получено 
    274
    Поблагодарили
    145 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от П321 Посмотреть сообщение
    Я делал INT самым простым способом (и не очень правильным) из документа LENTOPEN2.
    В len2pen2.pdf есть некая "схема VAV" с реистором, где номинал указан как "н10" - это что означает ?
    Я правильно понимаю, тут главная фишка в переключении 5D5 (вход +1) с прямого /БС на инверсный, чтоб D5 переключался раньше и КС формировался раньше. А потом его RC-цепочками надо задержать. Собственно это примерно то, что я хотел, плюс еще Serg6845 показал это осциллограммами

    Цитата Сообщение от Serg6845 Посмотреть сообщение
    да, сдвинут.
    кадровый синхроимпульс формируется из сигнала /BS, поэтому начинается не в начале ТВ строки, а в начале графической строки, после бордера.
    можно попробовать перекинуть 5 ногу D5 с 5 ноги D8 на инвертированный /KS (свободные инверторы вроде есть)

    глючу. инвертированный /SS разумеется...
    Serg6845, или все-так на инвертированный /БС, как предложено выше ?

    У меня еще такие мысли по поводу цифрового варианта: если то, что видим "на глаз" (задержка КС на 68 тактов H0) действительно так, то можно 17-разрядным счетчиком, тактированным по H0, на 71680-68=71612 (или 71611 ? считаем с нуля) такте включать /INT - тут мы должны попасть в начало телевизионной строк, а на 71679 выключать (и выполнять сброс счетчика). Либо то же самое по H2 и вчетверо короче (счетчик уже 15-разрядный). "Жирно" по железу, но если засунуть в простаивающую часть ПЛИСки, то вроде и не страшно ).
    Если разбег в несколько тактов останется, его можно дошлифовать условиями формирования INT.
    Жизнеспособно, как думаете ?

    И как можно по схеме точнее посчитать время сдвижки /КС ? В тактах сигналов H*, желательно. Я как ни силился, только запутал сам себя (
    Последний раз редактировалось valerium; 08.03.2021 в 15:11.

  7. #6

    Регистрация
    30.12.2018
    Адрес
    г. Москва
    Сообщений
    1,375
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    384
    Поблагодарили
    346 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от valerium Посмотреть сообщение
    В len2pen2.pdf есть некая "схема VAV" с реистором, где номинал указан как "н10" - это что означает ?
    100пф

    Цитата Сообщение от valerium Посмотреть сообщение

    Serg6845, или все-так на инвертированный /БС, как предложено выше ?
    вот сижу играюсь. можно и так, но тогда int слишком рано приходит. надо задерживать.

    Цитата Сообщение от valerium Посмотреть сообщение
    У меня еще такие мысли по поводу цифрового варианта: если то, что видим "на глаз" (задержка КС на 68 тактов H0) действительно так, то можно 17-разрядным счетчиком, тактированным по H0, на 71680-68=71612 (или 71611 ? считаем с нуля) такте включать /INT - тут мы должны попасть в начало телевизионной строк, а на 71679 выключать (и выполнять сброс счетчика). Либо то же самое по H2 и вчетверо короче (счетчик уже 15-разрядный). "Жирно" по железу, но если засунуть в простаивающую часть ПЛИСки, то вроде и не страшно ).
    Если разбег в несколько тактов останется, его можно дошлифовать условиями формирования INT.
    Жизнеспособно, как думаете ?

    И как можно по схеме точнее посчитать время сдвижки /КС ? В тактах сигналов H*, желательно. Я как ни силился, только запутал сам себя (
    у меня пока ближе всего к идеалу (по демке Rage) получилось вот так (5 нога D5 - на инверсном /BS):

    http://sksb3.no-ip.org:8085/lenin_int.png

    вся схема запускается по /КС, значение счетчика, выставленное на элементе and4 - активирует int, значение на and6 - деактивирует. можно добавить разрядов счетчика и взять вместо h1 например h0, вобщем есть с чем поиграть...

    по поводу задержки - считать лень, можно просто вбить кусок схемы в тот же квартус и смоделировать...

    Зверинецъ

    Специалист (был когда-то "совсем стандарт") - 1988-2023
    Ленинград1 +256К +AY+BDI+VGA выход +Ethernet (Speccyboot) +Xmodem (115200)+divmmc
    Ленинград2 + CF карта
    Платформа 8085+Z80+CPLD (Специалист МХ2 +SD +FDD +PS/2kbd)
    БК0010-01 стоковый
    [свернуть]

  8. #7

    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    796
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    260
    Спасибо Благодарностей получено 
    274
    Поблагодарили
    145 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Serg6845 Посмотреть сообщение
    100пф
    ...было бы, если б это был конденсатор, а не резистор ))

  9. #8

    Регистрация
    30.12.2018
    Адрес
    г. Москва
    Сообщений
    1,375
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    384
    Поблагодарили
    346 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от valerium Посмотреть сообщение
    ...было бы, если б это был конденсатор, а не резистор ))
    в том месте резистор как-то смысла не имеет... кондюк мелкий от звона - еще может быть.

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

    Цитата Сообщение от valerium Посмотреть сообщение
    ...было бы, если б это был конденсатор, а не резистор ))
    в том месте резистор как-то смысла не имеет... кондюк мелкий от звона - еще может быть.


    хотя разве что 100 Ом - тогда к10, ошибка распознавания. но в таком случае верхний резистор не нужен.

    Зверинецъ

    Специалист (был когда-то "совсем стандарт") - 1988-2023
    Ленинград1 +256К +AY+BDI+VGA выход +Ethernet (Speccyboot) +Xmodem (115200)+divmmc
    Ленинград2 + CF карта
    Платформа 8085+Z80+CPLD (Специалист МХ2 +SD +FDD +PS/2kbd)
    БК0010-01 стоковый
    [свернуть]

  10. #9

    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    796
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    260
    Спасибо Благодарностей получено 
    274
    Поблагодарили
    145 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Serg6845 Посмотреть сообщение
    у меня пока ближе всего к идеалу (по демке Rage) получилось вот так (5 нога D5 - на инверсном /BS):

    http://sksb3.no-ip.org:8085/lenin_int.png

    вся схема запускается по /КС, значение счетчика, выставленное на элементе and4 - активирует int, значение на and6 - деактивирует. можно добавить разрядов счетчика и взять вместо h1 например h0, вобщем есть с чем поиграть...
    Этот вариант попытался понять, но он требует столько ног на сигналы с выходов от всех счетчиков, что их в моей ситуации просто неоткуда взять.
    Прикинул модуль счетчика со сбросом, счетчик пока 17-разрядный, тактируется от H0 (3,5МГц). Сбрасывается по активному /КС, точнее счет начинается только с момента, когда /КС становится неактивным (=1).
    Здесь 71612 - это кол-во тактов от нашего задержанного кадрового синхроимпульса до момента генерации INT следующего кадра,
    из него вычитается 3584 такта самого кадрового импульса, т.к. счетчик во время его активности не будет увеличиваться;
    а выключение активного INT (здесь он прямой) выполняется через 36 тактов (или правильная длительность 32 ?).

    CLK - тактовая 3,5МГц
    nKS - это /KS
    INT - это соот-но INT

    Код:
    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.numeric_std.all;
    
    entity INT_GEN is
       port
       (
           CLK                    : in  std_logic;
           nKS                    : in  std_logic;
           INT                    : out  std_logic
       );
    end INT_GEN;
    
    architecture RTL of INT_GEN is
       signal COUNTER : integer range 0 to 71680;
    begin
       
      process (CLK, nKS)
      begin
         if (rising_edge(CLK)) then  
      
            if (COUNTER < 71680) then  
                 COUNTER <= COUNTER + 1;
            end if;
    
            if (COUNTER = 71612-3584) then  
                INT <= '1';
            end if;
    
            if (COUNTER = 71612-3584+36) then  
                INT <= '0';
            end if;
    
            if (nKS = '0') then
               COUNTER <= 0;
            end if;
    
         end if;
       end process;               
    
    end architecture;
    Компилируется в 18 макроячеек,добавил модуль в проект и создал "блок" на BDF для его подключения - остатка ПЛИСки вполне хватает.
    Но паять и проверять сегодня некогда, это отложим на следующий раз.

  11. #10

    Регистрация
    30.12.2018
    Адрес
    г. Москва
    Сообщений
    1,375
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    384
    Поблагодарили
    346 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от valerium Посмотреть сообщение
    Этот вариант попытался понять, но он требует столько ног на сигналы с выходов от всех счетчиков, что их в моей ситуации просто неоткуда взять.
    откуда? этот вариант требует ровно два сигнала - /KS (он у меня называется vs) и h1. все остальные - формируются непосредственно в схеме. ну и на всякий случай - zero=gnd, one=vcc.

    Цитата Сообщение от valerium Посмотреть сообщение
    Прикинул модуль счетчика со сбросом, счетчик пока 17-разрядный, тактируется от H0 (3,5МГц). Сбрасывается по активному /КС, точнее счет начинается только с момента, когда /КС становится неактивным (=1).
    Здесь 71612 - это кол-во тактов от нашего задержанного кадрового синхроимпульса до момента генерации INT следующего кадра,
    из него вычитается 3584 такта самого кадрового импульса, т.к. счетчик во время его активности не будет увеличиваться;
    а выключение активного INT (здесь он прямой) выполняется через 36 тактов (или правильная длительность 32 ?).

    CLK - тактовая 3,5МГц
    nKS - это /KS
    INT - это соот-но INT


    Компилируется в 18 макроячеек,добавил модуль в проект и создал "блок" на BDF для его подключения - остатка ПЛИСки вполне хватает.
    Но паять и проверять сегодня некогда, это отложим на следующий раз.
    работать будет, а потом захочется еще что-нибудь впихнуть - а места нету... вот как у меня - запихал speccyboot, BDI, 256k, divmmc - а kempston mouse уже не лезет... порядка 10 ячеек не хватает.

    Зверинецъ

    Специалист (был когда-то "совсем стандарт") - 1988-2023
    Ленинград1 +256К +AY+BDI+VGA выход +Ethernet (Speccyboot) +Xmodem (115200)+divmmc
    Ленинград2 + CF карта
    Платформа 8085+Z80+CPLD (Специалист МХ2 +SD +FDD +PS/2kbd)
    БК0010-01 стоковый
    [свернуть]

Страница 1 из 3 123 ПоследняяПоследняя

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

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

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

Похожие темы

  1. А что если доработать SMUC?
    от AmoNik в разделе Scorpion
    Ответов: 21
    Последнее: 16.06.2015, 20:24
  2. Тайминги Leningrad-1
    от ZXMAK в разделе Ленинград
    Ответов: 17
    Последнее: 14.06.2013, 03:09
  3. Тайминги DENDY
    от evgs в разделе Nintendo
    Ответов: 7
    Последнее: 01.11.2011, 22:59
  4. Как доработать "Пентагон-128"?
    от AlexBel в разделе Pentagon
    Ответов: 36
    Последнее: 18.09.2011, 15:11

Ваши права

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