Сообщения без ответов | Активные темы Текущее время: 05 авг 2021, 17:10



Ответить на тему  [ Сообщений: 384 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10 ... 20  След.
 Очень низкоуровневый эмулятор 6502 / NES 
Автор Сообщение
Сообщение 20 ноя 2012, 00:03
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 546
Теперь тебе осталось доказать что когда на затворе NMOS-транзистора есть заряд - то он открыт :)

Соответственно, если хотя бы один транс откроется в той "палке", то весь заряд стечет на землю.

a b c
0 0 | 1
0 1 | 0
1 0 | 0
1 1 | 0

c = nor(a,b)


Сообщение 20 ноя 2012, 13:09
Профиль
Аватара пользователя

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

Соответственно, если хотя бы один транс откроется в той "палке", то весь заряд стечет на землю.

a b c
0 0 | 1
0 1 | 0
1 0 | 0
1 1 | 0

c = nor(a,b)

Мы говорим об одном и том же, только разными терминами.
ИзображениеИзображение
Я думаю, надо закрыть тему и идти дальше. Какой блок на очереди?

PS В предыдущих постах, когда я говорил ИЛИ забывал добавлять НЕ. Т.е., правильно ИЛИ-НЕ.

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


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

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 546
да, мы только что доказали то же самое, что и де Морган 200 лет назад:
!(p or q) = !p and !q

единственное что входы на H/V декодер не в инверсной логике, поэтому уместнее использовать NOR. ну да ладно )


Сообщение 20 ноя 2012, 20:11
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
org писал(а):
да, мы только что доказали то же самое, что и де Морган 200 лет назад:
!(p or q) = !p and !q

Так ты признаешь, что там инверторы с ОК, соединенные в монтажное И? :3
org писал(а):
единственное что входы на H/V декодер не в инверсной логике, поэтому уместнее использовать NOR. ну да ладно )

Давай уже следующий модуль. Прежде чем эти таблицы разбирать, нужно счетчики раскурить. Их разрядность, источник тактов и пр. Идти надо последовательно, сверху вниз по тактовой частоте. На входе с делителем разобрались, давай дальше по цепочке.

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


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

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 546
что-то я совсем запутался )
походу выходы все таки инвертированы у счетчиков =)

-- 21 ноя 2012, 08:38 --

Вот, один "шаг" H/V счетчика:

Изображение

inc: если на входе 1, то счетчик делает инкремент, иначе на выходе (out) текущее значение.
carry: перенос на следующий шаг
RES: сигнал общего сброса
HC (или VC у V-counter): сигнал очистки всего счетчика, H-counter сбрасывается когда декодер обнаруживает там значение H=340, V-counter сбрасывается при V=261.

так как H-counter считает все время, то вход самого первого каскада заведен на Vcc.

вход V-counterа регулируется H-декодером. когда H=340, то вход V устанавливается в 1, что дает возможность увеличить его значение на 1.

carry каждого предыдущего бита заведен на inc следующего, получается carry-chain.

По схеме:
- без tri-state никак не обошлось. вход inc управляет двумя tri-state. Если inc = 1 (сделать шаг), то правый D-триггер (текущее значение счетчика) обновляется с выхода. Когда inc = 0, то этот D-триггер берет своё значение с левого D-триггера.
- по поводу левого триггера, я честно ХЗ как его сделать стандартным )) он получается совмещенным: когда PCLK=1, то открывается прямой вход, когда PCLK=0 открывается реверсный вход - и всё это заливается на одну защелку. есть какой-то стандартный аналог этого элемента ?

-- 21 ноя 2012, 09:14 --

Вот та же схема на tri-state:
Изображение

-- 21 ноя 2012, 10:35 --

Изображение

Весь H-counter.

переносы с 0 по 4 суммируются через NOR и подаются на вход 5.
вход 0 заведен на Vcc (счетчик всегда считает)


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

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 546
Новости с фронта 6502.

Поубирал лишние шланги, что позволило идентифицировать практически все узлы рандомной логики:

Изображение

И схема стала выглядеть куда понятней.


Сообщение 22 ноя 2012, 19:45
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
Интересно. Это видоизмененный синхронный счетчик. Обычно там применяется AND-XOR ступень. Ее смысл в том, чтобы зарулить выход триггера на вход без изменений, если нет кондиции и проинвертировать ее, чтобы триггер перекинулся, если кондиция случилась. Вот, например:
Изображение

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


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

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 546
Внешне это обыкновенный 9-разрядный up-counter по модулю 2, с одним синхровходом и 2-мя входами для сброса.

2 входа нужно чтобы не пересекаться с общей линией Reset.

необычная схема для суммирования переносов с первой половины счетчика на самом деле нужна для уменьшения propagation delay в carry chain. да хотя у меня подозрения что даже с таким "фиксом" счетчик "плывет" по таймингу (тут даже не используется трюк с инвертированным carry chain как в 6502). Спасает только то, что он довольно часто очищается.

-- 23 ноя 2012, 14:02 --

Сделал карту связей для рандомной логики 6502:

Изображение

С помощью этой карты можно узнать в какой очередности работает тот или иной кусок.

Такую же схему сделаю и для PPU, когда повторно соберу полную схему. На днях как раз закончил перерисовку всех недостающих контрольных линий, осталась непонятной всего лишь одна(!), идущая из адресного декодера в логику сравнения спрайтов :)


