Короче дошли руки до платы и я решил попробовать написать прошивку. И самое интересное в том, что тема вылежавшаяся несколько лет, теперь видится немного по другому. И теперь, можно сказать, что та версия платы практически бесполезна.
Емкости EPM7128 хватило, только для обычного спектрумовского режима в VGA развертки. О правильном бордере можно даже не мечтать.
Итого, данная плата может быть полезна только для любительских режимов, без бордерных извратов. Вобщем, я опробую саму идею видеокарты - по сути отладить асинхронный доступ к карте. И можно будет переходить к более толстой CPLD.
На предмет толстой CPLD просится EPM1270.
Пока меня интересует один вопрос как правильно организовать асинхронную запись в память видеокарты. Сейчас сделано так. В карте свой синхрогенератор и доступ к памяти организован как в спеке - фаза CPU, фаза Видео. Но так как комп и видеокарта работают между собой асинхронна, то фаза CPU может не совпадать с доступом процессора. Чтобы произвести корректную запись я полагаю надо защелкивать адреса и данные с шины процессора и в фазе CPU видеокарты производить запись. Вроде и работает, но не совсем корректно.
Вот пример кода как я делаю - может кто не замыленным взглядом посмотрит и скажет, где я там уперся.
Sync_count[1] - это сигнал синхрогенератора видеокатры 0 - фаза CPU, 1 - фаза Видео.Код:------------------------------------------------------------------------------------ -- Сигнал мультиплексирования страниц ОЗУ ------------------------------------------------------------------------------------ Ram_smx = CA[15] & CA[14]; -- сигнал SMX = A15 & A14 Ram_page = RAM0_Page_r[0].q & RAM0_Page_r[1].q & RAM0_Page_r[2].q; ------------------------------------------------------------------------------------ -- Выбор памяти ОЗУ ------------------------------------------------------------------------------------ Sel_ram = !(Ram_smx & Ram_page) & !(CA[14] & !CA[15]); ------------------------------------------------------------------------------------ -- Сигнал стробирования сигналов от процессора ------------------------------------------------------------------------------------ DData_reg[7..0].d = CD[7..0]; DData_reg[7..0].clk = !Sync_count[1].q; DAddr_reg[13..0].d = CA[13..0]; DAddr_reg[14].d = 2mux1(GND, Ram_page, Ram_smx); DAddr_reg[14..0].clk = !Sync_count[1].q; RAM_write.d = C_MREQ # !C_RD # Sel_ram; RAM_write.clk = !Sync_count[1].q; ------------------------------------------------------------------------------------ -- Запись в память ------------------------------------------------------------------------------------ Ram_we = 2mux1(Ram_write.q,VCC,Sync_count[1].q); MWE = Ram_we; REG_wrdata[].in = DData_reg[].q; REG_wrdata[].oe = !Ram_we; DATA_VID[] = REG_wrdata[].out; MD[] = DATA_VID[].out;
Мысли у меня сейчас сумбурят, так что если что не понятно спрашивайте.
Можно поступить как инженеры-приставочники: там у VDP есть небольшой FIFO на запись. На 1-2 реже 4 (зависит от приставки). С чтением, конечно, вопрос.
А чтение практически не нужно, Память видеокарты отображается на память видео компьютера. Иными словами, что в компе, то и в карточке.
FIFO не совсем интресно. По сути можно попробовать защелкивать сигналы по сигналу MREQ, а в следующей фазе карты, после снятия сигнала MREQ перекидывать данные в память видюхи.
В Пентагоне сделано наоборот. Если фаза CPU приходится на фазу чтения ВК, фаза ВК смещается на шаг вперёд.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
По сути фазы компьютера для видеокарты должны быть безразличны, у нее свои собственные могут быть фазы. Важно чтобы в момент записи в ОЗУ компьютера, видеокарта корректно записывала их себе.
На данный момент в память пишется и отображается. Но вот только с мусором пишется. А это значит не всегда корректно захватывается информация.
Последний раз редактировалось Mick; 09.09.2014 в 11:13.
Очередная тема с мёртворождённым проектом, и ещё с выдержкой 5 лет, супер...
Насколько реальна работа данной карты на других клонах или она только для Феникса?
ZX-Evo Rev. C4 (Double-config) / VDAC2 / NeoGS / ZX-Multisound / NemoIDE / ZiFi
Scorpion ZS 256 Turbo+ (Light) / GMX / ZXM-GS / TSFM / SMUC / ZXKM / Gotek
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)