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



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

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
У 6502 нет "неверных" кодов. Есть недокументированные опкоды и они вполне уже разобраны на тематических форумах.

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


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

Зарегистрирован:
22 июл 2007, 11:16
Сообщения: 787
Они не совсем недокументированные, там просто дешифрация упрощенная, в разных опкодах разные биты используются, если использовать два бита двух опкодов, будет один опкод, который будет исполнять сразу два опкода, порой с непредсказуемыми последствиями.

_________________
1. Модератор всегда прав.
2. Если модератор не прав, см. п. 1.


Сообщение 08 июл 2014, 17:46
Профиль WWW
Аватара пользователя

Зарегистрирован:
06 апр 2008, 13:46
Сообщения: 119
Эх, жалко, в последнее время маловато новостей от проекта. Очень интересно было читать.


Сообщение 04 ноя 2014, 03:16
Профиль ICQ WWW
Аватара пользователя

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

Схема получилась довольно внушительная.

В верхней части находится рандомная логика, отвечающая за транслирование 130 линий декодера в набор команд для управления контекстом и АЛУ.

В нижней части находится т.н. Dispatcher -- логика, отвечающая за управление последовательностью выполнения циклов инструкций. В симуляторе всё это работает, но как-то не совсем правильно. Схема пока не поддается до конца)) Проблемы сейчас с очередностью циклов, пока даже не могу идентифицировать где прячется ошибка.


Вложения:
RANDOM.png
RANDOM.png [ 409.34 КБ | Просмотров: 11853 ]
Сообщение 05 ноя 2014, 23:16
Профиль
Аватара пользователя

Зарегистрирован:
05 ноя 2014, 23:03
Сообщения: 29
Чувааак. Ты безумно крут. Я зарегистрировался, чтобы сказать тебе это.

Я загорелся идеей сделать свой NES на FPGA, с целью апа своего скилла в цифровой элетронике. Предвижу, что ваши наработки будут мне очень полезны.


Сообщение 05 ноя 2014, 23:20
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Я тоже планирую в ПЛИС это загнать, когда потестю на симуляторе) В конце-концов из верилога будет проще перегнать в Си, чем из схем.

-- 05 ноя 2014, 22:24 --

PS. Заходи в стрим я там буду разбирать факап, который не даёт схеме нормально работать.

http://twitch.tv/ogamespec


Последний раз редактировалось org 06 ноя 2014, 01:22, всего редактировалось 1 раз.



Сообщение 05 ноя 2014, 23:26
Профиль
Аватара пользователя

Зарегистрирован:
05 ноя 2014, 23:03
Сообщения: 29
org писал(а):
Я тоже планирую в ПЛИС это загнать, когда потестю на симуляторе) В конце-концов из верилога будет проще перегнать в Си, чем из схем.

Я так и понял, где же еще может потребоваться транзисторный уровень. Но даже для ПЛИС реализация транзисторного уровня это хардкорно.


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

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Ну я транзисторный уровень поэтому и перегоняю в логику. А потом на верилог и в ПЛИС)


Сообщение 06 ноя 2014, 01:21
Профиль
Аватара пользователя

Зарегистрирован:
05 ноя 2014, 23:03
Сообщения: 29
Вообще, учитывая как ты моделируешь, возможно имеет смысл просто перерисовать свою схему в графическом редакторе, описав на верилоге только самые однородные части (те же декодеры по идее должны отлично описываться через оператор case). По крайней мере, увидев твои схемы я именно к такому способу и склоняюсь.

Стрим понравился, правда впечатление смазано тем, что я нифига в твоих сигналах пока не понимаю ~_~. Какие-то ф1, ф2, фетч и прочее :D
Ничего, надеюсь наверстаю.


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

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Ну PHI1 / PHI2 - это тактовые сигналы. Проц работает на оба полутакта.

Из исходного PHI0 они получаются так :

PHI1 = NOT(PHI0) (нижний уровень)
PHI2 = PHI0 (верхний уровень)

а остальные сигналы, их там туча) FETCH в частности загружает код операции с предекодера на регистр инструкций (IR).
часть сигналов вообще просто типа управляющие, одним словом не описать что они делают )) я когда схему рисовал подписывал их "BADA", "BOBO", "KAKA", "XXX" и тому подобное) потом постепенно переименовал в нечто вроде "ENDS", "ENDX", "TRES1" итп., чтобы хотя бы примерно понимать что они делают.


Сообщение 06 ноя 2014, 01:34
Профиль
Аватара пользователя

Зарегистрирован:
05 ноя 2014, 23:03
Сообщения: 29
А, вот оно что. clk и инвертированный clk.

Цитата:
Ну я транзисторный уровень поэтому и перегоняю в логику.

