2011年3月4日金曜日

SDメモリカードプレイヤー機能の実装2

 SDカードプレイヤーの構成案ですが、AlteraのDMAコントローラIPを使うことで処理性能を確保する案を考えていましたが、少し見直してAlteraのDMAコントローラIPは使わず、独自ハード処理でSDカードの読出しからES転送まで実施してしまおうと思います(ES読出し以降は既存回路)。

 結局独自にDMAコントローラを起こすようなものですが、そのほうが構成が幾分シンプルになり、AlteraのDMAコントローラIPを使う場合でもSPIインタフェース回路を作らなければならず、またソフトによるDMA制御プログラムが省けるので、トータル設計量はあまり変わらないか逆にDMAコントローラを使ってトラブった場合よりは少ないと思います。
 

SDカードプレイヤーの構成案

 SPI制御も、まだ調査不足ですが、基本的には固定サイズのリードアクセスだけできれば事足りるのではないかと思われ、サポートを要するコマンドもそうなればシングルブロックリード(場合によりマルチブロックリードのほうが良いかもしれません)のみで済ませられる可能性が高そうです。

 FATファイルシステム管理や、曲ファイルの管理、512バイト転送契機の監視と起動といったところがソフト処理となります。
 SDカード実装直後のマウント処理後は、512バイト周期の起動処理+α ぐらいとなるのでNiosII/eへの処理負荷はほとんど無くなり稼働率数%台になるはずです。

2011年3月2日水曜日

SDメモリカードプレイヤー機能の実装

 ポータブル用にSDメモリカードプレイヤー機能の検討を始め出しました。
 一応参考となるソースがあるので、そんなに大変でもないかと思っていましたが、調べていくとかなり大変かも....

 まず、SDメモリカードには、SPIモードとSDバスモードがあり、SDバスモードであれば4bitパラレルで、それなりの速度でアクセスできるようになりますが、SPIモードでは1bitシリアルでアクセスするため転送速度が稼げません。

 SDバスモードを実装は、一応OpenCoreOrgにIPがあるのでそれを使わせてもらえば可能ですが、SDバスモードを使用するのに、どうもライセンスが必要だの、会員でないと詳細情報の入手が困難だの、アクセスシーケンスが複雑だとか、難易度が非常に高そうで手を出さないほうがよさそうです。

 SDTrans192は、SPIモードで動作させているようで、それで24/352,8kHzの再生を実現させているので、SPIでも目標性能をクリアできるのは間違いないようです。
 
 16/44.1kHzのファイルで、1.44Mbit/s、24/352,8kHzになると16.934Mbpsの転送速度が必要になりますが、規格上50Mbpsの帯域があるので50MHzで動作するSDメモリカードなら転送速度はクリアですが、SPIバス上のオーバーヘッドもありますし、CPUプログラム転送だとプログラムの実行時間のロスがあります。

 とりあえずはNiosII/e 50MHz clockで動作させるつもりですが、高々数MIPS位の性能しか無いですし、16/44.1kHzのファイルでも34クロックで1bit分の転送処理をしなければならないわけですが、それなりのstep数があるので、これでもキワドイ可能性があります。
 まだFPGA内臓メモリにプログラムが入れば可能性がありますが、SDRAMに置かなければならなくなると多分駄目でしょう。NiosII/eだとキャッシュも使えないですし、cycloneIII/IVはそれほど内蔵メモリが大きくないのでちと厳しいか....

 24/352,8kHzになると2.9クロックで1bit分の転送処理で完全に不可能な領域になります。
 元々DMA化は考えていますが、DMA化の前にSDカードアクセス回路を設計して動作させてからになります。DMAコントローラは、IPが利用できますが、使い方をマスタしなければなりません。下手をすると16/44.1kHzでもDMAが必要になりそう.というか、だんだんと駄目な気がしてきました。

 SDTrans192はDMAを使っているわけでは無いように見えますが、100MIPSとはいえプログラム転送では相当チューンしないと厳しいそう。実際アセンブラ駆使しているようで、それで稼働率76%....
やはりDMA必須です。


 Parts Connexionに催促メールを送りました。どうも忘れられていただけのようで、お詫びと共に即発送手続きが取られたようです。

2011年3月1日火曜日

