User Tag List

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

Тема: Расширения fpga-клонов

  1. #1

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    930
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    73 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Расширения fpga-клонов

    Уже давно появились фпга клоны, однако почему-то никто ещё не хочет их улучшать в плане графики. Однако, эти улучшения напрашиваются сами. Например ограничение в 512 цветов. Это ограничение из-за того, что для значений цветовых компонентов не учитывается младший бит. Но ведь, ВДП имеет кучу неиспользованных регистров с номерами: 6,8,9,14,с 24 по 31. В одном из свободных регистров можно было бы предусмотреть разряд, который бы и отвечал за режим включения учета младших бит в цветовых компонентах. Тогда при записи в этот разряд регистра, мы бы получали четырёхбитные компоненты цвета, и 4096 цветов.
    Потом, ограничение в 4 общие палитры и на тайлы и на спрайты. Хотя, можно разделить палитры на два банка - банк палитр для тайлов и банк палитр для спрайтов. Каждый банк по 4 палитры. Это удвоит количество цветов видимых одновременно на экране с 61 до 121. Но для этого нужно расширить CRAM до 128 цветов. Цвета с номерами 0-63 входят в банк палитр тайлов, а 64 по 127 в банк палитр спрайтов. Разумеется, нужно предусмотреть включение разделения палитр бо банкам через свободный регистр ВДП.
    Наконец, можно сделать для спрайтов выбор банка палитр через свободный бит в байтах атрибутов спрайта. Это позволит использовать для спрайтов 2 банка палитр( банк палитр фона и банк палитр спрайтов),все 8 палитр. Место для этого бита можно выделить в третьем байте атрибута спрайта, который отвечает за размер спрайта. Конкретно, это любой бит с 4 по 7. Например, седьмой.
    Ну, вот это всё можно приложить к 14-му свободному регистру. Рассмотрим возможное назначение его разрядов:
    D7 - задание ширины цветовых компонентов:
    0- компонента в три бита;
    1- компонента в 4 бита;
    D6 - D5 -задание режима разделения палитр по банкам:
    00- разделения по банкам нет, общие 4 палитры для тайлов и спрайтов;
    01- разделения по банкам есть, раздельные банки из 4 палитр для тайлов и спрайтов. Но для 3 байта атрибута спрайтов седьмой бит при нулевом значении выбирает банк палитр тайлов, при единичном банк палитр спрайтов;
    10 - разделения по банкам есть, раздельные банки из 4 палитр для тайлов и спрайтов. Но для 3 байта атрибута спрайтов седьмой бит при нулевом значении выбирает банк палитр спрайтов, при единичном банк палитр тайлов;
    11-Строгое разделение палитр по банкам, раздельные банки из 4 палитр для тайлов и спрайтов. Для тайлов банк палитр тайлов, для спрайтов банк палитр спрайтов. Седьмой бит 3 байта атрибута спрайта не влияет на выбор банка палитр;
    D4 - D3 - не используются;
    D2 - D0 - обязательный повтор значений битов D7 - D5. Защитная функция от записи случайного мусора при ошибках.

    Кто-нибудь что-нибудь понял? Напишите свой отзыв.
    ¡Un momento, señor fiscal!


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

  3. #2

    Регистрация
    01.02.2010
    Адрес
    Москва
    Сообщений
    769
    Спасибо Благодарностей отдано 
    178
    Спасибо Благодарностей получено 
    191
    Поблагодарили
    91 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А в программах откуда появится поддержка этих железных расширений?
    Последний раз редактировалось xolod; 20.06.2025 в 11:43.

  4. #3

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    713
    Поблагодарили
    595 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от xolod Посмотреть сообщение
    А в программах откуда появится поддержка этих железных разширений?
    Оттуда же, откуда всегда - кто-то когда-то может быть напишет новые версии программ. Он вообще много чего успел написать, этот кто-то

  5. #4

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    930
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    73 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пацаны, не слушайте посторонних для тематики. Это топик для каких-то предложений, находок, обзоров.
    Вот,например, клон с расширенными возможностями(2 МБ ОЗУ):
    http://tv-games.ru/forum/showthread.php?t=7089
    SoftLight, ты вообще кто такой? Что ты для спектрума сделал? Да, даже если я в "устранении клешинга" и "тупо рассуждал и тролил и больше ничего", то это, в конечном итоге, привело к появлению ZX ULax, потому что людей заинтересовало. Так что лучше пацанам "повестись".

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

    Цитата Сообщение от xolod Посмотреть сообщение
    А в программах откуда появится поддержка этих железных расширений?
    Это топик для первоначальных предложений, обмозгований. Тут не "делайте как я написал!". Ну вот, появился новый расширенный клон( ссылка выше). Откуда там сразу новый софт? Ясно, что не сразу.
    ¡Un momento, señor fiscal!


  6. #5

    Регистрация
    31.03.2010
    Адрес
    Кемерово
    Сообщений
    254
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Smalovsky Посмотреть сообщение
    ...Вот,например, клон с расширенными возможностями(2 МБ ОЗУ):
    http://tv-games.ru/forum/showthread.php?t=7089...
    Ну это не совсем клон,это специальная девборда в которой все процессоры и заказные СБИСы (ASIC) устанавливаются в панельки. Основная память,память z80,а также видеопамять расширены:
    Нажмите на изображение для увеличения. 

