Видеокарта

Печатные платы, программируемая логика, разработка и изготовление аппаратуры

Moderator: Shaos

Craz
Fanat
Posts: 64
Joined: 11 Mar 2007 03:57
Location: 217.9.147.66

Post by Craz »

Контроллеру подается команда "нарисуй прямоугольник такого-то цвета от точки (x,y) до т. (x1,y1)"
А, понятно. Это ж целый графический ускоритель :)
User avatar
danchandoo
Fanat
Posts: 63
Joined: 24 Sep 2007 12:15
Location: Украина

Post by danchandoo »

Я чего-то вообще запутался.

Через SCART можно подавать роздельный RGB сигнал.
С другой стороны должны быть входы для горизантальной и вертикальной синхронизации и где они? http://pinouts.ru/Home/Scart.shtml

С VGA все понятно, но я запутался, разве VGA не RGB?
Для VGA нужен монитор... Но если в телевизоре есть вход для RGB, то есть можно телек вместо монитора чтоли юзать. Но как ведь частота обновления разная...

Теперь у меня в голове каша... Вернуться чтоли к чернобелому композитному сигналу, там все понятно.


Мои догатки на этот счет:
Если телевизор настроен на прием PAL сигнала, то на вход яркости поступает то, и всегда (синхроимпульсы, сигнал яркости), но часть строки с информацией о яркости игнорируется, в замен она берется из того что есть на входах Rd Gr Bl в это время.
User avatar
danchandoo
Fanat
Posts: 63
Joined: 24 Sep 2007 12:15
Location: Украина

Post by danchandoo »

На самом деле, черно-белый сигнал это не интересно, тем более, что цветной получить ни чуть не сложнее.

Так что буду использовать монитор. VGA сигнал 640x480, 60 Гц. Если продублировать строки, и сделать 320 пикселей в строке получим 320x240. При 16 чветах для хранения нужно 38400 байт, что вполне нормально.

Как плюс: простота синхронизации.

Минус: 60Гц против 50 у телевизора. Необходимость дублирования строк (дублирование полукадров с той же целью в телевизоре сделать проще). Неизвестная "дуракоустойчивость" самого монитора (как бы его не спалить, просчитавшись в сопротивлениях)

Интересно, а как монитор определяет разрешение и режим работы? Автоматически по интервалам между синхроимпульсами?
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

danchandoo wrote:Интересно, а как монитор определяет разрешение и режим работы? Автоматически по интервалам между синхроимпульсами?
Да. В современных мониках стоит контроллер. Он измеряет частоты и учитывает полярность синхроимпульсов. Вот и все.
Я уже накидал синхрогенератор для того-же Специалиста с заточкой под VGA. Абсолютно ничего сложного. ;)
User avatar
danchandoo
Fanat
Posts: 63
Joined: 24 Sep 2007 12:15
Location: Украина

Post by danchandoo »

Ну тоесть современный монитор вполне поддерживает нужный мне формат.

Дело за быстрой памятью. А то каждые 78 нс обращение идет, а еще проц писать должен успевать, время доступа 25нс было бы хорошо...

Ну и, собственно, за розработкой всей логики синхрогенератора, тем и займусь.
User avatar
danchandoo
Fanat
Posts: 63
Joined: 24 Sep 2007 12:15
Location: Украина

Post by danchandoo »

Вот, 2 часа AutoCAD мучал, потом еще в Painte рехтовал =)

http://files.mail.ru/48436D

Сие есть схема для розделения доступа ЦП и синхрогенератора к памяти. Ну на вид (с моей точки зрения) может быть жизнеспособно.


Принцип действия:

Синхрогенератор каждые 156 нс генерирует сигнал RD (активный уровень низкий) который длится половину этого времени (78нс) остольное время используется для записи процессором данных в память.


При переходе RD с высокого на низкий уровень (можно и по фронту, просто до инвертора уже и так на RD много входов висело) засчелкивается состояние сигнала WR процессора и содержимое шин адресса и данных процессора.

При высоком уровне на RD, если был защелкнут низкий уровень WR происходит запись.

Таким образом если сигнал WR попал на спад RD, будет произведена запись даже если это случилось в крайний момент времени перед тем как WR станет неактивным.

Недостаток: возможна повторная запись (расход эллектричества лишний), а также кратковременный конфликт между выводами адреса CPU и синхрогенератора во время смены сигнала RD.

Скажите пожалуйста это теоретически будет работать?
User avatar
danchandoo
Fanat
Posts: 63
Joined: 24 Sep 2007 12:15
Location: Украина

Post by danchandoo »

http://files.mail.ru/4YZVAS

Временная диаграмма сигналов.

Подсвеченное:

- красным -- чтение
- зеленым -- запись
- серым отсутствие записи
- не подсвечен момент повторной записи сразу после чтения за зеленым

(чтение подсвечено только один раз)

Прошу прошенья за избыточность рисунка, увлекся =).
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

danchandoo wrote:Скажите пожалуйста это теоретически будет работать?
У тебя шина данных не реверсируется. Как оно будет работать? Или ты не хочешь читать из видеопамяти?
Вот набросок моего варианта (кликабельно):
Image
3М - сигнал который и задает весь смак. Тайминги.
Авторские примечания:
1. Изза высокой частоты пикселей в строке стоят синхронные счетчики. На выходе ИР13, он 25МГц работает (проверено).
2. Частота пикселей выбрана 25МГц (стандарт VGA) изза сохранения пропорций (экранчик будет 4:3 отцентрован в поле из 640х480). Если перейти на разрешение 800х600, то дублируя строки можно снизить пиксельклок, этот вариант возможно будет проработан.
3. Синхрогенератор полностью самодостаточен здесь, связь его с процом по сигналам адреса (А0-А15), данных (D0-D7) и управления (RD, WR, RAM).
4. Процессор нетормозиться, правда работает на 3МГц. Источник тактов - сам синхрогенератор. Окно обращения в лог.1 периода 3М (лог.0 N3M), которое отцентровано от подъема сигнала тактов процессора, поэтому обращения к памяти считываются полюбому.
5. Шина памяти отделена 2мя регистрами: тот, что работает на запись (CPU=>RAM) просто пропускает сигнал во время окна, а тот что на чтение (RAM=>CPU) записывает значение и хранит до следующего окна. Таким образом, отрабатывается тайминг цикла М1, который получает данные по спаду тактового сигнала.
6. Узел выхода VGA не проработан. Аналоговую часть надо будет переделывать.
7. Вся эта байда разрабатывалась для замены стандартной Спецовской. Можно, конечно, подогнать ее под конкретный ВМ80 (и при этом снизить ему частоту до положенных 2МГц), но я пока не прорабатываю этот вариант. Z80 проще и вкуснее.
8. Хочется прикрутить конроллер цвета спецовский.

Обсуждаем.
User avatar
danchandoo
Fanat
Posts: 63
Joined: 24 Sep 2007 12:15
Location: Украина

Post by danchandoo »

Сначала отпишусь, потом буду розбираться с прежложеной вами схемой, так как для меня это сложно.
У тебя шина данных не реверсируется. Как оно будет работать? Или ты не хочешь читать из видеопамяти?
Конечно не хочу, так как потребуются двунаправленные буферы, а мне нужно все как можно проще.

Предложенная мной схема (в которой есть ошибка, т.к. вход C D-триггера и CP защелок олжны быть соеденены вместе, а у меня одни к RD другие к НЕ-RD) является в крайней степени роздолбайской, т.к. между ЦП и синхрогенератором нет никакой синхронизации. Единственное требование чтобы частота процессора не превышала частоту синхрогенератора.

25.17 мкс активная часть строки (640*480 при 60 Гц) если в строке 320 пикселей, то время вывода пикселя 76.7 нс, в одной ячейке у нас 2 пиксела, так что частота обращения к памяти =6.357 Мгц. Можно ставить проц до 6Мгц.

Нужно только розабраться с логикой, учесть все задержки.

А как расчитывается нагрузочная способность ТТЛ? Во всех datasheet-ах дается емкость, видимо все зависит именно от емкости и частоты.
Мне это важно, т.к. чем более нагружен выход тем дольше длятся переходы из одного состояния в другое.