DE0-nano新発売

 ポータブルシステムようにBeMicroを考えていたところ、据え置きで使用中DE0の開発元TerasicからDE0-nanoというボードがもうすぐ発売されるようです。 

 DE0-nano


 価格は$79と、BeMicro SDKに対抗してか同じ価格、こちらはDigiKeyで扱われると思われるので、送料無料にできる手段がありそなので、送料が結構かかるBeMicro SDKよりリーズナブルになるはずです。

 下に示す機能比較表のように、機能としてはほぼ互角で、MicroSDカードが無いことがDE0-nanoの×なところですが、それ以外はBeMicroSDKより好感がもてるかなといったところです。

 ポータブルとして考えた場合、BeMicroSDKは、固定穴がないことと、USBコネクタが大きく張り出していること、使う予定の無いEtherコネクタがじゃまなことが、実装としていまいち気に入らない点。
 MicroSDカードスロットは付いていますが、ケースに実装してカードが挿抜できるかというとかなり不安。SDカードスロットはArdino向けに基板があるみたいなので、それを利用するほうが良さそう。
 
 あとは、どうも情報が貧弱で、一世代前のCycloneIII版BeMicroの情報がWebサイトに残っていたり、ドキュメントが何だかいい加減、サンプルソースもいい加減(なんだかダウンロードできるものがあるがどれもすべてそろっているように見えない)、購入時も対応悪いと良い印象がないので、どう考えてもDE0-nanoのほうに気持ちは傾きます。

<>
BeMicroと DE0-nanoの比較(DE0を参考として併載)
  BeMicro SDKDE0-NanoDE0 Board(参考)
FPGADeviceCyclone® IV EP4CE22F17C6NCyclone® IV EP4CE22F17C6NCyclone III 3C16 FPGA
LEs22,32022,32015,408
Embedded memory 594Kbits594Kbits504Kbits
multipliers666656
PLL444
UserIO153153346
Expansion Header80-pin edge connectorTwo 40-pin Headers  72 I/O pinsTwo 40-pin Headers  72 I/O pins
-One 26-pin header-
Memory
Devices
SDRAM512MB Mobile DDR SDRAM32MB SDRAM8MB SDRAM
EEPROM -2Kb I2C EEPROM -
Flash--4-Mbyte NOR Flash memory
SD card socketMicro SD Card-SSD Card
General User
Input/Output
LED8 green LEDs8 green LEDs10 Green LEDs
7Seg LED--4 seven-segment displays
push-buttons2 pushbutton switches2 pushbutton switches3 pushbutton switches
DIP switches 2 dip switches 4 dip switches -
Slide switches --10 Slide switches
LCD Interface--16x2 LCD IF(Not include LCD)
A/D Converter-NS ADC128S022, 8Ch, 12bit 4-bit resistor-network DAC
G-Sensor-ADI ADXL345-
Ehter10/100M--
Temp sensortemp sensor--
VGA --15-pin  D-sub connector
RS-232--RS-232 port (Without DB-9)
CXO50-MHz oscillator50MHz oscillator50-MHz oscillator
Configuration
Elements
ConnectorUSB TypeA port (5V)USB Type mini-AB port (5V)USB TypeB port (5V)
Config CircuitOn-board USB BlasterOn-board USB BlasterOn-board USB Blaster
ConfigROMEPCS16 serial EEPROM?EPCS16 serial EEPROMEPCS4 serial EEPROM
  25mm X 130mm49mm X 75.2mm99.7 mm X 128.02 mm
×なところ 取り付け穴がないSDカードスロットがないでかいので論外
  USBコネクタが大きく張出し  
  サポート情報が貧弱  
  購入しずらい  
  送料が高い  
  Etherコネクタがじゃま  
  コネクタが扱いづらい  
  MicroSDカードの取出しに問題  
  電源供給も一抹の不安  
○なところ 3つの中で一番小さい取り付け穴があり 
  安い($79)安い($79) 
  メモリ容量が大きいBufflaloIIとサイズが比較的近い 
   USBコネクタがminiタイプ 
   DE0の資産が生かしやすそう 
   コネクタは扱いやすい 


 大きさの比較したものが下の写真になります。参考にBuffaloIIも入れてありますが、DE0-nanoは大きさが似ていて、短辺側は同じかもしれません。

 サイズ比較(上から BufflaloII DE0-nano、BeMicroSDK、DE0)

 コネクタのユーザーIO数もDE0より多いくらいで、メモリ容量やロジックゲート数もDE0-nanoのほうが大きく、VGAコネクタなど処理に困るコネクタが付いていないので据え置きの方もDE0-nanoに換え可能性大です。

2011年2月27日日曜日

