Нашел у себя K6R4008V1D. 512КБит х 8 шустрая SRAM (до 10нс). 2шт. Она 3.3в, что хорошо для моей CPLD (но не обязательно).
Нашел у себя K6R4008V1D. 512КБит х 8 шустрая SRAM (до 10нс). 2шт. Она 3.3в, что хорошо для моей CPLD (но не обязательно).
Последний раз редактировалось HardWareMan; 25.09.2014 в 20:45.
У меня есть хитрый план: не ставить ПЗУ вообще. Я уже почти отладил свой "хитрый" SD/MMC контроллер, который инициализирует карту сам. Он вполне способен предоставить любой сектор сам. Если выгорит - то это будет компьютер полностью без ПЗУ.
Круто. А сможешь потом допилить его до эмуляции ВГ93? Для начала, чтобы работал с дефрагментированными файлами-образами, лежащими в корневом каталоге? Хотя бы с первым файлом, тогда не надо лезть в каталог и искать начало файла. Но чтобы начало можно было менять через порты ВГ93 какой-нибудь ничего не значащей для самого ВГ93 команды (например прыгнуть на дорожку 255 после чего послать в порт данных специальную последовательность с указанием адреса первого сектора).
Ну можно. Только когда дойдет дело до реализации ВГшки, нужна будет твоя консультация. Ибо я программировал свой ВГ93 в Орионе строго по журналу Радио за 94 (вроде) год по статьям о корвете. Т.е. информация о контроллере чисто общая.
Последний раз редактировалось HardWareMan; 08.10.2014 в 15:47.
В общем, идея такая: т.к. у нас проц все равно внутри CPLD, то его можно останавливать, например, сигналом READY и использовать его слот времени для пересылки данных. Такой неполный DMA. Адрес начала и размер задавать в регистрах управления контроллером. Причем, он для карты будет формировать полные 512 циклов чтения сектора, чтобы не сбить логику ее работы, а в память писать ровно столько, сколько надо. Это позволит загружать файлы прямо по месту байт в байт, не затрагивая лишние. Это в нативном режиме. В режиме эмуляции ВГ93 можно сделать останов при чтении из регистра данных ВГ93, как это сделано в контроллере дисковода для Специалиста (чтобы тот софт так же мог работать без изменений).
Касаемо полноценной эмуляции ВГ93, то было бы здорово установить размер кластера кратный 1 сектору дискеты (1КБ же, так?). Т.е., придется форматировать карту памяти с особыми параметрами (лучше если написать специальную программку). В пользу программки говорит и факт ROMless загрузки: чтобы контроллер всегда знал откуда брать загрузчик. Хотя, я думаю с SD/MMC карты никто грузиться не будет и поэтому загрузчик можно положить вместо PCшного, оставив остальные структуры как есть. Карта будет признаваться компьютером и одновременно быть загрузочной для Специалиста.
PS Нечто подобное, я думаю, можно будет сделать и для Спектрума 48К/128К.
Возможно все-таки использование одной 8ми битной SRAM не лишено смысла. Если прикинуть на стандартные тайминги, то можно сделать так:
PixClk щелкает пиксели. PixLd загружает следующий байт для сдвига самих пикселей. AtrLd загружает значение атрибутов, их "догоняют" пиксели, задержанные на 2 точки (в спектруме, например, задержка на 4 пикселя). Страница атрибутов выбирается сигналом AtrPage, который участвует в формировании адреса синхрогенератора и процессора. В первой половине активного полупериода сигнала VM80F2 формируется сигнал обращения к ОЗУ, который активируется сигналом Screen. Таким образом обращение формируется только при обращении к экрану. Это возможно потому, что процессор гарантировано удерживает шины (адреса, данных и управления) весь активный полутакт, поэтому атрибуты из регистра цвета четко попадают в экранную область страницы атрибутов. Осталось проверить, как эта идея ляжет на тайминги SVGA. Если от памяти не потребуется сверхскорости, то я сделают так и с 16ти битным ОЗУ будет покончено раз и навсегда.
Ну, похоже, что все взлетит.
В режиме SVGA пиксельклок равен 20МГц. Обращение к памяти равно периоду пиксельклоку или 50нс. Частота процессора при этом равна 2,5МГц, но используется уже проверенный в железе МХ2 финт с 4/5 такта, что дает эффективную скорость на уровне 2МГц. В режиме телевизионной развертки пиксельклок равен 8МГц а обращение к памяти равно половине такта пиксельклока или 62,5нс. При этом, задержка атрибута на 1 пиксель от сдвигаемого видео (в режиме SVGA 2 пикселя). Частота процессора в этом режиме строго 2МГц, за 8 точек отрабатывается 2 полноценных обращения. Сигнал обращения к экрану вырабатывает дополнительное обращение, как уже это было описано в предыдущем посте, вместе с сигналом страницы атрибутов используется для записи атрибутов. Более того, этот же сигнал позволяет реализовать автоматическое чтение атрибута из видеопамяти в регистр цвета, что было бы неплохой плюшкой. Закупленные у китайцев специально для этого проекта IS61LV5128AL-10TLI способны выдать (или принять) данные за 10нс и имеют на борту 512Кбайт. Это в 5 раз превышает требования, так что можно продолжать проект. Кварцевый генератор используется один на 80МГц. Из него легко получаются как 20МГц, так и 8МГц.
Т.к. проект предполагается реализовать на одном чипе памяти и быть максимально совместимым с МХ2, то я предлагаю следующий "распил" памяти: страницы с 0 по 5 будут обычные страницы памяти MXа, страница 6 будет выполнять роль основной страницы памяти а страница 7 - ее атрибутной части. При этом, она будет доступна целиком, как у Ориона, нижняя и верхняя (относительно экрана) части будут эмулировать ПЗУ МХа и стандарта и будут снабжены защитой от записи. Пока все, задавайте свои вопросы.
Последний раз редактировалось HardWareMan; 27.10.2014 в 13:14.
Сегодня закончил клавиатуру. Я ее уже показывал, покажу еще раз:
Да, она способна передать нажатие на все кнопки сразу. :3 Да, для сброса надо нажать все 5 клавиш 'СБРОС'. :3 Да, курсорные кнопки дублируются и есть еще 4 дополнительные кнопки. В качестве интерфейса я выбрал I2C (частный случай TWI). Почему? Потому что клавка была USB и двунаправленный интерфейс не требуется. А I2C ведомый легко реализуется в CPLD как простейший конечный автомат. Старт, стоп:
Всего передается 79 бит информации: 72 кнопки оригинальной клавиатуры, 4 дополнительные кнопки, шифт, сброс и четность. По четности CPLD будет принимать решение записывать принятое в регистр или нет - простейший контроль. Битрейт я особо не рассчитывал, но получилось приемлиемо: примерно 20Кбод. Полная посылка с небольшой задержкой между пакетами занимает примерно 4мс, что дает FPS интерфейса на уровне 248Гц, что более чем достаточно:
Пока по прерыванию таймера происходит выталкивание текущих данных в интерфейс, прошивка параллельно опрашивает новое состояние кнопок. Неправильная матрица корректируется специальными константами, так что кнопки в пакете идут по порядку: сначала слева направо верхний ряд, потом второй и т.д. согласно схемы. В конце добавляются 4 расширенные кнопки, шифт и сброс.
Немного о контроллере. Я наконец-то перешел к АТХМегам. Здесь - 32А4.
Однако, как же мало ему надо! Работает от встроенного 32МГц RC генератора (сильная стабильность тут не нужна), кондеры только по питанию. Хочет 3.3в, которые есть у моего CPLD Специалиста. В общем, я доволен как слон. Теперь уже точно можно заняться самим компьютером.
Последний раз редактировалось HardWareMan; 16.11.2014 в 21:02.
Осциллограф прикольный, еще такой Rigol не видел, из новых серий?
Клавиатурка красивая
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)