Форум Эму-Россия http://forum.emu-russia.net/ |
|
Очень низкоуровневый эмулятор 6502 / NES http://forum.emu-russia.net/viewtopic.php?f=13&t=3938 |
Страница 16 из 21 |
Автор: | HardWareMan [ 21 июн 2014, 11:13 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
У 6502 нет "неверных" кодов. Есть недокументированные опкоды и они вполне уже разобраны на тематических форумах. |
Автор: | CaH4e3 [ 21 июн 2014, 18:12 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Они не совсем недокументированные, там просто дешифрация упрощенная, в разных опкодах разные биты используются, если использовать два бита двух опкодов, будет один опкод, который будет исполнять сразу два опкода, порой с непредсказуемыми последствиями. |
Автор: | VEG [ 08 июл 2014, 17:46 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Эх, жалко, в последнее время маловато новостей от проекта. Очень интересно было читать. |
Автор: | tfwbbt [ 05 ноя 2014, 23:16 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Чувааак. Ты безумно крут. Я зарегистрировался, чтобы сказать тебе это. Я загорелся идеей сделать свой NES на FPGA, с целью апа своего скилла в цифровой элетронике. Предвижу, что ваши наработки будут мне очень полезны. |
Автор: | org [ 05 ноя 2014, 23:20 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Я тоже планирую в ПЛИС это загнать, когда потестю на симуляторе) В конце-концов из верилога будет проще перегнать в Си, чем из схем. -- 05 ноя 2014, 22:24 -- PS. Заходи в стрим я там буду разбирать факап, который не даёт схеме нормально работать. http://twitch.tv/ogamespec |
Автор: | tfwbbt [ 05 ноя 2014, 23:26 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
org писал(а): Я тоже планирую в ПЛИС это загнать, когда потестю на симуляторе) В конце-концов из верилога будет проще перегнать в Си, чем из схем. Я так и понял, где же еще может потребоваться транзисторный уровень. Но даже для ПЛИС реализация транзисторного уровня это хардкорно. |
Автор: | org [ 06 ноя 2014, 01:10 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Ну я транзисторный уровень поэтому и перегоняю в логику. А потом на верилог и в ПЛИС) |
Автор: | tfwbbt [ 06 ноя 2014, 01:21 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Вообще, учитывая как ты моделируешь, возможно имеет смысл просто перерисовать свою схему в графическом редакторе, описав на верилоге только самые однородные части (те же декодеры по идее должны отлично описываться через оператор case). По крайней мере, увидев твои схемы я именно к такому способу и склоняюсь. Стрим понравился, правда впечатление смазано тем, что я нифига в твоих сигналах пока не понимаю ~_~. Какие-то ф1, ф2, фетч и прочее Ничего, надеюсь наверстаю. |
Автор: | org [ 06 ноя 2014, 01:27 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Ну PHI1 / PHI2 - это тактовые сигналы. Проц работает на оба полутакта. Из исходного PHI0 они получаются так : PHI1 = NOT(PHI0) (нижний уровень) PHI2 = PHI0 (верхний уровень) а остальные сигналы, их там туча) FETCH в частности загружает код операции с предекодера на регистр инструкций (IR). часть сигналов вообще просто типа управляющие, одним словом не описать что они делают )) я когда схему рисовал подписывал их "BADA", "BOBO", "KAKA", "XXX" и тому подобное) потом постепенно переименовал в нечто вроде "ENDS", "ENDX", "TRES1" итп., чтобы хотя бы примерно понимать что они делают. |
Автор: | tfwbbt [ 06 ноя 2014, 01:34 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
А, вот оно что. clk и инвертированный clk. Цитата: Ну я транзисторный уровень поэтому и перегоняю в логику. Верилог, насколько мне известно, позволяет описывать схемы даже на транзисторном уровне, но часто оставляют эту задачу синтезатору. Я сначала решил, что ты собрался описывать именно на нем |
Автор: | org [ 06 ноя 2014, 01:38 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Именно, я и планирую передать генерацию RTL синтезатору. Транзисторный уровень на верилоге - это был бы изврат) |
Автор: | tfwbbt [ 07 ноя 2014, 01:17 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
По поводу timing generator. Что собой представляет t0? Нигде не нашел у тебя на схемах, где он формируется. И чем отличается T1 от T1X (схема Хенсона)? |
Автор: | tfwbbt [ 07 ноя 2014, 14:01 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Нашел. Этот кусок в dispatch оказался. |
Автор: | org [ 08 ноя 2014, 00:33 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
T1 это внутренний сигнал, который идёт на рандомную логику из dispatch. Во время T1 производится FETCH. T0X и T1X -- это eXternal сигналы, которые идут на декодер. Все сигналы вида Tx - соответствуют циклам выполнения инструкции. Как я понимаю во время T0 производится выставление адреса на Program Counter, а во время T1 производится выборка опкода по этому адресу + одновременно завершаются короткие двухцикловые опкоды (минимальная длина инструкций в 6502 - два цикла). Хотя может быть я ошибаюсь... Логичнее было бы во время T0.PHI1 выставить адрес, а во время T0.PHI2 загрузить опкод. А во время T1 выполнить (завершить) инструкцию. Сомнения у меня вызывает правильность названия сигнала T1 вообщем) |
Автор: | org [ 08 ноя 2014, 15:50 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Нашёл у себя ещё одну ошибку - все D-LATCH по какой-то причине стали работать не по уровню, а по фронту Поменял как надо, схема стала адекватно перебирать циклы, но почему-то застревает после исполнения одного опкода. |
Автор: | tfwbbt [ 08 ноя 2014, 16:31 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
org писал(а): Нашёл у себя ещё одну ошибку - все D-LATCH по какой-то причине стали работать не по уровню, а по фронту Поменял как надо, схема стала адекватно перебирать циклы, но почему-то застревает после исполнения одного опкода. WTF?! У тебя в схемах D-триггера срабатывают по уровню? |
Автор: | org [ 08 ноя 2014, 17:59 ] | ||
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES | ||
Там не 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 Теперь нужно немного времени, чтобы проанализировать работу инструкций, а конкретнее - какие контрольные линии они выдают на нижнюю часть процессора и можно собирать полную сборку (с регистрами и АЛУ).
|
Автор: | tfwbbt [ 08 ноя 2014, 18:15 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Ясно, придется немного переосмыслить твои схемы под современные веяния в ПЛИС (100% синхронная логика, конвейерная архитектура итд). Кстати я оплошался. Написать что-либо на транзисторном уровне на верилоге можно, но синтезировать это в реальном железе - нет. Архитектура ПЛИС не заточена под такие вещи. Это казасается и альтеры (проверил сам), и зайлинкса (погуглил); про других производителей не в курсе. Поэтому только Gate/RTL level. |
Автор: | org [ 08 ноя 2014, 18:23 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Транзисторы это bottom ground, сейчас на транзисторах делают только custom логику типа встроенной SRAM памяти ну и стандартных ячеек. Всё остальное gate-level (опять же основанные на стандартных ячейках). И по уровню сейчас CMOS не работает, только edge. Хотя D-latch по идее можно сделать как DFF по posedge, должно работать идентично. |
Страница 16 из 21 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |