Форум Эму-Россия
http://forum.emu-russia.net/

Срисовываю z80, есть вопрос
http://forum.emu-russia.net/viewtopic.php?f=13&t=5380
Страница 1 из 2

Автор:  pfgx [ 13 апр 2014, 11:05 ]
Заголовок сообщения:  Срисовываю z80, есть вопрос

Здравствуйте.
Срисовываю z80, перевожу на Verilog. В процессе наткнулся на интересную вещь.
Вложение:
m5t5_20140413_0412_src.jpg
m5t5_20140413_0412_src.jpg [ 23.69 КБ | Просмотров: 16955 ]
Вложение:
m5t5_20140413_0412.jpg
m5t5_20140413_0412.jpg [ 26.24 КБ | Просмотров: 16955 ]

Цвета на картинке: диффузия - голубой, поликремний - фиолетовый, металлизация - зелёный (сигналы) и синий (GND). Голубой проводник в левом верхнем углу подключен к Vdd.
Фиолетовый поликремний пересекает голубую диффузию - транзистор. Получаем элемент 3-3И-2ИЛИ-НЕ из 7 транзисторов, в левом верхнем углу большой квадратный транзистор "подтяжки" выхода к Vcc.
Верхний из 6 транзисторов, затвор которого подключен ко второму справа зелёному сигнальному проводнику, совершенно не вписывается в логику работы. Совсем он её не портит, но влияет. Возник вопрос, может ли такое пересечение НЕ БЫТЬ транзистором, и, кажется, на этом форуме уже нашёл ответ viewtopic.php?p=19699#p19699
org писал(а):
-- 24 фев 2013, 18:32 --

В процессе стрима, в реальном времени связались с Quietust'ом и выяснили, что не всякое пересечение полисиликона по диффузии формирует транзистор.
Иногда получается так, что полисиликон проходит по диффузии безо всякого эффекта.

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

Срисовано и разобрано уже пол-процессора, но такой "лишний" транзистор первый. Если это действительно так, и в остальной схеме я нигде не ошибся (а проверил уже много раз), то это вполне может быть той "закладкой" для защиты от копирования, про которую много слухов.

Кто-нибудь может прокомментировать?

Автор:  org [ 15 апр 2014, 18:42 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

Привет.
Очень похоже на обычный NAND & NAND, только левый верхний транс больше похож на depletion load. Посмотри на этот кусок без металла, там вполне может быть так, что "зарытый" контакт совмещен с виасом.

Если левый верхний транс - это не "резистор" подтяжки, то я хз что это получается)))

Вообще неплохо было бы глянуть на delayer этого участка (у меня даже где-то валялся z80 без металла).

Вложения:
nand_and_nand_33.jpg
nand_and_nand_33.jpg [ 75.87 КБ | Просмотров: 16888 ]

Автор:  pfgx [ 15 апр 2014, 21:59 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

Не-не-не, не этот, там всё нормально, и виас есть. "Верхний из шести", который "a" обозначен, вот он лишний. Если он есть - появляются дополнительные такты в некоторых инструкциях, если его убрать или он всё время открыт, как depletion - всё соответствует документации.
Без металла у меня нет, только вот такая полупрозрачная.
На картинке жёлтым отмечено, где это находится.

Вложения:
m5t5_20140413_0412_src_all.jpg
m5t5_20140413_0412_src_all.jpg [ 33.05 КБ | Просмотров: 16875 ]

Автор:  org [ 15 апр 2014, 23:24 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

вот тут есть все слои :

http://uxul.org/~noname/visual6502/z80/

(там 4 разных степени "окисления", склееные панорамы называются stitch.png)

По поводу того куска - там действительно виас и зарытый контакт рядом стоят (но это я для себя, убедиться).

Ну а по поводу того, который обозначен как "a" - там может быть и depleted и enhanced. Если depleted, то такой транзистор всегда открыт, наподобии depletion load трансов, которые выполняют роль резисторов. Ну или как в barrel shifter-е NES APU. По картинке отличить depleted транзистор от enhanced никак не получится, только если логически додуматься :)

Мне кажется что все 6 трансов (a-f) - это enhanced транзисторы (то есть обычные), но вам виднее )

