Subversion Repositories ngs

Rev

Rev 87 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
87 lvd 1
спецификации на прошивку НГС для демы на бухальт2013
2
 
3
 
4
 - поддержка механимзма обмена через host-порты B3 BB как в оригинале
5
 
6
 - поддержка всех SPI портов как в оригинале
7
 
8
 - поддержка переключения частоты z80
9
 
10
 - 4 порта для пейджинга 4 очков по 16к рамы: выводятся инвертированные номера
11
   страниц (#7f^number, number=0..7f, 2Mb)
12
!!! пока нет, совместимо с нгс-конфой
13
 
14
 - zx-dma на чтение (хост читает) с префетчем (8 или 16 байт)
15
 
16
--> нужна ли перестановка указателя DMA с хоста? если нужна, то зачем и в каком
17
    виде?
18
!!! пока не нужна
19
 
20
 - sdcard dma (sdcard->ram): чтение 512 байт с SPI в fpga-память, запись бёрстом
21
   512 байт (1024 такта Z80+busrq/busack)
22
 
23
 - mp3 dma (ram->mp3): чтение бёрстом 512 байт из RAM в fpga-память, запись в
24
   mp3-чип с троттлингом с его стороны.
25
 
26
--> нужно ли дма в RAM, или может быть начитка сдкарты в fpga - посылка в mp3?
27
!!! нужно дма в рам.
28
 
29
--> достаточно ли 1 машнки dma (которое или читает сдкарту или пишет мр3) или
30
--> надо 2 независимых?
31
!!! пока 2 независимых
32
 
33
 - таймер со скоростью 37500гц/2,4,8,16,32,64,128,256 == 146.48гц, 292.97гц и т.д.
34
 
35
 - прерывания: NMI от хоста, конец дма, таймер. приоритеты, вектор -- код
36
   команды RST (можно применять im0, im1, im2).
37
 
38
--> или от хоста тоже INT?
39
!!! нет   
40
 
41
 - вочдог: надо его пинать раз в секунду, иначе ресет прошивки и уход на бут
42
   оригинальной ngs-прошивки в альтеру.
43
 
44
--> девайсы для умножения, деления? Например умножатор:
45
    out (port),lo1,hi1,lo2,hi2:in LL,LH,HL,HH,(port)
46
!!! пока не нужны
47
 
48
Свободные порты в НГС: #0C, #0D, #0E, #1A, #20..#3F
49
 
50
#20, #21, #22, #23: маппинг 16к паг в очки 0,1,2,3. Номера: неинвертированные
51
   (write only)     несдвинутые (0..4Мб=0..255, на некоторых НГС только 2Мб).
52
                    #22, #23 -- перекрывают MPAG, EXMPAG. norom действует для
53
                    тех же очек, что и обычно.
54
 
55
#0E: частота таймерного прерывания: значение | частота, Гц (write only)
56
                                   ----------+-------------
57
                               (default) #00 | 37500/1    = 37500 
58
                                         #01 | 37500/2    = 18750   
59
                                         #02 | 37500/4    =  9375
60
                                         #03 | 37500/8    =  4687.5
61
                                         #04 | 37500/16   =  2343.75
62
                                         #05 | 37500/64   =   585.9375
63
                                         #06 | 37500/256  =   146.484375
64
                                         #07 | 37500/1024 =    36.62109375 
65
 
66
#0C: INTENA: бит | функция (write only)
67
            -----+-----------------------
68
               7 | set/reset bit                     
69
               6 |                       
70
               5 |                       
71
               4 |                       
72
               3 |                       
73
               2 | enable MP3 dma end int (default=0)
74
               1 | enable SD dma end int  (default=0)
75
 
76
 
77
#0D: INTREQ: бит | функция (read/write)
78
            -----+----------------
79
               7 | set/reset bit  
80
               6 |                
81
               5 |                
82
               4 |                
83
               3 |                
84
               2 | MP3 dma end pending
85
               1 | SD dma end pending
86
 
87
Приоритеты прерываний: От младшего бита (наивысший) к старшим.
88
Вектор прерывания: для бита 0 - #FF, для бита 1 - #F7 и т.д. до бита 6 -- #CF
89
                   (коды команд RST #38, RST #30, ..., RST #08).
90
Считывание вектора прерываний снимает бит INTREQ, соответствующий взятому прерыванию.
91
 
92
 
93
 
94
 
95