Очень низкоуровневый эмулятор 6502 / NES
Автор |
Сообщение |
26 июн 2013, 17:32 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
|
|
27 июн 2013, 00:06 |
|
Зарегистрирован: 24 июл 2007, 06:54 Сообщения: 492 Откуда: Embedded
|
Вещь! А теперь то же самое, но для ППУ!
_________________ Tried so hard and got so far, but in the end, it doesn't even matter...
|
|
27 июн 2013, 00:21 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Переходим на новый софт - sPlan, поскольку CircuitLab в конец обнаглел. Для эксперимента перерисовал каскад HV счетчиков, попутно избавился от tri-state буферов в схеме. Чую где-то здесь скрывается XOR, но пока не могу его выследить Библиотеку вентилей придется перерисовать, ибо стандартная библиотека не комильфо.
Вложения:
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 |
|
Зарегистрирован: 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 [ 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 |
|
Зарегистрирован: 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 |
|
Зарегистрирован: 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 |
|
Зарегистрирован: 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 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Он не уверен что всё правильно и я тоже Это всё что есть. Логику выборки приоритета спрайтов он ещё не делал, потому что там черт ногу сломит. И DATA READER не хватает.
|
|
01 июл 2013, 22:51 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Берем мультиплексоры в оборот. Очень полезная штука оказывается. При ближайшем рассмотрении регистр инструкций 6502 (IR) и счетчик циклов T2-T5 основаны на мультиплексорах. -- 01 июл 2013, 22:26 -- Обновил декодер, указанием количества циклов на инструкцию: http://breaknes.com/files/6502/decoder.htm
Вложения:
6502-instruction-register.png [ 64.26 КБ | Просмотров: 12688 ]
6502-long-cycle-counter.png [ 39.07 КБ | Просмотров: 12688 ]
|
|
02 июл 2013, 11:19 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
|
|
02 июл 2013, 22:26 |
|
Зарегистрирован: 04 янв 2011, 22:07 Сообщения: 29
|
а что значит желтый треугольник со знаком восклицания?
|
|
03 июл 2013, 07:47 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Привлекает внимание )
|
|
24 июл 2013, 16:02 |
|
Зарегистрирован: 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 [ 516.48 КБ | Просмотров: 12134 ]
|
|
29 июл 2013, 17:19 |
|
Зарегистрирован: 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 [ 1.08 МБ | Просмотров: 12038 ]
|
|
|
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 46 |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
|
|