Вложения:
buried+vias.jpg
buried+vias.jpg [ 36.22 КБ | Просмотров: 16869 ]

Автор:  pfgx [ 16 апр 2014, 01:13 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

То есть "подтяжечные" транзисторы depletion mode, и сделать ещё один такой транзистор было несложно?

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

Выполнение операции состоит из нескольких M-циклов, каждый цикл из нескольких тактов. От этого транзистора зависит 5 или 6 тактов будет в M-цикле, 3- и 4-тактовые циклы остаются без изменений. Корректность выполнения инструкций пострадать не должна, потому что T6 (6-й такт M-цикла) никуда не заведён и вроде как "холостой", но кто его знает...

Автор:  org [ 16 апр 2014, 09:07 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

Если затвор висит в воздухе, а там перерезано, то тут уже начинаются аналоговые эффекты - если потенциала будет достаточно чтобы открыть транзистор через перерезанную щель, то он откроется. Если не хватит, то так и останется закрытым, а нижние 2 транса тоже никогда не откроются, потому что земля будет отрезана. А такое поведение маловероятно)

А когда получаются M-циклы из шести T-state?

Автор:  pfgx [ 16 апр 2014, 09:23 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

"Нормальные" 6 тактов в add HL,RR и ещё какой-то, ex [SP],HL кажется.
"Ненормальные" появляются с этим транзистором в относительных переходах и, по идее, во всех IX+nn и IY+nn вместо 5 тактов, инструкции будут выполняться на 1 такт дольше. Префиксные пока не разбирал, поэтому вывод чисто теоретический.

Посмотрел в записи. "Нормальные" 6 тактов в inc/dec RR и ld SP,HL. add HL,RR это 4+4+3 такта.

Автор:  Akari [ 16 апр 2014, 09:42 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

Кстати если что то Z80 разбирал Кен Ширифф

http://www.righto.com/2013/11/the-z-80s ... ement.html
http://www.righto.com/2013/09/the-z-80- ... ow-it.html
http://www.righto.com/2013/09/understan ... -gate.html

Можно ему задать вопросы.

Автор:  org [ 16 апр 2014, 10:23 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

Чтобы однозначно сказать надо разбирать всю state logic. Кстати - чип вверх ногами у вас получается) В те времена логику и декодер инструкций было принято размещать вверху, а регистры и АЛУ внизу чипа)

Автор:  pfgx [ 16 апр 2014, 10:40 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

Ну а я чем занимаюсь? Я эту state logic и разбираю :)

Мне вообще показалось что регистры должны быть справа внизу, то есть кристалл "боком". Тогда нумерация шин и вся логика от УУ через декодер к регистрам и АЛУ идёт слева направо, все управляющие выводы тоже слева, адресные выходы справа, регистры расположены сверху вниз и декодер инструкций получается как бы от простых сверху к сложным снизу. GND внизу, +5 вверху.
Но воспринимать логику кристалла для меня оказалось проще именно так, "вверх ногами".

Автор:  pfgx [ 22 май 2014, 12:48 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

http://yadi.sk/d/pDm0-qI6QxwdW

// что есть в этом файле:
// регистр текущей инструкции, декодер инструкций, группировка инструкций, прочая логика декодера
// логика условных инструкций (переходы, возвраты, ldir/lddr)
// счётчик M-циклов и T-тактов (почти рабочий)
// управление коммутаторами внутренней шины данных
// входы INT и NMI, выход HALT (частично) TODO
// вход BUSRQ и выход BUSACK (частично) TODO
// выходы M1, REFRESH, MREQ, IORQ, RD, WR
// формирование сигналов управления АЛУ (частично)
// формирование сигналов управления блоком регистров: выбор регистров, управление буферами чтения-записи
// todo и ошибки

// чего нет в этом файле:
// регистров
// АЛУ, формирования флагов
// внутренних шин, коммутаторов на шинах
// внешних шин (адреса, данных)
// прочей управляющей логики (обмен регистров, префиксы, прерывания и т.п.)

Автор:  pfgx [ 27 май 2014, 09:39 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

В общем, для меня основная проблема на данный момент это реализация внутренних шин на Verilog. Шина данных состоит из четырёх частей, в каждой части есть свои драйвера, части между собой коммутируются транзисторами, то есть можно соединить в одну большую длинную шину. Как это описать?

Автор:  org [ 28 май 2014, 12:52 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

Если имеются ввиду pass-gate транзисторы, то иначе как tristate-логикой их не определить. Такие транзисторы это просто tristate-буферы.

Автор:  pfgx [ 28 май 2014, 17:17 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

Ага, только двунаправленные :) и ещё надо учесть сохранение заряда в проводниках когда шиной никто не управляет.

Автор:  org [ 28 май 2014, 20:04 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

Аа, если те которые соединяют шину с шиной, то это "tran":

Цитата:
The tran and rtran devices have terminal lists containing two bidirectional terminals.


А плавающую шину обычно подкрепляют bus keeper-ом)
http://en.wikipedia.org/wiki/Bus-holder

Обычно разработчики стараются избегать плавающей шины, чтобы не было undefined результатов.

Автор:  pfgx [ 28 май 2014, 20:22 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

Про tran читал, пробовал, но что-то мне не понравилось, не помню что.

В плавающей шине, хранящей предущее значение, как раз вся фишка 3-го и 5-го битов регистра флагов :)

Я сейчас обнаружил две вещи:
1. Все шины и регистры читаются-пишутся по уровню, а не по перепаду, при этом всё работает за счёт задержек сигналов в управляющей логике. Даже есть "линия задержки" на нескольких последовательно соединённых инверторах с последующим сложением с исходным сигналом. При описании этого "в лоб" на Verilog симулятор выдаёт полную чушь, а пробовать запускать такое в ПЛИС по-моему вообще бесполезно.
2. Все действия с шиной имеют какую-то систему, которую я пока не постиг, но, кажется, система хорошо переведётся на синхронную логику.

-- 28 май 2014, 20:32 --

Я боюсь что при описании "как есть" с использованием tran и плавающих/подкреплённых шин, в реальной ПЛИС, внутри которой нет конденсаторов, резисторов и z-состояний, это всё разложится не совсем корректно и вылезет куча гонок и иголок, которые всё испортят.

Автор:  pfgx [ 29 май 2014, 12:35 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

Вопрос знатокам. Какую задержку может дать транзистор или логический элемент в nMOS? Сколько нс сигнал будет идти из одного угла кристалла в другой через 5-10 логических элементов?

Автор:  org [ 29 май 2014, 15:17 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

Перерыл инет, нашёл задержку только для CMOS-инвертора: порядка 100 пикосекунд.

Автор:  pfgx [ 29 май 2014, 23:48 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

И то хорошо, хотя это же для современных...

Я к чему спрашиваю. При перепаде CLK 1->0 изменяется состояние счётчика циклов-тактов, всё это проходит через огромные комбинационные схемы, а выходы схем синхронизируются по CLK=1 (триггер по уровню). Так вот если за время нахождения CLK в 0 всё успеет устаканиться - замечательно, можно упрощать и схему, и Verilog. По идее оно так и должно быть, но я пока не уверен.

Автор:  org [ 31 май 2014, 11:56 ]
Заголовок сообщения:  Re: Срисовываю z80, есть вопрос

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

В NMOS очень сложно найти триггеры по фронту, например в 6502 есть один такой, который ловит фронт прерывания NMI, так вот там такая мешанина..)) Чтобы сказать точно - нужно вначале найти триггеры по фронту, они наверняка там есть в небольшом количестве.

Страница 1 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/