64 квадратных миллиметров счастья
Автор |
Сообщение |
17 сен 2013, 11:03 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Аттачи смотреть снизу-вверх. Методом сравнения мне удалось получить М1 для "херни с ушками". У этой штуки два входа (помечены красным) и один выход (зеленый). Инвертор, который находится над схемой иногда используется, иногда нет, я пока не выяснил как он подключается, поэтому оставил обрывы. (и подключается ли вообще). Поскольку этот блок используется довольно часто, при этом именно в виде этих трёх ячеек, то есть предположение, что это RS-триггер. (2 входа - set/reset, 1 выход - текущее значение). EDIT: ну во первых сразу узнаем, что верхняя шляпа - это демультиплексор. EDIT: во вторых замечаем, что если MUX = 0, то нижняя часть отсоединяется, а верхняя просто выдает наружу текущее значение триггера. Напрашивается мысль, что это тактируемый RS-триггер, а вход MUX как раз заведен на CLK. Поэтому когда CLK = 0 - текущее значение не меняется. Разберем нижнюю часть. -- 17 сен 2013, 11:47 -- Короче как оказалось это тактируемый D-триггер (триггер задержки). состоит из двух защелок. Во время T=0 защелка1 принимает значение D, а защелка2 выдает наружу старое значение Y Во время Т=1 защелка1 выдает наружу D, которое поступает на защелку2 и выходит как Y. во время следующего Т=0 на выходе Y также будет значение D. потом опять заново. http://wiki.psxdev.ru/index.php/CPU_DTRIG
|
|
08 окт 2013, 19:51 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
В разработке онлайн-приложение для совместного реверса чипов - кодовое название Chiptuneshttp://psxdev.ru/chiptunes/
|
|
09 окт 2013, 14:27 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Закачал на Google Drive все 2901 фотку, нижнего слоя PSX CPU: https://plus.google.com/117266572649711 ... yYdXZFXqvW
|
|
16 окт 2013, 17:10 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
немного копнул кусок 02.
выяснилось что D-триггеры объединенные в связи по тактовой пуповине формируют своего рода регистры.
Выходы с этих регистров идут в квадратные блоки.
На картинке представлены 2 регистра - 16 и 32-битный. что это за регистры пока не известно.
что делают квадратные блоки тоже по прежнему не известно.
+ бонус - распределение D-триггеров в моем куске )) их очень много
Вложения:
02.jpg [ 131.77 КБ | Просмотров: 13693 ]
registers.jpg [ 346.2 КБ | Просмотров: 13693 ]
|
|
29 окт 2013, 17:43 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Андрей обнаружил ещё одну стандартную ячейку, которая проглядывает. Пытаемся восстановить. Пока сомнительное предположение что это 2-demux-4 (ab => 0001, 0010, 0100, 1000 )
Вложения:
24demux.jpg [ 41.67 КБ | Просмотров: 13622 ]
|
|
31 окт 2013, 14:11 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Второй американский декапер всё подготовил для фотографирования чипов. На картинке - лого GPU, который кстати ещё никто не вскрывал. Внутри GPU - не отличается от CPU. Ну а мы продоложаем мучать новый блок. С топологией разобрались и выяснили очень удивительные и непривычные вещи : оказывается входы CMOS могут идти на диффузию Вначале подумали что это наш косяк, но после анализа схемы и перестройки мозга оказалось что это так и есть ))) Нижняя часть блока имеет 2 входа (in1, in2) и 2 внутренних выхода (b и с). Логическая функция b = xor, c = xnor. Значение xor/xnor идут на верхнюю часть, которая имеет три выхода. Сами по себе эти блоки организуют цепочку, подозрительно похожую на carry chain. И очень похоже что carry предыдущей операции хранится на триггере и используется для текущей (то есть влияет на нижнюю часть схемы, где вычисляется xor / xnor ) Вообщем все факты намекают что это какой-то сумматор (или просто adder или full adder), но всё может поменяться -- 31 окт 2013, 16:00 -- Ну вобщем разобрались. out3 оказался на самом деле входом in3 (это видно по анализу транзисторной схемы - на него не подавалась земли/нагрузки изнутри) Ну а сам элемент - это Full Adder. Код: in1 in2 bc out1 out2 0 0 01 b = 0, c = 1 in2 in3 0 1 10 b = 1, c = 0 in3 !in3 1 0 10 b = 1, c = 0 in3 !in3 1 1 01 b = 0, c = 1 in2 in3
in1 in2 in3 | out1 out2 0 0 0 | 0 0 0 0 1 | 0 1 0 1 0 | 0 1 0 1 1 | 1 0 1 0 0 | 0 1 1 0 1 | 1 0 1 1 0 | 1 0 1 1 1 | 1 1
in1 = a in2 = b in3 = carry_in out1 = carry_out out2 = sum
|
|
05 ноя 2013, 14:43 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
|
|
05 ноя 2013, 20:00 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Очередная стандартная ячейка, на сей раз очень важная (ключевая) - мультилексор : http://wiki.psxdev.ru/index.php/CPU_MUX
|
|
06 ноя 2013, 16:07 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Рядом с аддерами мелькает такая вот стандартная ячейка, под кодовым название "колбаса".
Предварительно - это либо двунаправленный регистр сдвига, либо Up/Down counter. В любом случае - это какая-то 4-х разрядная херь (видно что она состоит из 4х одинаковых субюнитов, которые фидят друг друга по цепочке).
-- 06 ноя 2013, 17:22 --
Транзисторная схема восстановлена, и часть логики тоже.
Похоже это "обертка" для организации регистра сдвига.
Если принять что C1 = D1, а С2 = D2, при этом оба эти сигнала представляют собой полутакты CLK. А если прикрепить к выходам 1/2/3 каждого каскада D-триггеры (при этом 1 и 2 идут с выхода !Q, а 3 - идёт на вход D), то по идее должен получиться 4-х разрядный регистр сдвига.
ЗЫ. На выходе 3 стоят инверторы, так что инвертированный выход !Q D-триггера становится прямым входом на D, при выходе с 3.
|
|
07 ноя 2013, 09:20 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Выяснилось, что контакты 1-2-3 соединяются с чем попало (аддеры, другие такие же колбасы), а выходы in-out могут организовывать цепочки из таких колбас. После некоторых раздумий я пришёл к выводу что скорее всего это pipeline - конвеер операций, чтобы разделить по тактам очередность действий. (не тот pipeline, который лежит в основе RISC, а вообще генерализованная структура, для обработки вычислений, которые занимают больше 1 такта). Контакты C1/C2 и D1/D2 к сожалению уходят в необозримые дали, поэтому проверить - соединяется ли C1+D1 и C2+D2 пока нет возможности. Поэтому стандартная ячейка пока получает метку "PIPELINE", до разбирательств ) http://wiki.psxdev.ru/index.php/CPU_PIPELINE
|
|
15 ноя 2013, 09:08 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
- Получили в hires фотку SUB-CPU - Получили слайды GPU (старой версии) - открылся наш англоговорящий форум http://board.psxdev.ru/+ много чего ещё, см. http://psxdev.ru
|
|
23 ноя 2013, 05:34 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Код: in1 in2 in3 out1 out2 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1
кто знает что это за функция? всю голову сломал)) -- 23 ноя 2013, 05:41 -- отбой, надо поспать)))
|
|
23 ноя 2013, 10:02 |
|
Зарегистрирован: 24 июл 2007, 06:54 Сообщения: 492 Откуда: Embedded
|
out1 = not(int 1 xor int3) and int2 out2 = (int1 and int2) or (int1 and int3) or (int2 and int3) :3
_________________ Tried so hard and got so far, but in the end, it doesn't even matter...
|
|
24 ноя 2013, 21:15 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Целая пачка стандартных ячеек (и ещё намечаются) : BUF: BUF2X: NOT2: NOT3: XNOR: http://wiki.psxdev.ru/index.php/CPU_CELLSОбщее количество найденных ячеек на данный момент составляет 72 : Такое больше количество обусловлено тем, что одна ячейка может иметь разное количество "лошадиных сил" (drive strength). Это достигается наращиванием количества транзисторов в выходном инверторе.
|
|
27 ноя 2013, 16:16 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
D latch : Регистр сдвига : -- 27 ноя 2013, 15:18 -- Начат тайлмаповый реверсинг : http://psxdev.ru/files/IC103/cpu_tilemap.htm
|
|
30 ноя 2013, 15:32 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
|
|
02 дек 2013, 15:13 |
|
Зарегистрирован: 28 ноя 2012, 17:56 Сообщения: 63
|
Немного моего куска: у меня получается гигантская паутина из аддеров, пайплайнов и флипфлопов.
Я сейчас перерисовываю по новому. поэтому пока только большая вязь фрипфлопов нанизаных на тактовый сигнал )
Все нарисованные входы идут с полных сумматоров.
Вложения:
psxcpu_part01-03-04_part.jpg [ 614.24 КБ | Просмотров: 12084 ]
|
|
02 дек 2013, 17:27 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
У меня такая же история приключилась в правом нижнем углу куска 02 http://psxdev.ru/files/IC103/svg/c0010_r0005.svg
|
|
06 дек 2013, 00:21 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Количество ячеек перевалило за 100 (всего их 105 уже). Запустил проект на Google Code, чтобы хранить там векторные данные : https://code.google.com/p/psxdev/Небольшой прогресс в изучении схемы SIO, обнаружился выходной регистр сдвига, с которого уходит значение TX, а также провод-отсекатель, очень похожий на сигнал TXEN (TX enable), который обнуляет выход регистра сдвига, если TXEN = 0. Андрюха, думаю за себя отпишет
Вложения:
cells.png [ 1.11 МБ | Просмотров: 12342 ]
TXD1_001.jpg [ 73.3 КБ | Просмотров: 12342 ]
|
|
06 дек 2013, 14:55 |
|
Зарегистрирован: 28 ноя 2012, 17:56 Сообщения: 63
|
Угу, отпишусь )
У меня творится ад и содомия. Без нижнего металла нет 100%ной уверенности в том что все провода отслежены правильно. Определенная логика в расположении элементов есть, но в целом мрак. Видно что схема состоит из 2х частей, связанных только клоком и пайплайнами. Есмть подозрение что это какая-то операция с матрицей (то ли перемножение из. толи умножение на вектор, то ли еще что).
Вложения:
1.png [ 105.75 КБ | Просмотров: 11978 ]
psxcpu_part01-03-04_part.jpg [ 1.19 МБ | Просмотров: 11978 ]
|
|
|
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1 |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
|
|