Сам по себе земляной слой не панацея, может и ухудшить ситуацию с шумами. Более важно грамотно развести землю, разделив на аналоговую и цифровую.
Вид для печати
Сам по себе земляной слой не панацея, может и ухудшить ситуацию с шумами. Более важно грамотно развести землю, разделив на аналоговую и цифровую.
Да, все верно. Так что ПЗУ я передвину вниз под z80 на лицевую сторону (вместе с отсутствующим сейчас блокировочным конденсатором), a микросхемы фмпака и регистра вообще будут на обратной стороне. Усилитель будет отдельно смонтирован, вдали от питалова и цифровых линий. Опыт учтен.
Да, и еще будет поправлена ошибка в оригинальной схеме фмпака от Jipe, которую нашел Павел (Ptero). Из-за неправильного подключения резистора на 68ом напряжение на 8 ноге усилителя не 12в, а 9в. Непорядок однако.
Вообще есть рекомендации общие по разводке печатных плат. Они много где написаны и по большому счету просты, но эффект приходит с опытом.
Заповеди вкратце:
0) блокировочные емкости по питанию вешай как можно ближе к ногам микросхем.
1) избегай тонких и длинных шин питания (и вообще избегай длинных дорожек, лучше лишнее переходное отверстие чем круг через всю плату)
2) избегай размещать входные цепи рядом с выходными
3) избегай длинных параллельных проводников (есть исключения, но в основном обоснованные технологически, например линейку микросхем памяти сложно по другому развести)
4) избегай мешать аналоговые цепи с цифровыми
5) избегай земляных и не только цепей которые при разводке имеют замкнутую форму (касается в первую очередь земляных полигонов и разводки разьемов относитель них)
6) в высокочастотных цепях избегай острых углов на дорожках (и вообще избегай углов, многие кады разводят плату из того чтобы дорожка была короче и делают глупую ее форму)
7) там где возможно делай дорожки максимально широкими, не меняя их ширины по дороге, см. пункт про углы (если иное не ограничено всякими СВЧ требованиями).
Руководствуясь этими простыми принципами удачно плату можно развести если не с первого то со второго раза. А по мере набора опыта - с первого.
Вот немного поупражнялся с разводкой. На плате теперь два 78L05 для раздельного питания аналоговой и цифровой части, земля тоже разделяется прямо с разъёма, аналоговые дорожки сделаны вдали от цифровых, предусмотрен кондер между 1 и 2 ногой усилителя для убивания помех (если таковые еще будут, по примеру текущей версии платы), поставлен блокировочный кондер на ПЗУ, переделана схема питания 78L05 чтобы обеспечить стабильные +12в на 8 ноге усилителя. Конечно не идеально, но всё же лучше чем было. Мнения?
Картинка в лучшем качестве находится внутри архива.
Землю и питание бы потолще. Непонятна полярность C5 и C6.
Остальное я толком не разглядывал :)
Пришли новые платки, собрал 2 штуки. Помех цифровых вообще не слышно! Играет очень качественно. Спасибо Тимуру, Павлу и ram_scan за хорошие советы по разводке. На фотке новая плата видна справа.
Если кому нужны собранные платы предыдущей версии (без z80, 4558 и YM2413 или с оными), обращайтесь - отдам чуть выше себестоимости. Имеются в наличии 2 штуки.
Выложите пожалуйста прошивку для ПЗУ этого модуля.
Прошивка плюс описание расширенного набора команд в BASICе:Вложение 55967
Вот тут все есть: https://github.com/RBSC/F4-FMPAC/archive/master.zip
Коммерческое использование не разрешается.
- - - Добавлено - - -
Это скорее всего от внешнего FMPAC (в виде карика), хотя именно этой прошивки я еще не видел. У меня другая прошивка для внешнего FMPAC. В нашем модуле мы используем прошивку от внутреннего FMPAC (позаимствована из японских 2+ машинок) по одной причине - внутренний деактивируется если вставляется картридж с FMPAC в слот.
Допаял сегодня схему F4 на платке FMPAC, но к сожалению разницы не вижу. Чтение из порта F4 даёт 255 (инвертированный нуль), хотя в эмуляторе MSX2+ машинки дают 128. Кто-нибудь собирал схему F4 для использования на Ямахах?
F4 это порт, у которого только старший бит авктивен.
Тоесть при прямом чтении он может иметь только два значения - 127 (7Fh) либо 255 (0FFh).
Код:Сама процедура чтения регистра #F4 находится в
базовой части ПЗУ MSX2+:
L017A: jp L146A ;Read #F4
L017D: jp L146E ;Write #F4
....
L146A: in a,(0F4h)
cpl ;либо nop
ret
L146E: cpl ;либо nop
out (0F4h),a
ret
В зависимости от того, в какое состояние
устанавливается бит 7 порта #F4 при включении
питания, в процедурах чтения и записи, либо
есть команда инверсии состояния регистра, либо
её нет.
Если бит 7 при включении питания сбрасывается
в 0, то команду cpl надо заменить на nop.
Камиль, в биосе, который вы адаптировали код именно такой, как у вас в примере. После включения питания из порта читается 255, в то же время в эмуляторе Сони 2+ выдаёт 128, а Панасоник 2+ выдает 127. Если запустить Ямаховские ПЗУ в эмуляторе, то выдаётся 127.
Как можно проверить работоспособность порта на реальной Ямахе? Насколько я понимаю если сделать программный ресет по defusr=0:a=usr(0) то при "теплом" старте заставка выводиться не будет. По крайней мере так в эмуляторе работает. У меня же на Ямахе заставка выводится, то есть порт не работает как надо. Все вроде собрано по схеме и должно работать...
1) Как я понял LOGO выдается при каждом включении питания и при каждом нажатии на RESET? Я правильно понял?
2) Проверьте что выдается по комадам:
OUT &HF4,0: PRINT INP(&HF4)
и
OUT &HF4,128: PRINT INP(&HF4)
и как сбрасывается комп по команде
DEF USR=0: PRINT USR(0)
Раз всегда читается 255, значит записи (либо чтения) в (из) порт(а) нет.
Хорошо схему проверю, но теперь уже завтра с утра.
Я вот провёл эксперимент на ночь глядя. Насадил отдельную платку регистра F4 (спасибо за неё, Камиль!), на штырьки нашего FMPAC модуля снизу, а потом этот бутерброд вставил в панельку z80 на Ямаховской плате. У вуаля - F4 заработал и теперь можно делать "теплый старт". Так что мелкая платка работает как надо, а то что у нас на FMPAC плате наворочено надо перепроверять. Надеюсь Камиль завтра посмотрит и скажет где мы накосячили.
Первое, что бросается в глаза, отсутствие сигнала /M1 на входе дешифратора порта F4, хотя у ЛА2 (74LS30) есть свободный вывод для его подключения.
А так вроде схема соответствует исходной рабочей.
Спасибо! За основу была взята ваша схема от 2011 года, там тоже M1 нет: http://cs623825.vk.me/v623825694/2fa7e/gJQJMM1r_20.jpg
Камиль, что посоветуете для диагностики неисправности? Может подсоединить M1 (скажите только на какую ногу 30й)? Или поменять HC30 на LS30?
Использовать /M1 рекомендуется, но похоже здесь это не причина неработоспособности схемы.
HC30 и LS30 по параметрам равнозначны в данном случае.
Я бы осцилографом посмотрел сигналы на ножках 1 и 13 микросхемы IC7 (74LS02) запустив вот такой код:
Должны быть видны импульсы записи и чтения в порт F4.Код:DI
CIKL: LD A,0
OUT (0F4h),A
IN A,(0F4H)
JP CIKL
И сигнал D7 соответственно проконтролировать.
Ок, спасибо. Подцеплю и проверю. А если там ничего нет, то где дальше искать? И что должно быть видно на D7? Я не силён в сигналах, так что не совсем понимаю как и что работает...
Если импульсов чтения и записи не увидишь, проверяй последовательно сигналы на входах дешифратора.
Синхронизируй осцилограф сигналом /WR с ножки процессора.
На линии D7 во время импульсов записи и чтения должен быть 0 (мы же в порт F4 пишем 0).
Мда, где тут продают "hat of shame"? Надену и буду носить с грустной физиономией... В общем оказалось что в новой версии платы после многочисленных оптимизаций маркировки посадочных мест микросхем 74LS74 и 74LS125 поменялись местами. В итоге 74 была на месте 125. Перепаял и все заработало. Порт выдаёт 127 и "теплый" ресет работает как надо. Всем кто купил или получил плату новой версии (где схема F4 регистра на нижней стороне) - если будете паять схему F4 - ставьте 74 на место 125, а 125 на место 74.
Это вы в орле "Smash" просто раньше времени сделали. Вот посадочное место от маркировки отдельно и таскается.
Дело в том, что все надписи я делаю сам, мне не нравится как Орёл их делает и куда ставит. Вот видимо перетаскивал микросхемы для оптимальной разводки авторутером, а надпись забыл перетащить. Сейчас делаю новую версию этой платы с подключением M1 к 6 ноге LS30. Мне также рекомендовал уважаемый Maxis поставить HCT125 вместо LS125 и уменьшить подтягивающий на землю резюк до 220 ом.
У орла как раз есть инструмент "smash", который делает именно то что вы сделали вручную, он отцепляет надписи от посадочного места детали чтобы надписи можно было врукопашную расставить красиво. Но будучи отцеплеными они за tPlace уже не таскаются, поэтому ошибиться можно на раз два. Я тоже как-то раз таким образом обосрамился =)
Вообще при автоматизированном проектировании лучше всегда полагаться на автоматику, за исключением случаев когда "хочется странного". И разбираться уже в том что она наделала, или обо что споткнулась. Резко снижает количество бестолковых человеческих ошибок, которые казалось бы и сделать нельзя, ан нет, можно =)
"Тянучки" хоть к плюсу хоть к земле низкого сопротивления чреваты великими геморроями. За 220 ом мне чисто умозрительно стремно, даже не глядя где оно установлено.
Взялся за обновленно-исправленную версию платы. Будет поставлена более распространённая ПЗУ 27с256 с возможностью выбора прошивки (внутренняя или внешняя) одним джампером, попробую впихнуть ОУ в мелком корпусе как опцию. Пока есть трудности авторазводки платы - 99.5% разводит, но один проводник висит в воздухе. Буду двигать пока не добьюсь адекватной разводки...
Если места на плате хватит попробуйте пихать ОУ не в SOIC а в DIP8 кузове, что-нть в духе широкораспространенного LM301. У него между ног больше трасс протащить можно, поэтому есть опасность что автоматом разведется.
Так там как раз в DIP8 ОУ и стоит. Я вот думал поставить опционально в SOIC корпусе, так как их можно выпаять из старой техники. Но при текущей цене наверное нет смысла...
- - - Добавлено - - -
Плата версии 1.3 готова к проверке и последующему изготовлению. Я буду заказывать 20 штук. Если будут желающие приобрести плату, обращайтесь в личку.
Обнаружился интересный глюк. Если стоит SFG в боковом слоте и FMPAC с биосом внутри машинки, то по "call music" ничего не происходит. После воссоздания конфигурации в эмуляторе и прохода по коду дебаггером выяснилось, что FMPAC биос первым получает контроль при вызове, проверяет буфер на строку "fmpac", но неправильно возвращает контроль системе если строка не найдена. В итоге адрес строки вызова теряется и не доходит до биоса SFG, который сидит в более старшем слоте. Попробую пропатчить биос FMPAC чтобы возвращал управление корректно. Посмотрим что получится.
- - - Добавлено - - -
Пропатчил внутренний биос FMPAC, теперь SFG биос запускается нормально. Проверено в эмуляторе.
Кстати по-хорошему обработку "_fmpac" можно было вообще убрать так как этот вызов рассчитан на полный биос и при его вызове машина просто повиснет или ребутнётся с нашим 16кб биосом. В эмуляторе в ресет уходит.
А раз уж фмпак все едино верхом сажается может есть и техническая возможность с ним вместе и "полный биос" усадить ?
Смысла нет. Биосу нужна SRAM чтобы с ней работать, а на плате ничего такого нет. Полный биос при желании будет запускаться на нашей плате и даже играть демо музыку, а в остальном будет совершенно бесполезен.
В нашем новом карике будет полный биос FMPAC, а также реализация записи в SRAM. Биос будет даже переведён для нас на английский язык.
После обсуждения на форуме MSX.ORG были высказаны предположения, что патч может помешать работе некоторых программ на бейсике, которые используют вызов "call music". Так что вместо патча лучше пользоваться командой call musica чтобы вызвать внутреннюю программу SFG, а сall music оставить для инициализации чипа MSX Music.
Команда call musica проверена и реально работает на машинке с SFG модулем и FMPAC.
Наша плата была переработана под 3 типа ПЗУ: 27c128, 27c256 и 27c512. Причём если использовать 27c256, то можно будет выбирать внутреннюю или внешнюю прошивку FMPAC, которые записанны в ПЗУ. И можно будет использовать полную версию ПЗУ FMPAC с 27с512 чипом. Я закажу как минимум 20 платок после проверки платы на ошибки.
Приветствую. А не рассматривали вариант использования процессора не в DIP40 корпусе, а в компактном, PLCC44 например?
Ага, была такая мысль летом прошлого года. :)
http://cs623825.vk.me/v623825694/344c1/0H3PGfRDZY0.jpg
Но смысла эта затея не имеет. Проще поставить кроватку DIP40 для стандартного проца. Кстати новые платки пришли, вчера спаял один новый модуль, сегодня буду проверять и отпишусь.
- - - Добавлено - - -
Собрал и протестировал 2 платки полностью. Все работает, по крайней мере с 27с128 ПЗУ (другие пока не приехали). Кому надо - обращайтес в личку. Цена: 4 евро + пересылка.
Замечание - опциональные конденсаторы лучше ставить по 300-500пФ. Если больше, то будет резать высокие частоты. Ну а кого звук и так устроит, можно и не ставить.
http://cs631119.vk.me/v631119694/1f126/maQYsQF2kXQ.jpg
Список элементов:
- резистор 22 кОм 0805 - 4 шт.
- резистор 2.2 кОм 0805 - 5 шт.
- резистор 174 кОм 0805 - 1 шт.
- резистор 100 Ом 0805 - 2 шт.
- резистор 68 Ом 0805 - 2 шт.
- резистор 1 кОм 0805 - 1 шт. (для порта F4)
- резистор 4.7 кОм 0805 - 1 шт. (для порта F4)
- резистор 10 кОм 0805 - 1 шт.
- конденсатор полярный 10 мкФ 16в - 1 шт. (тип A/B)
- конденсатор полярный 1 мкФ 16в - 4 шт. (тип A/B)
- конденсатор полярный 2.2 мкФ 16в - 2 шт. (тип A/B)
- конденсатор полярный 47 мкФ 16в - 2 шт. (тип C/D)
- конденсатор керамический 100 нФ 0805 - 3 шт.
- конденсатор керамический 22 пФ 0805 - 2 шт.
- конденсатор керамический 300-500 пФ 0805 - 2 шт. (опционально)
- диод 1N4148 SMD - 1 шт. (для порта F4)
- микросхема 74LS30 SOP - 1 шт.
- микросхема 74LS04 SOP - 1 шт.
- микросхема 74LS30 SOP - 1 шт. (для порта F4)
- микросхема 74LS125 SOP - 1 шт. (для порта F4)
- микросхема 74LS74 SOP - 1 шт. (для порта F4)
- микросхема 74LS02 SOP - 1 шт. (для порта F4)
- микросхема YM2413 DIP - 1 шт.
- микросхема LM4558 DIP или аналог - 1 шт.
- микросхема ПЗУ 27с128 или 27с256 или 27с512 PLCC32 - 1 шт.
- микросхема процессора Z80 (Z84) - 1 шт.
- кроватки DIP40, DIP8, DIP18, PLCC32 - по 1 шт.
- регулятор напряжения 78L05 - 2 шт.
- гребёнка джамперная 20 пинов - 2 шт.
- джамперы (наклонные) 3 пина - 2 шт.
- джамперы (наклонные) 2 пина - 2 шт.
Можно использовать также 74HC серию вместо 74LS. При использовании 27с256 ПЗУ джампером можно выбрать первую или вторую 16кб часть образа. При использовании 27с512 сигнал OE с платы нужно подсоединить к RD вместо CS1.