ポータブルシステム検討

 MultiDAC内臓HPAに並行して、ポータブル再生システムについても検討中です。

 基本方針として下記はほぼ決定
  1.  クロック:日本電波工業 NZ2520SD - 24.576000M / 22.579200M を使用
  2.  FPGA BeMicro SDK (Cyclone IV with 22K Logic Elements:  EP4CE22)
  3.  DAC:BuffaloII(ES9018)with Fidelix Pure Rhythm 96M
  4.  HPA:HA10-mini
  5.  ヘッドホン端子:ヒロセHR10Aプラグ 6極(バランスHPのみ対応)
  6.  FPGA=>DAC間はアイソレータで電源分離する

 DAPとしては、下表の4パターンを考えています。
 
 COWON D3
Colorfly CK4
Fiio X3FPGA再生
内臓メモリ容量8G)16G32G
8GBと16GBなし×なし×
ディスプレイAMOLED(アクティブマトリクス式有機EL3.7インチ 800×480 タッチパネルボディサイズに近いディスプレイTFTディスプレイ 320x240なし×
大きさ64.2(W)×116.4(H)×
11.8(T)
 120g
Touchより少しでかくて厚いFiio E7と同じ
0g(追加DAPなし)
ボタンHomeMenuBackPower/HoldPlay/PauseFFREWVOL+VOL-  再生・停止
Vol+,Vol-
×
Strage内臓メモリ+
MicroSD
カード
内臓メモリ+
MicroSD
カード
MicroSDカード 
SDXCカード
MicroSDカード
電源再生時間 最大21時間 不明 不明 --
充電時間3時間30分 不明 不明 --
音楽wave16/44.1kHz *1 24/192kHzまで*2 24/192kHzまで*3 32/348kHzまで*4 
Flac16/44.1kHz *1 24/192kHzまで*2 24/192kHzまで*3 なし 
etcMP3/2/1、WMA、OGG、ASF、APE、M4A×APE?APEDSD対応予定
その他JetEffect 3.0
5バンドEQ
BBE+

MP Enhance
 JitterKillオペアンプ ADA4075-2
DAC CS4398
 ギャップレス再生   
デジタルIFS/PDIF(同軸)なし 改造でI2Sで取り出しS/PDIF(同軸)改造でI2Sで取り出し?--
FPGA内
処理
SDメモリ再生モードダイレクト再生SDメモリ再生モード
改造可ならダイレクト再生

MicroSDカードからDMA転送で再生
Comment・多分24bitも88,2kHz以上も無理な可能性が高い
Android端末のため他の用途と兼用としては良いのだが…
入手済み
改造がうまくいけば、一番期待できるか?
比較的安価
D3,CK4より期待できそう?
無改造ならこれ一択
比較的安価
ポータブルにおいてサイズと重さは重要。外部DAPが不要なのは大きい。
操作性は全く期待できなく、表示もなしになるがスタートしたら順に再生する使い方しかしないであろう
DSDを再生するにはこの方法かMR1しかない。
現在の判定
4
3
2
1
*1現在確認できている
  もの
*2 確定ではない 
  24bitは予測値
*3 24bitは予測値*4 目標値
   FLACはNiosIIeには
   処理能力的に無理
   DSDも再生させたい


 
 各DAP使用時の構成は、下図



 COWON D3 or Fiio X3の場合の構成案 SDRAMバッファモードが必要



Colorfly CK4(改造要)、Fiio X3(改造要)時の構成案 SDRAMバッファモードは不要



  FPGAでMicroSDカードから再生 外部DAPが不要となる
 SDTran192使用する場合と基本は同じ考え方



 FPGA内部論理に関しては、MultiDACの資産が有効に使えるはずなので、SDカードの再生方法をなんとか作れれば問題なしですが、まだまだ未検討でこれから考えないといけないのは下記などなど
  1.  IV変換回路:OPアンプとしたいが、今のところ候補さえなし
  2.  電源構成 電池は1つ、せいぜい2つにしないとサイズと重さが... 
  3.  実装方法 FPGA~HPAまで1つのケースに入れるか?分けるか?
  4.  ES9018のI2C制御 アイソレータで電源分離したいが、双方向なので何か工夫が必要
  5.  ボリューム制御は、ES9018かFPGAか外部DAP時は外部DAPか
  外部DAPとしては、改造なしでも192kHz対応可能なFiio X3を有力視しています。
 ただ最初は、外部DAPを先行して、FPGAでのMicroSDカード再生も追々追加していこうかなという考えだったのですが、先ずはFPGAでのMicroSDカード再生を確立させてからのほうが良いかなと
傾きつつあります。操作性に難がありますが、DAPとしてもう1台モノが増えるのは大きいですし...



候補1:COWON D3




候補2:Colorfly CK4


候補3:Fiio X3


候補4:BeMicro SDK(どの案でも搭載はするがDAPとしての候補4)