PDA

Просмотр полной версии : Высокоскоростной самодельный DAC (для VGA) ?



Tronix
05.10.2024, 19:43
Значит есть Pi Pico, которая выводит VGA с помощью обычного резисторного ЦАП и все работает:
81363

Но эта красота отжирает 9 ног микроконтроллера, и в проекте все GPIO заняты. А хотелось бы как-то высвободить хотя-бы пару ног (для эмуляции AY два канала левый и правый).

Первое что пришло на ум - какой-нибудь сдвиговый регистр навроде 74HC595, но так как пиксельклок 25 МГц, то в этот регистр надо будет писать минимум с частотой 25 * 8 = 200 МГц, что как бы ой. Может быть 4-битные защелки применить, тогда вроде за два (или три) клока можно будет в них защелкнуть 8 бит. А три клока это 25 * 3 = 75 МГц что тоже много, но вроде для каких-то ALVC или других серий терпимо. Или как то можно по-другому?

svofski
05.10.2024, 20:04
Лучше все-таки оставить VGA как есть, а мультиплексировать что-то другое, что помедленней.

aviator
05.10.2024, 20:15
3 4-x битных регистра. Входы - параллельно и на 3 GPIO контроллера. и ещё 2 GPIO для CS регистра (через простейший преобразователь в позиционный код). И 4 GPIO освобождаются таким нехитрым образом. Только всё упрётся в то, что данные наружу надо будет выставлять с частотой 75 МГц. Если контроллер сможет (в чём я сомневаюсь), то хорошо.

Tronix
05.10.2024, 20:31
Входы - параллельно и на 3 GPIO контроллера. и ещё 2 GPIO для CS регистра.
А какие регистры посоветуете для 75 МГц и при условии сигналов 3.3v?

MM
05.10.2024, 20:39
А какие регистры посоветуете для 75 МГц и при условии сигналов 3.3v?
Очевидно, 2 шт. 74AC174, остальное мало подойдет. И то на грани таймингов.
5 бит данные, 2 бита клок, либо даже 1 бит клок с инвертором на разные регистры - но это компромисс...
Либо использовать готовый RAMDAC - на Али они вроде всё еще в продаже. Но потребуется 8 бит шина данных...

Tronix
05.10.2024, 20:45
Очевидно, 2 шт. 74AC174
Ээээ, не совсем очевидно... нужны наверное какие-то регистры с "хранением", то есть когда я загружаю в первый регистр 4 бита, а потом во второй 4 бита первый в это время должен выдавать на выходах еще "старую" информацию. И только когда я загружу второй регистр я им обоим посылаю команду - выводи содержимое.

UPD: А, или нет, или я их буду грузить же на частоте большей чем пиксельклок, поэтому не важно. Главное чтоб в пиксельклок они оба были загружены.

MM
05.10.2024, 20:59
на частоте большей чем пиксельклок,
Если важна синхронность выдачи на частоте пиксельклока, то приделать еще 1 шт. ТМ9 для синхронизации выхода "спешащей" ТМ9.
Можно наверное применить типономиналы регистров ИР23 ( 374 ) , ИР37 ( 574 ) из серии 74ACхх ( серия 1554 ). Применение 74HCхх ( серия 1564 ) может быть неоправдано, т.к. они толком не поспеют за таким высоким пиксельклоком ( в т.ч. за удвоенным ).

gen1971
05.10.2024, 21:29
хотелось бы как-то высвободить хотя-бы пару ног (для эмуляции AY два канала левый и правый).

А для чего такая разрядность ЦАП?
Может снизить до 2 разрядов на канал?

aviator
05.10.2024, 21:56
Я думаю, что RP2040 не успеет выдавать данные на GPIO с частотой 75 МГц. Не реализовано там периферии типа параллельного порта с DMA. Вот HDMI на нём делали, но это возможно только потому, что интерфейс последовательный и его можно реализовать на встроенной периферии.
https://hackaday.io/project/190161-rp2040-1080p-hdmi

Rio444
05.10.2024, 22:00
Можно сделать как-то так. Высокая скорость не нужна.
https://pic.maxiol.com/images2/1728154779.3582613444.vga.png

aviator
05.10.2024, 22:08
Тогда уж GPIO7 заменить инвертированным GPIO6...

Rio444
06.10.2024, 00:35
Да, можно первый триггер заменить на 74hc373 и объединить клоки.
Тогда по отрицательному фронту произойдёт защелкивание в первом триггере, а по положительному - во втором.

https://pic.maxiol.com/images2/1728164355.3582613444.vga.png

Tronix
06.10.2024, 18:24
Rio444, Да, примерно так и сделал, только вместо 74hc374 поставил 74ac574 (ибо была под рукой). Все работает.
Всем спасибо за содействие )

Rio444
06.10.2024, 21:26
только вместо 74hc374 поставил 74ac574 (ибо была под рукой)
Да там вариантов уйма.
LVC, VHC и т.д.
У 574 конечно цоколёвка удобнее. Они наверное сейчас и более распространены.


Все работает.:v2_thumb: