Top secrets sources NedoPC ngs

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

Ãðóïïà NedoPC ðàäà ïðåäñòàâèòü âàøåìó âíèìàíèþ  òðàëÿëÿ ÂÏÈÑÀÒÜ ÐÅÊËÀÌÓ! :).
NeoGS (NGS)
old general sound (ogs)


Êðàòêèå òåõíè÷åñêèå õàðàêòåðèñòèêè:

 - ïîëíàÿ ïðîãðàììíàÿ ñîâìåñòèìîñòü ñ ogs
 - ãèáêàÿ àðõèòåêòóðà, îñíîâàííàÿ íà fpga
 - 2 ìåãàáàéòà RAM
 - 512 êèëîáàéò flash-ROM
 - ðàñøèðåííûå ñïîñîáû àäðåñàöèè ïàìÿòè: 2 îêíà ïðîåöèðîâàíèÿ, ïîëíîå èñêëþ÷åíèå ROM èç àäðåñíîãî ïðîñòðàíñòâà
 - Z80 ñ ïåðåêëþ÷àåìîé ÷àñòîòîé (10, 12, 20 è 'òóðáî'-24 ÌÃö)
 - 8 àïïàðàòíûõ çâóêîâûõ êàíàëîâ ñ ãðîìêîñòÿìè (â 2 ðàçà áîëüøå, ÷åì ó ogs)
 - mp3-äåêîäåð (àíàëîã vs1001) ñ àïïàðàòíûì SPI äëÿ ïåðåñûëêè äàííûõ
 - èíòåðôåéñ SD-card ñ àïïàðàòíûì SPI äëÿ ïåðåñûëêè äàííûõ.
 - DMA-äîñòóï ñïåêòðóìà â ïàìÿòü NGS (ïåðåñûëêà äàííûõ ìåæäó ñïåêòðóìîì è NGS êîìàíäàìè LDI, LDIR è ïîäîáíûìè)
 - âîçìîæíîñòü ïîëíîñòüþ àâòîíîìíîé ðàáîòû (ïðîèãðûâàíèå ìîäóëåé è mp3-ôàéëîâ ñ SD-êàðòî÷êè ïî ïëåéëèñòó, ïðè ýòîì
   ñáðîñ ñïåêòðóìà íå âëèÿåò íà NGS)

Çâóêîâûå âîçìîæíîñòè ïî ñðàâíåíèþ ñ ogs çíà÷èòåëüíî óâåëè÷åíû: òåïåðü ïðàêòè÷åñêè ëþáîé ñóùåñòâóþùèé 4-êàíàëüíûé
ìîäóëü ïîìåñòèòñÿ â ïàìÿòè NGS. Ðàñøèðåííîå ÷èñëî àïïàðàòíûõ êàíàëîâ è óâåëè÷åííàÿ ÷àñòîòà Z80 ïîçâîëÿþò ïðîèãðûâàòü êàê 8-êàíàëüíûå
ìîäóëè, òàê è îäíîâðåìåííî ìóçûêó è çâóêîâûå ýôôåêòû áåç îòêëþ÷åíèÿ êàíàëîâ ìóçûêè. mp3-äåêîäåð âìåñòå ñ íîñèòåëåì
SD-card ïîçâîëÿò âûâåñòè îçâó÷êó íà êà÷åñòâåííî íîâûé óðîâåíü. Íàêîíåö, NGS äåéñòâèòåëüíî (â îòëè÷èå îò ogs)
ìîæåò ðàáîòàòü êàê âûñîêîïðîèçâîäèòåëüíûé àêñåëåðàòîð, èìåþùèé øèðîêèé DMA-êàíàë îáìåíà äàííûìè ñî ñïåêòðóìîì.
Êðîìå òîãî, DMA-êàíàë ïîçâîëÿåò çíà÷èòåëüíî ñîêðàòèòü âðåìåíà çàãðóçêè çâóêîâûõ äàííûõ â NGS.


Íèæå ïðèâîäèòñÿ êðàòêîå îïèñàíèå äîïîëíèòåëüíûõ âîçìîæíîñòåé NGS ñ òî÷êè çðåíèÿ ïðîãðàììèñòà. Ïðè ýòîì
ïðåäïîëàãàåòñÿ, ÷òî ÷èòàòåëü èìååò ÿñíîå ïðåäñòàâëåíèå î àðõèòåêòóðå ogs.


Äåøèôðàöèÿ ïîðòîâ ñî ñòîðîíû ñïåêòðóìà, â îòëè÷èå îò ogs, âûïîëíåíà ïî ïîëíîìó ìëàäøåìó áàéòó àäðåñà, ïðè ýòîì
ñèãíàë IORQGE, îïÿòü æå â îòëè÷èå îò ogs, âûäà¸òñÿ ÒÎËÜÊÎ íà îñíîâå àäðåñà è àêòèâåí êàê ïðè çàïèñè â ïîðòû, òàê
è ïðè ÷òåíèè èç íèõ.

Ïîðòû $B3 è $BB ïîâòîðÿþò ôóíêöèîíàëüíîñòü ogs.

 êàðòó ïîðòîâ äîáàâëåí ïîðò $33 ñ ôóíêöèåé ñáðîñà NGS è âûäà÷è ïðîöåññîðó NGS íåìàñêèðóåìîãî ïðåðûâàíèÿ:
 ïðè âûâîäå â íåãî ÷èñëà $80 ïðîèñõîäèò ñáðîñ NGS. Ïðè âûâîäå $40 - ïðîöåññîðó NGS âûäà¸òñÿ NMI.



Âíóòðåííèå ïîðòû NGS (ïåðå÷èñëåíû òîëüêî îòëè÷àþùèåñÿ îò ïîðòîâ ogs ïî ôóíêöèîíàëüíîñòè, ëèáî âíîâü äîáàâëåííûå):

$40-$FF - ïîðòû, èñïîëüçóþùèåñÿ ïðè íà÷àëüíîé êîíôèãóðàöèè FPGA, íå äîëæíû èñïîëüçîâàòüñÿ ïðè íîðìàëüíîé ðàáîòå ïðîãðàìì NGS.

ïîðò $00, çàïèñü - àäðåñàöèÿ ðàñøèðåíà äî 2 ìåãàáàéò (áèòû 5..0: 64 ñòðàíèöû ïî 32 êèëîáàéòà)

ïîðò $0F, çàïèñü è ÷òåíèå (òîãî, ÷òî çàïèñàíî).

 bit 0 - NO ROM bit: 1 - ïîäêëþ÷åíà òîëüêî RÀÌ,
                     0 - $4000-$7fff RÀÌ, îñòàëüíîå FLASH ñî ñòðàíèöàìè òàêèìè æå êàê RAM.

 bit 1 - RAM RO bit: 1 - ñòðàíèöà 0 RAM (àáñîëþòíûå àäðåñà 0..32767) çàùèùåíà îò çàïèñè (ýìóëÿöèÿ ROM ogs)
                     0 - íå çàùèùåíà îò çàïèñè.

 bit 2 - 8 channels bit: 1 - 8 çâóêîâûõ êàíàëîâ
                         0 - 4 êàíàëà (êàê â ogs).

 bit 3 - extended paging mode bit: 1 - ðàñøèðåííûé ðåæèì ñòðàíèö (ñì. íèæå)
                                   0 - ïàìÿòü ïåðåêëþ÷àåòñÿ êàê â ogs

 bit 4,5 - z80 overclocking bits: 00 - Z80 ðàáîòàåò íà ÷àñòîòå 24ÌÃö
                                  01 - Z80 ðàáîòàåò íà ÷àñòîòå 12ÌÃö
                                  10 - Z80 ðàáîòàåò íà ÷àñòîòå 20ÌÃö
                                  11 - Z80 ðàáîòàåò íà ÷àñòîòå 10ÌÃö

 bits 6,7 - íåèñïîëüçóåìûå: íå îïðåäåëåíû ïðè ÷òåíèè, äîëæíû óñòàíàâëèâàòüñÿ â íîëü ïðè çàïèñè


ïîðò $10, çàïèñü. Ðàñøèðåííûé ïîðò ñòðàíèö, èñïîëüçóåòñÿ, êîãäà extended paging mode bit = 1

 Ìîäåëü ñòðàíèö â ðàñøèðåííîì ðåæèìå òàêîâà:
 ïîðò $00 - ñòðàíèöà (16ê êóñîê), âêëþ÷åííàÿ ïî àäðåñàì $8000-$bfff
 ïîðò $10 - ñòðàíèöà (16ê êóñîê), âêëþ÷åííàÿ ïî àäðåñàì $c000-$ffff

Äëÿ 2 ìåãàáàéò ïàìÿòè ñóùåñòâóåò âñåãî 128 ñòðàíèö ïî 16 êèëîáàéò, ïðîíóìåðîâàííûõ ÷èñëàìè îò 0 äî 127.

