Subversion Repositories ngs

Rev

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

  ╧юЁЄ√ єяЁртыхэш  яюёыхфютрЄхы№э√ьш шэЄхЁЇхщёрьш.

 ┬ NeoGS ёє∙хёЄтєхЄ ЄЁш яюёыхфютрЄхы№э√ї SPI-шэЄхЁЇхщёр фы  ЁрсюЄ√ ё SD-ърЁЄющ,
фы  єяЁртыхэш  MP3-фхъюфхЁюь ш фы  т√фрўш фрээ√ї т фхъюфхЁ. ╩рцф√щ шэЄхЁЇхщё
юсырфрхЄ ётюшьш ётющёЄтрьш, ъЁюьх Єюую, фы  єяЁртыхэш  MP3-фхъюфхЁюь
шёяюы№чє■Єё  фюяюыэшЄхы№э√х (яю юЄэю°хэш■ ъ SPI-шэЄхЁЇхщёрь) ёшуэры√.
─юяюыэшЄхы№э√х ёшуэры√, Ёртэю ъръ ш эхъюЄюЁ√х ётющёЄтр шэЄхЁЇхщёют
ъюэЄЁюышЁє■Єё  ўхЁхч фтр яюЁЄр: SSTAT ш SCTRL.

 ╧юЁЄ SSTAT (Єюы№ъю ўЄхэшх) ёыєцшЄ фы  ўЄхэш  ёюёЄю эш  эхъюЄюЁ√ї ёшуэрыют,
шьх■∙шї юЄэю°хэшх ъ єёЄЁющёЄтрь ш SPI-шэЄхЁЇхщёрь ш ёюфхЁцшЄ т ёхсх сшЄ√
B_MDDRQ, B_SDDET, B_SDWP ш B_MCRDY. ╫Єхэшх яюЁЄр тючтЁр∙рхЄ Єхъє∙хх
ёюёЄю эшх сшЄют.

 ╧юЁЄ SCTRL (ўЄхэшх шыш чряшё№) ёыєцшЄ фы  єяЁртыхэш  эхъюЄюЁ√ьш ёшуэрырьш,
шьх■∙шьш юЄэю°хэшх ъ єёЄЁющёЄтрь ш SPI-шэЄхЁЇхщёрь ш ёюфхЁцшЄ т ёхсх сшЄ√
B_SDNCS, B_MCNCS, B_MPXRS, B_MCSPD0, B_MCSPD1 ш B_MDHLF. ╫Єхэшх ¤Єюую яюЁЄр
тючтЁр∙рхЄ Єхъє∙хх ёюёЄю эшх сшЄют. ─ы  шчьхэхэш  цх ёюёЄю эш  сшЄют
шёяюы№чєхЄё  ёыхфє■∙р  яЁюЎхфєЁр.

 ─ы  єёЄрэютъш ъръюую-ышсю юЄфхы№эюую сшЄр т 1 т яюЁЄ SCTRL чряшё√трхЄё 
ўшёыю (1<<B_SETNCLR) + (1<<B_bit), уфх B_bit - юфшэ шч т√°хяхЁхўшёыхээ√ї сшЄют
яюЁЄр SCTRL, р B_SETNCLR - ёыєцхсэ√щ сшЄ ¤Єюую яюЁЄр.

 ─ы  єёЄртъш юЄфхы№эюую сшЄр т 0 т яюЁЄ чряшё√трхЄё  ўшёыю
(0<<B_SETNCLR) + (1<<B_bit).

 ╬фэютЁхьхээю яхЁхтхёЄш т 1 ышсю т 0 ьюцэю эхёъюы№ъю сшЄ, фы  ўхую ёыхфєхЄ эрсЁрЄ№
шї ьрёъє т чряшё√трхьюь ўшёых (ёь. яЁшьхЁ√).

 ╥ръшь юсЁрчюь, ёюёЄю эшх сшЄр B_SETNCLR т чряшё√трхьюь ўшёых юяЁхфхы хЄ, т ъръюх
ёюёЄю эшх (0 шыш 1) єёЄрэртыштрхЄё  ЄюЄ шыш шэющ сшЄ, т Єю тЁхь  ъръ юёЄры№э√х
сшЄ√ чряшё√трхьюую ўшёыр т√сшЁр■Є сшЄ√ яюЁЄр, ъюЄюЁ√х ш ЄЁхсєхЄё  єёЄрэютшЄ№
т 0 ышсю т 1.

╧ЁшьхЁ√:

   ld   A,(0<<B_SETNCLR) + (1<<B_MPXRS) ;єёЄрэютшЄ№ B_MPXRS т эюы№
   out  (SCTRL),A

   ld   A,(1<<B_SETNCLR) + (1<<B_MDHLF) ;єёЄрэютшЄ№ B_MDHLF т хфшэшЎє
   out  (SCTRL),A

   ld   A,(1<<B_SETNCLR) + (1<<B_SDNCS) + (1<<B_MCNCS) ;єёЄрэютшЄ№ B_SDNCS ш B_MCNCS т хфшэшЎє
   out  (SCTRL),A

   ld   A,(0<<B_SETNCLR) + (1<<B_MCSPD1) + (1<<B_MCSPD0) ;ёэрўрыр юўшёЄшЄ№ сшЄ√ B_MCSPD1 ш B_MCSPD1
   out  (SCTRL),A
   ld   A,(1<<B_SETNCLR) + (1<<B_MCSPD1) + (0<<B_MCSPD0) ;чрЄхь єёЄрэютшЄ№ шї т ёюёЄю эшх {B_MCSPD1,B_MCSPD0}={1,0}
   out  (SCTRL),A

 ─рээр  ёїхьр єяЁртыхэш  сшЄрьш яючтюы хЄ єяЁрты Є№ Ёрчышўэ√ьш сшЄрьш шч Ёрчышўэ√ї чрфрў:
эряЁшьхЁ юёэютэющ ъюф ьюцхЄ єяЁрты Є№ сшЄюь B_MCNCS, т Єю тЁхь  ъръ ъюф т яЁхЁ√трэшш ьюцхЄ
єяЁрты Є№ сшЄюь B_SDNCS. ╥ръ ъръ ърцфюх юЄфхы№эюх шчьхэхэшх сшЄют т яюЁЄє  ты хЄё  рЄюьрЁэ√ь
ш эх тыш хЄ эр фЁєушх сшЄ√ яюЁЄр, эх ЄЁхсєхЄё  чряЁх∙рЄ№ яЁхЁ√трэш  эр ьюьхэЄ√ шчьхэхэш  сшЄют,
ўЄю яюЄЁхсютрыюё№ с√ яЁш ЄЁрфшЎшюээюь яюфїюфх (di:in A,(port):and MASK:or BITS:out (port),A:ei).

 ╩юэъЁхЄэюх эрчэрўхэшх сшЄют т яюЁЄрї SCTRL ш SSTAT юяшёрэю эшцх т уыртрї *SPI-шэЄхЁЇхщё√*,
*╨рсюЄр ё SD-ърЁЄющ* ш *╨рсюЄр ё MP3-фхъюфхЁюь*.


  SPI-шэЄхЁЇхщё√.

SPI-шэЄхЁЇхщё√ шёяюы№чє■Єё  фы  єяЁртыхэш  ш юсьхэр фрээ√ьш ё SD-ърЁЄющ ш MP3-фхъюфхЁюь.
SPI-ьрёЄхЁ (ёїхьр, юёє∙хёЄты ■∙р  ЄръЄшЁютрэшх эр SPI-°шэх) эрїюфшЄё  т FPGA ш єяЁрты хЄё 
яЁюЎхёёюЁюь Z80, SPI-ёыхщт (ёїхьр, ЄръЄшЁєхьр  ьрёЄхЁюь) эрїюфшЄё  т Єюь шыш шэюь єёЄЁющёЄтх.

 ─рыхх яЁштюфшЄё  юсюс∙╕ээюх юяшёрэшх SPI-шэЄхЁЇхщёр ё Єюўъш чЁхэш  яЁюуЁрььшёЄр. ┬ NeoGS шёяюы№чєхЄё 
ЄЁш ёяхЎшрышчшЁютрээ√ї SPI-шэЄхЁЇхщёр, юфшэ шч ъюЄюЁ√ї юсьхэштрхЄё  фрээ√ьш ё SD-ърЁЄющ, фЁєующ -
ё єяЁрты ■∙шь ърэрыюь MP3-фхъюфхЁр, р яюёыхфэшщ - яюё√ырхЄ MP3-фрээ√х т фхъюфхЁ. ╩рцф√щ
шч эшї ьюцхЄ эх яюффхЁцштрЄ№ яюыэ√щ эрсюЁ ётющёЄт, яЁштхф╕ээ√ї т юсюс∙╕ээюь юяшёрэшш.

 ╬сьхэ фрээ√ьш ўхЁхч SPI-шэЄхЁЇхщё яЁюшчтюфшЄё  яюсрщЄэю. ┬ яЁюЎхёёх ърцфюую юсьхэр
ряярЁрЄэю яЁюшчтюфшЄё  яхЁхфрўр срщЄр юЄ FPGA ъ єёЄЁющёЄтє ш юфэютЁхьхээю яЁш╕ь срщЄр
юЄ єёЄЁющёЄтр яю фтєэряЁртыхээющ яюёыхфютрЄхы№эющ SPI-°шэх. ▌Єр °шэр ёюёЄюшЄ шч ёшуэрыют
MOSI (т√їюф SPI-ьрёЄхЁр ш тїюф SPI-ёыхщтр, яюёыхфютрЄхы№эр  яхЁхфрўр фрээ√ї юЄ ьрёЄхЁр ёыхщтє),
MISO (тїюф SPI-ьрёЄхЁр ш т√їюф SPI-ёыхщтр, яюёыхфютрЄхы№эр  яхЁхфрўр фрээ√ї юЄ ёыхщтр ьрёЄхЁє) ш
SCK (т√їюф SPI-ьрёЄхЁр ш тїюф SPI-ёыхщтр, ёшуэры ёшэїЁюэшчрЎшш яхЁхфрўш). ╙яЁртыхэшх
т√°хюяшёрээ√ьш ёшуэрырьш юёє∙хёЄты хЄё  яюыэюёЄ№■ ряярЁрЄэю, схч єўрёЄш  яЁюЎхёёюЁр Z80.

 ┬ чртшёшьюёЄш юЄ шёяюы№чєхьюую яЁюЄюъюыр ЁрсюЄ√ ё єёЄЁющёЄтюь,
чэрўхэшх ьюуєЄ шьхЄ№ юср срщЄр, яхЁхфрээ√ї т Ёрчэ√ї эряЁртыхэш ї, юфшэ шч эшї шыш
эш юфэюую (чэрўхэшх шьххЄ Єюы№ъю ёрь ЇръЄ юсьхэр).

 SPI-шэЄхЁЇхщё ёюфхЁцшЄ Єръцх ёшуэры т√сюЁъш NCS. ╧ЁюЎхёё юсьхэр, ъръ яЁртшыю, т√уы фшЄ
ёыхфє■∙шь юсЁрчюь: яЁюЎхёёюЁ Z80 яхЁхтюфшЄ ёшуэры NCS шч эхръЄштэюую (=1) т ръЄштэюх (=0)
ёюёЄю эшх, фрыхх ёыхфєхЄ ёхЁш  юсьхэют срщЄрьш, яюёых юъюэўрэш  ъюЄюЁющ яЁюЎхёёюЁ
тючтЁр∙рхЄ ёшуэры NCS т эхръЄштэюх ёюёЄю эшх (=1). ┬ эхъюЄюЁ√ї ёыєўр ї ЄЁхсєхЄё 
эрўшэрЄ№ юсьхэ яЁш эхръЄштэюь ёюёЄю эшш NCS, яЁш ¤Єюь, ъръ яЁртшыю, шьххЄ чэрўхэшх
ёрь ЇръЄ юсьхэр (эрышўшх ЄръЄшЁютрэш  ёшуэрыюь SCK эр SPI-°шэх), т Єю тЁхь  ъръ яхЁхфртрхь√х фрээ√х
шуэюЁшЁє■Єё  юсюшьш єўрёЄэшърьш юсьхэр (ьрёЄхЁюь ш ёыхщтюь).

 ╧ЁюЎхёё юсьхэр срщЄрьш яю SPI-°шэх шэшЎшшЁєхЄё  яЁюЎхёёюЁюь Z80 яєЄ╕ь чряшёш срщЄр т яюЁЄ
_SEND. ╟ряшёрээ√щ срщЄ яхЁхфр╕Єё  єёЄЁющёЄтє, т Єю тЁхь  ъръ яЁшэ Є√щ т юсьхэх срщЄ ёюїЁрэ хЄё 
т тЁхьхээюь ЁхушёЄЁх SPI-шэЄхЁЇхщёр. ╧юёых юъюэўрэш  юсьхэр яЁшэ Є√щ срщЄ шч тЁхьхээюую ЁхушёЄЁр
ьюцэю ёўшЄрЄ№ шч яюЁЄр _READ. ╚ч яюЁЄр _RSTR ёўшЄ√трхЄё  ЄюЄ цх срщЄ шч тЁхьхээюую ЁхушёЄЁр,
юфэръю ЇръЄ ўЄхэш  ¤Єюую яюЁЄр Єръцх чряєёърхЄ юсьхэ яю SPI-°шэх ё яхЁхфртрхь√ь срщЄюь 0xFF.
╥ръшь юсЁрчюь, ъюьрэф√
   in   A,(_RSTR)
   ld   B,A
¤ътштрыхэЄэ√ ё Єюўъш чЁхэш  яхЁхфртрхь√ї яю SPI-°шэх фрээ√ї ъюьрэфрь
   in   A,(_READ)
   ld   B,A
   ld   A,0xFF
   out  (_SEND),A

 ╧ЁюЎхёё срщЄютюую юсьхэр, шэшЎшшЁютрээ√щ чряшё№■ т яюЁЄ _SEND шыш ўЄхэшхь шч яюЁЄр _RSTR, чрэшьрхЄ
ъюэхўэюх тЁхь . SPI-шэЄхЁЇхщё√ ЄръЄшЁє■Єё  ўрёЄюЄющ яЁюЎхёёюЁр Z80 Fcpu. ╬фэръю ёшуэры SCK,  ты  ё№ т√їюфюь
ёшэїЁюээющ ёїхь√ SPI-шэЄхЁЇхщёр, ьюцхЄ шьхЄ№ ўрёЄюЄ√ Fcpu/2, Fcpu/4, Fcpu/8 шыш Fcpu/16. ┬ NeoGS
эх яЁхфєёьюЄЁхэ ёшуэры /WAIT фы  яЁюЎхёёюЁр Z80, ёыхфютрЄхы№эю ьхцфє яюёыхфютрЄхы№э√ьш шэшЎшшЁютрэш ьш
юсьхэр (чряшё№ т _SEND шыш ўЄхэшх _RSTR) фюыцэр яЁюуЁрььэю ЇюЁьшЁютрЄ№ё  ярєчр т юяЁхфхы╕ээюх ўшёыю
ЄръЄют яЁюЎхёёюЁр Z80. ╩Ёюьх Єюую, ярєчр фюыцэр ёюсы■фрЄ№ё  ьхцфє шэшЎшшЁютрэшхь юсьхэр ш ўЄхэшхь яЁшэ Єюую
срщЄр (ўЄхэшх _READ шыш _RSTR), р Єръцх ьхцфє шэшЎшшЁютрэшхь юсьхэр ш єёЄрэютъющ NCS т эхръЄштэюх ёюёЄю эшх.
┬ SPI-шэЄхЁЇхщёх яЁхфєёьюЄЁхэ Єръцх сшЄ уюЄютэюёЄш RDY, ъюЄюЁ√щ єёЄрэртыштрхЄё  т 0 ёЁрчє цх яюёых
шэшЎшшЁютрэш  юсьхэр ш тючтЁр∙рхЄё  т 1, ъръ Єюы№ъю юсьхэ чръюэўшыё . ─рээ√щ сшЄ шёяюы№чєхЄё , ъръ яЁртшыю,
т ёыєўрх эшчъшї ўрёЄюЄ ёшуэрыр SCK (эряЁшьхЁ, Fcpu/8 ш эшцх) фы  єяЁю∙хэш  яЁюЎхфєЁ юсьхэр.

-------------+------------------------------------+-----------------------------------
 ╫рёЄюЄр SCK,| ╧рєчр ьхцфє шэшЎшшЁютрэш ьш юсьхэр | ╧рєчр ьхцфє шэшЎшшЁютрэшхь юсьхэр
    Fsck     | шыш ьхцфє шэшЎшшЁютрэшхь юсьхэр ш  | ш ёэ Єшхь ръЄштэюую єЁютэ  NCS,
             | ўЄхэшхь яЁшэ Єюую срщЄр, ЄръЄ√ Z80 | ЄръЄ√ Z80
-------------+------------------------------------+-----------------------------------
     Fcpu/2  | 16 (шёяюы№чютрЄ№ RDY эх¤ЇЇхъЄштэю) | 18 (шёяюы№чютрЄ№ RDY эх¤ЇЇхъЄштэю)
     Fcpu/4  | 34 шыш шёяюы№чєщЄх сшЄ RDY         | 34 шыш шёяюы№чєщЄх сшЄ RDY
     Fcpu/8  | шёяюы№чєщЄх сшЄ RDY                | шёяюы№чєщЄх сшЄ RDY
     Fcpu/16 | шёяюы№чєщЄх сшЄ RDY                | шёяюы№чєщЄх сшЄ RDY
-------------+------------------------------------+-----------------------------------

╧юф ёыютрьш "ярєчр ьхцфє шэшЎшшЁютрэшхь юсьхэр ш ўхь-ышсю" яюфЁрчєьхтрхЄё  ъюышўхёЄтю
ЄръЄют Z80 ьхцфє эрўрыюь Ўшъыют ттюфр-т√тюфр, юёє∙хёЄты ■∙шї юяшёрээ√х фхщёЄтш . ╧ЁшьхЁ√:

   ld   C,_SEND
   out  (C),D
   nop
   out  (C),E ; т√фхЁцрэр ярєчр 16 ЄръЄют, шёяюы№чєщЄх фы  ЁрсюЄ√ эр Fsck=Fcpu/2

   ld   C,_READ
   out  (_SEND),A
   nop
   in   A,(C) ; т√фхЁцрэр ярєчр 16 ЄръЄют, шёяюы№чєщЄх фы  ЁрсюЄ√ эр Fsck=Fcpu/2

   ld   C,_SEND
   ld   HL,buffer
   outi
   outi ; т√фхЁцрэр ярєчр 16 ЄръЄют, шёяюы№чєщЄх фы  ЁрсюЄ√ эр Fsck=Fcpu/2

   ld   C,_RSTR
   ld   HL,buffer
   ini
   ini ; т√фхЁцрэр ярєчр 16 ЄръЄют, шёяюы№чєщЄх фы  ЁрсюЄ√ эр Fsck=Fcpu/2

   ld   C,_SEND
   out  (C),A
   nop
   in   A,(_READ) ; ═┼┬┼╨═╬!!!! ярєчр ьхцфє Ўшъырьш ттюфр-т√тюфр ёюёЄрты хЄ 15 ЄръЄют!!!!!!

 ╨рчышўэ√х SPI-шэЄхЁЇхщё√  ты ■Єё  яюыэюёЄ№■ эхчртшёшь√ьш, ёюсы■фхэшх ярєч юЄэюёшЄё  ъ яюёыхфютрЄхы№э√ь
юсЁр∙хэш ь ъ юфэюьє ш Єюьє цх шэЄхЁЇхщёє, эряЁшьхЁ:

   ld   C,SD_RSTR   ;ўЄхэшх фрээ√ї ё SD-ърЁЄ√ ш эхьхфыхээр  яхЁхё√ыър шї т MP3-фхъюфхЁ
   in   A,(C)       ;яЁхфяюырурхЄё , ўЄю юср шэЄхЁЇхщёр ЁрсюЄр■Є эр Fsck=Fcpu/2
   out  (MD_SEND),A ;шэЄхЁЇхщё√ эхчртшёшь√, эхьхфыхээр  яхЁхё√ыър срщЄр
   in   A,(C)       ;ьхцфє шэшЎшшЁютрэш ьш юсьхэр эр SPI-шэЄхЁЇхщёх SD-ърЁЄ√ ярєчр ёюёЄрты хЄ 23 ЄръЄр
   out  (MD_SEND),A ;ьхцфє шэшЎшшЁютрэш ьш юсьхэр эр SPI-шэЄхЁЇхщёх MP3-фхъюфхЁр ярєчр ёюёЄрты хЄ 23 ЄръЄр


  SPI-шэЄхЁЇхщё SD-ърЁЄ√.

 ╩ръ єяюьшэрыюё№ т√°х, ъюэъЁхЄэр  ЁхрышчрЎш  SPI-шэЄхЁЇхщёр эх юсырфрхЄ тёхьш ётющёЄтрьш юсюс∙╕ээюую юяшёрэш .
SPI-шэЄхЁЇхщё, шёяюы№чєхь√щ фы  юсьхэр ё SD-ърЁЄющ, юсырфрхЄ ыш°№ ёыхфє■∙шьш ётющёЄтрьш.

 ╧юЁЄ яюё√ыъш срщЄр ш шэшЎшшЁютрэш  юсьхэр: SD_SEND
 ╧юЁЄ ўЄхэш  яЁшэ Єюую срщЄр: SD_READ
 ╧юЁЄ ўЄхэш  яЁшэ Єюую срщЄр ш шэшЎшшЁютрэш  ёыхфє■∙хую юсьхэр ё яюё√ырхь√ь срщЄюь 0xFF: SD_RSTR
 ┴шЄ єяЁртыхэш  ёшуэрыюь NCS фы  SD-ърЁЄ√, эрїюф ∙шщё  т яюЁЄє SCTRL: B_SDNCS

 ╫рёЄюЄр SCK ЇшъёшЁютрэр ш ёюёЄрты хЄ Fsck=Fcpu/2, сшЄ RDY юЄёєЄёЄтєхЄ, ёыхфютрЄхы№эю
 ЄЁхсєхЄё  яЁюуЁрььэюх ёюсы■фхэшх ярєч 16 шыш 18 ЄръЄют.


  ╙яЁрты ■∙шщ SPI-шэЄхЁЇхщё MP3-фхъюфхЁр.

 ▌ЄюЄ шэЄхЁЇхщё юсырфрхЄ ёыхфє■∙шьш ётющёЄтрьш.

 ╧юЁЄ яюё√ыъш срщЄр ш шэшЎшшЁютрэш  юсьхэр: MC_SEND
 ╧юЁЄ ўЄхэш  яЁшэ Єюую срщЄр: MC_READ
 ╧юЁЄ ўЄхэш  ш шэшЎшшЁютрэш  юсьхэр юЄёєЄёЄтєхЄ.

 ┴шЄ єяЁртыхэш  ёшуэрыюь NCS фы  MP3-фхъюфхЁр, эрїюф ∙шщё  т яюЁЄє SCTRL: B_MCNCS
 ┴шЄ уюЄютэюёЄш SPI-шэЄхЁЇхщёр т яюЁЄє SSTAT: B_MCRDY

┬═╚╠└═╚┼! ╤ыхфєхЄ ў╕Єъю ЁрчышўрЄ№ сшЄ√ B_MCRDY ш B_MDDRQ т яюЁЄє SSTAT.

┴шЄ B_MCRDY юЄэюёшЄё  ъ єяЁрты ■∙хьє SPI-шэЄхЁЇхщёє MP3-фхъюфхЁр, юЄЁрцрхЄ ёюёЄю эшх
уюЄютэюёЄш шэЄхЁЇхщёр ш ухэхЁшЁєхЄё  ёїхьющ ¤Єюую SPI-шэЄхЁЇхщёр т FPGA.

┴шЄ B_MDDRQ юЄэюёшЄё  ъ SPI-шэЄхЁЇхщёє MP3-фрээ√ї фхъюфхЁр, ш юЄЁрцрхЄ уюЄютэюёЄ№
фхъюфхЁр яЁшэ Є№ юўхЁхфэющ сыюъ фрээ√ї яю ¤Єюьє шэЄхЁЇхщёє. ╤шуэры ухэхЁшЁєхЄё  фхъюфхЁюь
ш яЁюёЄю ЄЁрэёышЁєхЄё  FPGA ё т√їюфр фхъюфхЁр т сшЄ яюЁЄр SSTAT.

 ┴шЄ√ єёЄрэютъш ўрёЄюЄ√ Fsck єяЁрты ■∙хую шэЄхЁЇхщёр MP3-фхъюфхЁр B_MCSPD0 ш B_MCSPD1 т яюЁЄє SCTRL.

---------------------+---------
 {B_MCSPD1,B_MCSPD0} | Fsck
---------------------+---------
               {0,0} | Fcpu/2
               {0,1} | Fcpu/4
               {1,0} | Fcpu/8
               {1,1} | Fcpu/16
---------------------+---------


  SPI-шэЄхЁЇхщё MP3-фрээ√ї фхъюфхЁр.

 ╧юЁЄ яюё√ыъш срщЄр ш шэшЎшшЁютрэш  юсьхэр MD_SEND
 ╧юЁЄ ўЄхэш  яЁшэ Єюую срщЄр - юЄёєЄёЄтєхЄ.
 ╧юЁЄ ўЄхэш  ш шэшЎшшЁютрэш  - юЄёєЄёЄтєхЄ.

 ёшуэры NCS ш єяЁртыхэшх шь - юЄёєёЄтєхЄ.
 ┴шЄ уюЄютэюёЄш шэЄхЁЇхщёр - юЄёєЄёЄтєхЄ (ёыхфєхЄ ёюсы■фрЄ№ ярєч√ яЁюуЁрььэю).

 ┴шЄ єёЄрэютъш ўрёЄюЄ√ Fsck шэЄхЁЇхщёр фрээ√ї B_MDHLF т яюЁЄє SCTRL:

---------+--------
 B_MDHLF | Fsck
---------+--------
       0 | Fcpu/2
       1 | Fcpu/4
---------+--------

╫рёЄюЄ√ Fcpu/8 ш Fcpu/16 эх яюффхЁцштр■Єё .


  ╨рсюЄр ё SD-ърЁЄющ.

 ─ы  ЁрсюЄ√ ё SD-ърЁЄющ шёяюы№чєхЄё  ряярЁрЄэ√щ SPI-шэЄхЁЇхщё, юяшёрэшх ъюЄюЁюую эрїюфшЄё  т уыртх *SPI-шэЄхЁЇхщё√*

 ╩Ёюьх фрээюую шэЄхЁЇхщёр яЁхфєёьюЄЁхэ√ Єръцх сшЄ√ B_SDDET ш B_SDWP т яюЁЄє SSTAT.
 B_SDDET Ёртхэ эєы■ (???) яЁш эрышўшш ърЁЄ√ т ёыюЄх, шэрўх хфшэшЎр
 B_SDWP Ёртхэ эєы■ (???) яЁш єёЄрэютыхээющ эр ърЁЄх чр∙шЄх чряшёш (яЁш яюью∙ш Їырцър эр ъюЁяєёх ърЁЄ√), шэрўх хфшэшЎр.

┬═╚╠└═╚┼! юср ёшуэрыр ухэхЁ Єё  ьхїрэшўхёъшьш ъюэЄръЄрьш т ёыюЄх SD-ърЁЄ√, ёыхфютрЄхы№эю шьх■Є фЁхсхчу.
╩юэЄръЄ√ Єръцх ьюуєЄ эрЁє°рЄ№ё  (эряЁшьхЁ, хёыш ьхёЄю ъюэЄръЄр чруЁ чэхэю), ш ъръ ёыхфёЄтшх, ьюуєЄ
т√фртрЄ№ ыюцэ√х яюърчрэш  (хфшэшЎр, ъюуфр фюыцхэ с√Є№ эєы№).
╘ырцюъ чр∙шЄ√ юЄ чряшёш эшъръ эх ёт чрэ ¤ыхъЄЁшўхёъш ё ¤ыхъЄЁюэшъющ SD-ърЁЄ√, ёыхфютрЄхы№эю чряшё√трЄ№ эр
ърЁЄє ьюцэю ш яЁш ёюёЄю эшш ёшуэрыр B_SDWP=0. └эрыюушхщ  ты хЄё  Їырцюъ чр∙шЄ√ юЄ чряшёш эр ушсъшї ьруэшЄэ√ї
фшёърї - юфэръю юэ, т юЄышўшх юЄ B_SDWP шёяюы№чєхЄё  ряярЁрЄэю т ъюэЄЁюыыхЁх фшёъютюфр ш ёрьюь фшёъютюфх.
╩Ёюьх Єюую, эр яырЄрї NeoGS rev.A ёшуэры B_SDDET яютЄюЁ хЄ ёюёЄю эшх ётхЄюфшюфр (уюЁшЄ - 0, эх уюЁшЄ - 1).
═р яырЄрї NeoGS rev.B юэ юяЁхфхы хЄё  ъюэЄръЄрьш эр ёыюЄх SD-ърЁЄ√.

═х ЁхъюьхэфєхЄё  шёяюы№чютрЄ№ фрээ√х ёшуэры√ т яЁюуЁрььрї. ═рышўшх т ёыюЄх SD-ърЁЄ√ ёыхфєхЄ юяЁхфхы Є№
яЁюуЁрььэю (єфр╕Єё  ыш яЁютхёЄш шэшЎшрышчрЎш■ ърЁЄ√ чр ъюэхўэюх тЁхь ).

 ╧ЁюЄюъюы√ яЁюуЁрььэюую юсьхэр ё ърЁЄющ ёыхфєхЄ шёърЄ№ т ёЄрэфрЁЄрї эр SD-ърЁЄ√.

 ╫рёЄюЄр яЁюЎхёёюЁр т NeoGS трЁ№шЁєхЄё  юЄ 10 фю 24 ╠├Ў, ёыхфютрЄхы№эю, ўрёЄюЄр Fsck шчьхэ хЄё 
юЄ 5 фю 12 ╠├Ў, ўЄю ыхцшЄ т яЁхфхырї ёяхЎшЇшърЎшщ SD-ърЁЄ эр ¤Єє ўрёЄюЄє (эх сюыхх 25 ╠├Ў).

 ╧юЁЄ SD_RSTR, ъюЄюЁ√щ т√фр╕Є яЁхф√фє∙шщ яЁшэ Є√щ срщЄ ш шэшЎшшЁєхЄ юсьхэ ё яхЁхфртрхь√ь срщЄюь 0xFF,
ьюцхЄ шёяюы№чютрЄ№ё  фы  тёхї ёЎхэрЁшхт юсьхэр фрээ√ьш ш ъюьрэфрьш ё SD-ърЁЄющ яю рэрыюушш ЁрсюЄ√ ё
шэЄхЁЇхщёюь SD-ърЁЄ√ т Z-controller'х, ёыхфєхЄ ыш°№ яюьэшЄ№ яЁю яЁюуЁрььэ√х ярєч√ 16 шыш 18 ЄръЄют.


  ╨рсюЄр ё MP3-фхъюфхЁюь.

 ╧юьшью фтєї SPI-шэЄхЁЇхщёют (ёь. уыртє *SPI-шэЄхЁЇхщё√*), фы  єяЁртыхэш  фхъюфхЁюь шёяюы№чє■Єё 
ёыхфє■∙шх ёшуэры√:

 ёшуэры т фхъюфхЁ, єяЁрты хь√щ сшЄюь B_MPXRS т яюЁЄє SCTRL - ряярЁрЄэ√щ ёсЁюё фхъюфхЁр ъюуфр сшЄ т эєых,
 эюЁьры№эр  ЁрсюЄр ъюуфр сшЄ т хфшэшЎх.

 ёшуэры ё фхъюфхЁр, ёюёЄю эшх ъюЄюЁюую юЄЁрцрхЄё  т сшЄх B_MDDRQ яюЁЄр SSTAT - уюЄютэюёЄ№ яЁш╕ьр яюЁЎшш
 MP3-фрээ√ї ўхЁхч ёююЄтхЄёЄтє■∙шщ SPI-шэЄхЁЇхщё (MD_SEND).

 ┬ NeoGS шёяюы№чє■Єё  MP3-фхъюфхЁ√ фтєї Єшяют: MA8201 ш MA8201A, ъюЄюЁ√х  ты ■Єё  рэрыюурьш, ёююЄтхЄёЄтхээю,
