Rev 87 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
спецификации на прошивку НГС для демы на бухальт2013- поддержка механимзма обмена через host-порты B3 BB как в оригинале- поддержка всех SPI портов как в оригинале- поддержка переключения частоты z80- 4 порта для пейджинга 4 очков по 16к рамы: выводятся инвертированные номерастраниц (#7f^number, number=0..7f, 2Mb)!!! пока нет, совместимо с нгс-конфой- zx-dma на чтение (хост читает) с префетчем (8 или 16 байт)--> нужна ли перестановка указателя DMA с хоста? если нужна, то зачем и в какомвиде?!!! пока не нужна- sdcard dma (sdcard->ram): чтение 512 байт с SPI в fpga-память, запись бёрстом512 байт (1024 такта Z80+busrq/busack)- mp3 dma (ram->mp3): чтение бёрстом 512 байт из RAM в fpga-память, запись вmp3-чип с троттлингом с его стороны.--> нужно ли дма в RAM, или может быть начитка сдкарты в fpga - посылка в mp3?!!! нужно дма в рам.--> достаточно ли 1 машнки dma (которое или читает сдкарту или пишет мр3) или--> надо 2 независимых?!!! пока 2 независимых- таймер со скоростью 37500гц/2,4,8,16,32,64,128,256 == 146.48гц, 292.97гц и т.д.- прерывания: NMI от хоста, конец дма, таймер. приоритеты, вектор -- кодкоманды RST (можно применять im0, im1, im2).--> или от хоста тоже INT?!!! нет- вочдог: надо его пинать раз в секунду, иначе ресет прошивки и уход на буторигинальной ngs-прошивки в альтеру.--> девайсы для умножения, деления? Например умножатор:out (port),lo1,hi1,lo2,hi2:in LL,LH,HL,HH,(port)!!! пока не нужныСвободные порты в НГС: #0C, #0D, #0E, #1A, #20..#3F#20, #21, #22, #23: маппинг 16к паг в очки 0,1,2,3. Номера: неинвертированные(write only) несдвинутые (0..4Мб=0..255, на некоторых НГС только 2Мб).#22, #23 -- перекрывают MPAG, EXMPAG. norom действует длятех же очек, что и обычно.#0E: частота таймерного прерывания: значение | частота, Гц (write only)----------+-------------(default) #00 | 37500/1 = 37500#01 | 37500/2 = 18750#02 | 37500/4 = 9375#03 | 37500/8 = 4687.5#04 | 37500/16 = 2343.75#05 | 37500/64 = 585.9375#06 | 37500/256 = 146.484375#07 | 37500/1024 = 36.62109375#0C: INTENA: бит | функция (write only)-----+-----------------------7 | set/reset bit6 |5 |4 |3 |2 | enable MP3 dma end int (default=0)1 | enable SD dma end int (default=0)0 | enable timer int (default=1)#0D: INTREQ: бит | функция (read/write)-----+----------------7 | set/reset bit6 |5 |4 |3 |2 | MP3 dma end pending1 | SD dma end pending0 | timer int pendingПриоритеты прерываний: От младшего бита (наивысший) к старшим.Вектор прерывания: для бита 0 - #FF, для бита 1 - #F7 и т.д. до бита 6 -- #CF(коды команд RST #38, RST #30, ..., RST #08).Считывание вектора прерываний снимает бит INTREQ, соответствующий взятому прерыванию.