![]() |
Платы Rev.0 мне прислали 6 штук (5 проверены ими на стенде и одна нет). Но я не торопился их продавать, т. к. там могли быть ошибки. Так и оказалось. Я буду делать Rev.A когда закончу с отладкой. Там ошибок должно быть значительно меньше. Могу и эти платы продать если интерес есть. Цена - 15$ за плату плюс пересылка. Непроверенную же вообще только по цене пересылки могу отправить - я за нее ничего не платил - прислали довеском. Так что если надо, создам тему на Барахолке.
|
Итак, закончил с магнитофонным входом/выходом. Выход работает без проблем. Со входом пришлось повозиться. Изначально я использовал компаратор типа LM339, но заставить его правильно работать не удалось. Так что я заехал сегодня в магазин радиодеталей и купил там LM324 в DIP корпусе. Накидал на макетке новую схему с этим усилком и она заработала. Придется испытывать комп с подключенной макеткой. В Rev.A буду включать новую схему.
На завтра планы распаять видео выход. Дальше двигаться пока не могу - заказанные детали пока не пришли. Надеюсь придут в понедельник. Тогда же можно будет паять и ПЛИС. |
1 Attachment(s)
А кто-нибудь может мне объяснить, почему схема с компаратором не работает (см. фотку)? На вход подается сигнал с выхода на наушники и его амплитуда от -0.5В до +0.5В. После конденсатора становится примерно от -0.1В до +0.9В. На выходе же компаратора всегда +3.3В. Пробовал увеличивать/уменьшать громкость сигнала - ничего не меняется. Делитель напряжения создает правильное референсное напряжение +0.2В на ноге 3 компаратора (проверено), так что он по идее должен переключаться при пересечении входным сигналом этого значения. Но этого не происходит. Что я не учел?
|
У тебя униполярное питание компаратора и он не rail-to-rail. То напряжение, которое ты пытаешься им выцепить, слишком близко к его Vss. Смести напряжение на обоих входах компаратора одинаковыми делителями напополам: в районе 0.5Vdd все будет точно ок. Или попробуй для начала просто поднять напряжение на "-" до 0.4В, но тогда у тебя будет результат немного несимметричный.
P.S. вот моя схема для C64, которая делает ровно то же самое и работает ;) http://sensi.org/~svo/b/c64tape-sch.pdf |
Понятно. Неудачно выбрал компаратор значит. Я во время наладки пробовал менять 750 Ом резистор в делителе на 2к, что дает около +0.5В. Все равно не заработало (громкостью сигнала, конечно, тоже играл).
Твоя схема с обратной связью и она использует по сути тот же LM324, который я использовал в моем втором варианте и я тоже подключил его с обратной связью. При этом я пробовал по этой схеме включать компаратор, и он заработал, но при выдаче 1 на выходе он давал осциляцию. В общем остановсь на схеме с LM324 тогда и не буду больше мучать компаратор. Тем более вариант с обратной связью даже лучше - не надо дополнительно инвертировать сигнал в ПЛИС, так как он уже поступает инвертированный. |
Просто с гистерезисом. В моей схеме ОУ, а не компаратор. У тебя компаратор совершенно нормальный. Просто тебе надо сместить входной и эталонный сигналы повыше. На странице 8 даташита от lmv331 дана схема компаратора с гистерезисом.
|
Сделал с гистерезисом (неинвертирующим) только что - только высокий сигнал на выходе. Похоже надо было другой компаратор выбирать. Ну и ладно, у меня есть рабочая схема на LM324 на макетке ее и поставлю в Rev.А, а пока с макетки отлаживать магнитофонный вход буду, благо там ничего сложного нет.
|
Не могу представить себе, чем плох этот компаратор. Даташит говорит, что Input common mode voltage range includes ground. Может быть все-таки сделай два одинаковых делителя на ножках "+" и "-" перед тем, как его выбрасывать?
|
1 Attachment(s)
Делитель не помог. Но знаешь что помогло? Просто в начальной схеме (но с делителем на +0.5В) подтянуть ногу 1 (IN+) к земле резистором 27К :v2_dizzy_fisher: Вот картинка. Почему только так заработало не имею понятия. Посмотрим насколько надежно читать будет. :)
|
Не знаю. Наверное потому что без подтяжки у сигнала на "+" нету привязки к нулю вообще никакой, DC составляющая уплывает куда хочет.
|
В общем впаял резистор 100К на плате между землей и ногой 1 компаратора. Теперь работает правильно. Также сегодня пришел регулятор 1.2В. Его тоже припаял и проверил - теперь питание компьютера полностью закончено.
Пытался собрать видеовыход, но обнаружил, что случайно заказал один из чипов в неправильном корпусе (SOIC-14 вместо TSSOP-14), так что придется подождать пока получу правильный чип - тогда смогу видеовыход закончить. Должен на этой неделе придти. |
Пришла сегодня посылка, а там вместо моего заказа (10шт. 74НС04 общей суммой 1.65$ включая доставку :D ) 12 штук светодиодных ламп (на 12В по 1.2W). Я им позвонил и они сказали, что ошиблись и пообещали выслать повторно, но т.к. они есть только на их складе в Великобритании, то займет еще 8 дней, чтобы они до меня дошли. А лампы сказали оставить себе - а они между прочим по цене $20 каждая :v2_dizzy_christmas: Так что с одной стороны обидно, что в выходные не получится закончить компьютер, а с другой стороны подумываю себе светильник на этих лампах сделать у рабочего места, раз так на халяву привалили :)
|
Пришла в пятницу 74HC04. Промучался, но так и не смог раскачать кристал. Менял конденсаторы в схеме на 22pF и 33pF, играл с резистором - безуспешно. Не исключено, что в процессе экспериментов я вообще сжог кристал. :) Возможно, что надо было использовать 74HCU04 (небуферированная). Но ждать еще 1.5 недели я не хочу. Странно - я использовал схему генератора из даташита AD725.
У меня остаются несколько свободных пинов на ПЛИС, так что я задействую один из них для генерации нужной частоты для формирования несущей PAL сигнала. Но вместо требуемых 17.734475MHz (делится на 4 в чипе AD725) я смогу сделать 17.7734375MHz. Это на 0.22% больше, но я не думаю, что это критично. Посмотрим. |
Santechnik, у меня работала стабильно вот такая схема на 25МГц, может пригодится. Вообще для PAL-а в ПЛИС можно фазовым аккумулятором сделать достаточно приемлемую частоту.
http://i.imgur.com/bBQu2.png |
PLL как раз и дает эти 17.7734375MHz. Дело в том, что я уже использую оба PLL, так что я ограничен с умножителями. Если все же не получится, то тогда буду думать и пробовать разные схемы. Может быть 74LS624 задействую.
|
Я про фазовый аккумулятор, а не PLL.
|
А это как? :rolleyes_std:
|
Это способ получать частоты без PLL. Может быть тут неплохо объяснено:
http://en.wikipedia.org/wiki/Numeric...led_oscillator Пример реализации у меня в clockster.v: http://code.google.com/p/vector06cc/...clockster.v#57 Калькулятор значений: http://code.google.com/p/vector06cc/.../tools/pal4.py |
1 Attachment(s)
Очень интересно. Спасибо, svofski! Я в Excel сегодня поигрался с этим и получилось, что можно очень точно частоту подобрать. Проблема однако со скважностью - чем меньше разница между начальной и конечной частотой, тем хуже картинка. Я смоделировал расчет для 50МГц и 175МГц (см. картинку). На мой взгляд первый вариант неприемлем для несущей. Наверняка будут искажения цвета и мерцания краев точек. Второй вариант тоже не идеален, но искажения скважности малозаметны и он скорее всего подойдет для моих целей, если мой ПЛИС потянет 175МГц. Буду иметь его ввиду.
Ну и апдейт - припаял ПЛИС и обвязку (замучался паять 25 конденсаторов :cool_std: ). ПЛИС прошивается. Пока проверил звук и VGA - все работает. Сегодня буду переносить проект по кускам - заодно и "причешу" его, расставлю комментарии и соптимизирую код. |
175 конечно гораздо лучше. ПЛИС надо тянуть тут совсем немного, только один здоровенный аккумулятор и сумматор. Так что есть шансы, что можно и побыстрее. На DE1 у меня на 300 работает и вроде довольна.
|
1 Attachment(s)
Запустил ТВ-выходы. Пока просто тестовый прямоугольник вывожу случайного размера, но с переключением его цвета имеющимися переключателями на плате. Работают и "тюльпан", и S-Video. На фотке - телевизор подключенный по S-Video. Качество картинки с S-Video лучше - на "тюльпане" все же заметны легкие разводы на черном фоне.
В качестве тактовой частоты использую сигнал, полученный методом, предложенным svofski. Исходная частота - 216.67МГц (50 х 13 / 3). Прямоугольник справа и слева немного размыт - видимо результат неравномерности скважности при таком способе получения сигнала. В принципе я могу увеличить частоту до 325МГц (50 х 13 / 2). Это должно еще улучшить картинку. Какие последствия этого могут быть? Нагрев, нестабильность? Неприятным сюрпризом стала невозможность каскадирования PLL в Cyclone 2. В Rev.A надо будет обдумать применение Cyclone 3 и наверное все же наладить генератор частоты 17.734475МГц для несущей ТВ сигнала. Хотя и так качество ТВ картинки вполне неплохое (но все же не идеальное). Посмотрим в реальных приложениях. Видеоконтроллер я пожалуй перепишу, так как это проще, чем адаптировать имеющийся под работу с разными видеовыходами. |
Круто!
Если у тебя цвет получается похожим на ожидаемый, мудрить с частотой ни к чему: то, что телевизор за не цепляется, говорит о том, что она такая как надо. Про размытость трудно чего-то сказать. Отклонения в цветовой поднесущей не должны бы влиять на яркостную составляющую. Шашечки на контрастных переходах в композите будут всегда, ref: dot crawl. Если сделаешь выход с раздельными luma y chroma, шашечки уйдут. |
Извини, я не очень внятно написал вчера - уже спать хотелось. В общем так как Cyclone II, как выяснилось, не поддерживает каскадирование PLL (а я на это рассчитывал), то ТВ pixel clock (10.5МГц) тоже пришлось делать тем же способом. Второй PLL у меня естественно оказался не подключен к clock на схеме. И там скорее не яркостная составляющая, а иногда сдвинутые пиксели причина замыленности краев справа и слева.
Я могу сделать 10.48МГц на имеющемся PLL ((50 x 13 / 31) / 2) и может быть попробую этот вариант. Цветовую несущую тоже тогда надо будет скорректировать? Или все же лучше разгонять ПЛИС до 325МГц? |
Я не знаю, какие у тебя в принципе клоки в системе, поэтому вряд ли могу чего-то посоветовать.
В Векторе по сути только один системный клок, он же пиксель-клок, поэтому таких проблем нет. На деле получается, что нужен отдельный клок для АЫ и для PAL-а. По поводу замыленности краев. Телевизор-то не знает ничего про пиксели, с его точки зрения это просто видеосигнал. Очень вероятно, что на яркостной составляющей стоит фильтр, который не пропускает верхние частоты, которые накладываются на цветовую полосу: это как раз замыленность краев даст. А может быть просто запустить ему заново автонастройку, чтобы его пиксельный ФАПЧ попробовал привязать картинку заново к своим внутренним пикселям? |
1 Attachment(s)
Проект был мной приостановлен на пару месяцев, но я обязательно планирую продолжить в ближайшее время. Сейчас я занят оборудованием постоянного рабочего места для хобби, так как до этого я располагался за столом без ящиков и очень быстро перестал находить вещи под слоем хлама. :rolleyes:
Но сегодня я получил посылку от GARNIZON с настоящей клавой "Агат", платой параллельного интерфейса и разъемами к ней, за что я ему очень благодарен :v2_thumb: Так что теперь появился стимул, чтобы быстрее закончить с рабочим место и продолжить проект :v2_dizzy_army: |
После всех задержек я вернулся к проекту в своей новой лаборатории. Правда пока на него у меня не очень много времени, ввиду того что у нас с женой сейчас другой совместный проект, который называется Стефани (Stephanie) и ей сейчас три с половиной недели :v2_dizzy_kids: Так что пока буду продолжать эпизодически по мере возможности. :v2_dizzy_sleep2:
Итак, процессор установлен и работает. Компьютер загружается и работает на VGA выход (TV пока не проверил - надо принести телек с кухни). PS2 клава работает. Планы на ближайшее время - запустить "дисковод" 140К, чтобы загрузить тесты. А также припаять разъем DIN7 и подключить родную клавиатуру. Ну и доделать TV выход, конечно. По какой-то причине у меня не получается записывать прошивки напрямую в ПЛИС и приходится каждый раз прошивать ROM, что не очень хорошо. Надо будет посмотреть где я напортачил тоже. |
Santechnik, поздравляю с новым отличным проектом, желаю, чтобы он развивался долго и успешно :)
|
Я завершил работу над Rev.0 и приступил к работам над Rev.A. :v2_cool: Там будет значительное количество изменений и новых идей. Я надеюсь, что Rev.A будет достаточно отработана, чтобы уже можно было ее повторять. Я выложил результаты работ над Rev.0 и планы по Rev.A в своем блоге, так что тем, кому интересны детали, вот ссылка:
http://electronicsfun.net/RU/archives/739 Rev.0 сейчас запускается и работает с оригинальной клавиатурой, и всеми видео-выходами (VGA, S-Video, RCA). Так же я сделал простой калькулятор для генерации тактовых сигналов в ПЛИС с помощью фазового аккумулятора. Этот метод, подсказанный svofski, прекрасно работает в Rev.0, но его расчет вручную не очень удобен, так что я выложил калькулятор здесь: http://electronicsfun.net/RU/archives/699 |
Для тех кто не дочитал до конца статью в моем блоге, поясню, что Rev.A будет не просто репликой "Агат-7", но и репликой Apple, Commodore, Atari и пр. компов с процессорами семейства 6502. По возможности я постарался учесть нюансы этих компьютеров в этой версии, чтобы избежать проблем при их дальнейшей имплементации на этой плате. Например, я добавил возможность перевода адресной шины процесссора в 3-тье состояние, чтобы можно было реализовать ПДП с картами расширения или добиться совместимости с процессором 6510 из Commodore-64, который отличается от 6502 возможностью переводить шины в третье состояние (ну и 6-тью портами ввода/вывода, но это решается в ПЛИС).
Я почти закончил со схемой Rev.A и уже собирался начать разводить плату, но тут понял, что я упустил один важный момент - каждый компьютер имеет свою собственную палитру цветов и я уже не отделаюсь 3-х битным RGB плюс сигнал яркости, как реализовано сейчас. Почитав статьи о Commodore и Atari, я понял, что для более или менее аккуратной цветопередачи надо делать как минимум 15-битный RGB. Это означает, что потребуется на 11 ног ПЛИС больше, чем сейчас. Фактически это не оставляет больше никаких запасных ног если потребуется, например, дополнительно вывести сигнал на плату расширения какого-либо из имплементируемых компьютеров. Большинство из этих компьютеров используют YPbPr цветовое пространство и варианты их ограничены. Я посчитал, что будет достаточно 9 ног ПЛИС, чтобы вывести все возможные варианты для любого из компьютеров. Это всего на 5 ног больше чем сейчас и мы все еще имеем 6 ног в запасе. Но тут возникает проблема преобразования этого сигнала в RGB для вывода на монитор. Перебрав несколько вариантов я пока остановился на следующем варианте - установить на плате вторую ПЛИС Cyclone 2, но с 144 ногами. Благодаря тому, что она содержит в себе 13 умножителей 18х18 она сможет эффективно налету пересчитывать цветовое пространство в RGB используя таблицы, загруженные во встроенную память, либо просто напрямую использовать заранее подготовленные коэффициенты конвертации, если цветов не очень много и память позволит их разместить. Использование именно этой модели позволит применить уже существующую схему питания. Кроме того, эту ПЛИС можно будет программировать с помощью микроконтроллера STM32 как и основную ПЛИС. Дополнительным преимуществом такого решения будет возможность загрузки различных вариантов палитр под любой компьютер и их обновление с SD-карты также как и прошивки основной ПЛИС. Благодаря достаточному количеству ног, можно будет реализовать 24-битный RGB выход, добившись максимальной точности отображения оригинальных цветов имплементируемых компьютеров. Конечно, некоторые цвета могут выпасть из RGB палитры, но при 24-битном выходе близкий к нему цвет замены не будет сильно отличаться. Проект удорожается лишь на стоимость ПЛИС ($13) и резисторы для ЦАП. Не исключено, что дальнейшая оптимизация и определенность с имплементируемыми компьютерами приведет к тому, что Rev.B будет содержать этот модуль в себе и необходимость во второй ПЛИС отпадет, но пока я оставил бы некоторый запас на расширение. А теперь собственно вопрос :v2_dizzy_snowball: - есть ли какие-либо более изящные и/или дешевые способы решения этой задачи? Если нет, то завтра добавлю вторую ПЛИС в схему и начну разводку. |
с C64 придётся очень долго мучаться я думаю... там эмуляция видеоконтроллера - очень геморное дело... слишком много недокументированных особенностей, на которые опирается большинство интересного софта.
|
Вполне возможно. Я не разбирался пока. Но вроде попадались мне в сети проекты C64 на ПЛИС. Но главное, чтобы железо имело возможность запустить Commodore, а там может кто-то другой сделает, когда мой девайс наконец будет готов. Идея как раз и состоит в том, чтобы сделать универсальное устройство, вложить пару-тройку компов туда для начала, а дальше пополнять коллекцию с помощью других энтузиастов, если оно начнет набирать популярность.
Я тут нашел интересный чип MachXO2 от Lattice. По сути это ПЛИС, но с интересными возможностями. Модель 640HC питается от 3.3В, не требует внешнего конфигуратора, выпускается в корпусе 100-LQFP (меньше нет, но всяко лучше чем 144) и имеет на борту быструю память (2 блока по 1024 х 9 бит со скоростью обмена до 120МГц). Стоит такой чип всего $6. Этой памяти достаточно, чтобы хранить таблицу для преобразования 1024 цветов в 18-битный RGB. То есть этого хватит на палитры от многих компьютеров. Но даже если этого будет мало, то девайс позволяет при старте загружать свою конфигурацию, вместо прошитой, по SPI или I2C для чего можно задействовать все тот же установленный на плате STM32. Причем эта конфигурация не прошивается во Flash чипа (хотя можно и прошить при желании опять таки с SD карты, например), так что при следующем запуске загрузятся прошитые палитры если их достаточно для запускаемого на данный момент компьютера. Мне кажется это решение оптимально - схема усложняется незначительно, остаются запасные пины на ПЛИС, удорожание незначительно, но при этом появляется возможность вывода 18-битного цвета (262144 цветов). |
Сегодня закончил разводить плату и отправил в производство. Не утерпел и доплатил 15$ за пересылку DHL, так что видимо на следующей неделе получу вместо трех недель обычной почтой из Китая. Все детали тоже заказал. По трекингу они должны придти в эту пятницу. Так что скоро начну сборку Rev.A. Начну с блока питания и обвязки микроконтроллера, чтобы убедиться в правильной его работе с LCD дисплеем, тач-скрин и SD картой. Буду держать в курсе.
|
3 Attachment(s)
Платы сегодня дошли. :v2_dizzy_roll: Я правильно сделал, что заказал доставку DHL. Платы были в производстве неделю и в среду 19/06/13 были отправлены. А уже сегодня после обеда они были у меня. Прислали 6 плат, но одна не тестирована. Напортачили правда со слоем шелкографии - сделали какой-то круг, которого нет в моих Gerber файлах и который закрывает надписи компонентов, так что придется паять, сверяясь со схемой. Буду писать им - может быть на следующий раз скидку получу за это. Вот фотки плат. В остальном качеством доволен.
Сегодня уже спаял и проверил часть блока питания. Пришлось остановиться пока, так как надо подпилить немного радиатор для LM1117-5.0 - ошибся с размером немного - а уже поздно шуметь дремелем. Завтра с утра добью питание и займусь микроконтроллером. |
1 Attachment(s)
Блок питания собран и работает за исключением его части, которая производит -12В и -5В. Ошибся с номиналом индуктора - заказал 150nH вместо 150uH. Посадочное место сделал тоже маленькое, так что придется подумать как воткнуть туда правильный индуктор. Но в ближайшее время это все равно не понадобится - оба напряжения нужны только для оригинальных плат расширения, а это в моих планах пока на последнем месте.
Микроконтроллер распаян и работает. Была сделана лишь небольшая ошибка, которая легко исправлена - забыл подать питание на Vref. LCD дисплей подключен и работает. Вот фотка. Мой дисплей выполнен на чипе SSD1289 и его нет в стандартных библиотеках. Но я нашел библиотеку для этого чипа к контроллеру STM32F4 и переделал ее под свой STM32F2. Здесь без ошибки тоже не обошлось. :v2_rolley При разводке платы не учел, что пины дисплея выведены назад и соответственно зеркальны. Таким образом, надо было на плате поменять местами первый и второй ряд контактов, чтобы можно было использовать разъемы. Решил проблему припаяв шлейф прямо к плате. Конструкция не идеальна, но надеюсь, что выдержит отладку. На всякий случай пролью места соединения термоклеем. Теперь в планах настроить тачскрин и прикрутить к дисплею GUI. Тогда, после этого, можно будет распаивать узел SD карты и отлаживать его с удобством. |
1 Attachment(s)
Сегодня заработала SD карта и FAT. :v2_dizzy_roll: Пришлось повозиться, чтобы сделать "по уму" - карта подключена по 4-х битному интерфейсу SDIO и обменивается с микроконтроллером при помощи DMA с частотой 20MHz. Такое решение позволяет осуществлять обмен со скоростью близкой к максимальной и может достигать 10Мбайт/с. Естественно существуют потери на команды, запросы ожидания карты памяти и файловую систему, но тем не менее реальная скорость обмена как минимум втрое выше, чем была в Rev.0 проекта.
Отдельной проблемой была работа с картами памяти размером более 4Гб, которая также успешно решена. Вот фотка списка файлов 8Гб карты памяти, выводимого на LCD дисплей устройства. Поддержка длинных имен отключена для экономии памяти. Возможно, в дальнейшем эта функция будет подключена, но пока я в ней не вижу смысла - размер LCD экрана все равно не очень подходит для этого. Тачскрин я пока не прикрутил к контроллеру. Так что возможно следующим шагом я займусь этим. А также часами реального времени (на плате я установил соответствующий кварц и батарейку). |
вот за что сам люблю STM - это за очень мощную системную библиотеку.. Любая периферия прикручивается на раз-два :)
|
Абсолютно согласен. Правда библиотеки глючные и допиливать приходится прилично. Но это все равно, конечно, проще чем с нуля писать. И еще камешки напичканы плюшками прилично за небольшие деньги. Например, STM32F205VG, который я использую в проекте, стоит 13$, но при этом там 1Мег флэш, 128К памяти, скорость 120МГц, есть DMA, SDIO, 3xSPI, 3xI2C, часы, USB OTG и куча других вкусностей.
|
Сегодня распаял FLASH-память и интерфейс программирования ПЛИС. Прикрутил к контроллеру библиотеку и опробовал запись - чтение - стирание памяти. Все работает отлично.
Еще распаял USB интерфейс, но пока его отладку оставлю на будущее - это необязательная фича. Пожалуй пора распаивать и проверять интерфейсы клавиатуры, магнитофона, видео и пр. |
Quote:
|
1 Attachment(s)
Давненько я не делал апдейт. Итак, за этот месяц я припаял большинство компонентов, проверил работу звука, PS2 клавиатуры и убедился в работе нового узла видео-выхода.
ПЛИС Lattice, которую я использовал для хранения палитр, требует достаточно дорогого программатора. Их недорогая development board не имеет выхода JTAG, несмотря на наличие програматора на плате. Зато на этой плате есть удобное поле для пайки своих компонентов, так что я использовал его для установки разъема и джамперов. Теперь эта плата в зависимости от положения джамперов программирует внешний или внутренний чип. Плата на фотке справа. Я пробовал поиграться с выводом разных цветов через эту ПЛИС и результат весьма положительный - проблем с выводом различных палитр для Commodore и пр. быть не должно. Вот фотка проекта на сегодня. Возникла проблема с переделкой проекта под SDRAM (если помните, то я заменил SRAM на SDRAM в Rev.A). С ходу заставить работать компьютер не удалось, так что я перенес проект обратно на DE1, где и завершил работу над SDRAM контроллером. Сейчас компьютер работает на DE1 с использованием SDRAM вместо SRAM, так что следующим шагом я планирую перенос его обратно на плату Rev.A для дальнейшей работы. Надо будет еще настроить работу "дисководов" и проверить вход/выход на ленту. |
| All times are GMT +4. The time now is 01:06. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.