Top secrets sources NedoPC ngs

Rev

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

====== history begin ======
02.11.06  v0.1  Initial release by LVD.

03-06.11.06  v0.1.1 boleg
- 12 ìãö êâàðö - ñ÷èòàòü òàêòû 20ìãö
+ DMAGS
? - ñèñòåìíûé ïîðò ñî ñòîðîíû ZX - #B3 ïðè àêòèâíîì DOS
? - äðóãàÿ ìîäåëü ìàïïèíãà  16ê ñòðàíèö
? - ðàçâîäêà ïîä 4Ìá (ñì. íèæå)

06-xx.12.06 v0.2 lvd
+ - êâàðöû: 24 ÌÃö è 20 ÌÃö
+ - äðóãîé ìàïïèíã ïàìÿòè (êàê boleg ïðåäëîæèë)
+ - ïðåðûâàíèÿ
+ - 2/4 Ìá ðàçâîäêà è àäðåñàöèÿ
? - DMA íå ïðàâèë
? - ïîÿñíèòå ïëèç ïðî $b3 èç òûðäîñà è ÷åì îí ëó÷øå $33 èç îòîâñþäó :)

26.01.07 v0.3 (lvd)
? - îôîðìëåí ðåæèì ÄÌÀ
+ - íåñêîëüêî íîâûõ èäåé (ïðåðûâàíèÿ, áóôåðèçîâàííûé çâóê)
? - óòî÷íåíû ýëåìåíòû ñõåìû
? - óòî÷í¸í èíòåðôåéñ ñî ñïåêòðóìîì (zx-bus, ïîðòû)
? - âìåñòî 'øèí' - ðàñïðåäåëåíèå ïèíîâ ÔÏÃÀøêè, íî ïîêà ïóñòî

08.02.07 v0.3.1 (lvd)
+ - ïîäïðàâëåí ÄÌÀ
+ - ïîäïðàâëåíî ïðî âûáîð ÷àñòîòû çåòíèêà, äîáàâëåíî ïðî ðàñïðåäåëåíèå êàíàëîâ

10.03.07 v0.3.2 (lvd)
? - íåïîíÿòêè ñ ïîðòîì $0b - òî ëè óñòàíîâêà èç ïîðòà $06 (txt schem), òî ëè èç ïîðòà $09 (orig schem)

01.03.08 v0.4 (lvd)
+ - ïîäïðàâëåíî ïîâåäåíèå ïîðòà $0b ïî ÏÖÁ ñòàðîãî ÃÑà
+ - îïèñàíî ïîâåäåíèå ïîðòà $33 ñî ñòîðîíû ñïåêà
+ - ïîäïðàâëåíî îïèñàíèå ïîðòà $0f
- - óáðàíà íåêîòîðàÿ ÷óøü - åñòü æå ñõåìà
- - óáðàíû ñëîâà ïðî 4 ìåãàáàéòà

23.05.08 v0.4.1 (lvd)
+ - óòî÷íåíà ðàáîòà ïîðòà $33
+ - óòî÷íåíà ðàáîòà ïðåðûâàíèé â øòàòíîé ïðîøèâêå
+ - äîáàâëåíà ÷àñòü "áëèæàéøèå ïëàíû", â íåé çàïèñü ïðî SPI-èíòåðôåéñû ñ ñîîòâåòñòâóþùèìè óñòðîéñòâàìè.

14.09.08 v0.4.1.1 (lvd)
+ - íåêîòîðûå áàãôèêñû â òåêñòå.

16.10.08 v0.4.2 (lvd)
+ - óáðàíû 'ôàíòàçèè' ïðî ÄÌÀ etc. (÷òîáû ïî ìåðå ðåàëèçàöèè ïîäõâàòèòü òåêñò èç áîëåå ñòàðûõ âåðñèé)

28.10.08 v0.4.2.1 (lvd)
+ - äîáàâëåíî îïèñàíèå áèòà _MDHLF (ïîëîâèííàÿ ñêîðîñòü ïåðåäà÷è äàííûõ â mp3-äåêîäåð)

======= history end =======



×àñòü 1. Âîçìîæíîñòè øòàòíîé ïðîøèâêè fpga

  --== Ïîðòû ñî ñòîðîíû ñïåêòðóìà ==--

ïîðò $B3, çàïèñü - ðåãèñòð äàííûõ GS (íà çàïèñü), óñòàíàâëèâàåò data bit (ñì. íèæå).

ïîðò $B3, ÷òåíèå - ðåãèñòð äàííûõ GS (íà ÷òåíèå), ñáðàñûâàåò data bit.

ïîðò $BB, çàïèñü - ðåãèñòð êîìàíä GS (íà çàïèñü, àíàëîãè÷íî ðåãèñòðó äàííûõ), óñòàíàâëèâàåò command bit.

ïîðò $BB, ÷òåíèå - áèòû ñîñòîÿíèÿ GS:
 D7 - data bit
 D6..D1 - íå îïðåäåëåíû
 D0 - command bit

ïîðò $33  - àïïàðàòíûé ñáðîñ GS,
à òàêæå âûäà÷à ÍÌÈ íà ïðîöåññîð ÃÑà (äëÿ ðàñøèðåíèÿ âîçìîæíîñòåé êîììóíèêàöèè) è óïðàâëåíèå ñâåòîäèîäîì

çàïèñü $80 - ïîäà÷à ñáðîñà íà Z80 è òðåáóþùèõ ñáðîñà öåïåé fpga.
çàïèñü $40 - NMI íà Z80.
çàïèñü $20 - ïåðåêëþ÷èòü ñâåòîäèîä

Ñèãíàëû íà ZX-BUS:

a0-a7, (äåøèôðàöèÿ ïîðòîâ)
d0-d7,
/IORQ
/WR
/RD
IORQGE

a15,a14
/MREQ
/CSROM (ñèãíàë âûáîðêè ïçó, êîòîðûé ïðîõîäèò ÷åðåç ðåçèñòîð è ïðåâðàùàåòñÿ â
        /RDROM, êîòîðûé èä¸ò íåïîñðåäñòâåííî â ÏÇÓ)
/RDROM
/WAIT (ýòè âñå ñèãíàëû äëÿ DMA)





  --== Ïîðòû ñî ñòîðîíû GSîâîãî çåòíèêà ==--

ïîðò $00, çàïèñü - ïîðò ñòðàíèö ïî àäðåñó $8000-$FFFF (32k êóñîê), d6..d0, 7 áèò (2 ìåãàáàéòà âñåãî), ïðè ðåñåòå - íåîïðåäåë¸í.

ïîðò $01, ÷òåíèå. ×èòàòü áàéò, çàïèñàííûé ñïåêòðóìîì â ðåãèñòð êîìàíä.

ïîðò $02, ÷òåíèå. ×èòàòü áàéò, çàïèñàííûé ñïåêòðóìîì â ðåãèñòð äàííûõ, ñáðàñûâàåò data bit.

ïîðò $03, çàïèñü. Çàïèñàòü áàéò â ðåãèñòð äàííûõ, êîòîðûé ìîæåò ïðî÷èòàòü ñïåêòðóì, óñòàíàâëèâàåò data bit.

ïîðò $04, ÷òåíèå. ×òåíèå áèòîâ ñîñòîÿíèÿ (òî æå ñàìîå, ÷òî è äëÿ ñïåêòðóìà â ïîðòó $BB)

ïîðò $05, çàïèñü èëè ÷òåíèå. Ñáðîñ command bit â 0.

ïîðòû $06-$09, çàïèñü. Óñòàíîâêà ãðîìêîñòè â êàíàëàõ 1-4. d5..d0, 6 áèò, unsigned, 0 - off, 63 - max

ïîðò $0a, çàïèñü èëè ÷òåíèå. Óñòàíîâêà data bit ðàâíûì èíâåðñíîìó íóëåâîìó áèòó ñîäåðæèìîãî ïîðòà $00.

ïîðò $0b, çàïèñü èëè ÷òåíèå. Óñòàíîâêà command bit ðàâíûì ïÿòîìó áèòó ñîäåðæèìîãî ïîðòà $09 (PCB)

ïîðò $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 îðèãèíàëüíîãî GS)
                     0 - íå çàùèùåíà îò çàïèñè.

 bit 2 - 8 channels bit: 1 - 8 êàíàëîâ (ñì. íèæå),
                         0 - 4 êàíàëà (êàê â îðèãèíàëüíîì ÃÑ).

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

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

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

