Просмотр полной версии : ULA 4видеорежима и все в 64 макроячейки
Вот вам альфа версия ULA размером в 64 макроячейки
которая перкарасно впихивается к примеру в Altera EPM7064 MAX
При это схемка мультиплекит 20бит адреса
Подерживает 4 видеорежима
1. 256х192 стандартный
2. 256х192 железный мультицвет
3. 512х192 монохром (со спецификой пока)
4. GigaScreen
За основу взята схема от KAY-1024 (недеюсь я ее не поуродовал)
Особенности режима 512x192 в том что атребуты экрана устанавлеваются
такие какие были у последненго считаного знакоместа до переключеия.
nVOE - нога для формирования гашения сигала
Остальные названия взяты по схеме KAY-1024 (вереней ANT-1024HD sblive.narod.ru).
Во вложении snapshot проекта для Altera Quatrus исходник на VerilogHDL
Orionsoft
17.01.2006, 04:03
Вот вам альфа версия
Правильной дорогой идём товарищи !!!
Какая наиболее коректная длительность сигнала INT
хотя бы для KAY и Penatagon
Какая наиболее коректная длительность сигнала INT ... Для Кворумов оптимальная длительность 10 мксек.
Замерил длительность на ZX Spectrum +2 = примерно 9 мксек. (фронты сильно завалены).
То есть примерно 1/6 - 1/7 длительность строки раста.
А еще встречный вопрос в моей ULA сброс сигнала
без компромисно сбрасывается шинным циклом INTA
плюс я добавлю что-бы сигнал запроса снимался по
истеченнию указанного выше периода
Возможно что это повлияет на софт хитрый?
А еще встречный вопрос в моей ULA сброс сигнала
без компромисно сбрасывается шинным циклом INTA
плюс я добавлю что-бы сигнал запроса снимался по
истеченнию указанного выше периода
Возможно что это повлияет на софт хитрый?Длительность INT должна быть фиксированной.
Сброс INT сигналом INTA, приводит к не корректной
работе многих программ - проверено.
Так было сделано в BALTIK - приходилось делать доработку.
То есть примерно 1/6 - 1/7 длительность строки раста.
А еще встречный вопрос в моей ULA сброс сигнала
без компромисно сбрасывается шинным циклом INTA
плюс я добавлю что-бы сигнал запроса снимался по
истеченнию указанного выше периода
Возможно что это повлияет на софт хитрый?
Посмотри как в Кay-1024 INT сделан (на ИР16).
Посмотри как в Кay-1024 INT сделан (на ИР16).По схеме получается, что в КАY длительность INT определяется
длительностью ТРЕХ команд попадающих на время окончания импульса KC/.
А это от 3*4*1/3.5 = примерно 3.5 мксек.
Тоесть это минимальная длительность INT в KAY.
Принимаем к сведению
Учитывая специфику ограничения в 64 макроячейки делаю
сигнал INT длиной в 4 микросекунды
всего лиш подкинуться к счетчикам
А насчет считать сигналы M1 к сожалению места нет
Вот прфиксил
Теперь сигнал INT фиксирован 4мкс
и появилась свободная ножка :)
Orionsoft
17.01.2006, 20:28
строки раста.
Это такие зеленые с дредами ???
Ага :)
Люди интересно ведь время доступа в SIMM 30pin позволяет сделать прозрачный доступ к памяти и на частота 7Mhz. Это вопрос кто нибудь расматривал?
По схеме получается, что в КАY длительность INT определяется
длительностью ТРЕХ команд попадающих на время окончания импульса KC/.
А это от 3*4*1/3.5 = примерно 3.5 мксек.
Тоесть это минимальная длительность INT в KAY.Несколько не так.
Логика работы этой схемы следующая:
- Если прерывания запрещены, то после окончания импульса КС (Кадровой Синхронизации) при завершении цикла М1 устанавливается низкий уровень INT, затем в течение еще одного цикла M1 удерживается и по окончании третьего цикла М1 выставляется высокий уровень INT до прихода следующего КС.
- Если прерывания разрешены, то после окончания импульса КС при завершении цикла М1 устанавливается низкий уровень INT. А дальше возможны два варианта:
а) машинный цикл М1 был единственным или последним в исполняемой инструкции. При этом в цикле подтверждения маскируемого прерывания генерируется специальный цикл M1, а далее во время обработки прерывания, первый машинный цикл М1 восстанавливает высокий уровень сигнала INT.
б) машинный цикл М1 был первым из двух в исполняемой инструкции. При этом во втором цикле М1 исполняемой инструкции уровень INT остается низким. Далее во время подтверждения маскируемого прерывания генерируется специальный цикл M1, который восстанавливает высокий уровень сигнала INT.
Необходимость обработки варианта "б)" и привела к тому, что для полного цикла генерации прерывания необходимо три цикла М1. Минимальная длительность INT равна двум циклам М1 (промежуток между первым М1 и вторым плюс между вторым и третьим). Или 2*4*1/3.5 = примерно 2.3 мксек (с запрещенными прерываниями).
Главным недостатком приведенной схемы является не «слишком короткое» или «плавающее по длительности» прерывание (INT), а зависимость времени его начала от положения текущего цикла М1 (относительно КС).
Но есть и плюс. Такая схема работает одинаково и в обычном и турбо-режимах.
Люди интересно ведь время доступа в SIMM 30pin позволяет сделать прозрачный доступ к памяти и на частота 7Mhz. Это вопрос кто нибудь расматривал?Я уже писал в одном из тредов, что турбирование Кворумов с SIMM
прекрасно выполняется без циклов WAIT.
Для увеличения длительности цикла чтения памяти рекомендуется
формировать сигнал /RDMEM не из /RD, а из инверсного /WR.
Единственное НО, не все 4-х мегагерцовые процессоры Z80 работают на 7 Мгц.
Лучше ставить 6-и или выше.
Вот тут немного запарился с кадровой разверткой
Начитался гостов по стандарту телевизионного сигнала и лутьше бы я их не читал.
Вот примерно какой цикл развертки по вертикали я вижу, поправте если че не так. (Цилк развертки по схемному начинается в первой строки изображения)
0-191 (192 строки) Непосредствеено изображение
192-239 (48 строк) Нижняя часть бордюра
240-263 (24 строки) Фактически область гашения
240-242 (3 строки) Кадровый синхроимпульс (вот тут не уверен)
264-311 (48 строк) Верхняя часть бордюра
2heroy: Хотел спросить. Ты работал схемным вводом? Файлик с кодом на Verilog - это твой и Quartus?
Я взял изначально схему KAY и перевожу ее на Verilog с соответствующими изменеиями для видеорежимов и расширения функциий. Схемный ввод не рекомендуется использовать, так как компилятор пользуется стандартными библиотеками которые совсем не предназначены для эфиктивного использования в ПЛИС, возникают
статические и диннамические риски, выпады сигнала, которые средство синтеза не может устранить, плюс схемный ввод задает жесткие ограничения на реализацию. Попробуй введи схему синхргенератора
и посмотри что выйдет, на сайте sblive.narod.ru в проекте ANT-1024HD к примеру схема может работать (по расчетам CAD) на частоте 7НГц плюс очень много переходных процессов.
Для дискретной логики это не так критично, а для современных микросхем где частота переключения тригера может без проблем достигает 100МГц эти риски и выбросы могут превести к нестабильной работе и даже полной неработоспособности схемы
Схемный ввод не рекомендуется использовать, так как компилятор пользуется стандартными библиотеками которые совсем не предназначены для эфиктивного использования в ПЛИС, возникают
статические и диннамические риски, выпады сигнала, которые средство синтеза не может устранить, плюс схемный ввод задает жесткие ограничения на реализацию.
Бо, такого подробного ответа я не ожидал, огромное спасибо. Можно в личку стукнутся по поводу Verilog'а и VHDL?
deathsoft
18.01.2006, 21:31
Схемный ввод не рекомендуется использовать, так как компилятор пользуется стандартными библиотеками которые совсем не предназначены для эфиктивного использования в ПЛИС
Конечно если использовать в квартусе эмуляцию микросхем серии 74ls..., то будет неэффективно, а если макро и мегафункции или отдельные логические элементы, то будет очень даже эффективно (т.к. внутри это транслируется в AHDL). Попробуй например эффективно описать память на верилоге (не любой компилятор ее распознает (Leonardo, Sinplify и т.д., а квартус тем более), а если использовать библиотечный компонент от альтеры (хоть в коде верилога, хоть в схеме), то реализация будет эффективной
to deathsoft
Специально проверил :) reg [7:0]RAM[0:1023]
Вот описание блока памяти 1Кбайт на Verilog
Во всех микрухах где есть блоки памяти именно туда и всунуло
ISE 7.1
Quartus 4.2
Leonardo Spectrum
Active-HDL 6.3 тож понял че хотят
А на самом деле я просто не правильно выразился я имел ввиду что
нельзя использовать библиотеку 74 серии а мегафункции пишуться на том же Verilog или любом другом которые средства поймут.
У меня такое вкрадчивое впечатление тема уходит в нитуда, есть ли люди которы могут меня проконсультировать по вопросу кадровой растосовки строк ?
PS. Не надо только язвить и просить двухпортовую память описать :)
У меня такое вкрадчивое впечатление тема уходит в нитуда, есть ли люди которы могут меня проконсультировать по вопросу кадровой растосовки строк ?
У тебя MaxPlus есть, давай я тебе кину исходники Кая на AHDL ты в эмуле MAXPlusa посмотришь все синхросигналы.
давай я тебе кину исходники Кая на AHDL.
Выложи если можно сюда.
Выложи если можно сюда.
Я недоделки не люблю выкладывать, это чисто для внутреннего использования.
У меня такое вкрадчивое впечатление тема уходит в нитуда, есть ли люди которы могут меня проконсультировать по вопросу кадровой растосовки строк ?
Посмотри вот здесь http://www.cctvlabs.com/Theory/palntsc.html, а вообще что касается видео (любого), то лучше сразу идти вот сюда http://www.epanorama.net/links/video.html.
alexfreed
19.01.2006, 13:39
To heroy (mostly)
Я делал примерно то же самое, только под Xilinx а не Altera. Исторически я с ним больше работал.
Если интересно есть мой Верилог. Вроде на симуляции видео идет равильно.
До кремния дело не дошло пока. Я сторался вписаться в корпус с 44 ногами но может не очень получиться. Вместе с контроллером памяти и т.д. видимо
придется ставить XC95108 о 84 ногах.
Зато можно предусмотреть VGA совместимый режим. Строка сканируется 2 раза но вдвое быстрее. Я таким образом Apple 2 на FPGA делал.
По логике я думаю правильно мультипелксор памяти видео синхрогенератор и около стоящие модули обьединить меньше внешних сигналов экономия на мелкосхемах да и плату можно с низкой детализацией маленькую и дешевую сделать даже на рудиорынках люди справятся
А вообще идельный вариант 2 микрухи ПЛИС на пример альтеру 7064 по самым дорогим ценам которые у меня в городе найти можно 9 доларов AVR со схемой XZ-multicard
Можно микросхемах на 15-20 сделать спек с PS2 клавиотурой мышай, иде контролером контролером, контролером дисковода и всунуться доларов в 50
Начтет двойного проход можно но тайминги очень серьезно уедут, думаю много софта поламается
Вот свершилось!
На основании обдумывательного процесса получилась бета версия
теперь она именуется гордым названием Северный мост, так как по сути назначения микросхем сходны, и самое главное не поленился и начал писать DataSheet (Описание архитектуры, принципа функционирования, сигналов и т.д.) и уже заказал себе микруху как только пренесут Спеки мне свершиться два события, я наконец то спустя столько лет стану опять реальщиком а во вторых буду их потрошить и схему проверять в железе после чего появиться релиз кандидат.
И еще на Украинский рынок KAY проникал, можно ли заняться розыском?
alexfreed
20.01.2006, 00:55
А вообще идельный вариант 2 микрухи ПЛИС на пример альтеру 7064 по самым дорогим ценам которые у меня в городе найти можно 9 доларов AVR со схемой XZ-multicard
Можно микросхемах на 15-20 сделать спек с PS2 клавиотурой мышай, иде контролером контролером, контролером дисковода и всунуться доларов в 50
Начтет двойного проход можно но тайминги очень серьезно уедут, думаю много софта поламается
Одна штука XC95108 тоже стоит $9. PLCC84. Я их парочку прикупил,
так что можно будет поиграть. AVR - святое дело. Я на них все делаю.
Предлагаю сделать схему в ORCAD или Protel чтобы можно было вносить
поправки вдвоем и более.
Я не уверен что времянка так уж сильно уедет. Если макроячейки не экономить, можно без напряга сделать 2 строчки ровно за 224 такта.
Скажем Пентагон от Скорпиона сильнее отличается.
Только не смеяться я ORCAD два раза в жизни видел и то не на моем ПСюке,
насчет совместной работы я естественно не против. Если каждый по немногу усилия приложит - результат естественно быстей наступит, но тут вопрос о координаторе, если каждый в свою дудку дует. Будет еще хуже. Попробуй мой схем на Veriloge в XC95108 сколько он ресурсов займет. В Altera 7064 схема заняла почти 100% трасировочного ресурса использует 42 из 64 тригеров, заняты все 64 макроячейки
И еще ты имееш в виду новый видеорежим или переплясать существующие? Что бы не возникало проблем с мониторами.
Возможно экономически это выгодней, и еще TTL 5 вольт поддерживает?
alexfreed
20.01.2006, 01:27
На основании обдумывательного процесса получилась бета версия
Здорово! Особенно документация понравилась. Это не часто видишь в любительских проектах.
Не нравится только WAIT. Ни к чему это :) На 7 МГц время цикла 140 нс. Не вопрос для современной памяти. Если при этом еще и вдвое чаще для видео данные вытаскивать, то получится все как в стандартном Спеке без WAIT только вдвое быстрее, поскольку и память быстрее. А притормозить либо CPU либо видео для ТВ не вопрос.
И еще онин прикол. Современная память допускает страничный доступ. Даем один RAS и несколько CAS. А теперь заметим что 8 младших бит для пикселов и атрибутов всегда те же. А в каком порядке адресовать память не существенно (при прозрачной регенерации). Так что можно еще выиграть на времени доступа, если надо. Но вроде и так все успеваем.
alexfreed
20.01.2006, 01:38
Только не смеяться я ORCAD два раза в жизни видел и то не на моем ПСюке
Не знаю как у вас в городе, а в Москве продают у каждого выхода из метро :)
Попробуй мой схем на Veriloge в XC95108 сколько он ресурсов займет
Проверю и доложу.
И еще ты имееш в виду новый видеорежим или переплясать существующие
Не понял вопроса. В моем варианте поддерживается только стандартный режим, но я обеими руками за расширение.
TTL 5 вольт поддерживает?
Старые XC на 5 вольт. А новые (намного дешевле) на 3.3 но держат 5 в (5 v tolerant). А по выходу 3.3 для ТТЛ не вопрос. Я сделал конверсию 48 клона в 128 на одном XC95XL32. Он на 3.3 в но прекрасно работает. А стоит $1 (ОДИН прописью!).
Если често для кулебятничества и повтора схемы на интузиазменных началах важна дешивизна и простота сборки наладки, и самое главное для любого спектрума это что бы там поколупаться можно было, и ключевые сигналы снаружи проходили.
У меня вот только один вопрос назревает если для VGA монитора делать как он будет жить с 50Hz кадровой развертки ? Ее уж точно менять нельзя.
Идея использовать нормальный монитор это правильно, во если бы нормальные частоты что бы глазам хорошо было, была бы песня!
alexfreed
20.01.2006, 01:49
Есть такая идея. Мне очень нравится как Unreal очищяет совершенно нечитаемый экран, заменяя 4 пиксельные фонты на более нормальные.
Так вот если есть 512 пиксельный режим, насколько сложно сделать программу которая делает то же самое в реале?
Тогда точно прийдется переходить на тяжелую технику, а нехочется
в Unleal я както не обращал внимание на то о чем ты говориш, програмны
фильтр легче сделать чем аппаратно, например antialiasing в ПСюковых видяхах
по сей день не малой кровью дается.
Хотя может я и ошибаюсь :)
И если такое сделать да к тому же на мониторе это было бы первое место по соотношению (современность/совместимось).
alexfreed
20.01.2006, 01:55
У меня вот только один вопрос назревает если для VGA монитора делать как он будет жить с 50Hz кадровой развертки ? Ее уж точно менять нельзя.
Нельзя менять когда демки и игрушки запускаются. А когда с текстом работать, то наверное можно.
Современные VGA мониторы понимают сигналы в больших пределах. 50 Hz кадровой их не испугает. Глаза только устают если это CRT. A если LCD, то просто песня.
Нельзя менять когда демки и игрушки запускаются. А когда с текстом работать, то наверное можно.
Это у людей поинтересоваться стоит, база знаний сдесь на форуме весьма не скромная
alexfreed
20.01.2006, 02:07
програмны
фильтр легче сделать чем аппаратно
Я и говорю програмный фильтр. На входе буффер #4000. На выходе твой режим 512 пикселов, (только в другой странице ?). А преобразование делает программа. Может по таймеру?
alexfreed
20.01.2006, 02:11
Попробуй мой схем на Veriloge в XC95108 сколько он ресурсов займет
Это не совсем честно: на вскидку 4 сигнала были не определены и я их закоментировал. Например AW это откуда?
Но порядок величины тот же, естественно. XC95108 половина останется.
cpldfit: version G.35 Xilinx Inc.
Fitter Report
Design Name: SV Date: 1-19-2006, 3:00PM
Device Used: XC9572-7-PC84
Fitting Status: Successful
**************************** Resource Summary ****************************
Macrocells Product Terms Registers Pins Function Block
Used Used Used Used Inputs Used
53 /72 ( 74%) 121 /360 ( 34%) 25 /72 ( 35%) 62 /69 ( 90%) 96 /144 ( 67%)
PIN RESOURCES:
Signal Type Required Mapped | Pin Type Used Remaining
------------------------------------|---------------------------------------
Input : 37 37 | I/O : 61 2
Output : 24 24 | GCK/IO : 1 2
Bidirectional : 0 0 | GTS/IO : 0 2
GCK : 1 1 | GSR/IO : 0 1
GTS : 0 0 |
GSR : 0 0 |
---- ----
Total 62 62
MACROCELL RESOURCES:
Total Macrocells Available 72
Registered Macrocells 25
Non-registered Macrocell driving I/O 20
Я и говорю програмный фильтр. На входе буффер #4000. На выходе твой режим 512 пикселов, (только в другой странице ?). А преобразование делает программа. Может по таймеру?
Во первых режим не мой, а схемка была гдето и управлялось портом FEF7 или EFF7 не помню точно, теоритически возможно только где время процу взять?
Да и хватит ли сил у него.
Я вот думаю единственный режим который можно перелопатить это какой нить символьный с 80 символами в строке может даже ATM что бы софт готовый уже был.
Останется только открытым вопрос с софтом и если сделать нормальное ПО то можно и на реальном спектруме работать, в том числе и софт писать. Вспомнить хотя бы Borland Pascal 7, идеальная по тем временам среда для девелопинга была.
AW этот сигнал используется для формирования циклов WAIT.
Попробую ISE до ума довести чтоб она не ругалась
Подправил исходник (попереставлял местами строчки).
Теперь удачно без возгласов компилиться и в ISE и в Quartus
Xilinx рулит места еще половину осталось
alexfreed
20.01.2006, 12:46
Xilinx рулит места еще половину осталось
Отож :)
Раз так много места осталось, кидаю до кучи свой MMU. Устройство не хитрое, но оно отлажено в железе и работает.
Оффтопично, но хочу у гуру спросить: почему verilog? я начал изучать vhdl, потому как начитался, что он более распространён, чем verilog (в comp.lang.vhdl подобные вопросы вызывают новую итерация в священных войнах :) ). Где можно в сети найти хороший учебник по verilog (на русском || английском || немецком)?
Надо MMU до 1мегабайта что бы управляло, за основу раскладка портов KAY
и что бы порты читались наверное (7FFD,1FFD), Но тут целая епопея возникнет по поводу дешифраци портов
Плюс эту логику надо сделать с в другой микрухе,иначе полезных много сигнальчиков внутри окажется
ieee1364 по Verilog написано руским языком с помощью английских слов :)
Evita_Verilog :) на сайте Aldec там жучок прикольный
ieee1364 по Verilog написано руским языком с помощью английских слов :)
Это как понять?
Evita_Verilog :) на сайте Aldec там жучок прикольный
Что за жучок? Evita - это типа интерактивный туториал, так?
Это как понять? Отличная документация тем более первоисточник в сети валяется
это типа интерактивный туториал, так? Ага
А вообще у меня книг по этому делу куплено уже гдето на $100 на халяву редко бывает че-то полезное
alexfreed
21.01.2006, 01:03
почему verilog?
Потому что на нем удобнее, по крайней мере мне. Он похож на Си, а vhdl - на Аду.
Что не удивительно, поскольку был создан по заказу того же Пентагона. А теперь почему то в Европе он стал более популярен, а в Америке - Verilog.
Я начал с VHDL поскольку на фирме им пользовались. Но когда попробовал Verilog,
то как говорится "never looked back".
Могу переслать по мылу хорошие учебники в pdf, если адрес даш.
alexfreed
21.01.2006, 01:12
Надо MMU до 1мегабайта
Естественно. Я тут спрашивал публику по каким адресам делать, но мнения разошлись. К тому же текущая версия работает в качестве апгрейда 48-го до 128.
И как раз в отдельном XC95XL36 за один американский рубль. Точнее $1.25
Логики остается выше крыши чтобы сделать более одного стандарта. И ножек - тоже. Можно сделать DIP switch на 2 бита - выбор Пентагон/Скорпион/ХХ/YY.
И еще один бит - VGA или TV.
Я думаю это надо упаковывать во вторую микруху (Южный мост типа :) )
Тама должно быть
1. Логика IORQG
2. MMU 1М думаю логично по схеме KAY раз он взят за основу (и стермлюсь с совместимости с ним)
3. Порт #EFF7 bit0 =>VM[0] bit1=>VM[1] bit4=>VM[2] Нужно наверное реализовать еще и bit 2,3 они весьма полезны
4. Главный дешифратор (#7FFD,#1FFD,AY, BetaDisc, i8255, #FE на запись что бы наружу торчало только Speaker, MagOut, и BRD[2:0])
5. Логику ФАПЧ , сепаратара данных, и логику предкомпенсации записи для контролера дисковода
6. Контролер HDD Nemo так чтобы снаружи остались только Регистры защелки
7. Придумать че-то с методом определения этого компа и метод переключения TV/Monitor
8. Всунуть максимум логики от ZX-Multicard которая была зарелизина тут на форуме ( решается вопрос с клавиотурой, мышаком, RTC, CMOS RAM, RS-232)
9. Устроить прелюдное спаливание двух ПСшек :)
В общем головной боли еще много
alexfreed
23.01.2006, 07:55
Логику ФАПЧ , сепаратара данных, и логику предкомпенсации записи для контролера дисковода
Если место останется. Иначе легко на рассыпухе делается. И вообще хорошо бы определить что именно хочется сделать. Лично у меня идея такая: маскимально простой (в смысле минимум корпусов) комп на котором можно гонять всякие демки.
Так что мне даже не очевидно что надо FDD делать, тем более что 1793 совершенно не достать. А вот IDE интерфейс было бы очень полезно.
Потому что на нем удобнее, по крайней мере мне. Он похож на Си, а vhdl - на Аду.
Я вообще когда VHDL в первый раз увидел, мне он показался похожим на PL/SQL, у которого тоже ноги из Ады растут :)
Что не удивительно, поскольку был создан по заказу того же Пентагона. А теперь почему то в Европе он стал более популярен, а в Америке - Verilog.
Видать в Европе разработчики железа не бывшие сишники :)
Я начал с VHDL поскольку на фирме им пользовались. Но когда попробовал Verilog,
то как говорится "never looked back". Могу переслать по мылу хорошие учебники в pdf, если адрес даш.
Учебник надо, очень. Адрес icebear(at)mail333.com. Большое спасибо. В принципе разница между обоими языками понятна, да и почему (а главное кто) отадёт предпочтение тому или иному языку. Всё, сворачиваю оффтопик, жду учебники.
Тама должно быть
1. Логика IORQG
2. MMU 1М думаю логично по схеме KAY раз он взят за основу (и стермлюсь с совместимости с ним)
.......
.......
8. Всунуть максимум логики от ZX-Multicard которая была зарелизина тут на форуме ( решается вопрос с клавиотурой, мышаком, RTC, CMOS RAM, RS-232)
9. Устроить прелюдное спаливание двух ПСшек :)
А когда всё это в серию пойдёт?
С сериями у нас тлько Роман занимаеться, а это просто как вариант разработать минимальное по цене изделее, для интузиастов которые не боятся пойти заказать плату микрухи (будем стремиться к минимуму), взять поятельный инструмент в ручки, у плюс еще надо уметь микрухи логики прошивать, но там особой проблемы нет, грубо говоря 3 провока в порт принтера и готово.
и вкусной возможностью без проблем с разверткой к монитору подключтиться, у меня на радиорынке к примеру 15" самсунг не сильно подрыпаный без коробки (упаковки в смысле) можно за 30 американских гривней взять, а DAEWOO за 10$ :)
Если место останется. Иначе легко на рассыпухе делается.
Да и в плисине занимает 9 ножек и чето около 20 ячеек (эти в модели ВГшки уже проверил :) )
Так что мне даже не очевидно что надо FDD делать, тем более что 1793 совершенно не достать. А вот IDE интерфейс было бы очень полезно.
Каким образом тогда просматривать че на винте? В этом варианте прийдется прошивку писать чеб с ним работать (это больной вопрос в данной среде общества). Ну а контролер естественно
Надо будет написать ТЗ. Потом отретушировать и защитить :)
Каким образом тогда просматривать че на винте? В этом варианте прийдется прошивку писать чеб с ним работать (это больной вопрос в данной среде общества). Ну а контролер естественно
Надо будет написать ТЗ. Потом отретушировать и защитить :)
Поддержи Кайевский контроллер, раз уж Кай в качестве образца взял. Контроллер у него несложный и оси его поддерживающие уже есть. ;)
Я буду делать (точнее делаю) под условным названием Турбо3 (как бы продолжаю выбранную линейку).
Поддержи Кайевский контроллер, раз уж Кай в качестве образца взял.
Ну я в принципе и хочу KAY, вопрос а эти оси можно в ROM разместить а то в лбом случае ее (ОС) как то на винте расположить надо , а если флоповода нет?
Или её через ПС кинуть туды можно, ( в смысле есть инсталяшка соответствующая)
Ну я в принципе и хочу KAY, вопрос а эти оси можно в ROM разместить а то в лбом случае ее (ОС) как то на винте расположить надо , а если флоповода нет?
Или её через ПС кинуть туды можно, ( в смысле есть инсталяшка соответствующая)
В стандартной прошивке Кая предусмотрен лоадер с жесткого диска. ТАк что смело соответствующую прошивку и вперед.
iSDOS поддерживает Кай, я даже скажу больше заточена наиболее хорошо под него.
ПО поводу флопповода, Камиль сейчас делает хардваре эмулятор ВГ93 на AVR, токо вместо дискет будет использоваться ФЛАШ карты.Ну это он сам лучше пусть расскажет :).
Камиль сейчас делает хардваре эмулятор ВГ93 на AVR, токо вместо дискет будет использоваться ФЛАШ карты
Это дополнение к ZX Card будет?
Это дополнение к ZX Card будет?ZXCard - на ATMega8515.
Для работы с флэшкой слабовата, в частности мало ОЗУ (512байт).
Но я ее все таки развел и 3 февраля получу готовые платы.
ZXCard2 - на ATMega128.
Умеет все, что умеет ZXCard + работа с флэшкой и эмуляция ВГ93.
Умеет все, что умеет ZXCard + работа с флэшкой и эмуляция ВГ93
А какой стандар Flash карт будет понимать? Туда бы еще и эмуляцию джойстиков бы на основе готовых железяк (Sega, PS, Dandy )
А какой стандарт Flash карт будет понимать?SD и MMC.
И еще вопрос в тему перечитал я все доступные номера журналов с статьями про железо и пришол к такому выводу (правильному ?)
1. INT формируется в начале кадрового импулься
2. INT желательно не долже быть короче 9мкс
3. Для исключения повторного захвата INT особенно в режиме TURBO все же стоит его снимать в цикле INTA (это в духе KAY) по истечению 9мкс сигнал снимается
alexfreed
24.01.2006, 23:53
Для работы с флэшкой слабовата, в частности мало ОЗУ (512байт).
Не совсем понятно: зачем для работы с флэшкой много памяти? Чтобы FAT анализировать? Или для эмуляции 1793?
В режиме IDE по крайней мере буффер не нужен...
Когда я сделал на Compact Flash "диск" для своего Apple на FPGA, так там
вообще никаких мозгов нет. Flash правда не с FAT - записываю под Линуксом
через dd образ диска.
James DiGreze
25.01.2006, 08:17
SD/MMC карты работают блоками данных по 512 байт. Если ограничиваться только чтением, то можно и на 8515 реализовать, но когда требуется запись (FAT16), то уже, для правильной работы нужно примерно 2К: 512 байт на буфер данных, 512 байт на сектор FAT1, 512 байт на сектор FAT2, 512 байт на сектор CURRENT DIR...
Можно, конечно, проигнорировать файловую систему, и работать как с рамой, но тогда потеряется универсальность самой флэшки.
ЗЫ: наверно последние посты будет лучше переклеить, а то оффтоп пошел...
Не совсем понятно: зачем для работы с флэшкой много памяти? Чтобы FAT анализировать? Или для эмуляции 1793?
Сам ответил на свой вопрос :).
На флешке ФАТ с ТРД и запись на флешку тоже надо делать. Ну и про эмуляцию ВГ93 не забывать.
alexfreed
25.01.2006, 11:41
Можно, конечно, проигнорировать файловую систему, и работать как с рамой, но тогда потеряется универсальность самой флэшки.
Я так и делаю но не считаю большой потерей. Конечно хорошо если можно на ПиСи кинуть образ .TRD диска на флешку и читать в Спеке. Но не так уж плохо и переложить работу на программу на PC. Я делаю это на Линуксе, но спорю на рубль что можно и под окошками писать на "сырое устройство".
Вопрос, раз уже занимаемя большими умными микросхемами возникла по ходу действий мысль
Вот в кратце: Гланый дешифратор (портов, памяти), следит за процом и в момент цикла M1 считывает байт кода операции (или просто сравнивает), с кодами онобайтных команд IN OUT и если они обнаружены и следующий цикл ввода вывода ломится в например порт #FD дешифратор отключает все нестандартные для 128 машины функции и включается полный аналог спектрумовской неполной адресации к примеру (запрет записи в 6,7 бит (или пишуться туда нулики) если по пентагоновки 1Мб то и бит 48 режима на место, отключает выбоку AY хотя как вариант и не стоит)
Далее эту дему можно развить и по другому например команды LD B,B или LD C,C успользовать для системных нужд
Ткните пальцем где я не в ту степь думаю
Вот в кратце: Гланый дешифратор (портов, памяти), следит за процом и в момент цикла M1 считывает байт кода операции (или просто сравнивает), с кодами онобайтных команд IN OUT и если они обнаружены и следующий цикл ввода вывода ломится в например порт #FD дешифратор отключает все нестандартные для 128 машины функции и включается полный аналог спектрумовской неполной адресации к примеру (запрет записи в 6,7 бит (или пишуться туда нулики) если по пентагоновки 1Мб то и бит 48 режима на место, отключает выбоку AY хотя как вариант и не стоит)
Такое уже было! Причём всё проще - лочица какой-то один бит ШД в 1 триггер, подобранный так, что если это in/out (#imm) , то он был бы один, а если in/out (c) , то другой. "Отстройка" от всех остальных команд осуществляется банальнейше - по наличию цикла /IORQ.
Далее эту дему можно развить и по другому например команды LD B,B или LD C,C успользовать для системных нужд
Ниоткуда не следует, что кто=то не применит такие команды как нопы. Или что их не сгенерит какая-нить хитрозадая генерилка кода.
Во первых как тогда оно работало, глюки уменьшались
а если in/out (c) , то другой. "Отстройка" от всех остальных команд осуществляется банальнейше - по наличию цикла /IORQ.
Честно вот этой фразы не понял, поясни плиз
Далее эту дему можно развить и по другому например команды LD B,B или LD C,C успользовать для системных нужд
Это кстати уже использовалося в компутере Спринтер - видеоакселератор использовал как раз такие команды. Достаточно удобно если привыкнуть.
И еще вопрос в тему перечитал я все доступные номера журналов с статьями про железо и пришол к такому выводу (правильному ?)
1. INT формируется в начале кадрового импулься
2. INT желательно не долже быть короче 9мкс
3. Для исключения повторного захвата INT особенно в режиме TURBO все же стоит его снимать в цикле INTA (это в духе KAY) по истечению 9мкс сигнал снимается1. Да. Только важно, прежде всего, расстояние в тактах от начала прерывания до начала экрана (первого пикселя изображения).
2. В фирменных машинах INT примерно 32 такта CPU (3,5МГц). Ничего лучше (с точки зрения совместимости) еще не придумали.
3. TURBO-режим является отечественным изобретением и общепринятого стандарта на прерывание в нем нет. Можно сделать INT в два раза короче, при переключении в TURBO, но это усложняет схемотехнику. Можно обрабатывать INTA (подтверждение захвата прерывания), так было впервые сделано в «Балтик», но для совместимости это не очень хорошо. Можно реализовать вариант из схемы KAY1024 (http://zx.pk.ru/showpost.php?p=36003&postcount=8), достоинства и недостатки которого обсуждались ранее в этой ветке (http://zx.pk.ru/showpost.php?p=36064&postcount=13).
P.S. Я бы наверное выбрал вариант с укороченным вдвое INT в режиме TURBO, поскольку отличить программно от стандартного его невозможно. А для совместимости это главное.
alexfreed
26.01.2006, 12:46
Можно сделать INT в два раза короче, при переключении в TURBO, но это усложняет схемотехнику.
Может я чего не понимаю, но мне представляется так:
5 разрядный счетчик (1 корпус) и RS тригер - 1/2 корпуса.
тригер устанавливается по КСИ и счетчик считает CPU clock. Досчитал до 32 - сброс RS тригера. Очень точно и автоматом настраивается на турбу. Нет?
Может я чего не понимаю, но мне представляется так
Очень точно и автоматом настраивается на турбу. Нет?
Да. Все именно так, как вы сказали. Добавляется пара (тройка) корпусов мелкой логики.
P.S. Сейчас такое усложнение выглядит незначительным, в конце 80-х начале 90-х оно обошлось бы рублей в 10 стоимости (при зарплате 150). Если пересчитать на современные соотношения, то станет понятным, почему наиболее простые модели («Ленинград 1») были столь популярны.
5 разрядный счетчик (1 корпус) и RS тригер - 1/2 корпуса.
Итого 5 макроячеек а хочется (64 всего что бы было 63 занимает все осттальное) к томуже анало микрухи LVTTL стоит 1.5$ доллра
Тут если пересхочить дальше на болшее по эмкости семейство останется много места пустого, ареализовать что то культурное внутри не хватает пинов у микрухи, я и так в этом проекте отключил JTAG что бы накалядовать еще 4 ножки
у MAX 3064 этой лабуды нет так что там по умолчаниюна 4 ноги доступных пользователю больше
alexfreed
27.01.2006, 00:46
64 всего что бы было 63 занимает все осттальное
Очень не советую пытаться использовать 100% ресурсов. Всегда должен быть небольшой запас потому что почти всегда приходится что-то слегка менять.
реализовать что то культурное внутри не хватает пинов у микрухи
Похоже будут у нас 2 разных варианта. У меня сейчас довольно плотно заполнена XC95108. Благо у нее 84 ноги, так что с ногами все хорошо. Внутри делается и видео, и MMU. Снаружи почти ничего не остается для мелкой логики.
Благо у нее 84 ноги, так что с ногами все хорошо
У max7064 тоже 84 но вот использовать все нельзя хотябы потому что питание туды сувать надо
Похоже будут у нас 2 разных варианта. У меня сейчас довольно плотно заполнена XC95108.
Какая разница описание и там у тут походит без проблем просто исходник надо писать как минимум что бы его поняли оба синтезатора.
Очень не советую пытаться использовать 100% ресурсов
Используеться что то около 45 тригеров (и по альтеровски соответственно макроячейки), остальные заняты трасировкой и логикой так что там есть где разгулятся а вот тригеры уже некуда сувать :)
А по поводу минимума корпусов так можно к примеру из альтеры взять ciclone II там проц влазиет при частоте около 40МГц и все остальное и по прайсу на altera.ru стоит 16 долоров плус микруха конфигурационного ПЗУ 3 долора и будет весь спек вместе в ВГ93 в одной микрухе так же туда и атемгу или другой микроконтролер всунуть можно и все навороты (всеми мечтаемые спрайтовые движки, перемещение блоков памяти и тд), но большинству микруху в 144 лапы без паяльной станции не припояты так что такое не расматриваю изначально
а плата будет по размеру гнезд натыканых на неё
alexfreed
28.01.2006, 01:12
У max7064 тоже 84 но вот использовать все нельзя хотябы потому что питание туды сувать надо
Ну тогда я не знаю куда ты ноги деваешь. На i/o их 69 остается.
module zx2_dram(clk14,reset,R,G,B,bright,sync,ioreq,memre q,refr,wr_n,rd_n,M1,
ram_addr_m,ram_data,cpu_data,cpu_addr,cas_n,ras_n, A14_rom);
Macrocells Product Terms Registers Pins Function Block
Used Used Used Used Inputs Used
102/108 ( 94%) 273 /540 ( 51%) 65 /108 ( 60%) 56 /69 ( 81%) 201/216 ( 93%)
Т.е. еще 13 ног в запасе.
alexfreed
28.01.2006, 01:15
А по поводу минимума корпусов так можно к примеру из альтеры взять ciclone II
Это я уже делал. Правда не спек, а Apple и БК0010. И на готовой плате за $99.
Надо будет на ней же сделать прошивку для спека.
Вот мыслеизложение
Думал я тут немного какой команды не хватает Z80? И вот придумал не хватает катострафически команд межсегментного перехода, а потом подумал а можно ли без медленных протонов изменить кристалл процессора, оказывается можно :) необходимо доделать всего лишь ULA. Суть задумки заключается в использовании очень умной команды LD B,B. Именно благодаря ее изумительным интеллектуальным свойствам невозможное становится былью.
Работать это будет так
Команда межсегментного перехода JP 34:FC00 в интерпретации ассемблера будет выглядеть так
LD B,B DB #34 JP #FC00
Заманчиво? Особенно если рассмотреть вариант под корректировки транслятора. A ULA будет делать следующие шаги
1. LD B,B ага команда межсегментного перехода, ну скормим ее процессору
2. DB #34 вот эта интересующая нас страничка запомним ее а процессору скормим команду NOP
3. JP #FC00 а вот эту команду мы тоже скормим процессору
4. Теперь ждем цикла M1 и когда он выступить сменим страничку на запомненную
Просто?
Дальше подумал переход это хорошо, но как-то не алгоритмично получается, надо бы вызов в подпрограмму и возврат сделать
CALL 34:FC00 и RETF призовем на помощь великие и могучие команды LD C,C и LD D,D
Итак рассмотрим команду CALL 34:FC00 будет это дело у нас интерпретироваться так
LD C,C DB #34 CALL #FC00
Рассмотрим, что будет делать ULA
1. LD C,C ага команда межсегментного перехода, скормим ее
2. DB #34 запомним номер странички а процессору скормим команду PUSH HL
3. Процессор ничего не подозревая выполняет команду PUSH HL а мы в этот момент подло его отключаем от шины данных и выставляем туда по очереди #0034 :)
4. CALL #FC00 скормим ее процессору
5. Ждем цикла M1 и по наступлению меняем номер страницы
Осталась самая подлая команда RET на время ее исполнения придется намертво отключить все виды прерываний.
LD D,D POP HL RET
1. LD D,D ага команда межсегментного возврата, скормим ее
2. POP HL скормим и эту команду
3. Во время выполнения этой команды мы запомним младшую половину читаемого по шине слова где то внутри ULA
4. RET скормим ее процессору
5. Ждем цикл M1 и меняем номер странички
Вот так. Но есть одно но в каждой процедуре которая имеет тип FAR (тобиш вызывается командой межсегментного вызова подпрограммы), должна иметь шапку которая меняет местами два слова на вершине стека (это чтобы работала команда длинного возврата), но я думаю можно поплатиться за такую расширяемость программного обеспечения и фактически можно вызывать процедуры в пределах 4Мб, почему 4? А потому что старшие два бита адреса всегда установлены в 1 и фактически не участвуют в адресации получаем (8+14)^2 =4Мб . А почему старшие два бита 1, а потому что окно проецирования дополнительной памяти располагается по адресам #C000-#FFFF и имеют общее свойство два старших бита такие как упоминалось выше
Вердикт?
PS Можно расмотреть еще две команды это переключение страницы LD E,E DB #34 и переключение страницы на время исполнения одной команды LD H,H #34 своеобразный префикс замещения сегмента.
И еще одну LD (HL),(HL) назовем ее HALT и пусть она останавливает процессор :)
ld b,b и подобные нельзя - практически любая ленточная или tr-dos защита набита ими
ld b,b и подобные нельзя - практически любая ленточная или tr-dos защита набита ими
Ну ничего ни мешает активировать режим LD r,r команд записью единички в какой нить порт. По умолчанию неактивировано. Повторюсь идея не нова (в Спринтере это использовалось) и достаточно удобна.
команд записью единички в какой нить порт
Согласен должно включаться так как достаточно нетривиальное расширение, зато очень функционально
Ниже аттачь к первому посту .
--------------------------------------------------------------------------
Упс , поправочка - аттачь не из первого поста , а из одного из последних , т.е. это именно последняя версия сырка (с интом 9 мелкосекунд).
Ниже аттачь к первому посту .
а давай ты обвеску придумаешь :v2_rolley ,нарисуешь,запостишь,а я спаяю...:v2_wink2:
а давай ты обвеску придумаешь ,нарисуешь,запостишь,а я спаяю...
Возьми из KAY ;)
Возьми из KAY ;)
не катит...
память надо статику....
BDI по другой схеме надо придумать....
о как:wink:
Угу , только это уже другая тема .
Немного оживлю тему. Кто-нибудь уже прошивал Alter'у под zx_sinhro? Хочу повторить, только мне желательно под другие номера pin'ов, как это сделать?
Немного оживлю тему. Кто-нибудь уже прошивал Alter'у под zx_sinhro?
Прошивать не каширно , ибо не получится перепрошить , т.к. используются JTAG пины .
Хочу повторить, только мне желательно под другие номера pin'ов, как это сделать?
Достаточно не просто , т.к. придётся скачать спец прогу чтоб перекомпилить прошивку под другую раскладку пинов .
Прошивать не каширно , ибо не получится перепрошить , т.к. используются JTAG пины
Не понял. Берешь программатор, подключаешь к JTAG, прошиваешь...
Достаточно не просто , т.к. придётся скачать спец прогу чтоб перекомпилить прошивку под другую раскладку пинов
Берешь файл проекта, выбираешь Alter'у, редактируешь привязку к определенным выводам и перекомпелируешь...
Добавлено через 14 часов 53 минуты
Ниже аттачь к первому посту .
--------------------------------------------------------------------------
Упс , поправочка - аттачь не из первого поста , а из одного из последних , т.е. это именно последняя версия сырка (с интом 9 мелкосекунд).
ГМ, а где это можно надыбить адреса A16...A19? В схеме KAY'я для работы с ОЗУ 1 МБ формируются верхние адреса из A14 и A15...:eek:
ГМ, а где это можно надыбить адреса A16...A19?
По большому счету A16-A19 это биты D0-D2,D5-D7 порта 7FFD, или аналоги портов/битов в других клонах. А если глубоко копать то старшие адресные сигналы замультиплексированы из вышеназванных битов и стробов видеоконтроллера, и в мультиплексированном виде присутствуют только на выводах ОЗУ.
По большому счету A16-A19 это биты D0-D2,D5-D7 порта 7FFD, или аналоги портов/битов в других клонах
И по какой схеме их подключать к сабжу?:confused_std:
Не понял. Берешь программатор, подключаешь к JTAG, прошиваешь...
И прошьётся оно ровно один раз .
Берешь файл проекта, выбираешь Alter'у, редактируешь привязку к определенным выводам и перекомпелируешь...
А чего тогда спрашивал ;)
При повторении Kay2006NB возникло несколько вопросов:
1. Если поставить отдельно линейку 1 Мб, то шину DI подключать к данным линейки или нужно тянуть с основной платы kay'я?
2. В случае вводимой линейки адреса MA тоже подавать на адреса памяти вводимой линейки?
3. Какого назначение сигнала nVOE? Если предполагается выводить изображение на SVGA монитор или телевизор гашение луча не нужно?
4. В основной схеме kay'я вроде порт #EFF7 отсутствует. Тогда, что в таком случае подавать на VM?
ILoveSpeccy
18.11.2007, 23:22
3. Какого назначение сигнала nVOE? Если предполагается выводить изображение на SVGA монитор или телевизор гашение луча не нужно?
Смотри самый первый пост в этой теме...
Там написано:
nVOE - нога для формирования гашения сигала
При повторении Kay2006NB возникло несколько вопросов:
1. Если поставить отдельно линейку 1 Мб, то шину DI подключать к данным линейки или нужно тянуть с основной платы kay'я?
2. В случае вводимой линейки адреса MA тоже подавать на адреса памяти вводимой линейки?
3. Какого назначение сигнала nVOE? Если предполагается выводить изображение на SVGA монитор или телевизор гашение луча не нужно?
4. В основной схеме kay'я вроде порт #EFF7 отсутствует. Тогда, что в таком случае подавать на VM?
1. Нада отключить наборнтую память и рулить буфером памяти с ULA
2. Тут рисовать нада (вечером могу сообразить) но кай перепахать нада
3. Ну фактически он нужен для формирования максимально точного видеосигнала (того что доступен на спектруме)
4. Нада подавать логический 0 а лучше его в внутрях привязать и турбу в 0 загнать что бы освободить 4 ноги на период отладки (4 свободные ноги позволят сделать микруху перешиваемой)
В общем можно изобразить notes врезания для в KAY, для отладки
Да верно все выводи ПЛМки заняты, наверное VMn принять нулем, ввобще-то и nVOE мне не нужен - не буду выводить. Как в таком случае будет выглядить текст прошивки? Плис привести пример, а то я только схемно вводил элементы в ПЛМку, нет опыта писания на языке.
Павел Рябцов
03.02.2010, 07:27
heroy, Я с небольшим опоздание)))Что там насчёт врезания в KAY ? То есть хочу прикрутить в ANT.
doorsfan
28.04.2010, 12:21
Я уже писал в одном из тредов, что турбирование Кворумов с SIMM
прекрасно выполняется без циклов WAIT.
Для увеличения длительности цикла чтения памяти рекомендуется
формировать сигнал /RDMEM не из /RD, а из инверсного /WR.
Единственное НО, не все 4-х мегагерцовые процессоры Z80 работают на 7 Мгц.
Лучше ставить 6-и или выше.
Проверил, у меня при инвертировании (с пом. 1533ЛН1) не работает.
Более того, странно, что wram (WE/) формируется тоже из RD/ и при попытке использовать WR/ на экране снег, запись практически не происходит.
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot