Сообщения без ответов | Активные темы Текущее время: 28 апр 2024, 08:35



Ответить на тему  [ Сообщений: 411 ]  На страницу Пред.  1 ... 10, 11, 12, 13, 14, 15, 16 ... 21  След.
 Очень низкоуровневый эмулятор 6502 / NES 
Автор Сообщение
Сообщение 26 июн 2013, 17:32
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Вот такую штуку сделал : http://breaknes.com/files/6502/tilemap/


Сообщение 27 июн 2013, 00:06
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
org писал(а):
Вот такую штуку сделал : http://breaknes.com/files/6502/tilemap/

Вещь! А теперь то же самое, но для ППУ!

_________________
Tried so hard and got so far, but in the end, it doesn't even matter...


Сообщение 27 июн 2013, 00:21
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Переходим на новый софт - sPlan, поскольку CircuitLab в конец обнаглел.

Для эксперимента перерисовал каскад HV счетчиков, попутно избавился от tri-state буферов в схеме.

Чую где-то здесь скрывается XOR, но пока не могу его выследить :)

Библиотеку вентилей придется перерисовать, ибо стандартная библиотека не комильфо.


Вложения:
HV_stage.JPG
HV_stage.JPG [ 99.45 КБ | Просмотров: 12876 ]
Сообщение 27 июн 2013, 06:35
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
Здесь два мультиплексора.

_________________
Tried so hard and got so far, but in the end, it doesn't even matter...


Сообщение 27 июн 2013, 10:27
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Ух спасибо за наводку, никогда раньше мультиплексоры не встречались, поэтому не признал их сразу ))
Это значительно упрощает схему.

Кстати 2 мультиплексора также есть в схеме 2005/2006 flip/flop (см. вложение).

Благодаря тому что sPlan работает довольно шустро, логическая схема PPU в полном объеме будет всегда находится по фиксированному адресу тут и постепенно расширяться :
http://breaknes.com/files/PPU/2C02_logic.spl7

Как жаль, что я не сразу узнал об этой замечательной программе )

-- 27 июн 2013, 10:41 --

Будет нечто вроде такого :

http://breaknes.com/files/PPU/logic/


Вложения:
PPU_register_select_logic.jpg
PPU_register_select_logic.jpg [ 210.88 КБ | Просмотров: 12854 ]
Сообщение 27 июн 2013, 11:54
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
И вот, че сука, характерно: если я в кактусе описываю узел схемным вводом:
Изображение
То кактус понимает буквально и компилит настоящую схему напрямую:
Изображение
Но стоит описать тот же узел на Verilog HDL, как настоящая схема сразу же обрастает мультиплексорами и компараторами:
Изображение
Учитывая, что Verilog HDL был создан зимой 83-84 годов, а сам HDL наверняка намного раньше, то показанная тобой схема кристалла наводит на определенные мысли.

_________________
Tried so hard and got so far, but in the end, it doesn't even matter...


Сообщение 27 июн 2013, 11:59
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Наводит на мысли что в 80-е годы модно было делать счетчики на мультиплексорах ?


Сообщение 27 июн 2013, 12:08
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
org писал(а):
Наводит на мысли что в 80-е годы модно было делать счетчики на мультиплексорах ?

Нет, что компилировали схему кристалла в какой-то САПР с какого-то из протоязыков HDL. Мультиплексор позволяет либо закоротить вход триггера (у нас защелка) на выход и тогда каждый такт защелка будет просто подтверждать свое состояние (т.е. хранить), либо подключить вход к внешнему источнику и тогда триггер запомнит новое состояние.

_________________
Tried so hard and got so far, but in the end, it doesn't even matter...


Сообщение 27 июн 2013, 12:15
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Да вряд-ли... Там видно что это ручная работа. Хотя регулярные участи повторяются часто, скорее всего это процесс copy-paste.
Тем более что часть этих регулярных участков немного видоизменена (где входной carry заведен на VCC, где выходной carry идёт в никуда итп)


Сообщение 27 июн 2013, 12:34
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
Ну тогда HDL был изобретен этими умельцами, ибо техника жуть как похожа.

_________________
Tried so hard and got so far, but in the end, it doesn't even matter...


Сообщение 28 июн 2013, 21:01
Профиль

Зарегистрирован:
28 июн 2013, 20:42
Сообщения: 17
HardWareMan писал(а):
И вот, че сука, характерно:
...
настоящая схема сразу же обрастает мультиплексорами и компараторами:

У Quartus'а несколько своеобразное (на мой неопытный взгляд) понимание конструкции "always @", наличие мультиплексоров зависит от описания триггера/счётчика.

Здравствуйте :)


Сообщение 01 июл 2013, 09:01
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Китайский друг отправил мне свои наработки по PPU.
Просит помочь советом и проверить вообще схемы )


Вложения:
PPU.rar [2.09 МБ]
Скачиваний: 352
Сообщение 01 июл 2013, 14:49
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
Крутан этот китаец, пущай весь проект кидает сюда! :3