Сообщение 23 ноя 2012, 20:21
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
org писал(а):
Внешне это обыкновенный 9-разрядный up-counter по модулю 2, с одним синхровходом и 2-мя входами для сброса.
2 входа нужно чтобы не пересекаться с общей линией Reset.
необычная схема для суммирования переносов с первой половины счетчика на самом деле нужна для уменьшения propagation delay в carry chain. да хотя у меня подозрения что даже с таким "фиксом" счетчик "плывет" по таймингу (тут даже не используется трюк с инвертированным carry chain как в 6502). Спасает только то, что он довольно часто очищается.

Да не, пока такты идут на все ступени - он достаточно синхронный, гличи минимальны и соразмерны тактовому сигналу. Давай теперь подведем итог: первый горизонтальный счетчик на 9 бит. Но у ППУ всего 32 символа в ширину - т.е. 5 бит. Еще 4ре - это на каждые 8 точек экрана, т.е. по 2 такта на точку. Надо теперь смотреть в ПЛА (дешифратор) и смотреть какие линии он дергает в какие моменты. А, кстати, они считает до предела? Все 9 бит, сброс только общечиповый?

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


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

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 546
Там два счетчика. Слева - для подсчета пикселей (H), справа идентичный (но схематично зеркально отраженный) для подсчета строк (V).
Различаются только тем, что вход V управляется дешифратором. Когда H = 340, то вход V временно включается и происходит его увеличение на 1.

Сброс H/V счетчиков тоже осуществляется дешифратором, это видно по транзисторной схеме. У каждого счетчика помимо сброса по Reset есть свой дополнительный сброс HC/VC (H-clear, V-clear), так как счетчики не делают полный круг.

Оба счетчика 9-разрядные.

Цитата:
Да не, пока такты идут на все ступени - он достаточно синхронный
Хотя такты идут на все ступени - распространение переноса идёт последовательное, значит задержка имеет место быть. Другого объяснения трюка с переносом я дать не могу.

Дешифратор в общем не всегда дергает какие-то определенные пиксели/линии.

Например часть выходов настроена так, что они срабатывают каждый 2й и 3й пиксель. Это нужно для отрисовки бэкграунда, ведь каждая точка требует чтения байта из NT, байта из AT и двух байт данных тайла:

H:105 V:0 F/NT VIS PICTURE
H:106 V:0 F/NT VIS PICTURE
H:107 V:0 F/AT VIS PICTURE
H:108 V:0 F/AT VIS PICTURE
H:109 V:0 F/TA VIS PICTURE
H:110 V:0 F/TA VIS PICTURE
H:111 V:0 F/TB VIS PICTURE
H:112 V:0 F/TB VIS PICTURE

Часть других выходов срабатывает от A до B, например от 0 до 63 (подготовка дополнительной спрайтовой памяти).

Если диапазон не удается подобрать по модулю 2, тогда для этого используются 2 линии, которые заведены на RS-триггер, который активен от линии A до линии B.


Сообщение 24 ноя 2012, 10:39
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
Вот именно это давай и разберем. Входные такты и H счетчик с его частью дешифратора.

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


Сообщение 04 дек 2012, 20:50
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
ПИНГ -T

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


Сообщение 05 дек 2012, 23:55
Профиль
Аватара пользователя

Зарегистрирован:
23 июл 2007, 19:37
Сообщения: 401
Откуда: Мытищи
Декап ревизии "H" заглох?

_________________
Nestopia 1.37/1.40 Fixed


Сообщение 06 дек 2012, 09:41
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 546
HWM, я сейчас с 6502 вожусь, хочу добить его к НГ )


Сообщение 06 дек 2012, 12:21
Профиль
Аватара пользователя

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

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


Сообщение 16 дек 2012, 12:36
Профиль

Зарегистрирован:
04 янв 2011, 22:07
Сообщения: 29
что то тишина у вас тут :( хоть что нибудь упомянули, интересно же читать :)
З.Ы.: Блин, из за вашей темы начал читать Хоровиц/Хилл - "Искусство схематехники" и Келим - "Вычислительная техника", скоро сессия а я читаю книги "малость" не своего профиля...


Сообщение 16 дек 2012, 20:14
Профиль

Зарегистрирован:
18 окт 2012, 11:50
Сообщения: 7
Все будет. Просто работы невпроворот.


Сообщение 18 дек 2012, 16:58
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 546
Над 6502 работы ведутся, но чего-то интересного показывать пока нечего.
Нудный процесс полировки полученной схемы и пошаговая симуляция логики.

Параллельно веду трассировку APU, покажу как будут готовы все слои (сейчас пока только металл готов).

Nepo, нечего читать эту фигню ) Все необходимые знания можно получить из этой темы )


Сообщение 29 дек 2012, 21:50
Профиль

Зарегистрирован:
28 ноя 2012, 17:56
Сообщения: 63
Пытался понять как понять как работает схема и застопорился на принципе работы open-drain транзисторов у которых исток замкнут на базу. Кто-нибуть может объяснить как они могут проводить заряд? Ведь транзистор открыт только когда на базу подается заряд, но база подключена к земле. как тогда заряд то проходит? О_о


Сообщение 30 дек 2012, 21:06
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
Это нагрузка. Такой режим полевика, в котором он работает как генератор тока. В логическом смысле это обычная нагрузка.

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


Показать сообщения за:  Поле сортировки  
Ответить на тему   [ Сообщений: 384 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10 ... 20  След.

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

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


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

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