Название:	IMG-1526.jpg 
Просмотров:	52 
Размер:	55.1 Кб 
ID:	82525
    Собственно всё описал HardWareMan в соседней теме: https://zx-pk.ru/threads/25978-nuzhn...=1#post1184746
    Ему бы твои вопросы задать...Вот только HardWareMan ушёл с форума
    А расширить память на Сеге можно,там в карте памяти окно большое свободно. Я,даже,как-то пытался это сделать микросхемами SRAM из кэша с материнской платы. Конечно не 2 мегабайта,а поменьше,но что-то пошло не так
    https://zx-pk.ru/threads/21624-b-sta...l=1#post617401
    Последний раз редактировалось murgatroid_79; 19.07.2025 в 17:17.

  7. #6

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    930
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    73 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    murgatroid_79, 16 кБ ОЗУ зилога хорошо. Больше места для для таблиц разных, дополнительных данных, увеличенный буфер для звуковых эффектов. 2 МБ основной памяти ОЗУ тоже хорошо. Особенно для больших карт в игре.
    Но, к этому делу обязательно нужно расширять цветовую память на 128 цветов и вводить раздельные банки палитр. Вот пример. Допустим, я пишу игру. Для графики у меня 4 общих палитры. Для фонов я задействовал 2 палитры ( 30 цветов + 1 цвет фона). На спрайты остаётся 2 палитры (30 цветов). Допустим, на экране будет главный персонаж и три персонажа противников с уникальными цветами. Это 30/4=7 цветов для отдельного персонажа. А если у них еще индивидуальное оружие в 2-3 цвета? Нужно будет сокращать до 4-5 цветов на персонаж или делать оружие цветами персонажей. Скудная цветовая расцветка получится. А ведь, нужно предусмотреть цвета для шрифтов и эффектов!
    Теперь, рассмотрим ситуацию когда у нас 2 банка палитр по 4 палитры в каждом. На фон можно выделить 3 палитры из первого банка( банк палитр фона). Это 45 цветов +1 цвет фона. Для шрифтов и эффектов можно выделить 1 палитру из первого банка( банк палитр фона). Это 15 цветов. Для спрайтов можно выделить 4 палитры из второго банка( банк палитр спрайтов). Это 60 цветов. Или 60/4=15 цветов для отдельного персонажа. Если есть оружие на 2-3 цвета, то на персонаж будет 12-13 цветов. Цветовая расцветка будет получше.

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

    Где бы взять исходники прошивки на верилоге или вшдиэле? Покопаться там для интереса. А мож чего и выйдет?.. Я так понимаю, открытые прошивки есть только для Мистера?
    ¡Un momento, señor fiscal!


  8. #7

    Регистрация
    31.03.2010
    Адрес
    Кемерово
    Сообщений
    254
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Smalovsky Посмотреть сообщение
    ...Где бы взять исходники прошивки на верилоге или вшдиэле? Покопаться там для интереса. А мож чего и выйдет?.. Я так понимаю, открытые прошивки есть только для Мистера?
    А на ГитХабе нету?
    Посмотри тут: https://github.com/emu-russia/SEGAChips/tree/main
    И тут :https://github.com/nukeykt/Nuked-MD-FPGA
    И у участников реверса спросить можно..Например and1981 здесь на форуме есть,а NukeYKT на Эмуленде.
    Да и на самом ГитХабе есть способ задать вопрос.

  9. #8

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    930
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    73 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    murgatroid_79, спасибо за ссылки. Если эти исходники приближены к реальным схемам, то в них будет трудно разобраться. Нужно б дженерики, где как "эмуляция" - нет точного повторения схемы, приставка как чёрный ящик, исходники сделаны на повторение функционала приставки без соответствия реальным схемам. Дженерики более алгоритмичны, в них нет привязки к конкретным микросхемам. В дженерики намного проще внести изменения.
    ¡Un momento, señor fiscal!


  10. #9

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    930
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    73 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    murgatroid_79, я скачаю что-нибудь. Но я не специалист в области исходников прошивок для генезис. Какие исходники наиболее простые, популярные у сообщества СНГ, общепризнанные и рекомендуемые?
    Ну, вообще, я выбрал https://github.com/MiSTer-devel/Genesis_MiSTer и https://github.com/Torlus/fpgagen
    Там меньше привязки к микросхемам. Конечно, там есть узлы процессора, вдп, памяти, но это как функциональные блоки.
    Последний раз редактировалось Smalovsky; 23.07.2025 в 16:41.
    ¡Un momento, señor fiscal!


  11. #10

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    930
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    73 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сообщение поделю на пункты:
    А) Пересмотр концепции
    Б) Прогресс и промежуточные результаты
    В) Диалог с заинтересованными людьми

    А) В общем окончательно я выбрал исходники https://github.com/Torlus/fpgagen. По сравнению с исходниками для Мистера в них только один язык VHDL, в то время как в исходниках для Мистера мешанина Verilog и VHDL. Кроме того, на этих исходниках базируются исходные коды для Мистера. Также эти исходники для четырёх плат:
    MiST, Turbo Chameleon 64, Altera/Terasic DE2 board.
    Когда я глянул на исходный код VDP, то сразу понял, что от выбора разрядности компонентов цвета нужно отказаться. Что бы реализовать такой выбор необходимо полностью переписать VDP, а это достаточно тяжело. Также я решил изменить расположение битовых полей в регистре 14. Теперь биты задающие режим разделения палитр по банкам не шестой и пятый, а пятый и четвёртый. Эти биты необходимо дублировать в первом и нулевом битах при записи в регистр.

    Б) Вот исходники VDP https://github.com/Torlus/fpgagen/bl...er/src/vdp.vhd для вашего анализа. Теперь я напишу что мне удалось изменить. Если есть ошибки или у вас есть лучшие решения - сразу исправляйте и предлагайте другие решения. Анализируйте исходный код оригинала и читайте мои изменения и пояснения:

    1. Расширение CRAM
    В разделе объявлений -- ON-CHIP RAMS есть тип и объявление для CRAM

    type cram_t is array(0 to 63) of std_logic_vector(15 downto 0);
    signal CRAM

    Меняем диапазон типа массива CRAM на 0..127

    type cram_t is array(0 to 127) of std_logic_vector(15 downto 0);

    Теперь цветовая память расширена для хранения 128 значений цветов.

    Нужно проверить есть ли в листинге ограничения на запись-чтение CRAM только для 64 цветов.
    Такие ограничения есть, поэтому их нужно устранить. Ограничения касаются размера адреса только для 64 ячеек CRAM.
    Необходимо расширить диапазон адресов до 128 ячеек. За адрес в участках памяти ВДП отвечает сигналы DT_WR_ADDR и ADDR.
    Они описаны в разделе объявлений -- DATA TRANSFER CONTROLLER

    signal DT_WR_ADDR : std_logic_vector(15 downto 0);
    signal ADDR : std_logic_vector(15 downto 0);

    Однако, нужно узнать в каких местах есть доступ к CRAM. В этом поможет сигнал DTC перечислимого типа dtc_t.
    Их описания в том же разделе

    type dtc_t is (
    ...
    DTC_CRAM_WR,
    ...
    DTC_CRAM_RD,
    ...
    );
    signal DTC : dtc_t;

    Ищем место в листинге где есть запись в CRAM по значению переменной DTC равному DTC_CRAM_WR.
    Такие места встречаются в разделе реализации -- DATA TRANSFER CONTROLLER. Нас интересует оператор case

    case DTC is

    А именно случай
    when DTC_CRAM_WR =>
    -- synthesis translate_off
    write(L, string'(" CRAM WR ["));
    hwrite(L, x"00" & DT_WR_ADDR(15 downto 1) & '0');
    write(L, string'("] = ["));
    hwrite(L, DT_WR_DATA);
    write(L, string'("]"));
    writeline(F,L);
    -- synthesis translate_on
    CRAM( CONV_INTEGER(DT_WR_ADDR(6 downto 1)) ) <= DT_WR_DATA;

    Последнюю строку нужно изменить, чтобы был доступ ко всем 128 цветам

    CRAM( CONV_INTEGER(DT_WR_ADDR(7 downto 1)) ) <= DT_WR_DATA;

    В томже операторе case ищем ветвь по значению пременной DTC равной DTC_CRAM_RD

    when DTC_CRAM_RD =>
    DT_RD_DATA <= CRAM( CONV_INTEGER(ADDR(6 downto 1)) );
    DT_RD_DTACK_N <= '0';
    ADDR <= ADDR + ADDR_STEP;
    DTC <= DTC_IDLE;

    Здесь нужно заменить вторую строку на

    DT_RD_DATA <= CRAM( CONV_INTEGER(ADDR(7 downto 1)) );

    Похоже, что теперь расширение CRAM до 128 цветов выполнено, если не было каких-либо упущений.

    2. Введение нового регистра.
    В разеле объявлений -- CPU INTERFACE есть тип и объявение для множества( массива) регистров

    type reg_t is array(0 to 31) of std_logic_vector(7 downto 0);
    signal REG : reg_t;

    Из этого видно, что предусмотрено 32 регистра. Регистр с индексом и номером 14 не используется, поэтому выберем
    его в качестве нового регистра "Режим выбора палитровых банков".
    Для временного хранения значения регистров используется сигнал REG_LATCH. Он описан в том же разделе как

    signal REG_LATCH : std_logic_vector(15 downto 0);

    Данные регистра хранятся в битах 7-0 защёлки REG_LATCH. В старших битах 15-8 хранится конкатенация битового значения "100" и номера регистра.

    В разделе объявлений -- REGISTERS описаны поименованные линии( сигналы) непосредственно представляющие данные битовых
    полей регистров. В этом разделе нам необходимо ввести новый сигнал PBS_MODE( palette bank selection mode)

    signal PBS_MODE : std_logic_vector(1 downto 0);

    В исходниках есть раздел реализации -- REGISTERS. В этом
    разделе реализации -- REGISTERS назначаем нашему сигналу PBS_MODE соответствующие битовые поля регистра 14


    PBS_MODE <= REG(14)(5 downto 4);

    Фактически регистр введён. Но из-за особой роли этого регистра, его необходимо защитить от записи в него случайных значений.
    Так для того, чтобы записать в регистр значения 5-го и 4-го битов нужно продублировать эти значения в 1-ый и 0-й бит.
    Для релизации защиты нужно посмотреть место в исходнике где происходит запись в регистр. В этом помогут сигналы
    REG_SET_REQ - запрос на установку с регистром( наверно такая расшифровка) и REG_SET_ACK - подтверждение выполнения запроса на установку регистра( могу ошибиться с расшифровкой).
    Эти сигналы описаны в разделе объявлений -- DATA TRANSFER CONTROLLER

    signal REG_SET_REQ : std_logic;
    signal REG_SET_ACK : std_logic;

    Ищем место в исходнике по названию сигнала REG_SET_REQ, где происходила бы запись в регистр или буфер REG_LATCH.
    Одно такое место находится в разделе реализации -- CPU INTERFACE в одном из вложенных условий


    if DI(15 downto 13) = "100" then
    -- Register Set
    REG_LATCH <= DI;

    Это место легко найти по комментарию -- Register Set. Проанализируем: данные с шины DI (сокращение Data Input) записываются в буфер-защёлку.
    Но тут нет передачи данных непосредсвенно в регистр. Следовательно, продолжаем искать дальше. В разделе реализации -- DATA TRANSFER CONTROLLER
    находим место в одном из подусловий

    if REG_SET_REQ = '1' and REG_SET_ACK = '0' and IN_DMA = '0' then
    REG( CONV_INTEGER( REG_LATCH(12 downto 8)) ) <= REG_LATCH(7 downto 0);
    REG_SET_ACK <= '1';
    end if;

    Вот тут данные с защёлки-буфера попадают в регистр. Защиту реализуем вставкой вложенного условия

    if REG_SET_REQ = '1' and REG_SET_ACK = '0' and IN_DMA = '0' then
    if ( (CONV_INTEGER(REG_LATCH(12 downto 8)) = 14) and (REG_LATH(5 downto 4) = REG_LATH(1 downto 0))) then
    REG(14) <= REG_LATCH(7 downto 0);
    elseif CONV_INTEGER(REG_LATCH(12 downto 8)) /= 14 then
    REG( CONV_INTEGER( REG_LATCH(12 downto 8)) ) <= REG_LATCH(7 downto 0);
    end if;
    REG_SET_ACK <= '1';
    end if;


    Защита записи регистра выполнена, хотя очень коряво. Отдаю всё на откуп оптимизатору.

    Остаётся понять работу тайло-спрайтового движка и внести в него изменения.

    В) Вы заметили, что я не дал, готовый файл, не вынес на блюдечке. Я хочу, что бы те кому интересна тема разбирались вместе со мной и оказывали мне помощь. Как я не раз убеждался на этом форуме: те кто выносили всё на готовенькое на блюдечке получали плевок в лицо. То ли многие люди тут неблагодарные, то ли это у них совковое воспитание, то ли они завистливые и тех кто инициативен считают выпендрёжниками - не знаю. Поэтому коллективная работа и взаимопомощь. Я пока недельку отдохну от VDP и посмотрю, что изменится за неделю. Может, кто-то
    расшифрует на русский названия сигналов, кто-то нарисует временные диаграммы, ну а кто-то даже графически зарисует схему процессов со спискам чувствительности.
    Вот ещё момент. Автор исходников рекомендует программы
    - Altera Quartus II 9.1 Web Edition.
    - (optional) ModelSim-Altera 6.5b Starter Edition.
    Это достаточно старые программы как и сами исходники 2010-2013 гг. Посоветуйте, где бы их скачать? Только, вот, не надо "Ищи сам" и прочее. Я ни разу не пользовался Квартусом, поэтому не специалист в этом вопросе и даже не представляю, где скачать такую старую версию. Да ещё могут быть подводные камни с установкой и настройкой.
    А может мне сменить форум, где смогу получить помощь? Посоветуйте такой.
    Последний раз редактировалось Smalovsky; 31.07.2025 в 16:46.
    ¡Un momento, señor fiscal!


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

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

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

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

Похожие темы

  1. Опрос: WiFi для ZX клонов не на FPGA
    от izzx в разделе Несортированное железо
    Ответов: 253
    Последнее: 26.10.2025, 10:35
  2. Pano Logic G2 - убийца клонов на FPGA.
    от occamlab в разделе Клоны на ПЛИС, МК и БМК
    Ответов: 27
    Последнее: 27.11.2020, 11:30
  3. Производство клонов ZX Spectrum
    от andykarpov в разделе Новости
    Ответов: 129
    Последнее: 26.04.2017, 18:56
  4. Логотипы клонов Спектрума
    от CodeMaster в разделе Разный софт
    Ответов: 10
    Последнее: 07.09.2010, 23:09
  5. О совместимости клонов с играми
    от ILoveSpeccy в разделе Несортированное железо
    Ответов: 1
    Последнее: 13.03.2008, 18:26

Ваши права

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