фхъюфхЁют VS1001 ш VS1011 ЇшЁь√ VLSI Solutions Oy (http://www.vlsi.fi). ╧юфЁюсэ√х юяшёрэш  ш яЁшэЎшя√ ЁрсюЄ√
ёыхфєхЄ шёърЄ№ т фрЄр°шЄрї (datasheets) ш ряяэюЄрї (application notes) эр ьшъЁюёїхь√ ЇшЁь√ VLSI Solutions Oy
эр шї шэЄхЁэхЄ-ёрщЄх. ─ры№эхщ°хх юсёєцфхэшх MP3-фхъюфхЁют т фрээюь ЁєъютюфёЄтх яюфЁрчєьхтрхЄ яЁхфтрЁшЄхы№эюх
ючэръюьыхэшх ўшЄрЄхы  ё єърчрээ√ьш фюъєьхэЄрьш.

 ╟фхё№ яЁштхфхэ√ ыш°№ юёюсю ёє∙хёЄтхээ√х чрьхўрэш .

 1. ─хъюфхЁ√ ЄръЄшЁє■Єё  ътрЁЎхт√ь ЁхчюэрЄюЁюь 14 ╠├Ў, ўЄю  ты хЄё  эхсюы№°шь яЁхт√°хэшхь
    юЇшЎшры№эющ ьръёшьры№эющ ўрёЄюЄ√ ёюуырёэю фрЄр°шЄрь. ─ы  эюЁьры№эющ ЁрсюЄ√ (фхъюфшЁютрэшх
    MP3-Їрщыют ё ы■с√ь сшЄЁхщЄюь) ёыхфєхЄ ╬┴▀╟└╥┼╦▄═╬ шёяюы№чютрЄ№ тэєЄЁхээхх єфтюхэшх ЄръЄютющ
    ўрёЄюЄ√, яЁхфєёьюЄЁхээюх т фхъюфхЁрї (Ёрсюўр  ўрёЄюЄр 28 ╠├Ў).

 2. ╠ръёшьры№э√х ўрёЄюЄ√ Fsck фы  юсюшї SPI-шэЄхЁЇхщёют фхъюфхЁр юуЁрэшўхэ√ ёыхфє■∙шьш тхышўшэрьш.
    ╧Ёш яхЁхфрўх срщЄют яю єяЁрты ■∙хьє шэЄхЁЇхщёє (ёюфхЁцшьюх MC_READ эх шёяюы№чєхЄё ),
    Ёртэю ъръ ш яю шэЄхЁЇхщёє MP3-фрээ√ї ўрёЄюЄр ёшуэрыр SCK ёююЄтхЄётє■°хую шэЄхЁЇхщёр Fsck < Fdec/4,
    уфх Fdec - ўрёЄюЄр, эр ъюЄюЁющ ЁрсюЄрхЄ фхъюфхЁ (Fdec=14 ╠├Ў, хёыш тэєЄЁхээхх єфтюхэшх т√ъы■ўхэю,
    шыш Fdec=28 ╠├Ў т яЁюЄштэюь ёыєўрх).

    ╧Ёш яЁш╕ьх срщЄют яю єяЁрты ■∙хьє шэЄхЁЇхщёє (ёюфхЁцшьюх MC_READ шёяюы№чєхЄё ) Fsck < Fdec/6.

    ┬ юсюшї ёыєўр ї ёыхфєхЄ єўшЄ√трЄ№ Єхъє∙є■ ўрёЄюЄє яЁюЎхёёюЁр Z80, ёюёЄю эшх сшЄют, чрфр■∙шї
    Fsck ърцфюую шэЄхЁЇхщёр (B_MCSPD1,B_MCSPD0,B_MDHLF) ш Єю, тъы■ўхэю ыш тэєЄЁхээхх єфтюхэшх
    ЄръЄютющ ўрёЄюЄ√ фхъюфхЁр шыш т√ъы■ўхэю.

 3. ╧юёых ряярЁрЄэюую шыш яЁюуЁрььэюую ёсЁюёр тэєЄЁхээхх єфтюхэшх юърч√трхЄё  т√ъы■ўхээ√ь.
    ╤ыхфєхЄ хую тъы■ўшЄ№, яЁюЎхфєЁр тъы■ўхэш  юЄышўрхЄё  фы  Ёрчэ√ї (VS1001 ш VS1011) фхъюфхЁют.
    ┬ ёыєўрх VS1001 яюёых єёЄрэютъш ЁхушёЄЁр CLOCKF ёыхфєхЄ чряшёрЄ№ ъюэёЄрэЄє 0x8008 т эхфюъєьхэЄшЁютрээ√щ
    ЁхушёЄЁ INT_FCNTLH (ёь. ряяэюЄ vs10XXan.pdf). ┬ ёыєўрх VS1011 эр ьхёЄх ЁхушёЄЁр INT_FCNTLH юърч√трхЄё 
    фЁєующ яю ЇєэъЎшш ЁхушёЄЁ ш чряшё№ т эхую яЁюшчтюфшЄ№ эх ЄЁхсєхЄё , р фы  тъы■ўхэш  єфтюшЄхы  ЄЁхсєхЄё 
    чряшёрЄ№ чэрўхэшх ўрёЄюЄ√ фшёъЁхЄшчрЎшш (ы■сюх яЁшьхэшьюх) т ЁхушёЄЁ AUDATA (ёь. ряяэюЄ vs10XXan.pdf).
    ┬ фры№эхщ°хь ръЄєры№эюх чэрўхэшх ўрёЄюЄ√ фшёъЁхЄшчрЎшш єёЄрэютшЄё  ртЄюьрЄшўхёъш. ┬ юсюшї ёыєўр ї ъюэёЄрэЄр,
    чряшё√трхьр  т ЁхушёЄЁ CLOCKF, юёЄр╕Єё  эхшчьхээющ (0x9B58).

 4. фы  юяЁхфхыхэш  Єшяр фхъюфхЁр (VS1001 шыш VS1011) ёыхфєхЄ яЁюўшЄрЄ№ ЁхушёЄЁ STATUS ш чруы эєЄ№
    т сшЄ√ 7:4 ¤Єюую ЁхушёЄЁр. ╥ръ ъръ юяЁхфхы Є№ Єшя фхъюфхЁр ЄЁхсєхЄё  фю тъы■ўхэш  єфтюшЄхы  (яєэъЄ 3),
    ёыхфєхЄ юёюсю тэшьрЄхы№эю юЄэхёЄшё№ ъ яєэъЄє 2: Fdec/6 т ¤Єюь ёыєўрх ёюёЄртшЄ 2.3 ╠├Ў, ш Fsck
    фы  ъюЁЁхъЄэюую ўЄхэш  эх фюыцэр с√Є№ сюыхх ¤Єюую чэрўхэш  (ёь. уыртє *SPI-шэЄхЁЇхщё√*).

 5. ╧Ёш яЁюшуЁ√трэшш эхъюЁЁхъЄэюую шыш шёяюЁўхээюую MP3-Їрщыр, тёыхфёЄтшх ¤ыхъЄЁюьруэшЄэ√ї яюьхї ш Є.ф.
    фхъюфхЁ ьюцхЄ чртшёэєЄ№: яЁш ¤Єюь, ъръ яЁртшыю, яЁюшуЁ√трэшх чтєър яЁхъЁр∙рхЄё , р ёў╕Єўшъ тЁхьхэш
    яЁюшуЁ√трэш  (ЁхушёЄЁ DECODE_TIME) эх шэъЁхьхэЄшЁєхЄё . ╥ръцх яЁшчэръюь чртшёрэш   ты хЄё  ўхЁхёўєЁ
    эшчър  шыш ўхЁхcўєЁ т√ёюър  ёъюЁюёЄ№ яюЄЁхсыхэш  фхъюфхЁюь MP3-фрээ√ї (ёь. ряяэюЄ vs10XXan.pdf).
    ╧Ёш юсэрЁєцхэшш чртшёрэш  эхюсїюфшью т√яюыэшЄ№ яЁюуЁрььэ√щ ёсЁюё, яютЄюЁшЄ№ яЁюЎхфєЁє шэшЎшрышчрЎшш
    ш тэют№ юсЁрЄшЄ№ тэшьрэшх эр яЁшчэръш чртшёрэш . ┬ ёыєўрх, хёыш фхъюфхЁ эх 'юЄтшё', эхюсїюфшью
    яЁютхёЄш ряярЄрЄэ√щ ёсЁюё (сшЄ B_MPXRS т яюЁЄє SCTRL).

    ├Ёєс√щ чрьхЁ ёъюЁюёЄш яюЄЁхсыхэш  фхъюфхЁюь MP3-фрээ√ї ьюцэю яЁютхёЄш, шёяюы№чє  ъръ ЁхяхЁ
    чтєъют√х яЁхЁ√трэш  NeoGS, ёыхфє■∙шх ё ўрёЄюЄющ 37500 ├Ў эхчртшёшью юЄ ўрёЄюЄ√ яЁюЎхёёюЁр Z80.

 6. ╧юёых юъюэўрэш  фрээ√ї т MP3-Їрщых ЁхъюьхэфєхЄё  т√фрЄ№ т фхъюфхЁ 2048 срщЄ эєыхщ (B_MDDRQ, MD_SEND),
    яюёых ўхую фы  эрўрыр фхъюфшЁютрэш  ёыхфє■∙хую Їрщыр эхюсїюфшью яЁютхёЄш яЁюуЁрььэ√щ ёсЁюё.
    ╧Ёшьхэ Є№ тьхёЄю эхую ряярЁрЄэ√щ ёсЁюё эх ЁхъюьхэфєхЄё , Єръ ъръ яЁш ¤Єюь тючэшър■Є ∙хыўъш
    т чтєъютюь ЄЁръЄх фхъюфхЁр.

 7. ╤ыхфєхЄ юЄьхЄшЄ№, ўЄю єяЁртыхэшх Ёхцшьрьш bass/treble ш surround т юсюшї Єшярї фхъюфхЁют
    ёє∙хёЄтхээю ЁрчышўрхЄё .

 8. ┬ фхъюфхЁх VS1011 яЁхфєёьюЄЁхэю эхёъюы№ъю Ёхцшьют яюё√ыъш MP3-фрээ√ї. ╤ыхфєхЄ шёяюы№чютрЄ№ ыш°№
    єёЄрэютыхээ√щ яю єьюыўрэш■ яюёых ёсЁюёр Ёхцшь ёютьхёЄшьюёЄш ё фхъюфхЁюь VS1001 ё єўрёЄшхь ёшуэрыр
    сшЄютющ ёшэїЁюэшчрЎшш BSYNC. ╤шуэры BSYNC ухэхЁшЁєхЄё  ряярЁрЄэю ёїхьющ SPI-шэЄхЁЇхщёр фы 
    MP3-фрээ√ї т FPGA ш тэшьрэш  ъ ёхсх ёю ёЄюЁюэ√ яЁюуЁрьь√ Z80 эх ЄЁхсєхЄ.