Верилог, насколько мне известно, позволяет описывать схемы даже на транзисторном уровне, но часто оставляют эту задачу синтезатору. Я сначала решил, что ты собрался описывать именно на нем :)


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

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Именно, я и планирую передать генерацию RTL синтезатору. Транзисторный уровень на верилоге - это был бы изврат)


Сообщение 07 ноя 2014, 01:17
Профиль
Аватара пользователя

Зарегистрирован:
05 ноя 2014, 23:03
Сообщения: 29
По поводу timing generator. Что собой представляет t0? Нигде не нашел у тебя на схемах, где он формируется.
И чем отличается T1 от T1X (схема Хенсона)?


Сообщение 07 ноя 2014, 14:01
Профиль
Аватара пользователя

Зарегистрирован:
05 ноя 2014, 23:03
Сообщения: 29
Нашел. Этот кусок в dispatch оказался.


Сообщение 08 ноя 2014, 00:33
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
T1 это внутренний сигнал, который идёт на рандомную логику из dispatch. Во время T1 производится FETCH.

T0X и T1X -- это eXternal сигналы, которые идут на декодер.

Все сигналы вида Tx - соответствуют циклам выполнения инструкции.

Как я понимаю во время T0 производится выставление адреса на Program Counter, а во время T1 производится выборка опкода по этому адресу + одновременно завершаются короткие двухцикловые опкоды (минимальная длина инструкций в 6502 - два цикла).

Хотя может быть я ошибаюсь... Логичнее было бы во время T0.PHI1 выставить адрес, а во время T0.PHI2 загрузить опкод. А во время T1 выполнить (завершить) инструкцию. Сомнения у меня вызывает правильность названия сигнала T1 вообщем)


Сообщение 08 ноя 2014, 15:50
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Нашёл у себя ещё одну ошибку - все D-LATCH по какой-то причине стали работать не по уровню, а по фронту %)

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


Сообщение 08 ноя 2014, 16:31
Профиль
Аватара пользователя

Зарегистрирован:
05 ноя 2014, 23:03
Сообщения: 29
org писал(а):
Нашёл у себя ещё одну ошибку - все D-LATCH по какой-то причине стали работать не по уровню, а по фронту %)

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


WTF?! У тебя в схемах D-триггера срабатывают по уровню? :shock:


Сообщение 08 ноя 2014, 17:59
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Там не D-триггеры, а D-латчи.

Сейчас таких элементов не встретишь, они были только во времена N-MOS. Работа их основывается на хранении заряда на затворах MOSFET (см. аттач).

Когда enable открывается заряд поступает на затвор (помечено зелеными палочками), и когда на следующий полуцикл enable закрывается заряд остается на затворе.

Поэтому такие D-latch работают по уровню (enable = 1).

-- 08 ноя 2014, 17:01 --

Схему кстати пофиксил, теперь всё работает перфектно )))

Косяк был в сигнале TRESX, там BRK6E не очищал его, поэтому прерывания никогда не завершались. Теперь всё гуд.

Схему можно взять тут : https://code.google.com/p/breaks/source ... ANDOM.circ

Теперь нужно немного времени, чтобы проанализировать работу инструкций, а конкретнее - какие контрольные линии они выдают на нижнюю часть процессора и можно собирать полную сборку (с регистрами и АЛУ).


Вложения:
d-latch.png
d-latch.png [ 3.82 КБ | Просмотров: 11674 ]
Сообщение 08 ноя 2014, 18:15
Профиль
Аватара пользователя

Зарегистрирован:
05 ноя 2014, 23:03
Сообщения: 29
Ясно, придется немного переосмыслить твои схемы под современные веяния в ПЛИС (100% синхронная логика, конвейерная архитектура итд).

Кстати я оплошался. Написать что-либо на транзисторном уровне на верилоге можно, но синтезировать это в реальном железе - нет. Архитектура ПЛИС не заточена под такие вещи. Это казасается и альтеры (проверил сам), и зайлинкса (погуглил); про других производителей не в курсе.

Поэтому только Gate/RTL level.


Сообщение 08 ноя 2014, 18:23
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Транзисторы это bottom ground, сейчас на транзисторах делают только custom логику типа встроенной SRAM памяти ну и стандартных ячеек.
Всё остальное gate-level (опять же основанные на стандартных ячейках).
И по уровню сейчас CMOS не работает, только edge. Хотя D-latch по идее можно сделать как DFF по posedge, должно работать идентично.


Показать сообщения за:  Поле сортировки  
Ответить на тему   [ Сообщений: 411 ]  На страницу Пред.  1 ... 13, 14, 15, 16, 17, 18, 19 ... 21  След.

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

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


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

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