ÏÐÈ ÀÏÏÀÐÀÒÍÎÌ ÑÁÐÎÑÅ ñîäåðæèìîå ïîðòà $0f ñáðàñûâàåòñÿ â 00110000 (ñîîòâåòñòâåííî êîíôèãóðèðóÿ æåëåçî, Z80 íà 10ÌÃö).


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

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

  ðåæèìå îáû÷íîé àäðåñàöèè ñòðàíèö (ñîîòâåòñòâóþùåé îðèãèíàëüíîìó GS) ïðè çàïèñè â ïîðò $00 çíà÷åíèå
 òðàíñëèðóåòñÿ â ðåãèñòðû, ñîîòâåòñòâóþùèå ñòðàíèöàì ïî àäðåñàì $8000-$bfff è $c000-$ffff òàêèì îáðàçîì,
 ÷òî ïðè ïåðåêëþ÷åíèè â ðåæèì ðàñøèðåííîé àäðåñàöèè êóñêè, çàìàïëåííûå â ýòè îáëàñòè, íå èçìåíÿþòñÿ.
 Ïðè ïåðåêëþ÷åíèè èç ðåæèìà ðàñøèðåííîé àäðåñàöèè â ðåæèì îáû÷íîé - â ýòèõ îáëàñòÿõ îïÿòü æå ìàïïèíã íå
 ìåíÿåòñÿ, îäíàêî ïðè ïåðâîé æå çàïèñè â ïîðò $00 âñ¸ âåðí¸òñÿ íà ñâîè ìåñòà.



Ìîäåëü ìàïïèíãà ñòðàíèö.
ðàñøèðåííûé ðåæèì:

ïîðò  #00 - axxx xxxx
ïîðò  #10 - byyy yyyy
òîãäà àáñîëþòíûå íîìåðà ìàëûõ ñòðàíèö:
#8000-#BFFF - xxxx xxxa
#C000-#FFFF - yyyy yyyb
hint - èìåÿ â A íîìåð ìàëîé ñòðàíèöû, äåëàåì RRCA è âûâîäèì åãî â ïîðò.

îáû÷íûé ðåæèì:
ïîðò  #00 - zxxx xxxx - (z - ëþáîé)
òîãäà àáñîëþòíûå íîìåðà ìàëûõ ñòðàíèö:
#8000-#BFFF - xxxx xxx0
#C000-#FFFF - xxxx xxx1

Ò.î. ïðè ïåðåõîäå èç îáû÷íîãî ðåæèìà â ðàñøèðåííûé ïî àäðåñàì #8000-#BFFF íîìåð ìàëîé
ñòðàíèöû íå ìåíÿåòñÿ (ïðè óñëîâèè, ÷òî áèò 6 â ïîðòó #00 = 0, ëèáî ïðèíóäèòåëüíî åãî ñáðàñûâàòü, ïðè ïåðåõîäå â îáû÷íûé
ðåæèì), à ïî àäðåñàì #C000-#FFFF èìååì ìàëóþ ñòðàíèöó, çàäàííóþ â ïîðòó #10.


ïîðòû $16-$19, çàïèñü. Óñòàíîâêà ãðîìêîñòè â êàíàëàõ 5-8. d5..d0, 6 áèò, unsigned, 0 - off, 63 - max

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


  --== ìîäåëü ïàìÿòè ==--

Âíà÷àëå ðàññìîòðèì ðåæèì NO ROM (ñì. âûøå):

 Ïîíÿòèÿ: áîëüøàÿ ñòðàíèöà - êóñîê íàðåçàííîé ïî 32ê RAM,
          ìàëàÿ ñòðàíèöà - êóñîê íàðåçàííîé ïî 16ê RAM.

 $0000-$3FFF - íóëåâàÿ ìàëàÿ ñòðàíèöà èëè ïåðâàÿ ïîëîâèíà íóëåâîé áîëüøîé ñòðàíèöû
 $4000-$7FFF - òðåòüÿ ìàëàÿ ñòðàíèöà èëè âòîðàÿ ïîëîâèíà ïåðâîé áîëüøîé ñòðàíèöû

 $8000-$FFFF - óêàçàííàÿ â ïîðòó $00 áîëüøàÿ ñòðàíèöà (äëÿ ðåæèìà îáû÷íîé àäðåñàöèè ñòðàíèö)
  èëè
 $8000-$BFFF - óêàçàííàÿ â ïîðòó $00 ìàëàÿ ñòðàíèöà è
 $C000-$FFFF - óêàçàííàÿ â ïîðòó $10 ìàëàÿ ñòðàíèöà (äëÿ ðåæèìà ðàñøèðåííîé àäðåñàöèè ñòðàíèö)


 â ðåæèìå RAM RO (ñì. âûøå) çàùèùàþòñÿ îò çàïèñè íóëåâàÿ è ïåðâàÿ ìàëûå ñòðàíèöû (íóëåâàÿ áîëüøàÿ ñòðàíèöà) RAM,
 ò.å. ïåðâûå 32ê.

 â ðåæèìå NO ROM bit = 0 - âî îáëàñòÿõ $0000-$3FFF è $8000-$FFFF âêëþ÷àåòñÿ FLASH ñ òåìè æå àäðåñàìè, ÷òî áûëè áû
 äëÿ RAM, â îáëàñòè $4000-$7FFF - îñòà¸òñÿ òà æå ñàìàÿ ìàëàÿ ñòðàíèöà RAM. Çàùèòà îò çàïèñè äåéñòâóåò òàê æå
 (çàùèùåíû îò çàïèñè ïåðâûå 32ê FLASH, ÷òî ìîæåò ïîìåøàòü ïðè å¸ ïðîøèâêå, ïîòîìó RAM RO íàäî îòêëþ÷àòü).


Êðîìå òîãî, ïðè ×ÒÅÍÈÈ ïðîöåññîðîì ñ àäðåñîâ $6000-$7FFF (ïðè ÷òåíèè öèêëîì ÷òåíèÿ, à ÍÅ öèêëîì M1!) ïðîèñõîäèò ñëåäóþùåå:

Äëÿ 4-êàíàëüíîãî ðåæèìà:
 Ïðè ÷òåíèè ñ àäðåñîâ $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 - ïðàâûå


  --== Ïðåðûâàíèÿ ==--

×àñòîòà ïðåðûâàíèé íà /INT - 37500 Ãö.

Ìàêñììàëüíàÿ äëèòåëüíîñòü /INT - 100 òàêòîâ 24 ÌÃö, íî îí êîí÷àåòñÿ, åñëè ïðîö âçÿë ïðåðûâàíèå: (/M1 or /IORQ)=0



 ×àñòü 2. MP3 è SD-card

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

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

Êðîìå òîãî, ó èíòåðôåéñà ñ MP3-÷èïîì åñòü âõîäíàÿ ëèíèÿ DREQ è âûõîäíàÿ
XRESET.

SD-card èíòåðôåéñ èìååò 2 âõîäíûõ ëèíèè DET è WP.

óïðàâëÿþùèé ìð3-÷èïîì spi-èíòåðôåéñ è spi-èíòåðôåéñ sd-êàðòî÷êè èìåþò
ñèãíàëû nCS (èíâåðñíûå).


êàæäûé ïîëíûé SPI èìååò ïîðòû:

_SEND - (òîëüêî çàïèñü) çàïóñêàåò íà ïåðåäà÷ó âûâåäåííûé â íåãî áàéò,
                        ïðèíÿòûé â çàïóùåííîì öèêëå îáìåíà áàéò áóäåò
                        äîñòóïåí â ñëåäóþùèõ ïîðòàõ:

_READ - (òîëüêî ÷òåíèå) ÷èòàåò ïðèíÿòûé â ïðåäûäóùåì öèêëå îáìåíà áàéò.

_RSTR - (òîëüêî ÷òåíèå) Read and STaRt: ÷èòàåò ðàíåå ïðèíÿòûé áàéò,
                        çàïóñêàåò íîâûé öèêë îáìåíà. Ïðè ýòîì ïåðåäàâàåìîå
                        çíà÷åíèå =$FF (ïîðò ìîæåò îòñóòñòâîâàòü äëÿ
                        íåêîòîðûõ èíòåðôåéñîâ, ãäå íå òðåáóåòñÿ ïðåäåëüíàÿ
                        ñêîðîñòü).


Âñå SPI-èíòåðôåéñû òàêòèðóþòñÿ îò ïðîöåññîðíîãî êëîêà, à öèêë îáìåíà çàíèìàåò 16 òàêòîâ.
Ýòî çíà÷èò, ÷òî ïîñëåäîâàòåëüíûå äåéñòâèÿ, çàïóñêàþùèå öèêë îáìåíà (çàïèñü â _SEND-ïîðò èëè ÷òåíèå _RSTR-ïîðòà)
íå ìîãóò èäòè ÷àùå, ÷åì ðàç â 16 òàêòîâ, èíà÷å âîçìîæíû íåïðåäñêàçóåìûå äëÿ äàííîãî SPI-êàíàëà ïîñëåäñòâèÿ.
16 òàêòîâ îòìåðÿþòñÿ ìåæäó ìîìåíòàìè íà÷àëà öèêëîâ ââîäà-âûâîäà ïðîöåññîðà Z80 (ñì. äàòàøèò).

Ðàññìîòðèì âûøåîïèñàííîå íà ïðèìåðå âûâîäà ïîñëåäîâàòåëüíîñòè áàéò:

 out (_SEND),A
 inc A
 out (_SEND),A - ÍÅÂÅÐÍÎ!!!! ìåæäó âûâîäàìè ïðîõîäèò 15 òàêòîâ!!!

 out (_SEND),A
 ld  A,123
 out (_SEND),A - âåðíî (18 òàêòîâ)

 ld  C,_SEND
 out (C),D
 nop
 out (C),E - âåðíî (16 òàêòîâ)

 outi
 outi - âåðíî (16 òàêòîâ)

 otir - âåðíî (21 òàêò)


Ñèãíàëû nCS äîëæíû âûáèðàòü íèçêèì óðîâíåì óñòðîéñòâî, ñ êîòîðûì ïðîèçâîäèòñÿ îáìåí äàííûõ, äî íà÷àëà îáìåíà
è îñòàâàòüñÿ â íèçêîì óðîâíå êàê ìèíèìóì äî êîíöà ïåðåäà÷è.
ÂÍÈÌÀÍÈÅ: ìåæäó öèêëîì ââîäà-âûâîäà ïðîöåññîðà Z80, íà÷èíàþùèì îáìåí ïî SPI, è öèêëîì ââîäà-âûâîäà, óñòàíàâëèâàþùèì
nCS ñîîòâåòñòâóþùåãî èíòåðôåéñà â 1 äîëæíî ïðîéòè ÍÅ ÌÅÍÅÅ 18 òàêòîâ! Ýòî áóäåò ñîîòâåòñòâîâàòü âûêëþ÷åíèþ
nCS ñðàçó æå ïîñëå êîíöà ïåðåäà÷è.

Äðóãèå îãðàíè÷åíèÿ è òðåáîâàíèÿ äëÿ nCS ìîãóò áûòü íàéäåíû â ñîîòâåòñòâóþùèõ datasheet'àõ íà ïîäêëþ÷¸ííûå óñòðîéñòâà.

Äëÿ èíòåðôåéñà ïåðåäà÷è mp3-äàííûõ ñóùåñòâóåò òîëüêî ïîðò _SEND

×àñòîòà ïåðåäà÷è (÷àñòîòà òàêòîâûõ ñèãíàëîâ íà âûõîäå SCK spi-èíòåðôåéñà) ðàâíà ïîëîâèíå
ïðîöåññîðíîé ÷àñòîòû. Ñëåäóåò ñëåäèòü, ÷òîáû ÷àñòîòà ïåðåäà÷è íå ïðåâûøàëà ìàêñèìàëüíî äîïóñòèìóþ
äëÿ äàííîãî óñòðîéñòâà (ñì. datasheet).

Äëÿ óïðàâëÿþùåãî èíòåðôåéñà ñ MP3-äåêîäåðîì è äëÿ èíòåðôåéñà ïåðåäà÷è åìó MP3-äàííûõ ïðåäóñìîòðåíî ñíèæåíèå ñêîðîñòè
ïåðåäà÷è â 2 ðàçà (áèòû _MPHLF=1, _MDHLF=1), â ýòîì ñëó÷àå ìåæäó çàïóñêàìè öèêëîâ îáìåíà, à òàêæå îò çàïóñêà îáìåíà äî
ñíÿòèÿ nCS (äëÿ óïðàâëÿþùåãî èíòåðôåéñà) äîæíî ïðîõîäèòü ÍÅ ÌÅÍÅÅ 34 òàêòîâ.



 Èíòåðôåéñ SD-êàðòî÷êè:

SD_SEND
SD_READ
SD_RSTR - ñì. âûøå ïðî SPI-èíòåðôåéñû

_SDNCS - áèò â ïîðòó S_CTRL (âûõîä íà êàðòî÷êó)
_SDWP  - áèò â ïîðòó S_STAT (âõîä ñ êàðòî÷êè)
_SDDET - áèò â ïîðòó S_STAT (âõîä ñ êàðòî÷êè)

_SDNCS - îïèñàííûé âûøå nCS.  Ïðè ñáðîñå NGS ýòîò áèò óñòàíàâëèâàåòñÿ â 1.

_SDWP - ñèãíàë çàùèòû çàïèñè. =1, åñëè âñòàâëåííàÿ êàðòî÷êà "çàùèùåíà" îò çàïèñè, è =0,
åñëè íå "çàùèùåíà": çàùèòà çàïèñè çàäà¸òñÿ íà êàðòî÷êå òàê æå, êàê è íà 3.5" äèñêåòå,
ïîñðåäñòâîì ïëàñòìàññîâîãî ôëàæêà. Åãî ñîñòîÿíèå ôèêñèðóåòñÿ ïðè ïîìîùè êîíòàêòîâ â ðàçú¸ìå
ïîä êàðòî÷êó

_SDDET - ñèãíàë íàëè÷èÿ êàðòî÷êè â ðàçú¸ìå. =1 - íåò êàðòî÷êè, =0 - åñòü. Ýòîò ñèãíàë
òàêæå ãåíåðèðóåòñÿ êîíòàêòàìè â ðàçú¸ìå.



 Èíòåðôåéñ mp3-÷èïà:

MD_SEND - SPI-êàíàë äëÿ mp3-äàííûõ (òîëüêî âûâîä áàéòîâ)

_MDHLF - óïðàâëÿåò ñêîðîñòüþ ïîðòà: =1 - ïîíèæåííàÿ â 2 ðàçà ñêîðîñòü sck (Fz80/4), =0 - íîðìàëüíàÿ (Fz80/2)
         Ïðè ñáðîñå ýòîò áèò óñòàíàâëèâàåòñÿ â 0. Ïðèìåíåíèå - ïðè ïåðåñûëêå äàííûõ â mp3-äåêîäåð íà
         ÷àñòîòàõ ïðîöåññîðà 20 è 24 ÌÃö.



MC_SEND
MC_READ - óïðàâëÿþùèé SPI-êàíàë mp3-äåêîäåðà

_MPHLF - óïðàâëÿåò ñêîðîñòüþ ïîðòà: =1 - ïîíèæåííàÿ â 2 ðàçà ñêîðîñòü sck (Fz80/4), =0 - íîðìàëüíàÿ (Fz80/2)
         Ïðè ñáðîñå NGS ýòîò áèò óñòàíàâëèâàåòñÿ â 1. Ïðèìåíåíèå - äëÿ íà÷àëüíîé èíèöèàëèçàöèè mp3-÷èïà
         (ïðîöåññîð íà ÷àñòîòå 10 èëè 12 ÌÃö), à òàêæå äëÿ óïðàâëåíèÿ èíèöèàëèçèðîâàííûì mp3-÷èïîì ïðè
         ÷àñòîòå ïðîöåññîðà 20 èëè 24 ÌÃö.

_MPNCS - áèò â ïîðòó S_CTRL (âûõîä íà äåêîäåð): ñèãíàë nCS äëÿ èíòåðôåéñà ñ mp3-äåêîäåðîì.
         Ïðè ñáðîñå NGS ýòîò áèò óñòàíàâëèâàåòñÿ â 1.

_MPXRS - áèò â ïîðòó S_CTRL (âûõîä íà êàðòî÷êó): ñèãíàë îáùåãî àïïàðàòíîãî ñáðîñà äëÿ mp3-äåêîäåðà (XReSet),
         àêòèâíûé óðîâåíü - íèçêèé. Ïðè ñáðîñå NGS ýòîò áèò óñòàíàâëèâàåòñÿ â 0.