Èìåÿ íîìåð òàêîé ñòðàíèöû â A, äåëàåì RRCA è âûâîäèì ðåçóëüòàò â ïîðò $00 èëè $10, âêëþ÷àÿ ñòðàíèöó ñ çàäàííûì íîìåðîì
â ñîîòâåòñòâóþùåå îêíî ïðîåöèðîâàíèÿ.


ïîðòû $16-$19, çàïèñü. Óñòàíîâêà ãðîìêîñòè â êàíàëàõ 5-8

 Ýòè êàíàëû ñóùåñòâóþò òîëüêî â ðåæèìå, êîãäà 8 channels bit = 1. Â ðåæèìå 4 êàíàëîâ
 ïðè çàïèñè äàííûõ â êàíàëû 1-4 ýòè äàííûå àâòîìàòè÷åñêè êîïèðóþòñÿ â êàíàëû 5-8, ò.î. ãðîìêîñòü êàíàëà
 â 4-êàíàëüíîì ðåæèìå áîëüøå, ÷åì â 8-êàíàëüíîì.


Êàê èçâåñòíî, â ogs çàïèñü îòñ÷¸òà â ÖÀÏ êàíàëà ïðîèñõîäèò ÷òåíèåì ýòîãî îòñ÷¸òà èç ïàìÿòè:

 Ïðè ÷òåíèè ñ àäðåñîâ $6000-$60FF ñ÷èòàííûé áàéò èä¸ò â ÖÀÏ 1îãî êàíàëà.
 Ïðè ÷òåíèè ñ àäðåñîâ $6100-$61FF - â ÖÀÏ 2îãî êàíàëà
 $6200-$62FF - 3åãî êàíàëà
 $6300-$63FF - 4îãî êàíàëà
 $6400-$64FF - ñíîâà 1îãî êàíàëà è òàê äàëåå äî $7F00-$7FFF - èä¸ò â 4ûé êàíàë.

 8-êàíàëüíîì ðåæèìå ýòà ñõåìà ìîäèôèöèðóåòñÿ î÷åâèäíûì îáðàçîì:

 $60xx - 1ûé
 $61xx - 2îé
 $62xx - 3
 $63xx - 4
 $64xx - 5
 $65xx - 6
 $66xx - 7
 $67xx - 8
 $68xx - 1
 è òàê äàëåå äî $7Fxx.

Ðàñïðåäåëåíèå êàíàëîâ ïî ñòåðåîïàíîðàìå:

êàíàëû 1,2,5,6 - ëåâûå
êàíàëû 3,4,7,8 - ïðàâûå



 MP3 è SD-card

Äëÿ ñâÿçè ñ MP3-äåêîäåðîì (ma8201, àíàëîã vs1001) èñïîëüçóåòñÿ
2 êàíàëà spi. Ïåðâûé ðàáîòàåò òîëüêî íà ïåðåäà÷ó, ïåðåäà¸ò
íåïîñðåäñòâåííî mp3-äàííûå. Âòîðîé - óïðàâëÿþùèé, äâóíàïðàâëåííûé.

Äëÿ ñâÿçè ñ SD-êàðòî÷êîé èñïîëüçóåòñÿ 1 spi-êàíàë.

Ïåðåäà÷à áàéòà îñóùåñòâëÿåòñÿ ïóò¸ì åãî çàïèñè â ñïåöèàëüíûé ïîðò ïåðåäà÷è, àññîöèèðîâàííûé
ñ äàííûì SPI-êàíàëîì, ÷òî èíèöèèðóåò öèêë îáìåíà. Ïðèíÿòûé â ýòîì îáìåíå áàéò (äëÿ äâóíàïðàâëåííîãî
êàíàëà SPI) äîñòóïåí â ïîðòå ÷òåíèÿ. Êðîìå òîãî, âîçìîæíî ÷òåíèå ñ ïåðåçàïóñêîì îáìåíà (ïðè¸ì ñåêòîðà èç
SD-êàðòî÷êè áóäåò âûãëÿäåòü êàê INIR:INIR, ïåðåäà÷à - OTIR:OTIR).



 DMA

Ñî ñòîðîíû ñïåêòðóìà DMA-êàíàë ñ NGS âûãëÿäèò êàê êóñîê ïàìÿòè, ïîäñòàâëÿåìûé NGS âìåñòî ÏÇÓ ñïåêòðóìà ïðè
÷òåíèè èëè çàïèñè äàííûõ ïî àäðåñàì $0000-$3FFF ïðè âêëþ÷¸ííîì ÏÇÓ (àêòèâåí ñèãíàë /CSROM íà zx-bus).

