PDA

Просмотр полной версии : Вектор-06Ц, подключение TFT-дисплея, RGB-интерфейс.



KTSerg
12.01.2021, 20:35
Продолжение обсуждения подключения к Вектору TFT-дисплея.
Начало было по ссылке:
https://zx-pk.ru/threads/32602-vektor-06ts-02-videovykhod-podklyuchenie-k-tv-vga-monitoru-scandoubler.html?p=1098463&viewfull=1#post1098463

- - - Добавлено - - -


KTSerg, а можно по-подробнее, что за чип альтеры используется, схема подключения, прошивка... Выход к рамке подключён по VGA, как я понимаю? Какие там испоьзуются частоты кси и сси? А на вход с Вектора rgb в аналоговом виде подключено, или в цифре на 8 бит?
Altera ep4ce6e22.
Вектор простой (не .02).
У Вектора вывел на разъём:
8 бит RGB с выходов инверторов, которые выполняют роль ЦАП для RGB-выходов Вектора, микросхемы D38 и D81.
КСИ - D3 вывод 13.
ССИ - D39 вывод 2.
6Мгц. - D45 вывод 11.

С Altera на TFT-дисплей выходят:
RGB - по 6 бит на каждый цвет. Такой разрядностью дисплей подключен к плате фото-рамки. Но я использую пока только старшие биты.
Сигнал DE - DataEnable. По сути это смесь КСИ и ССИ, так как он разрешает запись RGB только на видимой области дисплея.
Клок записи RGB в пиксель дисплея.

Характеристики TFT-дисплея.
Клок идёт постоянно.
В строке: 800 видимых пикселей, и 200 во время ССИ, всего строка 1000 тактов Клока.
В кадре: 600 видимых строк, и 60 для КСИ.
Всего кадр состоит из 660 строк по 1000 тактов, всего 660000 тактов Клока.
С этим связана проблема синхронизации с кадром Вектора. Так как 660000 тактов в кадре, значит частота Клока 33МГц.
Я в Altera с помощью PLL подобрал частоту 33.4 МГц, что-бы рамка заполнялась чуток быстрее, и ждала начала кадра от Вектора.
Но Вектор выводит одну строку за 64.04 мсек, а рамка заполняет две строки за 59.775 мсек.
Пришлось в Altera организовать кольцевой буфер в ОЗУ М9К в 16КБайт. И запускать начало кадра в дисплее, когда Вектор вывел уже 18 строк.
В этом случае, вывод строк в дисплей не догоняет заполнение буфера изображением от Вектора (на видимой части дисплея). 18 строк подобрано экспериментально.
Ещё, поскольку в Векторе пиксели тактируются фронтом и спадом частоты 6МГц, пришлось в Altera настроить PLL на формирование частоты 141МГц (такую частоту позволил настроить PLL совместно с частотой 33.4МГц). Эту частоту 141МГц использую для дробления входной частоты 6Мгц. Примерно на 4-5 такте после каждого фронта и спада входного сигнала (6МГц) делаю запись RGB (поступающего с Вектора) в буфер М9К.
Выходной порт М9К соответственно читается с частотой 33.4МГц.

- - - Добавлено - - -

Да, ещё забыл написать, что все сигналы с Вектора на Altera подключены через микросхемы конвертора уровней с 5В на 3.3В.
С ноября жду нужные микросхемы, не дождался переразвёл плату и поставил те, что есть в наличии 74lvx4245.
А между Altera и TFT-дисплеем резисторы 22 Ом, которые уже были на плате фото-рамки, между её процессором и дисплеем.

- - - Добавлено - - -

Только-что дошло про вопрос:

