空を見上げて
トップページ » オーディオ » メモリプレヤー » mp3 » MP3PlayerKitを作る(5)

MP3PlayerKitを作る(5)

結局、転送速度に関しては何か根本的に変えないといけないようだ。

・メモリから読む
 普通この単位は512Byteだが、USB最低64Byteである
・VS10XXに転送する
 mp3などは再生時間は転送データより長くなるがwavだとそのままの時間になるので一番厳しい。
 32byte単位である。中に5KByteぐらいありそれが再生長になる。しかし、16bitステレオだと1音=4Byte使われる。

 非圧縮(wav)で16bitステレオで44.1KHzは最低ほしい。(つまりCD品質)
これを逆算すると、22.6uで4byte転送することになる。
176.4KB/Sになるが、それで「メモリからの読み込み」「VS10XXへの転送」を行うことになる。
なので単純に350KB/Sで読み込み、350KB/Sで書き込むことになる。
いろいろなことを考えると、それぞれが500KB/Sの能力をもってないと危ない。
特にメモリからの読み出しは「FATを参照する」「そこからセクターを決めて読む」ので、ここが速くないと速度は出ないだろう。またメモリデバイスの速度もある。

 このKitの方式は
・512Byteをメモリから読み取り、32ByteづつVS10XXに転送する。
 つまり16回に1度大きなインターバルがある。
 組み込みでもありFATがキャッシュされているわけでもないので、次を探すのも大変。

 ゆきさんの方式は
・32Byteをメモリから読み取り、32ByteづつVS10XXに転送する。
 ここはいいのだが、メモリは大抵512Byte単位でこれが多分(時間がかかって)まずいのかもしれない。
 同じくFATがキャッシュされているわけでもないので、毎回読むことになる。

高速化できる方策としては
・FATを全部キャッシュにいれてしまう。
 CPUを変えなくてはいけないかも。SHとか?
・2CPU+DMAで「メモリ専用」「VS0XX専用」でやる
 ここは時間待ちだらけで効率が悪い
 FIFOを使うのも良いが...
・1CPUだが、CPLD&DMAで転送する
 FAT部分は難しいが、転送だけとか。
 VS0XXへの転送ならハードでできるかもしれない。
・せめてRTOSにする
 待ち時間に違うタスクを少しでも走らせる
・せめて待ち時間を有効に使う
 最低でもメモリを512読んでいる待ち時間にVS0XXに転送する
ということが考えられる。

RTOSか、待ち時間中の転送ぐらいが、このシステムでは現実的な改良かもしれない。
ただそれだけで性能は出るのだろうか?

それにしても、上海問屋の¥1000に負けるのは悲しい。(TT)
もっともwav再生はできないのだが。

by   at 09:00
トラックバック
このエントリーのトラックバックURL:

トラックバックはありません

コメント

コメントはありません

コメントを書く




保存しますか?


(書式を変更するような一部のHTMLタグを使うことができます)


Please enter the security code you see here