_________________
Tried so hard and got so far, but in the end, it doesn't even matter...


Сообщение 01 июл 2013, 17:45
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Он не уверен что всё правильно и я тоже %) Это всё что есть. Логику выборки приоритета спрайтов он ещё не делал, потому что там черт ногу сломит. И DATA READER не хватает.


Сообщение 01 июл 2013, 22:51
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Берем мультиплексоры в оборот. Очень полезная штука оказывается.
При ближайшем рассмотрении регистр инструкций 6502 (IR) и счетчик циклов T2-T5 основаны на мультиплексорах.

-- 01 июл 2013, 22:26 --

Обновил декодер, указанием количества циклов на инструкцию:
http://breaknes.com/files/6502/decoder.htm


Вложения:
6502-instruction-register.png
6502-instruction-register.png [ 64.26 КБ | Просмотров: 12688 ]
6502-long-cycle-counter.png
6502-long-cycle-counter.png [ 39.07 КБ | Просмотров: 12688 ]
Сообщение 02 июл 2013, 11:19
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
http://breaknes.com/files/PPU/tilemap/


Сообщение 02 июл 2013, 22:26
Профиль

Зарегистрирован:
04 янв 2011, 22:07
Сообщения: 29
а что значит желтый треугольник со знаком восклицания?


Сообщение 03 июл 2013, 07:47
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Привлекает внимание )


Сообщение 24 июл 2013, 16:02
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Сделал логическую схему "горизонтальной" логики.

Исходники sPlan-а обновлены : http://breaknes.com/files/PPU/2C02_logic.spl7

На очереди V-логика, потом всё собрать вместе и проверить генерацию сигнала на рандомных цветах.

-- 24 июл 2013, 16:05 --

Сверился с китайским другом, всё совпадает.
Но нужно потом будет окончательно определиться с инверсностью в названиях. Это постоянная проблема во всех проектах (косая черта "/" перед названием) - не всегда сразу понятно в какой логике идёт контрольная линия.
Когда соберу все части схемы рендеринга - станет понятно и тогда переименую окончательно все линии. Главное что логические связи правильные.

HWM, кстати китаец (сорри уж не знаю как его зовут, в письме он выглядит вот так : 楼丞紫澈 - фиолетовый дом Ченга Че) сказал что его окончательная цель - это RGB PPU на FPGA.
И у него какие-то трудности с реализацией хитрожопой спрайтовой памяти, т.к. как она и не DRAM и не SRAM. По сути дела OAM - это DRAM, но без логики рефрешинга. Поэтому если периодически не посылать спрайты в PPU через DMA, то содержимое памяти улетучивается и наступает так называемый "PPU spirte corruption".

Параллельно перевожу все схемы 6502 в sPlan.


Вложения:
H_logic.jpg
H_logic.jpg [ 516.48 КБ | Просмотров: 12134 ]
Сообщение 29 июл 2013, 17:19
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Доделал схему H/V-логики, получился длинный крокодил. При этом из H-логики идёт длинный провод в V-логику и наоборот. Вышло не очень аккуратно, но с пивом сойдет.

Общие наблюдения (может уже было, но повториться не трудно) :
- Логика состоит из двух частей : горизонтальная и вертикальная, которая управляется каждая своим счетчиком (H/V)
- Задача H/V логики выдать наружу контрольные "отсечки", когда начинается та или иная порция видеосигнала. Основную работу тут выполняет горизонтальная (строчная) логика, а вертикальная по сути дела нужна только для определения начала и конца VBlank, для сброса счетчиков (сигналы HC/VC) и для выдачи наружу сигнала INT (VSync interrupt).
- Часть контрольных линий используется только внутри самой логики, наружу идут не все.
- Практически все контрольные линии имеют линию задержки в один такт PPU (1 pixel clock)

Схема ODD/EVEN для определения чётного/нечетного кадра пока ещё не была исследована. Выяснилось, что она состоит из двух замкнутых друг на друга псевдозащелок, управляемых двумя мультиплексорами. Получается такая очень хитрая "макро"-защелка :)

Изображение Изображение Изображение

В состав логики прерывания входит разряд 7 регистра $2002 с tri-state буфером.

На очереди фазовый селектор и "вольтажная лестница" (видео-DAC).

Теперь сижу и думаю какой API мне использовать для имитации телевизора, чтобы рендерить видеосигнал. Вообще становится актуальным вопрос как пользовательского, так и отладочного интерфейса. Хочу сделать сборку всего имеющегося материала в зачаток эмулятора.


Вложения:
HV.jpg
HV.jpg [ 1.08 МБ | Просмотров: 12038 ]
Показать сообщения за:  Поле сортировки  
Ответить на тему   [ Сообщений: 411 ]  На страницу Пред.  1 ... 10, 11, 12, 13, 14, 15, 16 ... 21  След.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 46


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware for PTF (mod by Zeru-j).
Русская поддержка phpBB