_MPDRQ - áèò â ïîðòó S_STAT (âõîä ñ êàðòî÷êè): âõîä ñèãíàëà DREQ c mp3-äåêîäåðà, =1: ìîæíî ïîñëàòü åù¸ äî 32 áàéò mp3-ïîòîêà
         =0: ïîñûëàòü íè÷åãî íåëüçÿ (â ïðîöåññå ïîñûëêè òåõ 32 áàéò ýòîò ñèãíàë íóæíî èãíîðèðîâàòü).




 Ïîðòû SCTRL è SSTAT:

SSTAT: ïîðò òîëüêî íà ÷òåíèå.

 bit7 - (undef)
 bit6 - (undef)
 bit5 - (undef)
 bit4 - (undef)
 bit3 - (undef)
 bit2 - _SDWP  (óðîâåíü íà âõîäå)
 bit1 - _SDDET (óðîâåíü íà âõîäå)
 bit0 - _MPDRQ (óðîâåíü íà âõîäå)


SCTRL: ïîðò íà ÷òåíèå è íà çàïèñü.

Ïðè ÷òåíèè:

 bit7 - (undef)
 bit6 - (undef)
 bit5 - (undef)
 bit4 - _MDHLF (òåêóùåå ñîñòîÿíèå áèòà ñêîðîñòè)
 bit3 - _MPHLF (òåêóùåå ñîñòîÿíèå áèòà ñêîðîñòè)
 bit2 - _MPXRS (òåêóùåå ñîñòîÿíèå âûõîäà)
 bit1 - _MPNCS (òåêóùåå ñîñòîÿíèå âûõîäà)
 bit0 - _SDNCS (òåêóùåå ñîñòîÿíèå âûõîäà)

Ïðè çàïèñè:

 bit7 - _SETNCLR (=1 - óñòàíîâèòü â 1 âûáðàííûå âûõîäû, =0 - óñòàíîâèòü â 0 âûáðàííûå âûõîäû)
 bit6 - äîëæåí áûòü=0
 bit5 - äîëæåí áûòü=0
 bit4 - _MDHLF (=1 - áèò âûáðàí äëÿ óñòàíîâêè â 0 èëè â 1)
 bit3 - _MPHLF (=1 - áèò âûáðàí äëÿ óñòàíîâêè â 0 èëè â 1)
 bit2 - _MPXRS (=1 - áèò âûáðàí äëÿ óñòàíîâêè â 0 èëè â 1)
 bit1 - _MPNCS (=1 - áèò âûáðàí äëÿ óñòàíîâêè â 0 èëè â 1)
 bit0 - _SDNCS (=1 - áèò âûáðàí äëÿ óñòàíîâêè â 0 èëè â 1)

Äëÿ óñòàíîâêè êàêîãî-ëèáî âûõîäà â 0 èëè 1 íåîáõîäèìî â âûâîäèìîì áàéòå óñòàíîâèòü
ñîîòâåòñòâóþùèé áèò â 1, à 7 áèò ýòîãî æå áàéòà óñòàíîâèòü 0 èëè 1, ÷òî ñîîòâåòñòâåííî
ïðèâåä¸ò ê óñòàíîâêå âûõîäà â 0 èëè â 1. Äàííûé ìåòîä ïîçâîëÿåò óïðîñòèòü óïðàâëåíèå îäèíî÷íûìè
áèòàìè, à òàêæå îñóùåñòâëÿòü óïðàâëåíèå ðàçíûìè áèòàìè èç ðàçíûõ ïîòîêîâ (íàïðèìåð, â îñíîâíîì
öèêëå è â ïðåðûâàíèè).

Ïðèìåðû:

 ld A,%10000001
 out (SCTRL),A - óñòàíîâèòü _SDNCS â 1

 ld A,%00000010
 out (SCTRL),A - óñòàíîâèòü _MPNCS â 0

 ld A,%10000111
 out (SCTRL),A - óñòàíîâèòü ñðàçó òðè áèòà â 1

 ld A,%00000101
 out (SCTRL),A - óñòàíîâèòü _MPXRS è _SDNCS â 0