Форум Эму-Россия http://forum.emu-russia.net/ |
|
Очень низкоуровневый эмулятор 6502 / NES http://forum.emu-russia.net/viewtopic.php?f=13&t=3938 |
Страница 9 из 21 |
Автор: | qb60 [ 21 янв 2013, 10:31 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
org писал(а): что за транзистор такой, затвор которого подсоединен к земле Похоже на защитный "диод". Должны присутствовать на входных линиях. |
Автор: | org [ 22 янв 2013, 19:56 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Автор: | org [ 24 янв 2013, 09:28 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Прогресс по APU: Исходники PSD : http://breaknes.com/files/APU/2A03.zip -- 24 янв 2013, 19:09 -- |
Автор: | org [ 25 янв 2013, 21:17 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
В итоге подчистил схему 6502: И выкладываю PSD : http://breaknes.com/files/6502/6502.zip (140 MB) |
Автор: | org [ 27 янв 2013, 15:32 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Автор: | org [ 29 янв 2013, 21:07 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Автор: | org [ 31 янв 2013, 20:52 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
-- 01 фев 2013, 18:48 -- |
Автор: | org [ 02 фев 2013, 02:21 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
после сегодняшнего стрима, через пару часиков, ALU был полностью завершен: Симуляция закачана на SVN. Схему и исходники PSD тоже скоро обновлю. Дополнительную инфу можно получить тут : http://forum.6502.org/viewtopic.php?f=8 ... 135#p24135 Параллельно узнал новый "паттерн" соединения транзисторов =) out = NAND(a,b) & NAND(c,d) |
Автор: | org [ 05 фев 2013, 01:14 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
- Закачал на SVN обновленную схему 6502 - Закачал исходники PSD на сайт breaknes - Разобрался почему у меня PC считал вкривь-вкось. На самом деле всё хорошо считалось, просто каждый второй разряд PC находится в инверсной логике (трюк для оптимизации carry-chain), поэтому когда я считывал значения c PC, то забыл что нужно инвертировать каждый второй разряд, для получения правильного значения Последний бастион для "нижней" части процессора пал. Теперь осталось разобраться с "верхней" частью и постепенно складывается целая картина работы процессора. Кстати очень сложно глядя на общую схему 6502 что-либо понять с первого взгляда. В стримах я пытался кое-где рассказать, но всё равно схема достаточно сложная для понимания, потому что очень "спутанная". |
Автор: | org [ 06 фев 2013, 21:34 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Автор: | org [ 12 фев 2013, 13:25 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Между изучением 6502 параллельно рисую топологию APU: Осталось только контакты расставить. В стане 6502 значительный прогресс, который можно посмотреть в стримах. Очень много важных линий и внутренних схем разобрано до мелочей) |
Автор: | Akari [ 12 фев 2013, 14:42 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Когда планируеш к АПУ вернутся? И по ГПУ ни одного стрима не было еще ) |
Автор: | org [ 12 фев 2013, 16:29 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Если вам ещё не надоели мои стримы, то сразу после получения топологии выйду в эфир с APU |
Автор: | EvGS [ 12 фев 2013, 16:50 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
APU - наше всё. Вкуснота. Я сейчас балуюсь беткой nsplay 2.3b3 от рейнварриора, которая умеет проигрывать NSF в режиме денди. |
Автор: | org [ 12 фев 2013, 20:16 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
-- 13 фев 2013, 13:39 -- Стало понятно как же именно выполняются инструкции на 6502. Подробности тут: http://breaknes.com/#13022013 |
Автор: | org [ 15 фев 2013, 15:47 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Завершена топология APU: http://code.google.com/p/breaks/wiki/G2A03 -- 16 фев 2013, 12:53 -- Отличия встроенного в APU 6502 После детального изучения схемы 2A03 были получены следующие результаты. - Отличий в декодере не обнаружено - Флаг D работает как обычно, его можно установить или сбросить, он используется нормальным образом при обработке прерываний (сохраняется в стеке) и после выполнения инструкций PHP/PLP, RTI. - Рандомная логика отвечающая за генерацию двух контрольных линий DAA (decimal addition adjust) и DSA (decimal subtraction adjust) работает обычным образом. Отличие заключается в том, что контрольные линии DAA и DSA, отвечающие за включение схем коррекции, отсоединены от схемы, путём вырезания 5 кусочков полисиликона (см. картинку). полисиликон обозначен фиолетовым цветом, вырезанные кусочки обозначены голубым, а места обведены красным. Это приводит к тому, что схема вычилсения десятичного переноса при сложении и схема добавления/отнимания 6 к результату - не работают. Поэтому встроенный процессор 2A03 всегда считает двоичными числами, даже если флаг D установлен. PSD с которым я работал тут : http://breaknes.com/files/APU/core.zip [155 MB] |
Автор: | org [ 18 фев 2013, 20:12 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Пока я рожаю 6502, начинаем серию стримов по APU: Как промежуточный результат - схема счетчика и его управление (показан только Square 1, остальные идентичны): В конце стрима краткие итоги. Следующая серия должна добить length counters окончательно. После length counter буду разбирать работу квадратного канала. Параллельно тужусь над симуляцией 6502... -- 19 фев 2013, 16:54 -- Разобрал схему спрайтовой DMA: Принцип работы: - Старшие 8 разрядов адреса (HI) - это константа, которая записывается в регистр $4014 - Младшие 8 разрядов (LO) - это up-counter, считает от 0 до 255. После переполнения - DMA прекращает работу. При загрузке нового значения в $4014 - младший адрес (LO) очищается. - Адрес DMA попеременно меняется с текущего значения HI:LO, на $2004 (порт записи PPU), при этом порт $2003 (начальный адрес в спрайтовой памяти) должен быть установлен ручками, до запуска DMA. Понятно это сделано для того, чтобы вначале прочитать байт по адресу HI:LO, а затем записать его в $2004. Переключение адреса делает flip/flop, который можно найти внизу схемы. - На время DMA CPU бездействует (RDY=0) - DMA стартует при записи в $4014 (устанавливается защелка START), а останавливается только после отправки всех 256 байт. Работа спрайтовой DMA тесно переплетается с DMC. Во время DMC (RUNDMC=1) спрайтовая DMA временно приостанавливается. Также DMC как-то завязана на линию RDY (я пока точно не выяснил). Контрольные линии на схеме: - SPRS: sprite step, увеличить счетчик адреса - SPRE: sprite DMA end, после переполнения счетчика DMA останавливается - DOSPR: спрайтовая DMA в процессе - SPR/PPU : спрайтовая DMA работает по направлению SPRITE BUFFER->PPU - SPR/CPU : спрайтовая DMA работает по направлению MEMORY->SPRITE BUFFER Маленькая "звиздюлина", которая мелькала в стримах - это sprite buffer, временное хранилище для спрайтовой DMA. Как-то так) Обновил PSD: http://breaknes.com/files/APU/2A03.zip теперь там обозначены почти все контрольные линии. |
Автор: | org [ 23 фев 2013, 11:59 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Автор: | Akari [ 24 фев 2013, 21:36 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Нашел тут в контексте 6502 объяснение про enhanced и depletion транзисторы http://www.righto.com/2013/01/a-small-p ... ained.html ну и википедия достаточно подробно расказывает об этом http://en.wikipedia.org/wiki/Depletion-load_NMOS_logic http://visual6502.org/wiki/index.php?ti ... ransistors в общем достаточно полно разжевано, кроме того как их находить (( |
Страница 9 из 21 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |