ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
21 июля
453695 Топик полностью
fk0, легенда (14.10.2013 20:44, просмотров: 155) ответил Ксения на Я не в курсе схематики ZX-Spectrum, однако в курсе устройства его эмулятора на AVR (см. ссылку). Так вот для той эмуляции пришлось мобилизовать две штуки ATmega128A: первая под задачу эмуляции кода, а вторая в качестве видеоконтроллера. Там
Просто AVR не предназначены для таких вещей. В оригинале всем (включая видео и кучу всего) заправляла одна ULA (микросхема такая). В советских клонах -- за видео отвечало пара десятком микросхем мелкой логики. Ну и память ещё, её не считаю. Кроме того, ZX имеет специфический формат видео кадра, из-за которого контроллер видео сложнее (но в этом и плюс -- кадр в памяти занимает всего 6912 байт, что подойдёт, кстати, современным контроллеам...) Кстати, это интересная идея. Допустим... у нас есть лишних 2шт. SPI модуля у МК. В один пусть выдаётся монохромная картинка. Во второй, с той же скорстью, цвет. Один цвет на квадрат 8x8 точек. Так же мы задействовали два модуля output compare чтобы выдавать 4.433618MHz в двух разных фазах, со сдвигом на 90 градусов. Дело за внешней схемой. Выход цветности запоминаем в 74hc595. Потом 74hc257 выбирает половинку байта цветности в зависимости от выхода яркости (монохромной картинки). И с её выхода 4 бита задают непосредственно яркость (2 уровня) и, одновременно, сдвиг синусной и косинусной составляющей (чтоб получить больше цветов в палитре), насыщенность (2 уровня) уровни синусной и косинусной составляющей (по 2 уровня). Придётся ещё пожертвовать чем-то вроде 74hc21 (или 4-мя диодами...) и одним цветом из палитры для получения настоящего чёрного (насыщенность устанавливается в ноль совсем, и яркость тоже -- нужно для чёрного и за пределами видимого поля, чтоб телевизор уровнь чёрного собственно понял). Палитра, конечно, получится адовая, а-ля Commodore-64... зато одним проводом в самый дешёвый китайский телевизор втыкать можно. Из внешних компонентов: 3 микросхемы, несколько резисторов. Что из программирования: нужно периодически в каждый SPI выдавать следующий (по адресу в памяти) байт. Здесь желательно DMA. В начале каждой строчки нужно задавать её адрес в ОЗУ для SPI (DMA или обработчика очень быстрых прерываний). Здесь нужно прерывание от таймера. Нужно генерировать строчные (и кадровые) импульсы -- ещё дополнительный модуль output compare. Нужно импульс цветовой синхронизации. Сам импульс можно закодировать в кадр в памяти, т.е. он будет выводиться как картинка: чёрный, жёлтый (на следующей строчке синий), чёрный... пошла картинка...
[ZX]