Выход к рамке подключён по VGA, как я понимаю?
Нет. Борда с Altera самая дешевая. На ней нет почти ни какой периферии кроме rs-232, 4-ёх кнопок и 4-ёх светодиодов.
Выхода VGA на борде нет.
К сожалению, оказалось, что китайцы вывели на разъёмы только выводы с двух сторон чипа Altera - половину ног (портов) "украли", они просто висят в воздухе ни куда не подключенные. :(
TFT-дисплей подключен напрямую к портам Altera, в общей сложности 20 выводов.
Так как процессор с платы фото-рамки удалён, то плата фото-рамки используется только для питания TFT-дисплея.

- - - Добавлено - - -

Запустил несколько программок/тестов, фотки по ссылкам.
Сначала мультиколоры
https://s8.hostingkartinok.com/uploads/images/2021/01/3a1d73e1834b76b02cebf21798c1a938.jpg
https://s8.hostingkartinok.com/uploads/images/2021/01/e4222638818d072abfd6424fa63573e7.jpg
https://s8.hostingkartinok.com/uploads/images/2021/01/e6a949b9421dc93b614f29bdae3f490a.jpg

Не помню точно, вроде тест бордюра
https://s8.hostingkartinok.com/uploads/images/2021/01/ff78b29df6a077cbd006f03719e03819.jpg

Тест устройств, 256х16 цветов, 512х4 цвета
https://s8.hostingkartinok.com/uploads/images/2021/01/3d9f31420168456e8b96125549aa2e08.jpg
https://s8.hostingkartinok.com/uploads/images/2021/01/a0fe6253c3eaf54dc1e9dac1a4c06b8f.jpg
https://s8.hostingkartinok.com/uploads/images/2021/01/3162afc6e2ed817a80245ccf6f74646d.jpg

Из Загрузчика стартовал "Монитором", он ведь использует режим 512 пикселей
https://s8.hostingkartinok.com/uploads/images/2021/01/5528bad69d2b882008320bc9d5e03860.jpg

- - - Добавлено - - -

Ночью когда "заработало", картинка стояла как вкопанная - ни разу не дёргалась. Сейчас включаю, подёргивается в сторону на 1 пиксель... :(
Пробовал в схеме менять моменты синхронизации - не влияет.
Замерял напругу Вектора, 4.9В.
Начал крутить... на 4.6В картинка перестала дёргаться ... 8()
Дисплей и Альтера запитаны от отдельного блока питания.

ivagor
12.01.2021, 21:07
512 четко, единственное, что отличает от фотографий с телевизора - border, на рамке похоже строки четного и нечетного кадров разъехались

KTSerg
12.01.2021, 21:35
512 четко, единственное, что отличает от фотографий с телевизора - border, на рамке похоже строки четного и нечетного кадров разъехались
Строки разъехались - это на фото теста бордюра?
В эмуляторах VV и Ve27 точно так-же "разъезжаются".

KTSerg
13.01.2021, 06:01
Подключил ч/б монитор, на бордюре четные и нечетные строки разъезжаются.
В какой-то теме про тесты это обсуждали, но я уже не помню подробности.

Наконец-то разобрался с генерацией в Квартусе не только .sof-а, но и .jic - для загрузки во флешку, для старта прошивки сразу по включению питания. А то так и приходилось загружать в Альтеру прошивку при каждом включении.

ivagor
13.01.2021, 07:30
Подключил ч/б монитор, на бордюре четные и нечетные строки разъезжаются.
В какой-то теме про тесты это обсуждали, но я уже не помню подробности.
Посмотрел - были два подобных теста, мой и (вроде бы) модификация svofski. У моего bord.rom края бордюра ровные (есть фотография с реала) и тестовый бордюр белый, у bord2.rom в тестовом бордюре строки чередуются, строка белая, строкая фиолетовая, в emu край ровный, в VV "зубчатый", фотки с реала тут я не сохранил (если она была). Если тестовый бордюр двухцветный, то на фото с рамки bord2 и вопрос снимается, а мне показалось, что одноцветный, может такой засвет.

KTSerg
13.01.2021, 07:38
Посмотрел - были два подобных теста, мой и (вроде бы) модификация svofski. У моего bord.rom края бордюра ровные (есть фотография с реала) и тестовый бордюр белый, у bord2.rom в тестовом бордюре строки чередуются, строка белая, строкая фиолетовая, в emu край ровный, в VV "зубчатый", фотки с реала тут я не сохранил (если она была). Если тестовый бордюр двухцветный, то на фото с рамки bord2 и вопрос снимается, а мне показалось, что одноцветный, может такой засвет.
Ясно. Я таких подробностей уже не помню. Файл теста bord2.rom, дата файла апрель 16-го года, бордюр действительно двухцветный.

ivagor
13.01.2021, 07:43
bord2.rom
Значит вопрос снимается

KTSerg
13.01.2021, 08:01
Нашел тему про тест бордюра, перечитал (по диагонали) :) .
https://zx-pk.ru/threads/26462-vektor-06ts-testy-emulyatsii-i-sravneniya-s-realom.html

- - - Добавлено - - -

В первоначальном варианте схема синхронизации кадров дисплея и Вектора ждала КСИ от Вектора, полностью блокируя вывод сигналов на дисплей.
Но при выключенном Векторе это приводило к отсутствию обновления/регенерации изображения дисплея, что приводило к "расплыванию" цветных пятен по дисплею, деградации остаточного изображения, после выключения Вектора.
Добавил анализ входного сигнала (наличия 6МГц), при его отсутствии происходит однотонное заполнение кадра.
Выглядит культурнее :) .

KTSerg
13.01.2021, 22:09
Как легко в Верилоге словить не стабильность схемы... это просто ужас какой-то...