P. S. Скажите, а в чем вы чертите схемы?
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

danchandoo wrote:А как расчитывается нагрузочная способность ТТЛ? Во всех datasheet-ах дается емкость, видимо все зависит именно от емкости и частоты.
Мне это важно, т.к. чем более нагружен выход тем дольше длятся переходы из одного состояния в другое.
По количеству входов, подключенных к нему. Если тебе надо подключить, например, 10 входов к одному и тому же сигналу, а выхзодов их 2, то распределяешь поровну, по 5 штук. А вообще, ТТЛ можно грузить обычно 4-5 входов, если частота не выше 4МГц. В справочниках пишут обычно.
danchandoo wrote:P. S. Скажите, а в чем вы чертите схемы?
Я в старом-добром PCAD4.5, ктото в PCAD2ххх, а наш админ предпочитает Eagle (ну и не только он собственно). Есть так же Proteus и Protel.
User avatar
danchandoo
Fanat
Posts: 63
Joined: 24 Sep 2007 12:15
Location: Украина

Post by danchandoo »

Что-то для меня синхрогенератор придумать не очень просто.

Сначала думал прицепить к одному еденственному счетчику большой разрядности ПЗУ, а выводы ПЗУ к шине адресса видеопамяти и к выходам синхросигналов.

Но в ближайшем интернет-магазине ПЗУ-хи только с длинной слова 8 байт, их надо несколько штук (а именно 3, при чем у последней из 8 выводов используется 2, а это верх нерациональности...) а стоят они прилично... Плюс нужен программатор, или нужно сделать самопрограмирующуюся систему...

Другой вариант куча счетчиков. Тут вот думаю какую взять опорную частоту.
Есть варианты:
- исходные 25 Мгц (вообще нужно 25.175 но такого кварца нет)
- частота вывода пикселей на экран (320*240) 12.5 Мгц
- частота обращений к памяти 6.125 Мгц ИМХО упрощает генерацию адресса ячейки видеопамяти.

Проблема в том, что чем меньше частота, тем большие отклонения от таймингов VGA. Чем это может быть чревато?
User avatar
shoorick
Doomed
Posts: 487
Joined: 05 Nov 2007 05:08
Location: Украина

Post by shoorick »

а 6845 не приветствуется?

или это уже дифсыт? (я не спрашивал на рынке, но уменя есть 2 шт)
User avatar
danchandoo
Fanat
Posts: 63
Joined: 24 Sep 2007 12:15
Location: Украина

Post by danchandoo »

Придумал схему:

- ПЗУ, работает как ПЛМ, к адрессной шине подключен 20-битный счетчик.
- счетчик реального адресса ячейки видеопамяти (16-бит).
- 3 D-триггера, используются чтобы меньше программировать ПЗУ:
изначально в ПЗУ после стирания одни "1". Вместо того чтобы прошивать "0" в бит соответствующий выводу V_synch, скажем во все ячейки когда должен появляться этот сигнал, мы шьем его в ячейку соответствующую моменту времени за такт до начала сигнала, и за такт до конца, а вывод подключаем не сразу к V_synch, а к счетчику на D-триггере, а уже вывод триггера к выводу синхронизации.

Однако я забыл продублировать строки, так что схема еще утяжелится, как доделаю выложу.
а 6845 не приветствуется?
What is it? :D
User avatar
shoorick
Doomed
Posts: 487
Joined: 05 Nov 2007 05:08
Location: Украина

Post by shoorick »

What is it?
Оу! это сердце ЦГА! А также такой контроллер применялся в болгарском Пълдине (из которого я один и выковырял). Болгарский аналог - СМ607.
Craz
Fanat
Posts: 64
Joined: 11 Mar 2007 03:57
Location: 217.9.147.66

Post by Craz »

а 6845 не приветствуется?

или это уже дифсыт? (я не спрашивал на рынке, но уменя есть 2 шт)
Круто! Для меня это точно дифицит :(

А много для 6845 обвеса надо?