Сообщение от
tnt23
Смотрю код (2.0.9) и не пойму, почему VGA_H_MAX присваивается значение только разрядов 9..1 счетчика VIDEO_H? получается, что для входной ТВ строки это максимум 511 точек в строке? а как же машины с более высокой тактовой, у которых в ТВ строку укладывается по 700-800 и более тактов?
У ПРОФИ 768 точек в строке. Там считаются такты кварцевого генератора, что не всегда соответствует количеству точек. Для данной прошивки максимальная 14 МГц:
Код:
--------------------------------------------------------------------------------
-- ОПРЕДЕЛЕНИЕ ТИПА КВАРЦА 100304 --
--------------------------------------------------------------------------------
-- если перемычки JP6 (SET_FK_IN) и JP5 (VGA_SCART) сняты,
-- частота кварца определяется автоматически.
-- если одна из них или обе перемычки установлены, частота выбирается ими
-- соответсвие битов (перемычка снята, 0 - установлена) :
-- 10 - стандартная или удвоенная частота точек
-- графики клонов "Спектрум", кварц на 14 МГц
-- в строке 896 тактов (895 = 1 10 1111111)
-- 01 - режим графики "Профи", кварц на 12 МГц
-- в строке 768 тактов (767 = 1 01 1111111)
-- 00 - режим графики "Орион", кварц на 10 МГц
-- в строке 640 тактов (639 = 1 00 1111111)
-- 11 - режим графики "Специалист", кварц на 8 МГц
-- в строке 512 тактов (511 = 0 11 1111111)
Если адаптировать на 16 МГц, то там в строке будет 64 мкс * 16 МГц = 1024 тактов. Должно влезть в 10 битов.
---------- Post added at 13:21 ---------- Previous post was at 12:47 ----------
Сообщение от
tnt23
...Просто я думаю, раз есть исходники и у меня есть квартус, чего бы не попробовать сделать прошивку именно для УКНЦ.
Известно, что горизонтальное разрешение у этой машины 640 точек, на отображение которых уходит 51.2мкс, а всего в 64-микросекундной строке таких точек помещается 800.
Значит в строке VGA тоже должно быть 800 точек.
Результат первого подключения (прошивка 2.0.9, инвертируются RGBI, ССИ, КСИ, 60Гц) в аттаче.
Я так понял, что установлена перемыка INVERSE_SSI. Попробуйте ее убрать. Ее установка обычно приводит к сдвигу экрана влево.
---------- Post added at 13:56 ---------- Previous post was at 13:21 ----------
Давайте попробуем доработать эту прошивку для УКНЦ (частота кварца 12.5 МГц).
Если в стоке телевизора умещается 64 мкс * 12.5 МГц = 800 тактов,
то максимальное значение VIDEO_H будет 1100011111 (799).
Тогда в регистр VGA_H_MAX будет записано 110001111 (399).
То есть для данного кварца длительность строки VGA должна быть 400 тактов, что в два раза меньше длительности строки VIDEO (800 тактов).
При автоматическом определении частоты кварца (убраны перемычки JP6 (SET_FK_IN) и JP5 (VGA_SCART)
анализируются биты 7 и 6 регистра VGA_H_MAX (1 10 001111). Они равны 10, поэтому плата VGA&PAL будет считать, что компьютер Спектрум с частотой кадров 14 МГц. Поэтому развертка будет генерироваться не для той частоты/компьютера...
---------- Post added at 14:09 ---------- Previous post was at 13:56 ----------
Для пробы можно поставить перемычки для Профи:
JP6 (SET_FK_IN) - установить
JP5 (VGA_SCART) - снять
-- соответствие битов (перемычка снята, 0 - установлена) :
-- -- 01 - режим графики "Профи", кварц на 12 МГц
-- -- в строке 768 тактов (767 = 1 01 1111111)
Т.е. строчные синхроимпульсы VGA будут по тактам как для Профи, а количество тактов в строке VGA на основе измеренных данных.
За один такт тактовой частоты будет отображаться две точки на VGA.
---------- Post added at 14:32 ---------- Previous post was at 14:09 ----------
В прошивке есть ошибки в назначении начала и конца строчных гасящих и синхроимпульсов, например, для Профи:
when "01" => -- "Профи"
VGA_SSI1_BGN <= "0000000000"; -- 0 - начало 1 строчного СИ
VGA_SSI1_END <= "0000100010"; -- 34 - конец 1 строчного СИ
VGA_SSI2_BGN <= "1011110101"; -- 757 - начало 2 строчного СИ
VGA_SSI2_END <= "1011111111"; -- 767 - конец 2 строчного СИ
VGA_SGI1_END <= "0000111001"; -- 57 - конец 1 строчного ГИ
VGA_SGI2_BGN <= "1011101101"; -- 749 - начало 2 строчного ГИ
Конечно, синхроимпульсов не два - предусмотрено, что они состоят из двух частей и их можно двигать относительно начала счета счетчиков тактов VGA.
Числа должны быть раза в два меньше, так как в VGA строке в два раза меньше тактов, чем в строке VIDEO.
Можно ориентироваться по параметрам VGA (http://tinyvga.com/vga-timing/640x480@60Hz) и рассчитать для данного кварца. К тому же вам придется для своего компьютера подбирать начало строчного синхроимпулься VGA, чтобы экран был в центре.