Ещё напоролся на какую-то "фичу" Квартуса.
Схема уже работала, решил добавить отладочный "always" для вывода на дисплей состояния счетчиков.
Когда редактировал код, кликая мышкой выделил "else", и что-то произошло. Я не понял, что именно, и продолжил редактирование кода. Когда собрал проект и загрузил в Альтеру, оказалось, что всё вообще перестало работать...
Картинка Вектора битая, и потеря всей синхронизации...
Удалил добавленный отладочный кусок, собрал, загрузил... ни чего не изменилось - схема не работает...
Начал просматривать текст, и увидел, что все "else" из текста полностью удалены... ни одного "else"...
Благо текст не большой и я использую отступы, и видно где они были, остались пустые места.
Вставил "else" на свои места и схема сразу заработала.
Но как я умудрился, одним кликом, удалить все до единого "else" из текста, я так и не понял...

KTSerg
16.01.2021, 15:14
Выяснил причину горизонтального подёргивания изображения на дисплее.
Спад ССИ и спад клока пикселей 6МГц - у Вектора довольно близко друг от друга.
А так как я использую не сами сигналы, а их сэмплированое представление, то иногда терял этот интервал и первый пиксель в строке.
Повысил чистоту сэмплирования со 141МГц до 317МГц, и подёргивание изображения прекратилось.

Не знаю, правильно ли применил термин "сэмплирование", просто не вспомнил ни чего более подходящего.
Смысл - с частотой 317МГц заношу значение сигнала в сдвиговый регистр.
А в схеме использую уже значение этого регистра, а не значение самого сигнала в конкретный момент времени.

crackintosh
17.01.2021, 08:41
Схема сложная? Может стоит начать проект Veсtor06-Kit1? Было бы супер!

KTSerg
17.01.2021, 13:10
Схема сложная? Может стоит начать проект Veсtor06-Kit1? Было бы супер!
Какая схема, сопряжения Вектора-Альтера-TFT, или синтезированная Альтерой?
Хотя в любом случае ни чего сложного.
Самая большая сложность (для реализации в железе) состоит в заполнении буфера ОЗУ с одной частотой и чтение этого буфера с другой частотой.
Благо в Алтера есть встроенная ОЗУ, которую можно настроить на работу в двухпортовом режиме. Один порт на запись данных, второй на чтение, и они абсолютно не зависимы.
Но в проекте Вектор на DE1, на SRAM или SDRAM реализовано экранное ОЗУ Вектора. И там аналогичные задачи: запись в него данных от "процессора" и чтение данных для формирования изображения в видео-режиме или VGA-режиме.

Что за "проект Veсtor06-Kit1" ?
Его цель, задачи?

crackintosh
17.01.2021, 14:02
Я имел ввиду UpScaller для Вектора-06Ц01/02

KTSerg
17.01.2021, 15:57
Ещё я подключал все 6 бит матрицы, с расчётом не просто транслировать биты цветности Вектора в старшие биты цветности дисплея, а по таблице конвертировать в близкие для Вектора. В Векторе ведь "не правильный" ЦАП для RGB.
Подозреваю, что эти таблицы есть во всех эмуляторах. Так как периодически поднимался вопрос о "правильности" отображения палитры Вектора в эмуляторах.
Но пока бился над прозаичным получением стабильного изображения на дисплее, и корректностью цвета не занимался.

Improver
18.01.2021, 10:16
Часть сообщений была унесена в тему Вывод изображения ретрокомпьютера на TFT-матрицу ("народный контроллер") (https://zx-pk.ru/threads/32683-vyvod-izobrazheniya-retrokompyutera-na-tft-matritsu-(-quot-narodnyj-kontroller-quot-).html?p=1099230&viewfull=1#post1099230), оставляю ссылку здесь для информации...

Improver
20.01.2022, 17:03
Просто для информации по универсальным контроллерам: собрал мониторотелевизор на скалере 3663, подключение Вектора через pal-кодек с коррекцией синхроимпульсов (https://zx-pk.ru/threads/8739-vektor-06ts-videovykhod-podklyuchenie-k-tv.html?p=1138143&viewfull=1#post1138143) работает, картинка есть, стабильная, но чёрно-белая и в мелкую диагональную полоску (переменной яркости), хотя кодек нормально определяет, что подключён сигнал PAL. Попытки покрутить настройки не дали никаких результатов.

В общем, если не брать обсуждаемый тут "народный контроллер" (https://zx-pk.ru/threads/32683-vyvod-izobrazheniya-retrokompyutera-na-tft-matritsu-%28-quot-narodnyj-kontroller-quot-%29.html), то с Векторовской ТВ-развёрткой у меня нормально работает только lvds-скалер на чипе 3463, на 3663 -- плохо, а на чипе QT526 не показывает совсем.