Îáìåí ïðîèñõîäèò ñëåäóþùèì îáðàçîì:

Íà áîðòó NGS åñòü àäðåñíûé óêàçàòåëü, ðåãèñòð ÷òåíèÿ è ðåãèñòð çàïèñè.
Åñëè ïðè âêëþ÷åííîì ðåæèìå DMA ñïåêòðóì ÷èòàåò èç îáëàñòè $0000-$3FFF
(êîíêðåòíûé àäðåñ â ýòèõ ïðåäåëàõ íå èìååò çíà÷åíèÿ) ïðè âêëþ÷åííîì ÏÇÓ, òî ïðîèñõîäèò ñëåäóþùåå:

1. ÏÇÓ áëîêèðóåòñÿ ñèãíàëîì RDROM zx-bus.
2. NGS âûäà¸ò íà ØÄ ñïåêòðóìà ñîäåðæèìîå ðåãèñòðà ÷òåíèÿ
3. NGS èíèöèèðóåò öèêë DMA â ñîáñòâåííóþ ïàìÿòü âûäà÷åé /BUSRQ íà ïðîöåññîð NGS; ïîñëå ïîëó÷åíèÿ /BUSAK íà ØÀ NGS âûñòàâëÿåòñÿ
   ñîäåðæèìîå àäðåñíîãî óêàçàòåëÿ è ïðîèñõîäèò ÷òåíèå ýòîãî àäðåñà, ïðî÷èòàííûé áàéò ñîõðàíÿåòñÿ â ðåãèñòðå ÷òåíèÿ, à àäðåñíûé
   óêàçàòåëü èíêðåìåíòèðóåòñÿ.

ïðîöåññû 1-2 è 3 èäóò ïàðàëëåëüíî òàêèì îáðàçîì, ÷òî ñïåêòðóì ïðèíèìàåò áàéò, ñ÷èòàííûé NGS èç ñâîåé ïàìÿòè â ïðåäûäóùèé öèêë.
Îäíàêî åñëè â ìîìåíò ÷òåíèÿ ñïåêòðóìîì áàéòà NGS åù¸ íå óñïåë åãî ïðî÷èòàòü èç ñîáñòâåííîé ïàìÿòè, òî ñïåêòðóìó âûñòàâëÿåòñÿ /WAIT.


Ïðè çàïèñè ñïåêòðóìîì â àäðåñà $0000-$3FFF ïðîèñõîäèò ñëåäóþùåå:

1. Çàïèñûâàåìûé áàéò ñîõðàíÿåòñÿ â ðåãèñòðå çàïèñè.
2. èíèöèèðóåòñÿ öèêë DMA, â êîòîðîì ïî àäðåñó óêàçàòåëÿ çàïèñûâàåòñÿ ïðèíÿòûé ñî ñïåêòðóìà áàéò.

/WAIT àíàëîãè÷íî âûäà¸òñÿ ñïåêòðóìó, åñëè ïðåäûäóùåå çíà÷åíèå ðåãèñòðà çàïèñè åù¸ íå ñîõðàíåíî â ïàìÿòè NGS.

Ïðè ðàáîòå Z80 ñïåêòðóìà íà ÷àñòîòå 3.5ÌÃö, à NGS - íà ÷àñòîòå 20 ÌÃö /WAIT'û âûäàâàòüñÿ, êàê ïðàâèëî, íå áóäóò
ïðè ëþáîé ïîñëåäîâàòåëüíîñòè ÷òåíèÿ èëè çàïèñè (â òîì ÷èñëå ÷åðåç ñòåê).




ÎÒÌÀÇÊÀ (disclaimer ïî-àíãëèéñêè êîòîðûé):
Âñÿ ïðèâåä¸ííàÿ èíôîðìàöèÿ ÿâëÿåòñÿ ïðåäâàðèòåëüíîé è ìîæåò áûòü èçìåíåíà áåç ïðåäóïðåæäåíèÿ.
Êîíå÷íûå ñïåöèôèêàöèè áóäóò äîñòóïíû â êîìïëåêòå äîêóìåíòàöèè, ïîñòàâëÿåìîé ñ ãîòîâûìè óñòðîéñòâàìè NGS.




(c) 2008 NedoPC

Ïî âñåì âîïðîñàì, ñâÿçàííûì ñ àðõèòåêòóðîé NGS, ïèøèòå íà lvd.mhm@gmail.com èëè lvd@dgap.mipt.ru