Просмотр полной версии : Мучаюсь с разводкой новой платы...
ILoveSpeccy
09.07.2007, 22:11
Вот уже больше недели пытаюсь развести новую плату для моего спека :v2_conf2:
Так как плата изначально планируется легкой для повторения
(односторонняя, с N-ным количеством перемычек :))
меня тревожит длина проводников.
1. Были ли у кого нибудь проблемы со стабильностью из-за их длины
или неправильного расположения???
2. Имеет ли смысл отделять ZX-BUS от процессора буферами (74HCT245)???
Black_Cat
09.07.2007, 23:01
Вот уже больше недели пытаюсь развести новую плату для моего спека :v2_conf2:
Так как плата изначально планируется легкой для повторения (односторонняя, с N-ным количеством перемычек :))Делай лучше не односторонку, а двусторонку со сплошным слоем. Травить сплошной слой не надо (т.к. есть проблемы с точностью совпадения), а после сверловки раззенковать так, чтоб вокруг отверстия был снят проводящий слой на достаточный радиус (кроме GND, их как раз нужно будет припаять).
меня тревожит длина проводников.
1. Были ли у кого нибудь проблемы со стабильностью из-за их длины
или неправильного расположения???"У вас несчастные случаи на стройке были? - Нет.. - Будут" :)
На частотах ниже 30MHz гонки не очень сказываются, да и плата у тебя не такая уж и большая чтоб о фазовых набегах заботиться, больше проблем может быть от разводки питания и наводок на линии. Решаются эти проблемы одним махом - как указано выше - сплошным слоем земли.
2. Имеет ли смысл отделять ZX-BUS от процессора буферами (74HCT245)??? Теоретически - да, вопрос в том на каких частотах у тебя всё это будет работать и сколько ты туда контроллеров навешивать собрался. Если делать не по уму, и не предвидится установка CPU на 20 MHz (c его последующим разгоном) и слотов будет только три, то у 8 MHz CPU может и хватит мощности всё это прокачать. В KAY'e для лучшей прокачки шины ставили более быстрый 10 MHz CPU на меньшую частоту 7MHz. Но если в будущем захочешь поэкспериментировать с разгоном до 21-28 MHz, то имхо лучше всёж буферировать.
А если глобально и по уму, то делать надо не мамку, а Fatherboard с ножевым печатным разъёмом (как ISA), а буфера ставить на кроссплату в которую будет втыкаться Fatherboard. Такое решение позволяет использовать плату и как самостоятельный компьютер а-ля оригинальный Спек, и в РС конструктиве для установки в стандартный РС корпус (см.: Единый ZX конструктив (http://www.zx.pk.ru/showthread.php?t=4404/) ).
KingOfEvil
09.07.2007, 23:44
Вот уже больше недели пытаюсь развести новую плату для моего спека
Так как плата изначально планируется легкой для повторения
(односторонняя, с N-ным количеством перемычек )
Не надо заниматься геморроем, делай нормальную двухслойку с металлизацией отверстий. Закажешь на заводе и все о.к. Производство двусхлоек сейчас стоит недорого. Поверь, что мучения с утюгом плюс потраченное время и нервы во время настройки такого чуда обойдутся дороже.
1. Были ли у кого нибудь проблемы со стабильностью из-за их длины
или неправильного расположения???
У меня не было, но я сразу нормально без гемора делал. Длину дорожек отслеживал в основном визуально, еще на этапе расположения элементов. При трассировке контролировал наиболее чувствительные цепи.
А если глобально и по уму, то делать надо не мамку, а Fatherboard с ножевым печатным разъёмом (как ISA), а буфера ставить на кроссплату в которую будет втыкаться Fatherboard. Такое решение позволяет использовать плату и как самостоятельный компьютер а-ля оригинальный Спек, и в РС конструктиве для установки в стандартный РС корпус
Бугага, мы сунем одну плату в другую, а в другую - еще кучу и будет новогодняя елка c навешанными игрушками и гирляндами с лампочками :)))
Black_Cat
09.07.2007, 23:49
Бугага, мы сунем одну плату в другую, а в другую - еще кучу и будет новогодняя елка c навешанными игрушками и гирляндами с лампочками :)))Будет нормальный РС конструктив, проверенный десятилетиями работы, с одной разницей - в РС буфера стояли на Fatherboard, а кроссплата была совершенно голая, только блокировочные конденсаторы, питание и разъём АТ клавиатуры, подключаемый через выкидыш. По крайней мере это даёт неоспоримое преимущество для создания малогабаритных конструкций, каким и был оригинальный Спек - а он был выполнен именно в такого типа конструктиве. А что касательно конструктива а-ля "десктоп", то на сегодняшний день это морально устаревшее решение, не удовлетворяющее современным требованиям (см.: Идеология: "Смерть десктопной концепции". (http://zx.clan.su/forum/7-12-1) ). Сам же неоднократно читал здесь о том, что народ хочет - нечто маленькое, чтоб влезло в клавиатуру, и уж точно не ещё один РС гроб.
KingOfEvil
09.07.2007, 23:59
"Спектрум" это немного не PC.
Добавлено через 6 минут
Кстати, если все же будет однослойка, то лучше поставить один (максимум 2) слота и без буферирования, иначе плата просто не разведется, а количество перемычек превысит все мыслимые пределы. Буферировать есть смысл, если предполагаются эксперименты с частотами выше 7 МГц, но на однослойке я бы так жестоко экспериментировать не стал.
Black_Cat
10.07.2007, 00:09
"Спектрум" это немного не PC.Вот как раз Единый ZX конструктив (http://www.zx.pk.ru/showthread.php?t=4404/) и позволяет одну и ту же плату применить и в малогабаритной конструкции а-ля оригинальный Спек, и в морально устаревшем РС конструктиве для любителей старины.
Кстати, если все же будет однослойка, то лучше поставить один (максимум 2) слота и без буферирования, иначе плата просто не разведется, а количество перемычек превысит все мыслимые пределы. Буферировать есть смысл, если предполагаются эксперименты с частотами выше 7 МГц.При реализации как единый ZX конструктив нужен только один краевой печатный разъём как у оригинального Спектрума (но ессно по стандарту NemoBus).
но на однослойке я бы так жестоко экспериментировать не стал.При соблюдении указанных рекомендаций можно и поэкспериментировать - вся радиочастотная аппаратура так выполняется.
KingOfEvil
10.07.2007, 00:16
Вот как раз Единый ZX конструктив (http://www.zx.pk.ru/showthread.php?t=4404/) и позволяет одну и ту же плату применить и в малогабаритной конструкции а-ля оригинальный Спек, и в морально устаревшем РС конструктиве для любителей старины.
ну как ты уже достал с рекламированием своих идей.
Black_Cat
10.07.2007, 00:20
ну как ты уже достал с рекламированием своих идей.:) :) мне всё равно чьи идеи (NemoBus - не моя идея :) , Fatherboard - тоже), были бы идеи толковые :) .
KingOfEvil
10.07.2007, 00:20
При соблюдении указанных рекомендаций можно и поэкспериментировать - вся радиочастотная аппаратура так выполняется.
Там, как правило, гармонические колебания. А знаешь, чем отличаются импульсные сигналы от гармонических?
Black_Cat
10.07.2007, 00:26
Там, как правило, гармонические колебания. А знаешь, чем отличаются импульсные сигналы от гармонических?Как не странно :) - знаю - спектром. Дык вот исполнение со сплошным слоем - оно безотносительное к тому какие колебания - гармонические или импульсные :) .
KingOfEvil
10.07.2007, 00:32
Как не странно - знаю - спектром. Дык вот исполнение со сплошным слоем - оно безотносительное к тому какие колебания - гармонические или импульсные .
Ну раз ты все так хорошо знаешь - возьми и сделай, а я посмотрю, что получится.
Black_Cat
10.07.2007, 00:44
Ну раз ты все так хорошо знаешь - возьми и сделай, а я посмотрю, что получится.А чего ждать-то? Берёшь у себя в квартире, вскрываешь маленькую коробочку - антенный разветвитель TV сигнала - дык большинство из них выполнены на печатных платах со сплошной землёй, а собсно разветвление идёт через микрополоски вытравленные в виде дорожек. :)
Не воспринимай эту дискуссию как камень в твой огород :) Пентагон 1024 вполне достойная машина, но для разнообразия уже давно хочется чего-то маленького, для того и нужен такой тип конструктива. Или ты считаешь, что кроме десктопа больше ничего не имеет право на существование? :) Дык такой конструктив как раз и позволяет сделать выбор - либо как оригинальный Спектрум, либо как РС.
:v2_devil:А представь себе каким маленьким мог бы быть твой Пентагон без 3х шинных разъёмов, без флопа, без NTSC кодера:v2_devil: , но с CF/IDE. А насколько он был бы проще в настройке и дешевле в производстве и как на него вырос бы спрос благодаря его малогабаритности и низкой стоимости:v2_devil:. А если бы он был ещё и на статике, то само напрашивается подключение батарейки и небольшого TFT - и вот вам воплощение мечты о мобильном Спеке :) .
Не надо устраивать священные войны :) , просто просчитай сколько бы стоила такая урезаная (но полностью функциональная) фазерборда и задумайся - а так ли нужно всё то барахло что сейчас навешано? Ведь всё это можно сделать выносным как давно практикуется в ноубуках в виде докинг станций или порта репликатора, да и обычный Пент 1024 для желающих как альтернатива никуда не денется. Но имхо суть в том, что подавляющая часть этих навесов большинству просто не нужна и они их отсутствие даже не заметят, как никто не страдает сейчас от отсутствия множества придуманных видеорежимов, весь совокупный софт к которым можно пересчитать на пальцах одной руки.. Pentagon 1024SL уже есть и никуда не денется, но есть смысл подумать и о его урезанном варианте с другой функциональностью.
А чего ждать-то?
Флейм прекращаем - дискусия о пентагоне в другом треде.
Леша не спорь с Блэккатом он всеравно тебя знает концепции паяния и разводки плат, а уж тем более Пентагон1024 :v2_wink2:.
ILoveSpeccy
10.07.2007, 11:02
Интересная у Вас тут дискуссия разгорелась :biggrin:
При трассировке контролировал наиболее чувствительные цепи.
А что относится к наиболее чувствительным цепям ???
Интересная у Вас тут дискуссия разгорелась :biggrin:
А что относится к наиболее чувствительным цепям ???
Питание, ШД и высокочастотное (CLK).
Так, БРЕЙК, внатуре! ;-)
"Нечто маленькое, что может влезть в клавиатуру" - это действительно хорошая идея. В общем-то с самого начала Sinclair Research сделали именно это, и оно было неплохо расширяемое, через краевой разъем.
Буфера на такой плате не нужны, они нужны на кросс-плате.
В общем сделай, блин, на самом деле. Только РАДИ БОГА не надо городить собственных расширений по портам, несовместимым с уже имеющимся богатством. Пусть будет совместим с Пентагоном-1024, если там дополнительная память будет, видеорежимы расширенные, RTC, или еще чего такого. Умершие (вледствие прекращения производства) стандарты (профи, кай-1024, Скорпион) ИМХО не стоит эксгумировать.
Одно пожелание - флешка вместо ПЗУ. Давно пора иметь возможность любому и каждому апгрейдить фирмварь. Вот только с портами бы определиться - схему КЭШа и глюковских часов так никто и не даст...
Так, БРЕЙК, внатуре! ;-)
Тебе вот суда http://www.zx.pk.ru/forumdisplay.php?f=41
Тут пожалста только о реальном железе!
ILoveSpeccy
10.07.2007, 14:14
Вот насчет питания у меня как раз вопросы имеются.
Сегодня вечером, когда приду с работы домой, закину сюда разводку своей новой платы. Очень хочу услышать Ваше мнение и советы по поводу правильности разводки.
Black_Cat
10.07.2007, 14:18
Тебе вот суда http://www.zx.pk.ru/forumdisplay.php?f=41
Тут пожалста только о реальном железе!Это далеко не полный список :(. А вот здесь всё самое новое! (http://zx.clan.su/forum/)
ILoveSpeccy
10.07.2007, 17:34
Ну в общем-то вот такая штука получается:
* 1Мб статического ОЗУ
* 512КБ ПЗУ (несколько прошивок под разные клоны и прошивки для DivIDE)
* AY-3-8910
* PS/2 клавиатура
* 1 порт для джойстика (комбинацией кнопок
на клавиатуре переключать кемпстон/синклер1,2/курсор)
* магнитофонные вход/выход
* Covox + SounDrive (через PWM)
* DivIDE & NemoIDE контроллер
... ну а дальше видно будет :)
Сначала это реализовать надо
ОЧЕНь важно Ваше мнение по-поводу разводки
Сколько и куда лучше всего поставить блокировочные конденсаторы???
ОЧЕНь важно Ваше мнение по-поводу разводки
Сколько и куда лучше всего поставить блокировочные конденсаторы???
Ща прийдет КОЕ и наваляет :)
ЧТо за плис (Altera Acex)?
Где панелька под конфигурационное ПЗУ для ПЛИС?
Где ТОЛСТЫЕ шины питания?
От АУ моно вывести порты на разьем (смотри схему КАЙ и реализацию LPT или например как в классике там джойтсик вроде висел)...
Как смешиваются цвета видео?
ILoveSpeccy
10.07.2007, 18:14
ЧТо за плис (Altera Acex)?
ПЛИС от Xilinx - Spartan 2 (XC2S100)
п.с. Сегодня на официальном сайте Хилинх появилась новая версия ИСЕ 9.2и
Где панелька под конфигурационное ПЗУ для ПЛИС?
на плате есть разъем 2х5пин (PROM). Туда пойдет CPLD + Parallel Flash (например W29C040) для загрузки конфигурации
Где ТОЛСТЫЕ шины питания?
а вот это уже ближе к делу :) Значит дорожки питания делать потолще надо??? Учту!
От АУ моно вывести порты на разьем (смотри схему КАЙ и реализацию LPT или например как в классике там джойтсик вроде висел)...
да я уже думал об этом... только как-то ненадумал: ЗАЧЕМ МНЕ LPT НУЖЕН??? Covox и джойстики всяких типов в ПЛИС будут...
Как смешиваются цвета видео?
цвета будут смешиваться через резюки... 2 пина ПЛИС на каждый цвет... и того 64 цветми можно будет рулить. Вертикальные и горизонтальные синхроимпульсы будут выведены раздельно. Планируется вывод на VGA (будет 75Гц, т.к. эта частота практически 100% поддерживается LCD и CRT мониторами.60Гц на CRT моргает сильно, а 85 и 100 не на всех LCD идут)
ПЛИС от Xilinx - Spartan 2 (XC2S100)
По поводу питания спартана: в его оффициальном ds расписано, как правильно питать, какие и сколько конденсаторы юзать и т.п. В качестве референции для себя можешь взять плату от CPCng (если не найдёшь, свистни, зашлю доку).
KingOfEvil
10.07.2007, 19:12
Питание, ШД и высокочастотное (CLK).
и еще шина данных CPU.
Добавлено через 11 минут
Ща прийдет КОЕ и наваляет :)
Шины питания сделаны не самым лучшим образом, они должны быть, как уже сказал CHRV, более толстыми (не менее 0.4..0.5 мм), с минимальным количеством переходов со слоя на слой.
Компоненты можно расположить покомпактнее.
Не обнаружил ни одного блокировочшого конденсатора, что плохо. Желательно, чтобы были предусмотрены места для них возле каждой микросхемы.
По-моему, выбрана не лучшая последовательность действий. Лучше всего вначале сделать полностью размещение элементов, затем оптимизацию соединений, затем вручную проложить все шины питания ПОЛНОСТЬЮ, затем развести остальные соединения, контролируя наиболее высокочастотные цепи и шину данных CPU, если будет использоваться autorouter, то нужно обязательно проследить, чтобы шины процессора не разводились лабиринтом по всему периметру платы, а сосредотачивались там, где в них есть необходимость.
Ну в общем-то вот такая штука получается:
Одназначно надобно мышь добавить .
И два бита на цветовой канал как то вшиво получается , сделай хотя бы четыре ;)
ILoveSpeccy
10.07.2007, 19:40
и еще шина данных CPU.
Добавлено через 11 минут
Шины питания сделаны не самым лучшим образом, они должны быть, как уже сказал CHRV, более толстыми (не менее 0.4..0.5 мм), с минимальным количеством переходов со слоя на слой.
Компоненты можно расположить покомпактнее.
Не обнаружил ни одного блокировочшого конденсатора, что плохо. Желательно, чтобы были предусмотрены места для них возле каждой микросхемы.
По-моему, выбрана не лучшая последовательность действий. Лучше всего вначале сделать полностью размещение элементов, затем оптимизацию соединений, затем вручную проложить все шины питания ПОЛНОСТЬЮ, затем развести остальные соединения, контролируя наиболее высокочастотные цепи и шину данных CPU, если будет использоваться autorouter, то нужно обязательно проследить, чтобы шины процессора не разводились лабиринтом по всему периметру платы, а сосредотачивались там, где в них есть необходимость.
Дело в том, что autorootом у меня еще ниразу не получилось нормальной разводки.
Тем более в 1 слой! Так что все развожу вручную :D
Плата не очень сложная... Оптимизируется, как я уже писал, под ЛУТ.
А на счет блокировочных конденсаторов и толщины дорожек питания - УЧТУ!!!
Приложил картинку: если я таким образом блокировочные конденсаторы поставлю... будет нормально????
ILoveSpeccy
10.07.2007, 19:49
Одназначно надобно мышь добавить .
И два бита на цветовой канал как то вшиво получается , сделай хотя бы четыре ;)
на мыша и цвет нехватает ног... задействованы все до единой ;)
Вот думал если DRAM прикрутить (например SIMM на 30 контактов) то получится.
Но с DRAM я никогда не работал (если честно, то и с SRAM знаком где-то месяца 2 :D)
и понятия не имею как это чудо техники использовать...
Вот если только Вы поможете :v2_wink2: Может инфа есть нормальная???
А вообще задумка была еще 2 COM порта добавить... но ног нима...
А память от процессора полностью отделил потому что она же будет юзатся и для DivIDE (и для еще одной маленькой задумки)!!!
Black_Cat
10.07.2007, 19:57
Про последовательность разводки КоЕ хорошо сказал, но если так не получается, то глянь всёж и мои замечания:
1) Vcc: ROM&RAM у тебя проходят между ног, надо за пределами микросхем и максимально возможной ширины, хоть сплошным слоем. То же и для AY, а вот на Z80 при твоей разводке питание лучше кинуть толстенной перемычкой, т.к. тот проводник что у тебя идёт от AY совсем не годится. На ПЛИС аналогично дорожки питания сделать максимальной ширины, а перемычки - толщины.
2) GND: в твоём случае вариант со сплошным слоем земли считаю безальтернативным и самым качественным, хотя зенковать (разворачивать) отверстия вручную конечно забодаешся :( . В этом случае вся земля подаётся на микросхемы с помощью перемычек с верхнего сплошного слоя на нижний.
3) Блокировочные конденсаторы (керамика): в идеале ставятся прямо на ноги питания микросхемы (от её Vcc до её же GND), но ввиду того, что ноги разнесены довольно далеко при таком подходе будет присутствовать определённая индуктивность выводов и как следствие ухудшение частотных характеристик фильтрации. Поэтому конденсаторы ставить с минимальными по длине выводами, одним концом совершенно рядом с выводом Vcc микросхемы, а вторым на сплошной слой земли. При этом выводы конденсаторов имеют минимальную длину, а сплошной земляной слой имеет практически нулевую индуктивность и ухудшения частотных свойств не происходит.
4) ПЛИС: у тебя её переходник будет ставиться на разъём, или вплотную ложиться на плату и намертво паяться? Положить вплотную не позволят перемычки питания, что под ней. Есть проблема с конденсаторами на её два питания, что должны быть в идеале - именно под ней :( . Боюсь без smd устанавливаемых на нижний слой печати не обойтись, или на крайняк ставить обычную керамику по периметру.
5) Разъём питания: лучше ставить напротив Z80, а не там где он у тебя, т.к. Z80 и AY - это самые жручие микросхемы на плате, сколько будет жрать ПЛИС - не знаю, но и для неё такое положение будет оптимальным. Vcc проводить максимально широкими дорожками от преобразователя до сначала Z80 и дальше в сторону ROM. Желательно даже эту суперширокую дорожку пустить по верхнему слою - там точность совпадений отверстий не нужна - всё равно от этой суперширокой дорожки бросать сквозные перемычки на нижнюю сторону.
6) Топология: как понимаю краевого разъёма не предвидится? Предлагаю всёж сделать краевой NemoBus разъём снизу платы, а те разъёмы, что у тебя нарисованы кинуть стандартными РС выкидышами. При этом питание 5В будет заводиться либо через шину NemoBus, либо через разъём на выкидыше и преобразователь, либо обоими способами сразу, как это бывает в РС.
7) Питание АЦП цветоформирования и звукового усилителя (если будет) надо отвязать от общего питания хотя бы LC или RC фильтрами.
8) Электролиты: достаточно будет поставить пару штук распределив их вдоль шины Vcc. Ёмкость особо не критична 470мкф хватит за глаза. Ессно на преобразователе должны быть свои и на LC/RC фильтрах тоже.
ILoveSpeccy
10.07.2007, 20:07
4) ПЛИС: у тебя её переходник будет ставиться на разъём, или вплотную ложиться на плату и намертво паяться? Положить вплотную не позволят перемычки питания, что под ней. Есть проблема с конденсаторами на её два питания, что должны быть в идеале - именно под ней :( . Боюсь без smd устанавливаемых на нижний слой печати не обойтись, или на крайняк ставить обычную керамику по периметру.
Переходник с ПЛИС будет крепиться не в плотную к плате.
Между платой и переходником будут блокировочные конденсаторы.
Если их подогнуть (чтобы горизонтально к плате расположена были)
то зазор между платой и переходником будет порядка 3мм.
Добавлено через 26 минут
По поводу питания спартана: в его оффициальном ds расписано, как правильно питать, какие и сколько конденсаторы юзать и т.п. В качестве референции для себя можешь взять плату от CPCng (если не найдёшь, свистни, зашлю доку).
Спасиб! Доку нашел и посмотрел..... нехило.... и платка в 4 слоя :v2_thumb:
Я вообще планировал своё творение до ума довести... а потом наподобие CPCng... Закажу плату нормальную!!
to ALL.. И киньте доку плиз по DRAM...
только не схемы, которых я тут на форуме кучу нашел, а именно теория!!! RAS,CAS и т.д.
KingOfEvil
10.07.2007, 22:35
Приложил картинку: если я таким образом блокировочные конденсаторы поставлю... будет нормально????
Не совсем. В идеале 2 шины (Vcc, GND) должны идти параллельно и на них надо напаивать конденсаторы. Вот так:
ILoveSpeccy
10.07.2007, 22:44
Не совсем. В идеале 2 шины (Vcc, GND) должны идти параллельно и на них надо напаивать конденсаторы. Вот так:
Так тут дорожка GND далеко от нижнего левого вывода IC расположена... или ничего страшного??? так я просто могу пустить поверху над CPU, AY и памятью дорожку GND и все???
На готовой плате по периметру все свободное место на плате займет GND.
KingOfEvil
10.07.2007, 22:48
to ALL.. И киньте доку плиз по DRAM...
только не схемы, которых я тут на форуме кучу нашел, а именно теория!!! RAS,CAS и т.д.
Вот https://escies.org/GetFile?rsrcid=1035
и вот https://escies.org/GetFile?rsrcid=1036
и еще есть даташиты на сайтах производителей, вот, например http://www.samsung.com/global/business/semiconductor/products/dram/downloads/ddr_device_operation_timing_jul_06.pdf
Так тут дорожка GND далеко от нижнего левого вывода IC расположена...
Так снизу микросхемы идут еще две таких же шины питания и поэтому оказывается близко.
От АУ моно вывести порты на разьем (смотри схему КАЙ и реализацию LPT или например как в классике там джойтсик вроде висел)...
Нет. В классике на порту A висели RS232, MIDI и кейпад. Кейпад поддерживается в бейсике-128, где-то в Инете я видел описание, как сделать таковой, на PIC'е. Интерфейс у него последовательный.
Порта B в классике не было как класса :), ибо там стоял AY-3891-2.
А джойстеги на AY были в MSX, ты видимо попутал.
Но мысль сделать для них гребенку - правильная.
Производство двусхлоек сейчас стоит недорого. Поверь, что мучения с утюгом плюс потраченное время и нервы во время настройки такого чуда обойдутся дороже.
Забыл спросить - Не дорого это сколько (и где) ?
Насколько помню только цена запрашиваемая за подготовку штуки полтары .
На этом фоне цена самой платы хоть с двадцатью слоями и маской в палец толщеной покрытой многоцветной шёлкографией выглядит просто смешной :D
Добавлено через 28 минут
на мыша и цвет нехватает ног... задействованы все до единой
Не хотел этого советовать , но можно выкинуть IDE ;) И сделать супорт SD/MMC карточек . На первое время по такой схеме http://www.zxbada.bbk.org/zxmmc/ . Нужно ещё будет довести спек до совместимости с +3 .
Собсно над супортом SD/MMC карточек работают наверное человака три (каждый над своим стандартом). Если получится что то вменяемое , то перейти с буржуйской поделки на свою не будет проблеммой .
Вот если только Вы поможете Может инфа есть нормальная???
Возможно это подойдёт - http://arstechnica.com/paedia/r/ram_guide/ram_guide.part1-1.html
Забыл спросить - Не дорого это сколько (и где) ?
В окрестностях мск существует только одна контора (http://www.resonit.ru), изготавливающая малые партии по более-менее вменяемым ценам. Из минусов: 1) долбанешься пока доедешь. 2) Только в рабочие дни и в рабочее время.
Нужно ещё будет довести спек до совместимости с +3 .
Зачем? +3 - это всего лишь +3DOS, под которую как ни странно портировано меньше всего ZX-софта; и никому не нужный +3BASIC, сильно на нее завязанный кстати говоря.
В окрестностях мск существует только одна контора (http://www.resonit.ru), изготавливающая малые партии по более-менее вменяемым ценам. Из минусов: 1) 3.14зданешься пока доедешь. 2) Только в рабочие дни и в рабочее время.
1) предупреждение за мат (+)!
2) ехать туда не надо, доставка по москве 300руб
3) заказы принимают по инету
4) оплачиваешь через ближаший банк
ЧЕстно говоря даже не знаю как к ним ездить, хотя АТМы делались у них и ТФМ тоже.
Из минусов нормы 0.25-0.25, например у www.tabe.ru лучше.
2) ехать туда не надо, доставка по москве 300руб
3) заказы принимают по инету
4) оплачиваешь через ближаший банк
Здорово, когда я на позапрошлой работе работал, мы у них наши разработки заказывали (4 года назад это было). Такого сервиса еще не было.
ILoveSpeccy
11.07.2007, 17:47
Не хотел этого советовать , но можно выкинуть IDE ;) И сделать супорт SD/MMC карточек . На первое время по такой схеме http://www.zxbada.bbk.org/zxmmc/ . Нужно ещё будет довести спек до совместимости с +3 .
Собсно над супортом SD/MMC карточек работают наверное человака три (каждый над своим стандартом). Если получится что то вменяемое , то перейти с буржуйской поделки на свою не будет проблеммой .
К любым советам со стороны ВСЕГДА отношусь с вниманием!
Подключить карту к ПЛИС и сделать соответствующую дешифрацию
портов проблем никаких не составляет :)
Проблему я вижу в программной поддержке.
Сам я в программировании на спеке полный "0".
А мое баловство на васике48 мне ничем не поможет.
А для DivIDE уже прошивки есть нормальные. Да и в эмуляторе я его погонял...
все просто и классно!
Хотя идея очень хорошая. Может так и сделаю ;)
Но всетаки... только если помощь будет... сам я такое не осилю.
А вообще программировамием на ассемблере для спека хотел заняться
когда лошадку свою доделаю (кстати, имя своему спеку так и не придумал :)).
Сегодня вечером после работы за бутылочкой пива :v2_cheer: надо будет все еще раз основательно обдумать...
IDE все равно пока еще на плате не разводил :)
Или сделаю и то и другое :)
тем более на SD-карту всего 3 пина от матрицы надо. Для DivIDE - 5.
мона выкинуть поддержку джойстика, а кемпстон и синклер 1/2 через стрелки на клаве.
A ПЛИСина все равно почти пустая будет :)
Простор для работы огромен! В ПЛИС 100000 gates а процессор и AY снаружи...
Была тут у меня мысль, что было бы очень неплохо, если бы была русская версия DivIDE - совместимая с NemoIDE по портам IDE. Под нее можно портировать vTR-DOS - и будет щастье.
DivIDE классная разработка, в "фирменном" духе Спека, мне очень нравится. Я даже думал списаться с продавцами на предмет портирования vTR-DOS на него, Zilogator мне говорил что спрос настолько высок что мне даже подарить могут плату для этого. Только у меня сейчас нет работающего 128кб Спека без бетадиска с системным разъемом. Неработающий есть, я хочу починить (квадратеги на экране), да времени нет снова. Пентагон-128 жалко мучить МГТФом, я не сторонник.
Так что подумай о такой возможности. Хотя, с другой стороны, если ты собрался делать 1 мб ОЗУ, то DivIDE и не нужен со своей дополнительной памятью, можно обойтись имеющимися ресурсами.
Хотя, с другой стороны, можно для разнообразия сделать чистокровную "западную" версию (клепать полный клон Пентагона-1024 - вредить производителю :v2_devil:). Она тоже вполне заслужила право на существование. Бетадиск совместно с DivIDE работать по идее должен.
В окрестностях мск существует только одна контора, изготавливающая малые партии по более-менее вменяемым ценам.
Это ради каких таких понтов выкидывать полтары штуки ради одной платы , когда удюгом делается сама и задаром :D
Но всетаки... только если помощь будет... сам я такое не осилю.
Ну как бы всё и так сделано . Я где то вываливал кучу линков , но не помню где , поэтому проще по новой накидать .
Ща попытаюсь вспомнить . (Пэрэсэтэ , я думал что все линки и так на том сайте есть).
И так , девайс вполне стандартный и супортится ResiDOS http://www.worldofspectrum.org/residos/ (как некоторые другие интерфейсы).
Всё что нужно для супорта девайса тут - http://www.worldofspectrum.org/zxplus3e/index.html . Конкретно это новая прошивка с супортом этой штуки - http://www.worldofspectrum.org/zxplus3e/p3eroms.html (она там в общем архиве).
http://www.worldofspectrum.org/zxplus3e/interface.html - Список всех интефейсов включая наш ZX-MMC :)
http://www.worldofspectrum.org/zxplus3e/emulator.html - Про то как опробовать ResiDOS под эмулём .
В спек нужно будет добавить ещё один порт руления мозгами как в +3 (http://www.worldofspectrum.org/ZXSpectrum128+3Manual/chapter8pt24.htm - "Memory management" примерно внизу страницы).
Black_Cat
11.07.2007, 18:57
fan, последняя ссылка не действует - нет файла, выложи если у тебя сохранено.
ILoveSpeccy
12.07.2007, 01:37
Ну в общем думал-думал и решил:
надо делать и то, и другое.... от IDE отказываться неохота а в то-же время SD/MMC тоже потенциал для развития имеет.
В ПЛИС места более чем предостаточно а вот с ногами проблемы...
И пришла ко мне идейка одна... а что, если я отделю шины проца A и D от остальной части спека...
т.е. отключил буфера и делай с ОЗУ и ПЗУ что хочешь... (в пределах например полутакта проца....).
AY и ZX-BUS останутся с процом.
Таким образом около 20 ног на ПЛИС освобождается...
Но это только в теории....
Что думают по этому поводу железячники??? Будет работать???
Black_Cat
12.07.2007, 01:53
А почему было не сделать как на UFO-2 fan'a? А то буфера у тебя всёж мягко говоря непродумано поставлены. :) Да и топология у него более компактная получается.. Попроси готовую разводку, да подрихтуй под свою ПЛИС, всё равно вручную делаешь.
ILoveSpeccy
12.07.2007, 02:12
А почему было не сделать как на UFO-2 fan'a? А то буфера у тебя всёж мягко говоря непродумано поставлены. :)
Что за UFO-2??? Я вроде только ReSpecT знаю... ну да ладно....
Если я правильно понимаю ты имееш в виду отделить только видеопамять???
Дело в том что мне нужен доступ КО ВСЕЙ ПАМЯТИ ВКЛЮЧАЯ ПЗУ!
И так... чтобы сигналы на адресной шине проца не мешали...
Black_Cat
12.07.2007, 02:16
Что за UFO-2??? Я вроде только ReSpecT знаю... ну да ладно....См. вторую разводку с буферами.
Если я правильно понимаю ты имееш в виду отделить только видеопамять???
Дело в том что мне нужен доступ КО ВСЕЙ ПАМЯТИ ВКЛЮЧАЯ ПЗУ!
И так... чтобы сигналы на адресной шине проца не мешали... Зачем? Старших адресов не достаточно будет? Проц выше 64к не лазит, чем он там ПЛИСине будет мешать?
ILoveSpeccy
12.07.2007, 02:22
Зачем? Старших адресов не достаточно будет? Проц выше 64к не лазит, чем он там тебе будет мешать?
Я же уже писал.... В этой же ПЗУхе будет прошивка для DivIDE... И часть ОЗУ будут тоже для DivIDE.
Короче мне нужен доступ к памяти по всем адресам (со стороны ПЛИС разумеется)
Black_Cat
12.07.2007, 02:25
Я же уже писал.... В этой же ПЗУхе будет прошивка для DivIDE... И часть ОЗУ будут тоже для DivIDE.
Короче мне нужен доступ к памяти по всем адресам (со стороны ПЛИС разумеется)А ROM&RAM DivIDE что, с каким-то внешним процессором будут работать? А если нет, то чем они отличаются от обычных банок ROM&RAM чтоб им отдельные шины тянуть?
ILoveSpeccy
12.07.2007, 02:37
А ROM&RAM DivIDE что, с каким-то внешним процессором будут работать? А если нет, то чем они отличаются от обычных банок ROM&RAM ?
Еще раз посмотрел схему DivIDE... Может и получится... Но ПЛИС должна всеравно полный доступ к ПЗУ иметь (это для идейки одной обязательно нужно ;))...
Да и 1 чип экономится (тот что в ReSpecT для видеопамяти).
Да и вообще... может ПЛИС в будущем снапшоты напрямую в ОЗУ кидать будет...
В общем нужно мне это!
Black_Cat
12.07.2007, 02:51
Да и 1 чип экономится (тот что в ReSpecT для видеопамяти).Не надо её экономить. Она тебе будет компенсировать RAM, что DivIDE отъело, но не меньше 32к.
Да и вообще... может ПЛИС в будущем снапшоты напрямую в ОЗУ кидать будет...Мой тебе совет - не делай кухонный комбайн, это не профессионально. :( Я понимаю, что в ПЛИС ещё не один компьютер можно засунуть, но всёж сдержись от таких порывов. Сувать туда нужно идеологически совместимые вещи, например развитие видеоконтроллера.
:v2_devil: Это моё 666 сообщение :v2_devil: на этом форуме :)
Я понимаю, что в ПЛИС ещё не один компьютер можно засунуть, но всёж сдержись от таких порывов. Сувать туда нужно идеологически совместимые вещи, например развитие видеоконтроллера.
Делать можно только согласно "концепциям БК" - шаг в сторону и ты профанат идеи спектрумизма, а изделие недостойно чтобы БК его назвал спектрумом. Так что бди ...:v2_lol:
А то БК тебя раскатает по концепциям :v2_thumb:
ILoveSpeccy
12.07.2007, 13:15
fan, последняя ссылка не действует - нет файла, выложи если у тебя сохранено.
http://www.worldofspectrum.org/ZXSpectrum128+3Manual/chapter8pt24.html
И пришла ко мне идейка одна...
Чтоб это аценить нужно какоенить описание всей конструкции .
А то не очень понятно чего творится с процом когда его отрубили от шин (тормозится клоком ?).
И не понятно как на данный момент работает видео система , и будет ли отдельный видео мозг .
Вместо схемы лучше нарисовать блок схему со всем что на данный момент планируется .
================================================== =======
http://www.worldofspectrum.org/ZXSpectrum128+3Manual/
http://www.worldofspectrum.org/ZXSpectrum128+3Manual/chapter8pt24.html
Black_Cat
12.07.2007, 14:41
Нужно ещё будет довести спек до совместимости с +3 .Как ты предложишь это сделать чтоб разбежаться с раскладкой Scorpion по #1FFD? Есть какое компромиссное комплексное решение, или предлагаешь просто забить на скорпионовские переключения ПЗУ?
И ещё вопрос ко всем - насколько грамотно писались программы, работавшие с верхней памятью в скорпах и каях на предмет не будут ли они гадить в D0-2 #1FFD?
KingOfEvil
12.07.2007, 19:12
И ещё вопрос ко всем - насколько грамотно писались программы, работавшие с верхней памятью в скорпах и каях на предмет не будут ли они гадить в D0-2 #1FFD?
Помятуя о том, что бутерброд всегда падает маслом вниз, можно быть уверенным, что глюки будут.
ILoveSpeccy
12.07.2007, 21:44
Чтоб это аценить нужно какоенить описание всей конструкции .
А то не очень понятно чего творится с процом когда его отрубили от шин (тормозится клоком ?).
И не понятно как на данный момент работает видео система , и будет ли отдельный видео мозг .
Вместо схемы лучше нарисовать блок схему со всем что на данный момент планируется .
Попробовал нарисовать блок-схему, но ничего внятного, тем болле компактного, не получается :(
Попробую описать словами. Итак:
В принципе ничего особо нового пока не планируется.
Вся логика будет, конечно же, в ПЛИС.
Там же (в ПЛИС) будут:
1. видеоконтроллер
2. контроллер IDE и SD/MMC
3. контроллер PS/2 клавиатуры и мыша
4. 2 СОМ-порта
5. контроллер 1 (или 2х) джойстиков
6. Часики
7. Covox и SounDrive
Теперь обо всем поподробнее:
Вообще считаю правильным В ОБЯЗАТЕЛьНОМ ПОРЯДКЕ поддержку совместимости с существуюшими популярными клонами.
Реализовать планирую следующим образом:
При включении спека (сразу или после нажатия какой нибудь кнопки) вход в SETUP,
где и будет конфигурироваться весь спек. Например Дата и Время для часов, стандарт (пентагон, кай, атм....), контроллер IDE и т.д. Текущая конфигурация будет сохранятья.
Включение и отключение ТУРБО, кнопками на клаве. Также будет вход на джойстик. Кнопкой на клаве можно будет переключать: кемпстон/синклер 1,2/курсор джойстик. Короче вход для джойстика будет один, а тип будет выбираться.
Все изменения конфигурации по кнопкам на клаве (такие как турбо, тип джойстика) будут в течении 1-3 сек. отображаться в нижнем правом углу экрана. Для этого мне и нужен полный доступ к ПЗУ со стороны ПЛИС. В ПЗУ как раз и будут храниться эти строчки (Turbo: on/off, Joystick: Sinclair/КKempston).
По 1 пункту:
Поповоду видеоконтроллера пока ничего конкретного сказать немогу так как я еще никаких видеорежимов,
кроме стандартного, не делал. Если хватит ног на ПЛИС, то сделаю, как посоветовал fan, 4 бит на цвет.
Потом походу можно будет заняться разными видеорежимами.
Планировал подключение к VGA (с частотой 75Гц).
2. Планируется поддержка DivIDE, NemoIDE, SD/MMC-Card... Но тут, вроде, особенностей никаких нет.
3. Контроллер PS/2 клавы реализуется на ПЛИС без тормоза проца. С мышкой еще не думал, но думаю Кемпстон хватит.
4. 2 СОМ порта потому что МАХ232 для 2х как раз хватит. По какому стандарту, пока не решил. Но наверное всетаки как у caro.
5. Про джойстики вроде понятно описал сверху :)
6. Часы.... просто прикручу. Походу видно будет.
7. Covox и SounDrive будут работать через PWM. Порты тоже переключать кнопками на клаве.
Миксироваться будут программно в ПЛИС (Пока понятия не имею как это решается, но то что это возможно знаю :) )
Вот так! Процессор и AY будут реальные.
1 мег ОЗУ. 512К ПЗУ. Поначалу прицеплял ПЗУ и ОЗУ отдельно от проца напрямую к ПЛИС, но за нехваткой ног надо как-то их совмещать. Поэтому и думал о том варианте с буферами между процом и памятью.
Если, например, видеоконтроллеру надо читать из ОЗУ проц тормозить не хочу. Думал (на частоте 14МГц) отключать буферами проц от памяти, читать байт и снова включать. Для этого должно хватить 1/4 такта проца. Поэтому, думаю, должно будет работать. Память на 55мс потянет без проблем (уже запускал проц своего первого спека на 14МГц :) летает.... Кстати проц был Z84C0006... за 2 минуты работы проблем не заметил, даже проц почему-то не грелся).
то fan... поделись исходниками ПЛИС от ReSpecT128.... Очень нужно :) (dr_dmitrij[sobaka]web[to4ka]de)
KingOfEvil
12.07.2007, 22:19
Контроллер PS/2 клавы реализуется на ПЛИС без тормоза проца
А можно поподробнее?
Я делал аналогичный девайс на МК+ПЛИС. Просто на ПЛИС такое делать неоптимально.
И как часики будут сделаны в ПЛИС? Она что от батарейки будет питаться, когда комп выключен? И насколько хватит?
А мышь в только в ПЛИС по-человечески не сделать, т.к. нужно еще предусматривать настройку масштабирования и, возможно, целесообразно сделать интерполяцию координат, хотя я так не делал. Немного экспериментировал с линейной интерполяцией, но заметного улучшения не обнаружил.
ILoveSpeccy
12.07.2007, 23:53
А можно поподробнее?
Я делал аналогичный девайс на МК+ПЛИС. Просто на ПЛИС такое делать неоптимально.
И как часики будут сделаны в ПЛИС? Она что от батарейки будет питаться, когда комп выключен? И насколько хватит?
А мышь в только в ПЛИС по-человечески не сделать, т.к. нужно еще предусматривать настройку масштабирования и, возможно, целесообразно сделать интерполяцию координат, хотя я так не делал. Немного экспериментировал с линейной интерполяцией, но заметного улучшения не обнаружил.
Нет, батарейку на ПЛИС ставить я не собирался.... просто спек с розетки выключать не буду :v2_lol: ......шутка
Поставлю, как в ZX Multi Card - PCF8583
На ПЛИС PS/2 клава занимает, точно не помню, около 125 ячеек (только опрос, спек в клаву ничего не посылает. Да и зачем?)
Так что проблем я невижу...
На счет мыша пока ничего сказать не могу, т.к. пока не делал...
Black_Cat
13.07.2007, 01:31
Вообще считаю правильным В ОБЯЗАТЕЛьНОМ ПОРЯДКЕ поддержку совместимости с существуюшими популярными клонами.Огласите весь список клонов пожалуйста..
Все изменения конфигурации по кнопкам на клаве (такие как турбо, тип джойстика) будут в течении 1-3 сек. отображаться в нижнем правом углу экрана. Для этого мне и нужен полный доступ к ПЗУ со стороны ПЛИС. В ПЗУ как раз и будут храниться эти строчки (Turbo: on/off, Joystick: Sinclair/КKempston).Если только чтоб надписи на экране писать - то оно и даром не нужно..
По поводу видеоконтроллера пока ничего конкретного сказать немогу так как я еще никаких видеорежимов,
кроме стандартного, не делал. Если хватит ног на ПЛИС, то сделаю, как посоветовал fan, 4 бит на цвет.
Потом походу можно будет заняться разными видеорежимами.Вообще то видеопроцессор это главное - это и есть Спек, а что останется после его реализации можно уже делить между второстепенными узлами и никак не наоборот :( .
Планировал подключение к VGA (с частотой 75Гц).По какой схеме будешь реализовывать?
2. Планируется поддержка DivIDE, NemoIDE, SD/MMC-Card... Но тут, вроде, особенностей никаких нет.Намалевал бы всёж функциональную схему, чтоб хоть шины идущие из ПЛИС представлять, а то может и смысла нет всю эту лабуду (IDE, Joystick, Covox etc.) из ПЛИС тянуть - только ножки переводить, оставить в ПЛИС только формирование сигналов управления, а данные пусть с общей шины берут.
Поначалу прицеплял ПЗУ и ОЗУ отдельно от проца напрямую к ПЛИС, но за нехваткой ног надо как-то их совмещать. :( ножек всёж нехватает не потому, что нехватает, а потому что неправильно выбраны приоритеты их раздачи. Вон fan в 64 ноги уместил всё потому что подход правильный - второстепенное заборт!
ILoveSpeccy
13.07.2007, 01:56
А мышь в только в ПЛИС по-человечески не сделать, т.к. нужно еще предусматривать настройку масштабирования и, возможно, целесообразно сделать интерполяцию координат, хотя я так не делал. Немного экспериментировал с линейной интерполяцией, но заметного улучшения не обнаружил.
А с масштабированием какие проблемы??? В VHDL есть все нужные математические операции. Кнопками "+" и "-" справа на клаве менять значение константы и множить ее на изменение координат мышки.
По какой схеме будешь реализовывать?
У меня по этому поводу свои задумки имеются. Рассекречу только если сам проверю на железе ;)
Намалевал бы всёж функциональную схему, чтоб хоть шины идущие из ПЛИС представлять, а то может и смысла нет всю эту лабуду (IDE, Joystick, Covox etc.) из ПЛИС тянуть - только ножки переводить, оставить в ПЛИС только формирование сигналов управления, а данные пусть с общей шины берут.
Да.... звук с ПЛИС так и так выводить надо.... это 1 нога... Covox и SounDrive смешиваются в ПЛИС,
к ним подмешаю BEEPер... итого через PWM 2 ноги (стерео) вместо 1.
ДЛЯ ЭТОГО МНЕ 1 НОГИ НЕ ЖАЛКО
DivIDE например отбирает ВСЕГО 5 ПИНОВ.
Зато сколько лишних корпусов и заморочек экономится!!!
Вон fan в 64 ноги уместил всё потому что подход правильный - второстепенное заборт!
Так то оно так. Только что нужно сделать чтобы, например, к ReSpecTу контроллер IDE прикрутить. Правильно! Нужен еще как минимум сам контроллер и ПАРА НОГ НА ПЛИС для соответствующих сигналов ZX(NEMO)-BUS (IORQCE например)
Black_Cat
13.07.2007, 02:11
У меня по этому поводу свои задумки имеются. Рассекречу только если сам проверю на железе ;) Ню ню.. Вон без всяких секретов лежит схема формирования на 75Hz, (при том с Gigascreen+ в придачу) см. концепция по критерию F4: Стандартизация видеовывода в ZX to VGA конверторах. (http://zx.clan.su/forum/7-19-1)
только опрос, спек в клаву ничего не посылает. Да и зачем?
Как зачем , можно фанарями помаргать :D Типа активная активность чего то там... ;)
Текущая конфигурация будет сохранятья.
Мне чёто жудко интересно как именно это будет происходить .
4 бит на цвет.
Точно точно , нужён внедрёж :D А остальное можно выкинуть .
то fan... поделись исходниками ПЛИС от ReSpecT128.... Очень нужно
Они у меня под старый вариант как на блоксхеме . Я их опять ща перепахиваю (исправил один глюк , наверное есть ещё) . Когда домучию неизвестно %) (перетыкалку разрешений и цвет на точку делал на скорую руку , хотелось то же в нормальный вид привести).
Может что то конкретное интересует ?
Навсякий случий (если завтра запаздаю) - порт накручивал от балды -
-- Порт #EFF7 - Графические режимы.
PORT_EFF7[].clk=nIORQ or nWR or VA_CPU[12] or VA_CPU[3] or NOT(VA_CPU[15] and VA_CPU[14] and VA_CPU[13]);
PORT_EFF7[].clrn=nRESET;
PORT_EFF7[0].d=D[0]; -- =PORT_EFF7[0].q; bit0 - 4BIT Per Pixel OK
PORT_EFF7[1].d=D[1]; -- =PORT_EFF7[1].q; bit1 - 512x192 --
PORT_EFF7[2].d=D[2]; -- =PORT_EFF7[2].q; bit2 - disable memory above 128k --
PORT_EFF7[3].d=D[3]; -- =PORT_EFF7[3].q; bit3 - read/only cache --
PORT_EFF7[4].d=D[4]; -- =PORT_EFF7[4].q; bit4 - 256x224-\__320x200 (GIGASCREEN)OK 0-\__256x192
PORT_EFF7[5].d=D[5]; -- =PORT_EFF7[5].q; bit5 - 256x256-/ (SB)OK 0-/
PORT_EFF7[6].d=D[6]; -- =PORT_EFF7[6].q; bit6 - TURBO 7MHz (384x304)OK
PORT_EFF7[7].d=D[7]; -- =PORT_EFF7[7].q; bit7 - CMOS --
Придатков от +3 не внедрял .
Цвет на току вклинивал как по описанию (у меня) , в сырке выглядит страшновато , на блоксхеме веселей .
Смена разрешений - просто смена констант начала и конца бордюров , гашений , синхр . Вот типа пример -
-- SYNC --
-- HORIZONTAL SYNC --
CASE PORT_EFF7[5..4].q IS -- Выбираем позицию синхры по горизонтали bit5 bit4
WHEN 0 => H_SYNC_START[]=320; H_SYNC_END[]=353; -- 0 0 - 192
WHEN 1 => H_SYNC_START[]=320; H_SYNC_END[]=353; -- 0 1 - 224
WHEN 2 => H_SYNC_START[]=320; H_SYNC_END[]=353; -- 1 0 - 256
WHEN 3 => H_SYNC_START[]=352; H_SYNC_END[]=385; -- 1 1 - 320x200 ONLY!!!
END CASE ;
.......
.......
.......
-- VERTICAL SYNC -- Длительность - одна строка (кто хочет больше - флаг в руки).
CASE PORT_EFF7[5..4].q IS -- bit5 bit4 | Выбираем позицию синхры по вертикали.
WHEN 0 => V_SYNC_START[]=249; V_SYNC_END[]=249+1; -- 0 0 - 192
WHEN 1 => V_SYNC_START[]=265; V_SYNC_END[]=265+1; -- 0 1 - 224
WHEN 2 => V_SYNC_START[]=281; V_SYNC_END[]=281+1; -- 1 0 - 256
WHEN 3 => V_SYNC_START[]=249; V_SYNC_END[]=249+1; -- 1 1 - 320x200 ONLY!!! Остальные разрешени отрубаются .
END CASE ;
Добавлено через 19 минут
Так то оно так. Только что нужно сделать чтобы, например, к ReSpecTу контроллер IDE прикрутить. Правильно! Нужен еще как минимум сам контроллер и ПАРА НОГ НА ПЛИС для соответствующих сигналов ZX(NEMO)-BUS (IORQCE например)
Да я надеялся на активное продвижение супорта карточек SD/MMC , но у нас они чёто не очень популярны . Впринципе девайс для загрузки дампов меня вполне устраивает , да даже турбо загрузка ленточных файлов то же вполне ничего .
ILoveSpeccy
13.07.2007, 02:32
Ню ню.. Вон без всяких секретов лежит схема формирования на 75Hz, (при том с Gigascreen+ в придачу) см. концепция по критерию F4: Стандартизация видеовывода в ZX to VGA конверторах. (http://zx.clan.su/forum/7-19-1)
На реале проверено????
Я чтото подобное планирую
Да и вообще - теория теорией, а где спек этот????
Ну который на концепциях твоих построен (хоть десятая доля того что ты придумал :D)???
Кстати..... размести это все в плис с 64 I/O ногами :v2_lol:
Или плата получится как 4 АТМа.....
А скорее всего этого спека..... ну в общем никогда никому в реале не видеть...
Добавлено через 3 минуты
Может что то конкретное интересует ?
Конечно! Как безвайтовость сделана (в ReSpecT 128K)??? :) please....
Мне чёто жудко интересно как именно это будет происходить .
Думал Serial EEPROM какой нибудь....
А еще проще в часиках (PCF8583), там 240 байт.... Хватит с лихвой.
Black_Cat
13.07.2007, 02:45
Это принцип. При том на примере преобразователя ZX to VGA, но по этому же принципу можно и формирование видеовыхода в видеопроцессоре сделать. Для видеопроцессора всё проще - преобразования не нужно - бери сразу из видеопамяти, и только последовательность кадров формируй по указанному алгоритму:
- для стандартного режима -> 1й кадр, усреднённый кадр, 2й кадр;
- для Gigascreen+ -> усреднённый кадр, усреднённый кадр, усреднённый кадр.
Кстати..... размести это все в плис с 64 I/O ногами :v2_lol:
Или плата получится как 4 АТМа..... Это не занимает ни одной лишней ноги и может быть реализовано, если есть свободные ячейки даже в матрице fan'a.
ILoveSpeccy
13.07.2007, 03:00
Это принцип. Притом на примере преобразователя ZX to VGA, но по этому же принципу можно и формирование видеовыхода в видеопроцессоре сделать. Для видеопроцессора всё проще - преобразования не нужно - бери сразу из видеопамяти, и только последовательность кадров формируй по указанному алгоритму:
- для стандартного режима -> 1й кадр, усреднённый кадр, 2й кадр;
- для Gigascreen+ -> усреднённый кадр, усреднённый кадр, усреднённый кадр.
Плату доделаю и попробую...
Понимаешь, я хочу чтобы плата получилась ну вроде как универсальной.
Т.е. менять что-либо в железе чтобы минимум.
А все самое интересное будет в ПЛИС!
Вот потом можно пробовать что душе угодно.
Поэтому и вешаю все на одну плату...
Хотя план действий уже почти готов ;)
Скоро отпуск! Это значит что первый экземпляр уже не за горами!
Ну и вернусь к своему вопросу о разделении буферами проца и памяти...
Реально ли ждать от этого решения работоспособности????
Добавлено через 7 минут
Это не занимает ни одной лишней ноги и может быть реализовано, если есть свободные ячейки даже в матрице fan'a.
Насколько мне известно, у fanа CPLD где-то на 95% заполнена.
И арифметика типа этой: RGBI=(R1+R2)/2; (G1+G2)/2; (B1+B2)/2; (I1+I2)/2
потребует как минимум еще несколько ног!
Потому что придется палитру глубже, чем 4 бита делать.
Black_Cat
13.07.2007, 03:09
Ну и вернусь к своему вопросу о разделении буферами проца и памяти...
Реально ли ждать от этого решения работоспособности????По первому взгляду на размещение буферов - оно мягко говоря странное.. Теоретически можно заставить работать через задницу всё что угодно, но нужно ли это? Не вижу обоснованности такого расположения..
И арифметика типа этой: RGBI=(R1+R2)/2; (G1+G2)/2; (B1+B2)/2; (I1+I2)/2
потребует как минимум еще несколько ног!
Потому что придется палитру глубже, чем 4 бита делать.Я когда писал, знал о чём говорю :) . Суммирование можно сделать не параметрическое, а временное, например с частотой 14 или 28MHz, тогда дополнительных ног не понадобится. Но всёж считаю что на видеовыход надо оставить побольше ног, хотя бы на будуЮщее :) .
ILoveSpeccy
13.07.2007, 03:15
Да я надеялся на активное продвижение супорта карточек SD/MMC , но у нас они чёто не очень популярны . Впринципе девайс для загрузки дампов меня вполне устраивает , да даже турбо загрузка ленточных файлов то же вполне ничего .
Мой спек, ну тот что на CPLD от Xilinx, повторяет твой процентов так на 99;)
Поэтому, если время позволит, надо будет тоже мегу16 прикрутить! Авось чем помочь смогу.
Но основное внимание пока сосредоточено на новой плате!
Добавлено через 3 минуты
По первому взгляду на размещение буферов - оно мягко говоря странное.. Теоретически можно заставить работать через задницу всё что угодно, но нужно ли это? Не вижу обоснованности такого расположения..
Так чем оно так сильно отличается от того, что у fanа??? Просто буфера сдвинуты ближе к процу.
Мне нужен доступ к ROM без участия проца :v2_blush:...
Добавлено через 6 минут
Но всёж считаю что на видеовыход надо оставить больше ног, хотя бы на будуЮщее :) .
Вот и я о том-же! Хоть BGA с 400 шариками дай... когда-нибудь мало будет :v2_biggr:
Black_Cat
13.07.2007, 03:25
Мне нужен доступ к ROM без участия проца :v2_blush:...Для рисования надписей? Ну сделай себе загружаемый в ОЗУ знакогенератор/спрайтогенератор если уж так надо. Хотя нафиг эти надписи, не пойму..
ILoveSpeccy
13.07.2007, 03:47
Хотя нафиг эти надписи, не пойму..
Я и сам не пойму :v2_conf2:
Нафига например часики??? Просто кому-то хотелось!!! Ну чтобы просто были!
А зачем??? Какой реально от них толк??? Вот-вот :confused:
Так-же и мне! Ну хочется чтобы надписи эти были и все тут!!!
Black_Cat
13.07.2007, 03:52
Тоды прицепи ПЗУ знакогенератора и/или ОЗУ ещё под это отведи, тоды и текстовый режим можно реализовать на раз.. ..боже, что я говорю.. :) Но лучше всёж знакогенератор на старте грузить в ОЗУ, (ПЗУ тормозное для видеопроцессора) ну не 32к видео ОЗУ поставишь, а 64к - какая разница.. на 1 специальную ножку больше..
Кстати, этот текстовый режим можно будет использовать в работе монитора-конфигуратора при старте компьютера, т.е. ещё до старта Спековского ПЗУ. Заодно и текстовый режим в 80 колонок автоматом прикручивается :v2_devil:.
PORT_EFF7[4].d=D[4]; -- =PORT_EFF7[4].q; bit4 - 256x224-\__320x200 (GIGASCREEN)OK 0-\__256x192
PORT_EFF7[5].d=D[5]; -- =PORT_EFF7[5].q; bit5 - 256x256-/ (SB)OK 0-/
PORT_EFF7[6].d=D[6]; -- =PORT_EFF7[6].q; bit6 - TURBO 7MHz (384x304)OK
Ой, зря ты это ИМХО. Лучше уж сделать полную совместимость с P1024SL. Реализуй 384x304, а что касается турбы... Сделай переключалку совместимую со Скорпионом. А то опять будет геморрой с поддержкой и никто в результате поддерживать не будет ни Пентагон1024 ни тебя.
Конечно! Как безвайтовость сделана (в ReSpecT 128K)??? please....
Безвейтовость ??? Да там одна сплошная вейтовость %)
С.м. диграмму там где про цвет на точку (я её ща малость подправил чтоб было видно как в респекте фурычит). Если проц ломится в VRAM во время работы ВК то его клок отрубается (на бордюре не отрубается). Зато в RAM всегда летает как не разгоняй .
Думал Serial EEPROM какой нибудь....
А еще проще в часиках (PCF8583), там 240 байт.... Хватит с лихвой.
Религиозные убеждения убеждают что нужно юзать статику с батареей , или флешатину фурычащую как статика (не помню как зовётся).
Писать в часы не одабрям (необоснованные испуги пугают отсутствием оных часов в гредущем).
Ой, зря ты это ИМХО. Лучше уж сделать полную совместимость с P1024SL.
Как уже сказал - порт накручивал от балды .
И всеравно считаю что так называемая совместимость - лесом... (ниже объясню). Ибо раскладка порта EFF7 менялась раза три (если не больше), про другие порты и говорить страшно (особенно мозговые).
Реализуй 384x304,
384x304 жуть кошмарная которая использует страныцы не имеющие отношение не то что к видео страницам , но даже к тормозной видео линейке (если есть такой клон). А у меня чисто физачески только видео страницы юзаются .
, а что касается турбы... Сделай переключалку совместимую со Скорпионом.
В скорпионе есть режимы от 3,5 до 21мгц ?
А то опять будет геморрой с поддержкой и никто в результате поддерживать не будет ни Пентагон1024 ни тебя.
Не поверишь , но проблемма решается простым добавлением SETUP в прогу . Да даже в дёмках где есть музло под ковокс , парой дают почеловечьи выбрать свой порт .
Сделать тупоё вписывание номера порта(портов) и бита(битов) , ну ещё указать если нужно по каким битам порт дешифруется , для программёра делающего серьёзные вещи - как два байта переслать .
Ну на худой конец можно оснастить прогу какимнить бинарником в котором дедовским способом будут вписываться номера портов и биты .
И кстати , ALL . Восемь бит , это не восемь устройств/режимов , а немного побольше ;) К чему я это ??? Наверное к сетатапу :D
И всеравно считаю что так называемая совместимость - лесом...
Так не надо лес-то дальше рассаживать, он и так уже большой и дремучий.
384x304 жуть кошмарная которая использует страныцы не имеющие отношение не то что к видео страницам , но даже к тормозной видео линейке (если есть такой клон). А у меня чисто физачески только видео страницы юзаются .
Интересно, а какая польза от 256x256? 384x304 может и жуть, но появился он от необходимости иметь приемлемый текстовый экран.
В скорпионе есть режимы от 3,5 до 21мгц ?
Там всего два режима: 3.5 и 7. А у тебя разве нет? Бит-то один...
Не поверишь , но проблемма решается простым добавлением SETUP в прогу . Да даже в дёмках где есть музло под ковокс , парой дают почеловечьи выбрать свой порт .
Поверю, только сие некомфортно для пользователя.
Ну на худой конец можно оснастить прогу какимнить бинарником в котором дедовским способом будут вписываться номера портов и биты .
Или придумать некий BIOS, который это делает, и найти куда его запихнуть в ПЗУ. Глядишь и для P1024 поддержка появится. У Скорпиона такое уже было, только RST 8 для этой цели штука неудобная.
ILoveSpeccy
13.07.2007, 16:07
Вот я, например, планировал проблему совместимости
с существующими клонами решить следущим образом:
Никаких портов для выбора конфигурации использоваться не будет!
Изменить конфигурацию можно будет либо в SETUP, либо online через клаву!
Выбрал нужную конфигурацию - она сохранилась например в SerialFLASH.
ПЛИС читает инфу оттуда и рулит портами как надо.
И соответствующие банки с различными прошивками в ПЗУ подключает.
С точки зрения совместимости с уже существующим софтом проблем быть недолжно,
т.к. для программ это абсолютно прозрачный процесс.
Добавлено через 5 минут
Безвейтовость ??? Да там одна сплошная вейтовость %)
С.м. диграмму там где про цвет на точку (я её ща малость подправил чтоб было видно как в респекте фурычит). Если проц ломится в VRAM во время работы ВК то его клок отрубается (на бордюре не отрубается). Зато в RAM всегда летает как не разгоняй .
А я думал вообще без тормозов :o
Просто пин с WAIT на ПЛИС не нашел! Как я понял тормоз включается отрубанием CLOCK???
Может и мне так сделать??? Ногу для WAIT сэкономить мона!
А вообще охота совсем без тормозов :v2_walkm:
Интересно, а какая польза от 256x256?
Это четырёх битные разрешения , для портирования графики с других консолей (чтоб "ценные" куски не отрезать). Как однобитные (пока) не используются .
Бит-то один...
С порта идёт восемь , что несколько развязывает руки .
Поверю, только сие некомфортно для пользователя.
Не понимаю этого прикола .
Один раз выбрать и сохранить "некомфортно" ? :v2_eek:
А выбирать управление для игры то же "некомфортно" ?
Или придумать некий BIOS, который это делает, и найти куда его запихнуть в ПЗУ. Глядишь и для P1024 поддержка появится. У Скорпиона такое уже было, только RST 8 для этой цели штука неудобная.
Я имел ввиду бинарник с накрутками для проги (если кому лень писать менешку для сетупа).
А такой подход с BIOS( = лес широкий и ветвистуй в одном пучке :D ) только развратит программистов , они не только сетапы не будут приделывать , но и писать под такую извраную консоль (существующую в BIOS) , что ни на каком другом реале не запустися . (шутка юмора)
================================================== =======
Собсно чего сейчайс творится ? - Есть туева хуча портов с попсовой дешифрацией , не требующей никаких немо-бас . То что и десяти процентов этого лома не используется подавляющим большинством юзверов - к годалке не ходи . Но как только кто-то что-то хочет захавать сразу протесты . И спрашивается нафига мне резервировать порты под девайсы которые никогда у меня не будут торчать , если эти порты можно пустить на что угодно .
Как пример - есть некий видео чип (или не важно что , хоть ящик шаговиков), который претендует на роль стандартного девайса , вместо того чтоб устраивать консилиум по выбору портов , нужно лишь "заставить" программёров прикрутить сэтап к проге . Я уже не говорю про выбор раскладки для мозговых портов , уж с десяток лет очевидно что нужно прикручивать сетуп ко всему что юзает больше 128к мозгов .
Добавлено через 23 минуты
Как я понял тормоз включается отрубанием CLOCK???
Именно им .
Может и мне так сделать??? Ногу для WAIT сэкономить мона!
Именно поэтому оно так и сделано :)
А вообще охота совсем без тормозов
Эээ , думаю при разгоне всёравно придётся притормаживать , я эту проблемму решил на корню :D
ILoveSpeccy
13.07.2007, 17:33
Эээ , думаю при разгоне всёравно придётся притормаживать , я эту проблемму решил на корню :D
Ну по крайней мере стандартный режим на 3.5 МГц безвайтовым обязательно сделаю :v2_cool:
Добавлено через 18 часов 44 минуты
Вчера ради интереса повыпаивал ВСЕ ДО ЕДИНОГО блокировочные
конденсаторысо своего спека (того, что на CPLD XC95144XL).
Он запустился нормально и я не обнаружил никаких проблем со
стабильностю. Все дорожки 0.4мм и питание идет не со стороны YA и
проца а наоборот - с другого конца.
Может быть он остался работоспособным потому, что плата маленьких
размеров (160мм х 100мм, AY проводами подпаян)????
-----------------------------------------------------------------------
Долго думал как ноги на ПЛИС сэкономитъ.
Может сделать видео на отдельной ПЛИС (XC9572)???
Тогда можно будет и глубину цвета до 4 бит на цвет увеличить! будет 4096 цветов.
Только вот как между собой нормально соеденить процессорную часть с видео???
Я имею в виду передачу каких сигналов (проц <=> видео, кроме шин А и D)
надо огранизовать и как ??? Думал сделать как в SpeccyBob
т.е. передавать в видеоадаптер 3 сигнала:
1. Увеличить значение экранного счетчика на 1
2. Читать байт пикселов
3. Читать байт аттрибутов
Из видео в процессор только 1 сигнал: INT
Может у кого нибудь есть другие идеи на этот счет???
Может быть он остался работоспособным потому, что плата маленьких
размеров
ИМХО и частоты не великие и архитектура простая . У меня ваще такое пугало как дуэт48 (размерами больше пентагона и с убого разведённым питанием) без кандюков работало :D Только на видео сигнале дофига всякой ряби было (как на фирменном спеке).
Может сделать видео на отдельной ПЛИС (XC9572)???
Не одабрям , т.к. их цена в среднем 10 гринов (т.е. это эначит что в некоторых городах и больше), а это не есть гуд (ALL не любит таких подоражаний).
И я сомневаюсь что в XC9572 влезит необходимая куча регистров + мелоч , ибо - [ 3 канала * 4бит(на канал) * 16оттенков = мозг в 192 бит ] .
А вот в основной матрице такая фигня запросто уместится .
Кстати думаю стоит выдрать накрутчик из сырков V9938 (всё есть у меня на сайте в самом низу страницы). Принцип действия простой - выбираем девайс , швыряем ему по два байта на один цвет в палитре (RGB) , после этого двайс сам переключается на приём следующей пары байт и т.д. пока все 16 цветов не загрузятся .
По два байта нужно швырять потому что - в первом байте биты красного и синего - 0 R2 R1 R0 0 B2 B1 B0 , во втором только зелёного - 0 0 0 0 0 G2 G1 G0 .
Во блин , там 3бита на канал (я чёто думал что четыре , ещё удивлялся чего это в TurboGrafX16 по 3 сделали :v2_lol: ) .
Короче можно и три сделать , хотя палитра получается страшноватая (но полюбому лучше чем при 2бита на канал).
Но зато существует крутейшая конвертилка какртинок под такую палитру !
http://www5d.biglobe.ne.jp/~hra/software/bmptomsx/index.htm
Она кстати супортит режим похожий на Hardware Multicolor (Атрибут на байт (два цвета на каждые восемь точек по горизонтали)) , только с произвольной палитрой , картинки получаются просто супер .
Останется лишь сами байты/биты перетосавать под спековый экран .
З.Ы. В TurboGrafX16 юзается несколько палитр , но там свой резон - каждый тайл может захавать любую палитру . В спеке впринципе можно почикать экран на области действия каждой палитры , тоже не хило будет .
Может у кого нибудь есть другие идеи на этот счет???
Если провода джойстика торчат из матрицы , то можно выкинуть порт кемпстона наружу (с переключением между джоями конечно будет облом).
И насколько я понял - если раньше спокойно умещалось два бита на цветовой канал , то остаётся освободить всего три пина (для трёх бит на канал),т.е. выкинуть какойнить COM порт ;) .
З.Ы. Делай сайт !!! И накидай там всяких описаний чего и как будет фурычит , а так же блок схемы того что будет в матрице и самого компа .
ILoveSpeccy
15.07.2007, 00:03
З.Ы. Делай сайт !!! И накидай там всяких описаний чего и как будет фурычит , а так же блок схемы того что будет в матрице и самого компа .
Очень даже хорошее предложение :D
Со воими рекомендациями и соображениями идем СЮДА (http://zx.pk.ru/showthread.php?t=5762)
KingOfEvil
17.07.2007, 00:58
На ПЛИС PS/2 клава занимает, точно не помню, около 125 ячеек (только опрос, спек в клаву ничего не посылает. Да и зачем?)
Так что проблем я невижу...
Прием и расшифровка последовательности скан-кодов + расшифровка кодов нажатия/отжатия + формирование матрицы ZX-клавиш + обработка дополнительных клавиш и преобразование их в параллельно нажатые ZX-клавиши + интерфейс со Спектрумом и все 125 ячеек ??? НЕ ВЕРЮ!
У меня код на чистом асме для КР1878ВЕ1, который делает все описанное, занимает около 700 байтов + буфер ОЗУ ~32 байта.
Если речь шла о Verilog-коде ps2, который лежит на opencores, то, боюсь, на Спектруме от него без серьезной переработки толку мало будет.
ILoveSpeccy
17.07.2007, 02:06
Прием и расшифровка последовательности скан-кодов + расшифровка кодов нажатия/отжатия + формирование матрицы ZX-клавиш + обработка дополнительных клавиш и преобразование их в параллельно нажатые ZX-клавиши + интерфейс со Спектрумом и все 125 ячеек ??? НЕ ВЕРЮ!
У меня код на чистом асме для КР1878ВЕ1, который делает все описанное, занимает около 700 байтов + буфер ОЗУ ~32 байта.
Если речь шла о Verilog-коде ps2, который лежит на opencores, то, боюсь, на Спектруме от него без серьезной переработки толку мало будет.
Т.К. код еще не проверен на реале, воздержусь от комментариев.
Вот доделаю плату, потом разберемся: возможно или нет? :D
p.s. В данный момент собираю DivIDE (XC9572 + RAM + ROM)
Как только обкатаю :v2_cool:, буду доделывать плату.....
KingOfEvil
17.07.2007, 08:16
Вот доделаю плату, потом разберемся: возможно или нет?
Возможно, но не в 125 ячейках. И будет довольно тяжело. Некоторые вещи удобней делать в МК.
ILoveSpeccy
17.07.2007, 10:41
Возможно, но не в 125 ячейках. И будет довольно тяжело. Некоторые вещи удобней делать в МК.
Все тобой вышеописанное :прием, декодирование и вывод,
короче ПОЛНОЦЕННЫЙ контроллер клавы, помещается в
XC95144XL (144 MacroCells) без дополнительной обвески.
Сделано декодирование стандартных 40 кнопок спека и
дополнительные кнопки с цифрами. К ПЛИС подключается
PS/2 клава (2 ноги), /RESET, CLK, A8-15 и D0-4. И ВСЕ!
Все тобой вышеописанное :прием, декодирование и вывод,
короче ПОЛНОЦЕННЫЙ контроллер клавы, помещается в
XC95144XL (144 MacroCells) без дополнительной обвески.
Сделано декодирование стандартных 40 кнопок спека и
дополнительные кнопки с цифрами. К ПЛИС подключается
PS/2 клава (2 ноги), /RESET, CLK, A8-15 и D0-4. И ВСЕ!
Verilog в студию!
ILoveSpeccy
17.07.2007, 11:02
Verilog в студию!
Ковыряйте кому надо.... Только на VHDL ;)
--
-- ZX81 PS2 to keyboard matrix encoder
-- Author : Daniel Wallner
-- http://www.beyondlogic.org/keyboard/keybrd.htm
--
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
entity PS2_MatrixEncoder is
port(
Clk : in std_logic;
Reset_n : in std_logic;
Tick1us : in std_logic;
PS2_Clk : in std_logic;
PS2_Data : in std_logic;
Key_Addr : in std_logic_vector(7 downto 0);
Key_Data : out std_logic_vector(4 downto 0)
);
end PS2_MatrixEncoder;
architecture rtl of PS2_MatrixEncoder is
signal PS2_Sample : std_logic;
signal PS2_Data_s : std_logic;
signal RX_Bit_Cnt : unsigned(3 downto 0);
signal RX_Byte : unsigned(2 downto 0);
signal RX_ShiftReg : std_logic_vector(7 downto 0);
signal RX_Release : std_logic;
signal RX_Received : std_logic;
signal LookUp : std_logic_vector(7 downto 0);
signal Matrix_Set : std_logic;
signal Matrix_Clear : std_logic;
signal Matrix_Wr_Addr : unsigned(7 downto 0);
type Matrix_Image is array (natural range <>) of std_logic_vector(4 downto 0);
signal Matrix : Matrix_Image(0 to 7);
begin
process (Clk, Reset_n)
variable PS2_Data_r : std_logic_vector(1 downto 0);
variable PS2_Clk_r : std_logic_vector(1 downto 0);
variable PS2_Clk_State : std_logic;
begin
if Reset_n = '0' then
PS2_Sample <= '0';
PS2_Data_s <= '0';
PS2_Data_r := "11";
PS2_Clk_r := "11";
PS2_Clk_State := '1';
elsif Clk'event and Clk = '1' then
if Tick1us = '1' then
PS2_Sample <= '0';
-- Deglitch
if PS2_Data_r = "00" then
PS2_Data_s <= '0';
end if;
if PS2_Data_r = "11" then
PS2_Data_s <= '1';
end if;
if PS2_Clk_r = "00" then
if PS2_Clk_State = '1' then
PS2_Sample <= '1';
end if;
PS2_Clk_State := '0';
end if;
if PS2_Clk_r = "11" then
PS2_Clk_State := '1';
end if;
-- Double synchronise
PS2_Data_r(1) := PS2_Data_r(0);
PS2_Clk_r(1) := PS2_Clk_r(0);
PS2_Data_r(0) := PS2_Data;
PS2_Clk_r(0) := PS2_Clk;
end if;
end if;
end process;
process (Clk, Reset_n)
variable Cnt : integer;
begin
if Reset_n = '0' then
RX_Bit_Cnt <= (others => '0');
RX_ShiftReg <= (others => '0');
RX_Received <= '0';
Cnt := 0;
elsif Clk'event and Clk = '1' then
RX_Received <= '0';
if Tick1us = '1' then
if PS2_Sample = '1' then
if RX_Bit_Cnt = "0000" then
if PS2_Data_s = '0' then -- Start bit
RX_Bit_Cnt <= RX_Bit_Cnt + 1;
end if;
elsif RX_Bit_Cnt = "1001" then -- Parity bit
RX_Bit_Cnt <= RX_Bit_Cnt + 1;
-- Ignoring parity
elsif RX_Bit_Cnt = "1010" then -- Stop bit
if PS2_Data_s = '1' then
RX_Received <= '1';
end if;
RX_Bit_Cnt <= "0000";
else
RX_Bit_Cnt <= RX_Bit_Cnt + 1;
RX_ShiftReg(6 downto 0) <= RX_ShiftReg(7 downto 1);
RX_ShiftReg(7) <= PS2_Data_s;
end if;
end if;
-- TimeOut
if PS2_Sample = '1' then
Cnt := 0;
elsif Cnt = 127 then
RX_Bit_Cnt <= "0000";
Cnt := 0;
else
Cnt := Cnt + 1;
end if;
end if;
end if;
end process;
process (Clk, Reset_n)
begin
if Reset_n = '0' then
RX_Byte <= (others => '0');
RX_Release <= '0';
Matrix_Set <= '0';
Matrix_Clear <= '0';
Matrix_Wr_Addr <= (others => '0');
elsif Clk'event and Clk = '1' then
Matrix_Set <= '0';
Matrix_Clear <= '0';
if RX_Received = '1' then
RX_Byte <= RX_Byte + 1;
if RX_ShiftReg = x"F0" then
RX_Release <= '1';
elsif RX_ShiftReg = x"E0" then
else
RX_Release <= '0';
-- Normal key press
if unsigned(LookUp) /= 0 and RX_Release = '0' then
Matrix_Wr_Addr <= unsigned(LookUp);
Matrix_Set <= '1';
end if;
-- Normal key release
if unsigned(LookUp) /= 0 and RX_Release = '1' then
Matrix_Wr_Addr <= unsigned(LookUp);
Matrix_Clear <= '1';
end if;
end if;
end if;
end if;
end process;
-- ZX81 keymap:
-- shift, z, x, c, v
-- a, s, d, f, g
-- q, w, e, r, t
-- 1, 2, 3, 4, 5
-- 0, 9, 8, 7, 6
-- p, o, i, u, y
-- return, l, k, j, h
-- space, ., m, n, b
process (RX_ShiftReg)
begin
case RX_ShiftReg is
when x"12" => LookUp <= "00000001"; -- shift
when x"59" => LookUp <= "00000001"; -- shift
when x"1a" => LookUp <= "00000010"; -- z
when x"22" => LookUp <= "00000100"; -- x
when x"21" => LookUp <= "00001000"; -- c
when x"2a" => LookUp <= "00010000"; -- v
when x"1c" => LookUp <= "00100001"; -- a
when x"1b" => LookUp <= "00100010"; -- s
when x"23" => LookUp <= "00100100"; -- d
when x"2b" => LookUp <= "00101000"; -- f
when x"34" => LookUp <= "00110000"; -- g
when x"15" => LookUp <= "01000001"; -- q
when x"1d" => LookUp <= "01000010"; -- w
when x"24" => LookUp <= "01000100"; -- e
when x"2d" => LookUp <= "01001000"; -- r
when x"2c" => LookUp <= "01010000"; -- t
when x"16" => LookUp <= "01100001"; -- 1
when x"69" => LookUp <= "01100001"; -- 1
when x"1e" => LookUp <= "01100010"; -- 2
when x"72" => LookUp <= "01100010"; -- 2
when x"26" => LookUp <= "01100100"; -- 3
when x"7a" => LookUp <= "01100100"; -- 3
when x"25" => LookUp <= "01101000"; -- 4
when x"6b" => LookUp <= "01101000"; -- 4
when x"2e" => LookUp <= "01110000"; -- 5
when x"73" => LookUp <= "01110000"; -- 5
when x"45" => LookUp <= "10000001"; -- 0
when x"70" => LookUp <= "10000001"; -- 0
when x"46" => LookUp <= "10000010"; -- 9
when x"7d" => LookUp <= "10000010"; -- 9
when x"3e" => LookUp <= "10000100"; -- 8
when x"75" => LookUp <= "10000100"; -- 8
when x"3d" => LookUp <= "10001000"; -- 7
when x"6c" => LookUp <= "10001000"; -- 7
when x"36" => LookUp <= "10010000"; -- 6
when x"74" => LookUp <= "10010000"; -- 6
when x"4d" => LookUp <= "10100001"; -- p
when x"44" => LookUp <= "10100010"; -- o
when x"43" => LookUp <= "10100100"; -- i
when x"3c" => LookUp <= "10101000"; -- u
when x"35" => LookUp <= "10110000"; -- y
when x"5a" => LookUp <= "11000001"; -- return
when x"4b" => LookUp <= "11000010"; -- l
when x"42" => LookUp <= "11000100"; -- k
when x"3b" => LookUp <= "11001000"; -- j
when x"33" => LookUp <= "11010000"; -- h
when x"29" => LookUp <= "11100001"; -- Space
when x"49" => LookUp <= "11100010"; -- .
when x"3a" => LookUp <= "11100100"; -- m
when x"31" => LookUp <= "11101000"; -- n
when x"32" => LookUp <= "11110000"; -- b
when others => LookUp <= "00000000";
end case;
end process;
process (Clk, Reset_n)
begin
if Reset_n = '0' then
Matrix <= (others => (others => '0'));
elsif Clk'event and Clk = '1' then
if RX_ShiftReg = x"aa" and RX_Received = '1' then
Matrix <= (others => (others => '0'));
end if;
if Matrix_Set = '1' then
Matrix(to_integer(Matrix_Wr_Addr(7 downto 5))) <=
Matrix(to_integer(Matrix_Wr_Addr(7 downto 5))) or
std_logic_vector(Matrix_Wr_Addr(4 downto 0));
end if;
if Matrix_Clear = '1' then
Matrix(to_integer(Matrix_Wr_Addr(7 downto 5))) <=
Matrix(to_integer(Matrix_Wr_Addr(7 downto 5))) and
std_logic_vector(not Matrix_Wr_Addr(4 downto 0));
end if;
end if;
end process;
g_out1 : for i in 0 to 4 generate
Key_Data(i) <= not ((Matrix(0)(i) and not Key_Addr(0)) or
(Matrix(1)(i) and not Key_Addr(1)) or
(Matrix(2)(i) and not Key_Addr(2)) or
(Matrix(3)(i) and not Key_Addr(3)) or
(Matrix(4)(i) and not Key_Addr(4)) or
(Matrix(5)(i) and not Key_Addr(5)) or
(Matrix(6)(i) and not Key_Addr(6)) or
(Matrix(7)(i) and not Key_Addr(7)));
end generate;
end;
KingOfEvil
17.07.2007, 20:31
Теперь верю :)
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot