0と全く同じですが、ケース色を黒にしてみました。右側に見える3つの黄色(実際はキャメル・イエロー)はプッシュスイッチです。右上角の丸くなっているところには、アップ/ダウン操作用のダイヤル(ロータリーエンコーダ)が付いています。ちょっと見えにくいですが、左上に赤外線通信用の送受信部が付いています。写真はプレーヤ本体が停止しているときのものです。0の頃のデザインを使って、ロゴを作ってみました。
MP3プレイ中の表示
MP3を再生しているときの液晶表示の様子です。最上部2行はステータスエリアです。ボリューム値、トーンコントロール設定、本体とリモコンそれぞれのバッテリ電圧、再生中の曲番号、赤外線通信の状態が表示されています。右端は操作用スイッチのファンクションを表示するエリアです。0のロゴの下に、再生中の曲名、アーティスト名、アルバム名と再生時間がリアルタイムに表示されます。
MP3曲セレクト実行の様子
曲リストからダイヤルで選んで、OKのスイッチを押すとジャンプします。曲数が多い場合には、もちろんダイヤル操作に合わせてリスト表示がスクロールします。このリストで曲をセレクトしてから、約5秒間操作をしないと、上のプレイ中表示に自動的に切り替わります。MP3のプレイ中にメニューボタンを押すと、MP3関連コマンドのメニューが表示されます。ダイヤルで選択してOKを押すと、そのコマンドに応じたサブメニューが表示されます。写真はリピートモードを設定しているところです。
FMラジオ受信中の表示
FMラジオモードのときは、プリセット局のリストが表示されます。受信中の局は反転表示になります。ラジオ局の選択は、MP3の曲セレクトと同様に、このリストからダイヤルで行えます。ヘッドフォンを耳に掛けた状態でネックコードをいっぱいに出し、窓際で試してみました。FMラジオ受信中にメニューボタンを押すと、FM関連コマンドのメニューになります。写真は、ダイヤルでのマニュアル選局をしているところです。
普通のラジオの選局ダイヤルと同じような感じで、0
製作途中の様子です。0の時と同じく木製です。1mm厚の航空ベニヤとヒノキ材を使用しています。ケースを斜め上から見たところです。エンコーダのダイヤル部分はこんな風になっています。ケース裏面です。操作スイッチとは反対側の辺の角を斜めに落としてあります。これだけで見た目のボリューム感がぜんぜん違います。とても小さく見えるようになりました。
内部の様子とリモコン基板の裏面
下半分の大きな銀色はリチウムポリマ電池です。ヘッドフォンと同様、充電中のバッテリ表面温度を監視するサーミスタが貼ってあります。電池と基板の間に、液晶モジュールのコントローラ部がはさまれる形で収まっています。液晶のコントローラ部と表示部の間はFPCになっているので、そこで折り返してコントローラ部をリモコン裏側へと回し、基板と接続するようにしました。厚さと大きさがピッタリだったので、イギリスの1ポンド硬貨を加工してダイヤルにしました。外周のローレットにより操作感は抜群です。0ではプラスチックギヤを使用していたのですが、回したときの『カリカリカリ・・・』という軽い感じがイマイチでした。その点1ポンド硬貨は厚く重いので、『コクコクコク・・・』ととてもいい感じになりました。
・・・加工はとっても大変でしたが
充電中の様子
USBを挿すとバスパワーでの充電が始まります。充電ステータスは、液晶ディスプレイ右上のバッテリ電圧表示部の背景色で表示されます。
写真では赤地で"4
1"と表示されている部分です。この地色が充電中なら赤、充電が完了すると緑に変わります。充電中の消費電力を減らすため、15秒間無操作が続くとバックライトが減光するようにしてあります。
回路図その他、技術的な説明はこちらへどうぞ
0 技術情報のページ
ページの先頭へ戻る。0までは耳かけ式のヘッドフォンだったのですが、電車の中での音漏れが少々気になっていました。
そこでヘッドフォンをインナーイヤー型にしてみたのが、このRev6
Timpyシリーズが耳かけ式のヘッドフォンを利用してきた最大の理由は組み込みスペースです。左右それぞれに巻き取り機構が付いている、いわゆる『ダブル巻取り』とか呼ばれているタイプ(プラグコードとネックコードが両方とも巻き取れるタイプ)を使っています。0まででは、ネックコード巻き取り側はそのまま流用し、プラグコード側の巻き取り機構を取り除いてそこへ基板やバッテリを組み込む形をとってきました。0ではネックコード巻き取り側の発音体(マイクロスピーカ)を取り除き、そこに基板やバッテリを詰め込みました。代わりとなる発音体はインナーイヤーヘッドフォンで、その上からかぶせるようにプレーヤ本体を耳に掛けます。装着に違和感を感じさせないように構成を工夫してあります。0にはプラグコード側がありません。右耳用のインナーイヤーヘッドフォンがあるだけです。ネックコード巻き取り機構をそのまま残してありますので、左耳側に巻き取れます。コードが絡んでいらいらすることはありません。とても小さく収まって、かばんの中でもスッキリです。0と同等です。
*プレーヤ本体はイヤークリップ型(耳かけ式)、ヘッドフォンはインナーイヤー型
耳かけ式ヘッドフォンで気になる音漏れを解消しつつ、うっとおしいプラグコードを排除することができる、ユニークなハイブリッドタイプです。
コード巻き取り機能付きイヤークリップ型ヘッドフォンの片側に、Timpy Rev5
0基板とバッテリを組み込みました。
0の特徴である・・・
を全て受け継いでいます。
*ネックコード巻き取り可能
巻き取り機構をそのまま残してありますので、写真のとおり、右側のネックコードを左側のMP3プレーヤ本体内に巻き取ることができます。コードが絡まってイライラすることはありません。かばんの中もスッキリです。
*ヘッドフォンは両耳ともインナーイヤータイプ
耳かけ式ヘッドフォンでの音漏れ問題を大幅に改善できます。このヘッドフォンは耳かけ式で、左右の筐体内部にネックコードとプラグコードをボタンプッシュで巻き取れることが特徴です。0では、このヘッドフォンの左側だけを流用しました。
ヘッドフォンのスピーカ部を取り除き、そこにRev5
0の基板とリチウムポリマバッテリを組み込みました。0以前のヘッドフォン内蔵型では、右側に巻き取り機構、左側に基板とバッテリという楽な構成でした。0では全てを片側に詰め込んでいる点が特徴のひとつです。『実際の』というのも変な表現ですが、上の耳かけ式ヘッドフォンMDR-Q68LWがプレーヤ本体(つまり音は出ない)であるのに対して、これは実際に音を出すためのヘッドフォンです。ER-6iはインナーイヤー型の中でもカナル型と呼ばれるタイプです。
これを選んだのは本体が小さいから
ヘッドフォンを着けた上に重ねてプレーヤ本体を装着しますので、ヘッドフォンが大きいとプレーヤが浮いてしまいます。装着感は実際に試さないと分からないので、実物に触れる新宿のヨドバシカメラへプレーヤ持参で行きました。
いろいろ試着
)あたりでした。私は耳の穴が小さいので、ほとんどのカナル型は端からNGなのですが、黒が欲しかったので敢えてこれにしました。もしiPod純正の黒があったら迷わずそちらにしたと思います。装着はまず左側のER-6iを着け、その上にかぶせるようにプレーヤ本体を掛けます。その後右用のER-6iを、左側からネックコードを引き出して装着します。カナルと耳かけの二重装備は、思ったほど、というか意外なほどに違和感がありません。ブルーメタリックのプレーヤ本体の下にER-6iが隠れています。
両者をつなぐコードがループ状に見えてますが、パッと見にはそれと分かりませんね
これがTimpyだと分かるのは反対側を見たときです。
左耳は耳かけ形、右耳はカナル型
そんな見た目のアンバランスさもRev6
0の面白いところです。以前はトランスフラッシュカードと呼ばれていた、恐ろしく小さなメモリカードです。このサイズで2GBの容量があります。これはカードを半挿ししたところです。カードをセットするとこんな感じになります。
カード全体が中に収まってしまうため、ちょっと見ただけではわかりません。指の先でカードを少し押し込むとイジェクトできます。左下にUSBのmini-Bコネクタ、右隣の黒い長方形が赤外線受信モジュールです。その上に電源スイッチ、右にモニタLEDが2つ並んでいます。イヤークリップの近く、右端に顔を覗かせている丸いものが、リモコンと通信するための赤外線LEDです。内蔵バッテリはUSBのバスパワーで充電されます。右側のモニタLEDは充電ステータスを表示します。このLEDは赤と緑の2素子入りで、赤なら充電中(写真)、緑なら充電完了を示します。
内部の様子−イヤーパッドを外したところ
本来ならヘッドフォンのスピーカがある部分に、バッテリや基板などのプレーヤ本体が組み込まれています。黄色い大きな四角は250mAhのリチウムポリマ電地です。表面保護のためにカプトンテープを巻いてあるため黄色く見えています。電池の表面中央部に温度監視用のサーミスタが貼ってあります。
内部の様子−基板
バッテリをどけるとプレーヤ基板が現れます。0の基板をそのまま流用しました。
内部の様子−操作スイッチ
デザイン的なバランスを考えて、Rev6
0では操作スイッチを3個にしました。0までは4個でしたので、"F"スイッチの長押しが"R"スイッチ操作となるようにファームを変更しました。スイッチと配線はネックコード巻き取り機構に干渉しない位置を狙って埋め込んであります。
0基板−カナル型とノイズ
ヘッドフォンとして開放型でなくカナル型を選ぶことについては、耳の穴のサイズだけでなく、実は別のためらいがありました。それはノイズへの心配です。カナル型は遮音性が高いので、プレーヤのS/Nが悪いと・・・悲しい想いをするのは明らかです。このスリープモードとコマンド実行時では消費電流が100倍以上変動します。それがアナログ系に影響するとノイズとなって聴こえるおそれがあります。0以前の基板では、この電流変動が原因と思われるノイズが若干感じられました。
耳かけ式のヘッドフォンならば全く問題にならない程度なんですが、カナル型ではおそらくそうはいかないでしょう
でも実際には杞憂でした。0基板は耳が痛いくらいの音量でもノイズが全然気になりません。0を作った後、このノイズ問題の改善も課題のひとつでした。0の設計に際しては次の2つに重点を置きました。○アナログ系とディジタル系で電源回路(レギュレータ)を分離する。○各機能ブロック間でグランド電流が回り込まないように配置とパターンを工夫する。所詮小さな両面板の中なので、なかなか納得できる形に至らずに、かなりの時間を費やしました。でも苦戦の甲斐あって、音質的に大幅に改善できました。測定器を持っていないので定量的には定かではありませんが、少なくとも私の耳には十分な音質で鳴ってくれています。上のプレーヤ本体は付属のプッシュスイッチ3個で全機能を操作できるようになっているのですが、操作性向上のために作ってみたのがこの専用ワイヤレスリモコンです。3個のスイッチとダイヤルにより、再生開始や停止、選曲/選局、イコライザやリピートモードの設定などプレーヤ本体の全ての操作が可能です。カラーグラフィック液晶には再生中の曲/局データの他、バッテリ電圧やイコライザ設定などの状態が表示されます。第2水準までの漢字フォントを内蔵していますので日本語表示もOKです。プレーヤ本体とリモコンの間は赤外線による双方向通信で結ばれます。テレビのリモコンと同様の変調光方式ですので、外乱に強く、距離も稼げるようになっています。とは言っても何mも飛ぶ必要は無く、片腕の長さの範囲で届けば十分なので、送信用LEDの電流は相応に抑えてあります。外出先で内蔵バッテリを充電できるようにするためのアクセサリです。乾電池が使えて、サイズの小さいものが欲しいな、と思っていたのですが、市販の製品で気に入るものが見つからなかったので自作してみました。USBに関わる回路は入っていません。シンプルに5Vが出るだけのものです。写真は充電中の様子です。プレーヤ本体側の充電ステータスを示すLEDが赤く光っています。DC/DCコンバータには、外付け部品が少なくて効率が良さそうなMAX1797を使いました。ケースは秋月で売っている格安のスイッチ付き電池ボックスです。ふたのネジ止め用ポストを削り取って、空いたスペースに回路を入れました。そのネジ穴から出力ONを表示するLEDが見えるようになっています。回路部品の固定と、若干の放熱効果への期待を兼ねて、電池の+側端子板上に直接部品を実装しています。
こういう芸術的(^^;;な作業で楽しめるのはアマチュア作品の醍醐味ですね
肝心の動作については、とりあえず、きれいで安定した5Vが出ることを確認できた程度です。発熱も心配したほどではなさそうです。時間ができたらもう少しちゃんと評価してみようと思います。ページの先頭へ戻る。0はちょっと寄り道のバージョンです。
これだけ小さいと、どこにでも入ってしまいそう
・・・で、これを何に、どんな風に組み込むのかは、現在製作中
もう少し改良したいところもあったりなので、まだナイショです。microSDを記録メディアとする超小型トランスポートです。
こちらからどうぞ
*とにかく小さい。
プレーヤ基板の寸法は16
*でもちゃんと鳴る。小さい中にデコーダチップとマイコン、microSDカードが載ってます。電源とスイッチ、ヘッドフォンを繋げば、れっきとしたプレーヤになります。
*サブ基板付き
プレーヤ基板と同寸法のサブ基板も製作しました。組み込み方によって変わる部分(スイッチとモニタ用LED、リチウムポリマ電池の充電回路)をこちらに集めました。充電用電源供給のためにMicro-USBコネクタが付いています。左がプレーヤ基板、右がサブ基板です。
大きさは共に16
10円玉にすっぽり入ってしまいます。
ヘッドフォンとリチウムポリマバッテリ(左下)を繋いでの動作確認中の様子
現在もファームウェアを改造中です。
MIDIメッセージ(SMFバイナリ)をハードコードすることで、メロディアスな起動音が出るようになりました♪
左上は開発環境と接続するための4ピンFFCコネクタ
これを通してリアルタイムデバッグが可能です。
下辺左右端の小さな四角は、それぞれ1
クリスタルはありません。右側に操作スイッチが3個、上辺にモニタLEDが2個付いています。下辺のコネクタは充電用電源供給のためのMicro-USBコネクタです。中央のICはバッテリチャージャです。パワーマネージメント機能を持っているので充電中でも動作可能で、USBを抜くと自動的にバッテリに切り替わります。またこのICの機能を利用して、操作用スイッチで電源ON/OFFもできるようにしました。プレーヤ基板とサブ基板はスタックできるように、穴位置と機能を合わせてあります。プレーヤ基板の裏面にmicroSDカードソケットが付いています。0の基板です。回路図にはプレーヤ基板とサブ基板の両方の部分が含まれています。
サブ基板を利用する場合には、・BPとリチウムポリマバッテリ(+)
・BGとリチウムポリマバッテリ(−)
をそれぞれ接続することを想定しています(上の写真の状態)
なおSWUは電源のオン/オフスイッチと操作スイッチを兼ねているので動作が少し複雑です。9)になります。以後XVCCの電圧はほぼバッテリの電圧と等しくなります。動作中のSWUの状態は、U端子の電圧をプロセッサでA/D変換することで読み取ります。
逆にオンの時は電源オン操作時と同じで約0
この電圧の変化を閾値をもって判別すればスイッチの状態を読み取ることができます。1V)で維持されますので電源オフにはなりません。電源オフの操作はSWUの長押しです。この操作はファームウェアで検出します。
長押しを検出したらP2
5をオープンドレインの出力ピンに切り替えて"L"を出力するようにします。これによりBATONが"L"で駆動され電源がオフになります。ページの先頭へ戻る。
有機ELディスプレイ付き
メイキング − 製作途中の写真集
賞をいただきました。
きょうび、液晶などの表示デバイスが付いたポータブル・プレーヤは珍しくもなんともないですよね
0のユニークなところは、耳かけ型のプレーヤ本体に表示デバイスを集積した点です。
・ヘッドフォンは音漏れが少ないインナーイヤータイプ
・プレーヤ本体はネックコードが巻き取れる耳かけ型
・赤外線リモコンのディスプレイ機能を、ヘッドフォン本体に内蔵
ディスプレイはプレーヤの内側(耳に接する側)に配置しました。もし外を向いてたら・・・周りの人に何を聴いてるかバレバレになってしまいます。
これは恥ずかしいですよね
一般的な耳かけ式ヘッドフォンだと、耳に接する部分にマイクロスピーカがありますので、他のものを配置することはできません。0ではヘッドフォンとプレーヤ本体が分離していますので、プレーヤ本体だけを耳から外して(つまり左右のヘッドフォンは装着したまま)、ディスプレイを見ながら操作できるのです。0の特徴をひと言で言うと『耳に掛けられるポータブル・プレーヤ』です。
*プレーヤ本体はイヤークリップ型(耳かけ式)、ヘッドフォンはインナーイヤー型
耳かけ式ヘッドフォンで気になる音漏れを解消しつつ、うっとおしいプラグコードを排除することができる、ユニークなハイブリッドタイプです。*プレーヤ機能もがんばってます。
*ネックコードを巻き取り可能
右耳用ヘッドフォンコードを左側のプレーヤ本体内に巻き取ることができます。コードが絡まってイライラすることはありません。かばんの中もスッキリです。
*ヘッドフォンは両耳ともインナーイヤータイプ
耳かけ式ヘッドフォンでの音漏れ問題を大幅に改善できます。
*プレーヤ本体に有機ELディプレイを搭載
タイトル名、アルバム名、アーティスト名やFM受信時の局名、周波数などを表示します。ちなみにディスプレイはプレーヤの外側ではなく内側(耳の方)を向いて設置されています。何を聴いていても周りにバレる心配はありません。
3個の操作用ボタンなど、外側の外観はRev6
0と変わりません。
0は内側が凄いんです・・・
耳に当たる部分、本来なら耳かけヘッドフォンのマイクロスピーカがある部分がプレーヤ本体になっています。0ではさらに有機ELディスプレイを集積しました。
したがって・・・↓
操作中の様子
両耳にインナーイヤー型のヘッドフォンをしたまま、耳からプレーヤ本体を外して、ディスプレイを見ながら操作できます。
装着の様子:左側
左耳側は、インナーイヤーヘッドフォンの上からかぶせるように、プレーヤ本体を耳に掛けます。絡まったり、首にまとわり付いたりする、うっとおしいプラグコードはありません。
装着の様子:右側
右耳側はインナーイヤーヘッドフォンだけです。ネックコードはプレーヤ本体に巻き取れますので、適当に引き出して右耳に装着します。この左右のアンバランスさもユニークな点です。
スポンジを外すと・・・
0で一番大変だったのは配置です。0の時と使える空間のサイズは同じなのに、さらにディスプレイを追加してますので、必然的に部品密度は高くなります。簡単には収まりません。いろいろな検討の結果、写真のこの形に落ち着きました。0用に新規設計しました。大きさは直径およそ35mmです。中央のT字型の穴は、有機ELディスプレイのコントローラICを落とし込むための“逃がし穴”です。穴を囲んでいる斜めの大きな長方形はバッテリのための空間です。ここには回路部品を置かずに、バッテリと基板がベタで接するようにしてあります。そして残る領域にVS1053bやバッテリ充電回路、電源回路が配置されています。この裏面の部品実装はこれまで以上にキツイです。
2mm間隔で並んでたりするのがちょっと・・・
基板設計時に当然覚悟はしていたのですが、最近歳のせいか目が・・・
裏面と同様に、有機ELディスプレイ、microSDコネクタ、FMチューナモジュール、microUSBコネクタといった大物部品実装のために領域を割り当てたので、本来の回路部品で使える面積がごくわずかになってしまいました。これも大物部品と回路部品の干渉を避け、全体の仕上がり厚さをできるだけ抑えるためです。
完成までにはTVチャンピオン『手先が器用選手権』並みの技巧(半分本当)と、仏様のような精神力(これはウソ)と、およそバカバカしいほどの費用(これは本当)が必要ですが、この生基板をご希望の方、いらっしゃいますか
もしも『よし、やってみよう』という酔狂な気概ある方はご連絡くださいませ。写真は使用した有機ELディスプレイです。
ご覧の通り、右側が変
な形してますよね・・・、はい
実はこの有機ELディスプレイ、単体で販売されているものではありません。日本開閉器工業株式会社、いわゆる『スイッチの日開』の有機ELディスプレイ付きスイッチIS-C15ANP4をバラしたものです。このディスプレイの魅力はなんといっても外形寸法の小ささです。
表示部のガラスの部分で19
メーカの製品ページ
でも実際に使い込むには上記の資料では不十分です。特にディスプレイコントローラICに関する情報が不可欠ですが、残念ながら日開のサイトでは公開されていません。比較的新しいデータシートがここにあります。このディスプレイはもちろんカラーです。色深度は16ビット(赤5ビット、緑6ビット、青5ビット)です。テスト的にグラデーションを表示してみました。有機ELは自発光なのでコントラストが高く、発色も十分きれいです。モノクロのグラデーションパターンです。0のロゴを作ってみました。これが起動画面になる予定です。ディスプレイコントローラがもしSSD1331ならば、グラフィック・アクセラレーション・コマンド・セットが使えるはずです。・・・というわけで試してみました。8バイトのコマンドを送るだけで直線が引けます。他に矩形描画のコマンドもあります。もうひとつ重要なコマンドとして"Copy"があります。任意の矩形領域を別の位置へコピーするコマンドですが、これを応用すると、マイコンに重い負荷を負わせることなく高速な部分スクロールが可能です。これは文字列のスクロール表示に絶大な効果を発揮します。左はロゴの中央部分をスクロールさせてみたものです。
写真をクリックすると動画で見られます(WMVはこちら)
"Copy"コマンドのおかげでマイコンはほとんど遊んでます。後半の高速スクロールは早回しじゃありません。
ファームだけでこれを実現するのは無理(笑)
アートワーク − はんだ面
*FMチューナについて
サイズはNS953Mより一回り大きい9mm×9mmですが、パッケージがBGAではなくDFNなので、基板の裏を有効利用できることが決め手になりました。とは言ってもYTS-7002Fに載っているチューナICはNS953なので、過去の制御プログラムがそのまま流用できます。
*基板設計について
comさんにお願いしました。)ですので、毎回できるだけ基板を小さくするためにいろいろと苦心しています。基板設計の都合で回路を変更することも多々ありますし、パッケージが小さいことを理由にわざわざ入手が難しいICを採用したりもしています。そういう状況ですので、当然基板設計においてもパターン幅・間隔を可能な限り細く狭くしたいところです。
P板さんの場合はその最小値が0
0の時に欲張ってエライ苦労したので、その失敗談を恥ずかしながら書いておきます。また今回、同じ轍を踏まないようにするために採った対処法も併せてご紹介します。まずはちょっと前置きにお付き合いください。
みなさんは基板設計時の座標の【単位】に何を使っていますか
私は直感的にわかりやすいので、いつも【mm】単位で設計しています。ところでEagleで拡張ガーバを出力すると、座標値は整数部2桁+小数部4桁の【インチ】表現になります。
つまり最小単位は0
したがって基板設計時にどんなに微妙にパターン位置などを調整しても、0
00254mm刻み)未満の位置情報はガーバ出力に反映されません。
例えばガーバで0
ここで至極当然ではありますが、0
そうです、キナ臭くなってきました。ミリで設計しているものを、十分な有効桁が無いインチに換算して出力しているのですから、これは要注意なわけです。
まぁ後でわかったことなんですが
0設計当時、P板さんのパターン幅・間隔の最小値は今と違って0
そしてこの時にハマッた落し穴とは、バカ正直に0
125mm設定のDRUファイルを作って苦心惨憺設計し、自信満々でP板さんにガーバを送ったところが、複数の要修正箇所の指摘と共にあっさりとNG判定を受けてしまったことです。
調べてみると、そのDRUの設定に基づいて生成されたベタパターンやラインの折れ曲がり部分などにおいて、最小値0
125mmを満足しない部分が多数生じてしまうことがわかりました。
ベタの生成法やガーバデータの解釈法などいろいろな要因がありそうなのですが、曲線補間などにより自動生成された頂点座標値において、先ほどの±0
0001インチに象徴される誤差が生ずることが主な原因ではないかと推測しています。
0の時はパターンを0
125mmピッチできっちり並べてしまっていたので大変でした。127mmに変更した上で、基板全面にわたるパターン修正が必要でした。それも1回では不十分で、3回目の修正でベタ生成の時だけ6mil設定のDRUを使用することで何とかクリアしました。ここで厄介なのは、以上いずれのデータにおいても、EagleのDRC(デザインルールチェック)ではエラーにならないことです。DRCは設計中のデータに対してエラーをチェックするのであって、出力されたガーバをチェックするわけではありません。125mm設定であっても有効桁は十分ですし、それ以前にDRUの設定値にしたがって自動生成したデータがDRUを満たさないはずがありません。つまりユーザの設計ミス以外のエラーは検出できないのです。P板さんがチェックに使用しているツールと同じものが手元に無い以上、エラーがあるかどうかはデータを送ってみないとわからない、という情けない事態となります。0では、全面的な設計変更という最悪の事態が再び起こることを避けたかったので、次の2つの手を打ってみました。(1)ミリ単位でガーバを出力する。
(2)最小パターン幅・間隔を0
まずミリ単位のガーバ出力についてです。上記の通りインチ表現が原因のひとつと思われたので、EagleのLight Editionライセンスを購入した(有)サーキットボードサービスさんに相談してみたところ、ミリ単位で出力してくれるCAMファイルを提供していただくことができました。このCAMファイルは整数部3桁+小数部3桁の【ミリ】表現でガーバを出力します。
最小単位が0
0001インチ単位よりも倍以上細かな表現が可能になります。また設計をミリ単位で行っていることと併せて考えても、この方が誤差の少ない出力になると期待できます。
(なおヘルプの説明に従えば自分でこのCAMファイルを作ることも可能なようです)
その上で、パターン幅と間隔の最小値を0
たとえガーバをミリ単位で出力したとしても、上記のようなベタパターン生成などにおいて、ある程度の誤差発生はやむを得ないと思われます。
厳しいデザインルールで設計された基板を緩いルールに変更するのはRev5
0の時に懲りたので、当初から多少のマージンを見込んで0
130mm設定の基で設計することにしました。
パターンを引き終わった後、ベタパターンを0
127mm設定のDRUを使って生成し、ミリ単位のガーバを出力してP板さんに送ってみたのですが、残念ながらNGでした。
やはりガーバをミリ単位で生成するだけではダメということですね
130mm設定でベタを作らないとOKになりませんでした。
パターン設計を0
130mm下限にしておいて正解でした。下はその際のDRUファイルです。
dru (ファイルを保存してお使いください)
(私はガーバの専門家ではありません。
上記の説明中に適切でない部分があればご指摘ください)
とりあえず動作する程度までは実装しましたが、まだまだ作り込みが必要な段階です。いずれ公開しますのでもう少々お待ちくださいませ。
(参考のために現状のものでも良いという方はご連絡ください)
》メイキング − 製作途中の写真集
作業中、キリのいい時に撮った写真です。結構たくさん撮ったつもりだったのですが、今見返してみると全く網羅できてません。
まぁこれをそのまま真似する人は居ないと思いますが、何かのヒントかひらめきの種になれば
操作スイッチ用の追加工
これはヘッドフォンの外装部品(上の写真で"SONY"のロゴが入っている赤いパーツ)の裏面です。3個の操作スイッチを取り付けるための準備として追加工をしたところです。
取り付け位置のケガキをしたら四つ目キリでポンチ代わりのくぼみを付け、ピンバイスでまずφ2
0の下穴を開けます。
5のドリル刃で皿ザグリをし、最後にφ4
0で仕上げ穴を開けます。この仕上げ穴は裏側から、ドリル刃を直接手でもんでそっと開けるようにします。表から刃を立ててはいけません。
塗装がはげてしまうので
皿ザグリはスイッチのボディを落とし込むために必須です。
裏側から塗装面が透けて見えるくらいまで深くザグリましょう
併せて配線を落とし込むためのくぼみを彫刻刀で彫っておきます。
銀色のパーツへの追加工
これはイヤークリップのヒンジ部にある銀色のパーツです。この内側にスイッチの線を通しますので、干渉する部分をしっかり削り落とします。
操作スイッチの取り付け
スイッチの端子にあらかじめ配線材をはんだ付けしておき、透明タイプのエポキシで1個ずつ接着します。硬化したら保護のためにカプトンテープを貼っておきます。このスイッチと配線を仕込むのは、プラグコード巻取りボビンと赤いパーツの間のわずかな隙間です。組み立てた時にボビンと干渉しないように、隙間以上の出っ張り部分が無いよう注意深く仕上げます。十分な皿ザグリの深さとエポキシの適量加減がポイントです。
マイクロスピーカの取り外し
ヘッドフォンの左側のスポンジを外し、マイクロスピーカを取り外します。スピーカは本体内側(写真左)のリング部に複数あるツメでしっかり固定されています。このツメは後で利用しますので、壊さないように慎重に外します。
プラグコード巻き取りボビンの取り外し
スピーカを外したら、裏返して巻き取りボビンを外します。このボビン部分は後で元通りに戻しますので、部品を壊したり、失くしたりしないようにしてください。同時に、ゼンマイで手を切らないように注意してください。ボビンを外すときによくゼンマイがはぜてしまいます。
作業前には忘れずにゼンマイを緩めておきましょう
無事にボビンが外せたら写真の状態になります。
ロータリーコネクタ接点部品への追加工
プラグコード巻き取りボビンとヘッドフォン本体間はロータリーコネクタで電気的に接続されています。写真はその接触子ですが、この根元の立ち上がり部分を真ん中から折り返すように追加工します。左は未加工のもの、右は加工後です。3個の接触子全部を同様に加工します。この折り曲げ加工はバッテリをヘッドフォン本体にぴったりと収めるために必要な細工です。
スイッチ用配線の通線穴
クリップヒンジ部の脇のくぼみに、スイッチの配線(5本)を内側へ通すための穴を開けておきます(写真中央部)
内側から見たところ
プラグコード巻き取りボビンの再組立
ロータリーコネクタ接触子を追加工し取り付けたら、プラグコード巻き取りボビンを元通りに組み付けます。写真はスイッチ用通線穴付近のアップです。
本体内側の追加工
スピーカを取り外してできた空間に、バッテリや基板などがぴったりと収まるように追加工を施します。削りすぎたり、残すべき部分を折ってしまったりしないよう、細心の注意を払って少しずつ削っていきます。
本体内側の追加工−ツメの温存
マイクロスピーカがはめ込まれていたリング状の部分の内側には、スピーカを固定するためのツメが出ています。写真のように、基板の固定にはこのツメを利用します。基板の上面がちょうどツメにかかる高さに来て、かつツメと部品が干渉しないように、部品の配置や選定、基板の形状を工夫してあります。
外装部品の追加工
これはヘッドフォン表側の外周に位置する外装部品です。これにも銀色のパーツと同様、スイッチの配線を通すための逃げを作ります。
裏側から見たところ
ヘッドフォン表側の再組立
スイッチの配線5本がクロスしないように気をつけながら穴に通し、表側の外装部品を元通りにはめ込んでいきます。巻取りボタンの組み付けが難しいですが、無理をせず慎重に作業します。
またこの時、あらかじめゼンマイを巻いておくことを忘れずに
完了したら巻取り機構がちゃんと動作することを確認します。
バッテリの収まり具合の確認
バッテリの端子部を処理し、追加工した本体にすっぽり収まるかどうかを確認します。リング状の部分を支えている足の間にちょうどバッテリが納まるはずです。
実装が完了した基板
動作確認中の様子です。0のロゴが表示されています。
有機ELディスプレイの接続法
写真はバッテリを取り付ける前の状態です。基板中央の"T"字型に開いた穴にディスプレイコントローラのチップがすっぽり収まっている様子がわかります。さらにこの穴からディスプレイのFPCの端子側を引き出して、写真のように基板のエッジに直接はんだ付けします。このための準備として、ディスプレイ接続用の8個のスルホール(CN4)がちょうど半分欠けるまで、ヤスリで基板を削っておきます。この接続法は、FPCの端子部を限られたスペースで確実に接続するためにひねり出した、まさに"窮すれば通ず"という感じの苦肉の策です。
バッテリを取り付けたところ
シルクの位置に合わせて、バッテリを極薄の両面テープで固定し、本配線を施します。
基板の組込み
配線類を適切に処理したら、いよいよ基板を本体に組み込みます。
基板の固定−ツメによる固定(1)
その両側でツメが基板にかかっているのが見えます。
基板の固定−ツメによる固定(2)
およそ反対側の様子です。microUSBコネクタの両側に同じようにツメがかかっています。このように基板はヘッドフォン本体に"パチッ"とはまるようにしてあります。
スポンジへの追加工
有機ELディスプレイ画面の位置に合わせてスポンジを切り抜きます。でも切り抜いただけだと引張りが効かなくなるためスポンジの形状が保てません。
そこで、円形に切り抜いた0
3mm厚のPET材をスポンジの裏側に両面テープで貼り付けてあります。ディスプレイ表面の保護と合わせて一石二鳥です。スポンジに穴を開けるとmicroUSBコネクタが顔を出します。このような切抜きには眉はさみが最適です。写真はカードをセットした状態です。取り出しやすく、かつカードが耳たぶに当たらないように考えて配置してあります。有機ELディスプレイが付いているにもかかわらず、ついLEDも付けてしまいました。青、赤、緑の3個です。それぞれの意味は、青は2秒に1回一瞬光ることで電源ONを示します。赤は充電中を示し、緑はUSBバスパワー供給中を意味します。LEDも上記の有機ELディスプレイと同様に基板をヤスリで削っておき、その端面に表裏を渡す形で実装します。上面発光LEDで基板側面を光らせるための窮余の一策です。
0と厚さ比べ
できる限りの最適設計を試みた結果、ディスプレイを追加したにもかかわらず、Rev6
0よりもかなり薄く仕上がりました。このため装着感がずっと良くなりました。》賞をいただきました。
感激です・・・
さらに、授賞式の時にお会いした複数の方から「これ欲しいです」とか「作ってみたいんですけど」と言っていただけたことがとても嬉しかったです。皆さまありがとうございました。結構手間や費用がかかるのと、ハンダ付けが難しいことなどで、なかなかご要望にお応えし難くて本当にすみません。また「私は長いコードが嫌いなので」とお話しすると、「そうそう、私も嫌いなんです」と強くご賛同いただけたりもしました。あの長いコードをうっとおしく思っている方は少なからずいらっしゃるようです。応募のためにアップした動画です。ページの先頭へ戻る。
メイキング − 製作途中の写真集
FMアンテナ電動巻き取りメカ
0はとっても小さな、かわいいスピーカーボックス型です。Timpyシリーズのひとつとして、以前からスピーカが鳴るタイプを作りたいと思っていました。そんな折にネットで見つけたのが、この小さなアンプ付きスピーカです。商品名を『I・dear』といいまして、ご覧の通り、木製の素朴なエンクロージャがなんともいえない魅力を醸し出している逸品です。
ひと目見た瞬間に、『あ、これだ』と
このかわいい筐体の中に、プレーヤやFMチューナなど、Rev8
0相当の機能を詰め込みました。もちろん有機ELディスプレイも付いてます。でも、以前と違ってヘッドフォンが無いのでアンテナ線になるものがありません。そこで約1mの極細ステンレスワイヤを内部に巻き取っておき、手で引き出せるようにしました。デスクの脇から垂らしておくだけでアンテナとして十分機能します。で、引き出した後はどうするのかというと・・・モータで巻き取れるようにしてみました。
*とっても小さなスピーカーボックス型プレーヤ
携帯ストラップでぶら下げられるほど小さな木製スピーカボックスに、Rev8
0相当の機能を持たせました。
・有機ELディスプレイ付き
つまり、卓上や手のひらで鳴るFMラジオ付きMP3プレーヤです。サイズが小さいですから音質はそれなり、音量も小さいです。それでもがんばって鳴っている様子はとっても健気です。
改造前の外観:流用したアンプ付きスピーカ『I・dear』
木製の筐体がかわいいアンプ付きスピーカです。ストラップも付いてます。
詳しくは販売元のサイトへどうぞ
0用として、この木製エンクロージャとスピーカ、内蔵リチウムポリマバッテリを流用しました。もしも同様の改造を検討される場合には、作業中、特にエンクロージャを開ける作業において絶対に内蔵バッテリを傷つけないようにご注意ください。リチウムポリマバッテリの外装は軟らかいラミネートフィルムでしかありません。万一カッターの刃が刺さったりすると、爆発的発火などの重大な事故につながるおそれがあります。全てにおいて自己責任でお願いします。私は責任を負いません。前面(スピーカ側)に見た目の違いはありません。上面にはFMアンテナが追加されています。左はオリジナルです。オーディオ入力用/内蔵バッテリ充電用のミニジャックと、モニタLEDが付いています。操作用スイッチ3個は側面に配置しました。現在のところ、ふたの塗装と仕上げが未完です。曲データの記録メディアはmicroSDカードです。カードはここへセットします。FMアンテナは超極細のワイヤです。端のリングをつまんで手で引き出します。長さは約1mです。そのままぶらんと垂れ下がらせるとか、リングをどこかに引っ掛けるとかの使い方ができます。しまう時は内蔵のモータで巻き取ることができます。
詳しくはこちらへFMアンテナ電動巻き取りメカ
0とほとんど同じです。相違点は基板面積の制限によりパスコンを2個ほど省略したことくらいです。
生基板の仕上がり寸法は23
これでも十分小さいんですが、実際には出っ張っている部分をさらにヤスリで削って22mm×17mmにします。
ちょっと姑息ですが、趣味の世界ですから何でもアリ
アートワーク − はんだ面
お気づきでしょうか
この基板寸法だとどう考えても実装できないので、ジャンパ線でスタックすることにしました。実物の様子は下の写真をご覧ください。
*スピーカの駆動について
0ではヘッドフォンの代わりにスピーカをひとつ駆動することになります。
0などと比べて:
・スピーカ用のパワーアンプ
の2点が必要になります。いろいろ考えた結果、今回は幸いスピーカが小さいので、アンプを省略してVS1053bの出力で直接駆動することにしました。これによりBTLのような形で効果的にスピーカを駆動でき、同時にモノラル化も実現できました。直流カットのコンデンサも要りません。
*ところがトラップが・・・
上記の回路と設定で動作させてみたところ、MP3再生の時はちゃんと鳴るのですが、FMラジオに切り替えると微かな音しか出てきません。・・・あれこれ試行錯誤した結果、SM_DIFFビットの設定は録音時のモニタ出力には作用しないことがわかりました。上記の回路構成はこの機能を利用することで、VS1053bをあたかも電子ボリューム付きヘッドフォンアンプのように動作させることを意図しています。上記の通りスピーカはBTL接続になっていますから、SM_DIFFが機能しないとすると同相信号が全てキャンセルされてしまい、ステレオの差動分の微かな音しか出ないことになります。
》メイキング − 製作途中の写真集
左はP板さんから納品された状態の生基板です。これを右のようにヤスリで削ってから実装します。
この上にデコーダチップVS1053bとマイコン、FMチューナ、リチウムポリマバッテリ充電回路、USBインターフェース、ファームウェア書き込み/リアルタイムデバッグインターフェース、モニタLED3個、デジタル系3
P板さんで作る限り、両面板ではもう限界でしょう(笑)
実装が完了したところです。
所要時間は両面で4時間くらいでしょうか
もちろん手載せ・手ハンダです。microSDコネクタを取り付けると、こんな感じになります。裏側から見た様子です。
ケースへの追加工
0での最大のお楽しみは、この木製ケースの製作でしょう
写真は概ね細工が終わったところです。
裏ふたの材料
ケースの木材に近いものを求めてハンズへ
結果、色と木目の感じからこのチーク材にしました。0mmまでカンナで落としています。
裏ふたの製作
有機ELディスプレイをはめ込む部分は彫刻刀で削り込みます。・・・写真を撮るときスケールを置き忘れてしまいました。
大きく見えるかも知れませんが幅は23
操作スイッチの取り付け
ケースを十分に削り込んでおかないと内側に出っ張ってバッテリが納まらなくなります。前もって長めの配線材を取り付けておいたスイッチを5分硬化型のエポキシで1個ずつ固定していき、最後に念のためカプトンテープを貼って完了です。
基板の組み込み
配線を済ませ、基板をケースに収めた様子です。配線は基板が引き出せるように長めにしてあります。
バッテリの格納
バッテリはこんな感じで収まります。裏ふたはケースにぴったりとはまり込むように作ってあります。
裏ふたの固定法(1)
裏ふたはピンで留めるようにしました。
裏ふたの内側上下2箇所に、外径1
7mmの真鍮パイプをエポキシで接着します。
裏ふたの固定法(2)
ふたを閉じた時に真鍮パイプが来る位置をねらってケースに直径0
5mmの穴を開け、そこへ同じく直径0
5mmの真鍮棒を刺し込んで閂のように固定します。穴と棒の径が同じですが、ケースが木なのでこれでちょうど良い摩擦感が得られます。
棒の直径とパイプの内径の差は0
2mmしかありません。棒がスムースに刺さり、かつ裏ふたが目的の位置に固定されるには、ケースへ開ける穴位置の正確さがポイントなのは言うまでもありません。併せて、真鍮棒の端は丸く、真鍮パイプの内側の角は皿ザグリのようにそれぞれ削っておくことで、刺さる時の呼び込みを作ってあります。『もっと太いパイプにすれば良いのに』と思われるかもしれません。でもこれより太いものだと、ふたが閉まらないのです。それほど内部はギチギチです。
裏ふたの固定法(3)
真鍮棒を完全に押し込んだ様子です。棒の端がポチポチと見えています。ふたを外す時は、この棒の端をピンセットの先などで突き、反対側に出てきた部分を引き抜けばOKです。
》FMアンテナ電動巻き取りメカ
0は卓上ラジオとしても使えるようにFMチューナを内蔵しています。でも、この小さなケースにどうやってアンテナを設けるかは企画当初からの懸案でした。0まではヘッドフォンのネックコードをアンテナとして流用できたのですが、今回は頼れるものがありません。ラジオのイメージで真っ先に思いつくのはロッドアンテナですが、このケースは長手でもわずか30mmです。仮に携帯の地デジ用アンテナでも長すぎます。伸ばした時に約90cm、縮めた時に3cm・・・これは如何せん無理があります。
さんざん考えた挙句作ってみたのが、この垂れ下がり式ワイヤアンテナ
髪の毛より細い超極細ワイヤを本体内に収納しておき、ラジオを聴く時に手で引き出して使います。例えばデスクの端に本体を置いて、脇からワイヤを垂らしておく、といった感じです。これが思いのほか感度良好です。本当は天に向かってピンと立つアンテナにしたかったのですが、結局だらっとしたものになってしまいました。まあアンテナとしては十分なので良しとすることにします。
ところで、引き出したからには仕舞わないといけないわけで・・・
苦心の末にモータで巻き取る機構を作ってみました。スイッチ操作により、約1mのアンテナワイヤをスルスルと本体内に収納できる、小さな小さなメカです。
巻き取り動作の様子(動画その1)
完成したアンテナワイヤ巻き取り機構です。2mmしかありません。0内に残っている空間ギリギリの寸法です。
特に厚さ方向はこれでいっぱいいっぱい、0
1mmの余裕もありません。写真にて、左下へ伸びている線が基板のアンテナ端子へ接続される線で、右下への2本の線がモータ給電線です。アンテナワイヤの端は仮で結んであります。写真をクリックすると巻き取り動作の様子を動画で見ることができます。
巻き取り機構のカバープレートは0
1mm厚のステンレス板で作りました。ハサミ、ラジオペンチ、ピンバイスでの手加工です。カバープレートは表裏が繋がった1枚ものになっています。その繋がった部分、写真奥の丸くふくらんでいるところがモータが入るところです。曲げ加工が十分でないのでフリーな状態では少し開いていますが、ベースプレートにネジ止めするとモータが締め付けられて固定されるようになっています。左側に見える金色の突起は巻き取りギヤのシャフトです。併せてアンテナワイヤと電気的接続をとるための端子を兼ねています。ギヤシャフト兼アンテナ線接続端子はマックエイトのOX-301を切って作りました。
まずカバープレートに0
55mmの穴を開け、外側から深めの面取りをした後に短く切ったOX301を差し込み、ハンマーで叩いてカシメてあります。厚さに余裕が無いのでこれが考えうる唯一の固定方法でした。なおOX-301はエス・テックさんで調達しました。マックエイトの製品は面白いものが多いのですが、少量での調達が難しく残念な思いをすることが多いです。でも今回はエス・テックさんにて10本だけ購入することができたためにこの方法が採れました。少額にもかかわらず親切に対応していただきとても感謝しています。カバープレートを固定する部品、ベースプレートです。2mm厚のアクリルを切り出して作りました。大きな穴には巻き取りスプールとギヤが収まります。
巻き取りモータとウォーム
巻き取りモータにはシコー株式会社(旧シコー技研)のF7を使いました。
直径わずか3
2mmという極小サイズです。
その出力軸にM0
写真左上がオリジナル、右下が加工後です。3、歯数36のスパーギヤで代用です。小径の部分が黄色いのはカプトンテープが巻いてあるためです。
アンテナワイヤ巻き取りスプール(1)
約1mのワイヤを巻き取るための糸巻きにあたる部品です。6mm厚の片面銅張り生基板で作りました。右上に伸びている細い線がアンテナ線となるワイヤです。銅面と導通するように固定してあります。中央の穴部にあるS字のようなものは、スプールが回転しながらもカバープレート(2)で説明したシャフトと導通を確保するための接触子です。3mmのリン青銅の棒材を曲げて作りました。銅面に細いスリットを作って落とし込み、ハンダで固定してあります。S字にしてあるのは固定端と接触部の長さを稼ぐことでばね定数を小さくするためです。
アンテナワイヤ巻き取りスプール(2)
ワイヤを巻き取るための溝は、直径1mmの丸ヤスリで削って作りました。
アンテナワイヤ巻き取りスプールとウォームホイール
両者を組み合わせた様子です。ウォームホイールの歯がはみ出すようにスプールの径を決めてあります。ここで、この両者間がしっかりと固定されていないところがポイントです。アンテナワイヤを手で引き出す時、ウォームホイールはモータのウォームとかみ合っているので回転できません。そこでワイヤの張力によりスプールだけが滑って回転できる構造にすることで、ワイヤを手で引き出せるようにしてあります。この『滑り具合』は重要です。モータで巻き取る時は滑らずに、手で引き出す時は滑らなければなりません。しかし滑り始めるための力が大きすぎると、ギヤの歯飛びや破損のおそれがあります。この両者間の適度な滑り具合をどうやって作るかについてはかなり悩みました。現在はとりあえず両者間に挟まれるカプトンテープの巻き加減で実現してありますが、将来的には小径側ギヤの歯を利用した形に改良したいと思っています。仮でベースプレートに各部品を合わせてみた様子です。
カバープレートの取り付け
カバープレート裏面だけをネジ止めするとこんな感じです。見えにくいですが、ベースプレート右の端面からアンテナワイヤが出ているのがわかります。
カバープレートの固定にはM1
0の皿ネジを使いました。
入手したのがM1
0×4mmだったので、写真右の通り2mmに切って使用しています。
ちなみに同じM1
0でもナベ小ネジなら割と手に入りますが、M1
4未満の皿ネジはなかなか手に入りません。
今回はネジ頭を沈める必要があったので、皿ザグリ分も考慮してM1
0の皿ネジにこだわってみました。これは松本産業さんで調達しました。
ネジの首下を切る時に、あらかじめナットを入れておくのは定石ですよね
写真はこれまた特殊なM1
0のナットです。竹澤鋲螺さんで調達しました。
0の十字穴付きナベ小ネジ、左はM1
0の十字穴付き皿ネジです。ネジ頭の十字の大きさを比べると、皿のほうがとても小さいことがわかります。0の皿に合う+ドライバーが手に入らないのです。結局、東急ハンズで一番小さいドライバー"+00000"を購入し、それでも太くて入らないので先端を削って合わせました。
+ドライバーを作るのって難しいですね・・・
いつも見慣れたM3のネジと、そのドライバー(+の2番)を並べてみました。バケモノのようにデカイです。
0のタッピングネジ
ベースプレートにM1
0のタップを切るためのタッピングネジです。中心を狙って三角ヤスリで溝を入れて自作しました。アクリルにハンドタップでネジを切るとどうしても甘くなりがちなのですが、これだと好い加減の渋さが作れます。
アンテナ接続線の配線
シャフトOX-301をカシメた箇所にアンテナ接続線を接続します。OX-301は素材がリン青銅なのでハンダ付けができます。最後にカプトンテープで固定して完了です。
最初にアンテナ線として使用したのは、外径およそ0
09mmの7本よりステンレスワイヤです。27mmの7×7本よりワイヤ(写真左)をほぐして、中心部のまっすぐな7本束(同右)だけを使用しました。ところが、最初のステンレスワイヤは結構クセが付きやすく、ちょっと擦れるとすぐにカールしてしまうのです。そして一度付いたクセは取れません。これは実用上厳しいです。そこで何か使えそうなものは無いかと探していたところ・・・見つかったのが何とこれです。鮎釣り用のメタルラインと呼ばれるものらしく、その名の通り金属ワイヤなのです。私は釣りを嗜まないので、このようなものがあることを全く知りませんでした。試しに最も細いと思われる2種類を買ってみました。実物を見ると、私が“釣り糸”に対して持っていたイメージを完全に打ち砕く細さでした。
最初のアンテナワイヤでも上の写真の通り十分細いと思っていたのですが、この釣り糸は太い方(0
それほど細いにもかかわらず、しなやかで強く、適度にコシがあります。少々擦れてもクセが付きません。・・・と、肝心なことを忘れてました。アンテナとして使うのです。落ち着いてテスターを当ててみると、ちゃんと導電性があることが確認できました。
アンテナワイヤの太さ比べ
04号の方を使うことにしました。写真は新旧太さ比べです。
左のハンダが一番太いですが、それでもφ0
右の方でくるくると丸まってるのがカールしてしまった初期型ワイヤで、本体から真っ直ぐ出ているのが新しいワイヤ(釣り糸)です。これでもちゃんとアンテナとして機能しました。巻き取りもスムースです。
でも、ちょっと細すぎたかも・・・(笑)
巻き取り動作の様子(動画その2)
本体に組み込んで動作させた様子をビデオで撮ってみました。上から見下ろしている感じです。停止モードの時に"下スイッチ"を押すと巻き取るようになっています。なお、この時のワイヤは初期型です。写真をクリックしてください。ページの先頭へ戻る。このページは移転しました。ブックマークされている方は更新をお願いします。
新しいページはこちら VS1011e 日本語データシート私家版
【注意】このページの内容の一部または全部を断りなく複写複製することを禁じます。必ず事前にご連絡ください。メール・アドレスはトップ・ページにあります。【免責事項】この文書の内容により利用者に損害が生じたとしても著作権者は責任を負いません。この文書の内容の正確性は保障されません。また断りなく変更される場合があります。
・チャンネル間で位相差のない高音質ステレオDAC
・30Ω負荷を駆動できるステレオ・ヘッドフォン・アンプ
・アナログ用とディジタル用に分離された2
6Vの動作電源
・シリアル方式のコントロールおよびデータ用インターフェース
・スレーブ・コプロセッサとして使用可能
・ユーザ用のコード/データRAMを5
・特殊なアプリケーション用のSPIフラッシュ・ブート
・ソフトウェアと汎用I/O端子4本により新機能を追加可能
高速かつ低消費電力のDSPコアVS_DSP4の他,ワーキング・メモリ,ユーザ・アプリケーション用の5KiBインストラクションRAMと0
5KiBデータRAM,内部コントロール用およびデータ入力用の各シリアル・インターフェース,汎用I/O端子4本,高品質の可変サンプルレート対応ステレオDAC,ヘッドフォン・アンプ,グランド・バッファを内蔵しています。VS1011eは,スレーブとして動作するシリアル・バスを通して,オーディオ・データのビットストリームを受信します。そのビットストリームはまずデコードされ,ディジタル・ボリューム・コントロールを通った後,18ビット・オーバサンプリング・マルチビット・シグマデルタDACへと送られます。デコード処理はシリアル方式のコントロール・バスによって制御されます。さらに,基本的なデコード処理に加えて,例えばDSPエフェクトのような特定用途向けの機能をユーザRAM領域へ追加することも可能です。
3 用語の定義
4 特性および仕様
5 パッケージと端子の説明
2 端子の説明
2 サポートされるオーディオ・コーデック
1 本章を必要とするユーザ
12 本文書の改版履歴
注意:もしレイヤIおよびレイヤIIのデコード機能を有効にする場合には,それらのフォーマットを使用することにより生じうる全ての特許問題について責任を負う必要があります。0レイヤIIIのジョイント・ライセンスの範囲は,レイヤIおよびIIに係る特許の全てを網羅していません。特性や図は変更される場合があります。
3 用語の定義
VS_DSPのインストラクション・ワードは32ビット幅,データ・ワードは16ビット幅です。
4 特性および仕様
6Vを超えてはいけません。アナログおよびディジタル・グランド[1][1] ラッチアップ耐性向上のため,両者はできるだけデバイスの近くにて接続してください。5%音程がずれます。
全高調波歪み
リニア位相からの位相偏移
[1] モノラル差動出力形式ならば3
2V得られます。[2] AOLRはこの値より小さくできますが,歪み特性に関して標準的な性能が得られなくなります。6Vを超えてはいけません。
XRESETインアクティブからソフトウェア・レディまでの時間
パワー・オン・リセット時のDVDD立上り時間
それまではデータ,コマンドともに何も送信しないでください。
5 パッケージと端子の説明
fiにあります。
2 端子の説明
アクティブ"L"の非同期リセット入力
入力バスのデータ・リクエスト
不使用ならDVDDへ接続すること
[1] Newモードの場合は"/"の左側の機能が有効になり,互換モードでは右側の機能が有効になります。もしプルアップすると,SPIブート機能が有効になります。4項を参照してください。
ピンのタイプ
入力バスのデータ・リクエスト
アクティブ"L"の非同期リセット入力
[1] Newモードの場合は"/"の左側の機能が有効になり,互換モードでは右側の機能が有効になります。もしプルアップすると,SPIブート機能が有効になります。4項を参照してください。
ピンのタイプ
グランド・バッファGBUFは,ヘッドフォンのコモン電圧(1
その場合は出力ラインに必要な直流カット用大容量コンデンサを省略できるため,VS1011eのオーディオ出力端子とヘッドフォン・コネクタとの直結が可能になります。SPIはもともとモトローラのデバイスで使われたバスのひとつです。
4項),およびシリアル・コントロール・インターフェースSCI(7
5項)の両方に,このバスが採用されています。アクティブ"L"のチップ・セレクト入力です。この端子を"H"にするとシリアル・インターフェースは強制的にスタンバイ・モードになり,その時点でのオペレーションは終了されます。さらにシリアル出力(SO端子)は強制的にハイ・インピーダンス状態になります。代わりにそれに相当する信号が,XCSの反転により内部的に生成されます。シリアル・クロック入力です。このクロックは内部でレジスタ・インターフェースのマスタ・クロックとしても使われます。SCKは断続的,連続的のどちらも可能です。いずれの場合でも,XCSが"L"になった後の最初の立上りエッジが1番目のビットの取り込みタイミングとなります。シリアル入力です。チップ・セレクトが有効ならば,SCKの立上りエッジにてSIがサンプルされます。シリアル出力です。リード動作時,SCKの立下りエッジにてデータがシフト出力されます。ライト動作においてSOはハイ・インピーダンス状態を保持します。アクティブ"L"のチップ・セレクト入力です。この端子を"H"にするとシリアル・インターフェースは強制的にスタンバイ・モードになり,その時点でのオペレーションは終了されます。さらにシリアル出力(SO端子)は強制的にハイ・インピーダンス状態になります。SDI用のチップ・セレクトはありません。SDIは常に有効です。SDIデータはBSYNCの立上りエッジをもって同期が取られます。シリアル・クロック入力です。このクロックは内部でレジスタ・インターフェースのマスタ・クロックとしても使われます。SCKは断続的,連続的のどちらも可能です。いずれの場合でも,XCSが"L"になった後の最初の立上りエッジが1番目のビットの取り込みタイミングとなります。シリアル入力です。シリアル出力です。リード動作時,SCKの立下りエッジにてデータがシフト出力されます。ライト動作においてSOはハイ・インピーダンス状態を保持します。シリアル・データ・インターフェースはスレーブ・モードで動作します。したがってDCLK信号は外部から供給する必要があります。
データ(SDATA信号)を取り込むタイミングは設定によりDCLKの立上り,立下りのどちらでも可能です(8
6項)によりMSbファーストかLSbファーストを選択できます。
(訳注:"バイト同期"とは,データの送り手と受け手の両者間でビット列のバイト境界を一致させることを意味します)
バイトの転送途中でXDCS(またはXCS)の状態を変化させてはいけません。例えばデータブロックの送出ごと,または数Kバイトの送出ごとにXDCS(またはXCS)のレベルを遷移させ,ホストとVS1011eの同期を確実なものにしてください。これは,仮にVS1011eが実装された基板上でグリッチなどが発生したとしても,常にデータ同期を維持するために必要です。新規の設計ではVS1002ネイティブモードの採用が推奨されます。この方が後述のBSYNC信号を生成する方法よりも容易に実現できます。VS1001互換モードの場合には,入力されるビット・ストリームのバイト境界に正しく位置合わせされたBSYNC信号を生成する必要があります。BSYNC信号が"H"となった最初のサンプリング・エッジ(極性設定により立上りまたは立下り)でのデータが,バイトの最初のビットとみなされます。このビットはLSbファースト設定の場合はLSbとして,MSbファースト設定の場合はMSbとして扱われます。そしてバイトの最終ビットを受信したとき,BSYNCが"H"のままであった場合には,続く8ビットも有効なデータとして引き続き取り込まれます。新規設計でVS1001互換モードを採用することは推奨されません。この時送り手は新たなデータ転送を開始してはいけません。32バイトの安全領域があるため,32バイトまでならDREQの状態をチェックすることなく連続して送ることが出来ます。これは低速なマイクロコントローラによるVS1011eの制御をより容易にします。注意:DREQはバイトの転送途中などを含め不特定のタイミングでレベルが変化します。したがってDREQは,次のバイト・データを送出できるかどうかを決めるためだけに使用してください。すでに開始したバイト転送を中断してはいけません。5項)のプロトコルは,常にインストラクション・バイトとアドレス・バイト,そして16ビットのデータ・ワードで構成されます。リード,ライトの各オペレーションにより,各レジスタの内容を読み,書きできます。データ・ビットは常にクロックの立上りエッジでサンプルされます。したがってデータの更新はクロックの立下りで行うようにして下さい。各バイトは常にMSbファーストで送受信されます。オペレーションは8ビットのインストラクション・バイト(オペコード)の値により規定されます。サポートされているインストラクションはレジスタのリードとライトです。次の表を参照してください。"L"の継続時間はオペレーションによって異なります。まず,XCSを"L"にしてデバイス・セレクトを有効にします。次に,リード・オペコード(0x3),8ビットのレジスタ・アドレス,2バイトのダミー・データを順次SIへ送信します。ダミー・データの値は何でもかまいません。図7のとおり,このダミー・データの送出と並行して,送られたアドレスに対応するレジスタの内容16ビットが,SO端子からシフト出力されます。シフト出力の完了後はXCSを"H"に戻して下さい。このリード・オペレーションの内部処理時に,わずかの期間DREQが"L"になります。これは非常に短期間なので,特に配慮は必要ありません。まず,XCSを"L"にしてデバイス・セレクトを有効にします。次に,ライト・オペコード(0x2),8ビットのレジスタ・アドレス,2バイトのライト・データを順次SIへ送信します。最終クロックが送られた後に,ライト・シーケンスを終了させるためXCSを"H"にして下さい。
この実行時間はレジスタとその値によって変動します(詳細は8
もしもその最大時間よりも,マイクロコントローラによる次のSCIコマンドまたはSDIバイト送出のほうが速い場合,DREQが"H"に戻るよりも前にそのSCI/SDIオペレーションを完了させてはいけません。
(訳注:この説明は7
1項の最後の記述と矛盾します。図10と図12のタイミング規定と併せると,ここでの説明の方が正しいと思われます。しかしもし期待通りの動作が得られないときには,DREQ="L"とSCI転送がオーバラップしないようにしてみてください。容量が少ない場合,この時間は短くなります。ライト・オペレーションの最高速はXTALIの1/4です。注意:負数は信号同士の変化する順番が図の規定と逆になることを表します。図10は連続する2回のSCIオペレーションを示しています。各オペレーションごとにxCSを"H"にして,インアクティブ状態を作る必要があることに注意してください。併せてDREQも図の要件を満たす必要があります。図11のとおり,SDIデータはxCSの立上りエッジをもって同期が取られます。しかし個々のバイトごとに同期を取る必要はありません。図12はSDIオペレーション間にSCIオペレーションを差し挟む場合を示しています。xCSエッジはSDIおよびSCIの両方に対して同期を取るために使用されます。DREQについても図の要件を満たすようにしてください。加えて,MPEG,WAV PCM,WAV IMA ADPCMオーディオのデコードに必要なプログラムおよびデータ・メモリ,シリアル・インターフェース,マルチ・レートのステレオ・オーディオDAC,アナログ出力アンプとフィルタを全て内蔵しています。5レイヤIIIについて,レイヤIIIの可変ビット・レート(VBR)を含む全てのビットレート,サンプルレートを再生できます。ただしレイヤIおよびIIをデコードするには,別途その機能を有効化する必要があります。
2 サポートされるオーディオ・コーデック
サポートされるフォーマット
存在するがサポートされないフォーマット
テストされていないフォーマット
存在しないフォーマット
注意:全てのビットレートおよびサンプル・レートに対して低音強調と高音制御を加えたデコードを行うためには,最低でも24
0MHzの外部供給クロックとクロック・ダブラの組み合わせ)が必要です。最も一般的なRIFF WAVサブフォーマットがサポートされています。
16ビットおよび8ビット,48KHz以下任意のサンプルレート
48KHz以下任意のサンプルレート
MP3モードのサポート用
まず,SDIバスからMPEGまたはWAVのオーディオ・データが入力され,デコードされます。デコード後,SCI_AIADDRが"0"でない場合は,そのレジスタが指すアドレスからアプリケーション・コードが実行されます。次にデータは,SCI_BASSの設定に基づいて,低音および高音強調ユニットへと送られ,さらにボリューム・コントロール・ユニットを経て,データはオーディオFIFOへ格納されます。
オーディオFIFOに格納されたデータは,オーディオ割り込み(10
1項参照)により読み出され,サンプル・レート・コンバータおよびDACへと送られます。サンプル・レート・コンバータは各種サンプル・レート信号をCLKI/512へと変換し,DACへ送ります。DACでステレオのアナログ信号に変換された信号は,最後にヘッドフォン・アンプで増幅されます。シリアル・データ・インターフェースは,MP3データおよびWAVデータを転送するためのインターフェースです。併せて,9章で説明する各種テストの実行時にも使用されます。シリアル・コントロール・インターフェースはSPIバス規格と互換性があります。転送されるデータは常に16ビットです。VS1011eは,このインターフェースを通した各種レジスタへのリード,ライトによって制御されます。このコントロール・インターフェースにより,主に次の要素が制御されます。
・オペレーション・モードやクロック,組み込みエフェクト類の制御
・ステータス情報,ヘッダ情報へのアクセス
・エンコード・データへのアクセス
・ユーザ・プログラムのアップロード
・入力データの供給
内蔵の低音/高音強調
RAMリード/ライトのベース・アドレス
アプリケーションの開始アドレス
[1] これはレジスタに値を設定した後,DREQが"L"を保持する時間(実行時間)の最大値です。実行時間100クロック・サイクル未満のレジスタ・ライトについては,DREQのチェックを省略してもかまいません。[2] さらにユーザ・アプリケーションの実行時間を加える必要があります。[3] この値はファームウェアにより直ちに0x28に更新されます。(訳注:ここでの"ファームウェア"とはVS1011eに元々組み込まれている内蔵プログラムのことです。もしSCIライトが完了したときDREQが"L"ならば,DREQはそのライト後そのまま"L"を保持することに注意してください。
通常の同相オーディオ
左チャンネルを反転
リセットしない。リセットする。
WAVデコードの中断
SPIチップ・セレクトの共用
SM_DIFFをセットすると左チャンネル出力が反転されます。ステレオ入力の場合,仮想的なサラウンド効果が得られます。モノラル入力の場合には,左右両チャンネル出力を使った差動出力が簡単に得られます。注意:もしレイヤIおよびレイヤIIのデコード機能を有効にする場合には,それらのフォーマットを使用することにより生じうる全ての特許問題について責任を負う必要があります。0レイヤIIIのジョイント・ライセンスの範囲は,レイヤIおよびIIに係る特許の全てを網羅していません。SM_RESETに"1"をセットすると,デバイスはソフトウェア的にリセットされます。このビットは自動的にクリアされます。7項を参照してください。このモードにおいては,データをできるだけ一定の間隔(かつ512バイト未満のデータブロックごとが適当)で送出してください。VS1011eは再生速度を5%以内で変動させ,内部バッファの使用量が1/2を維持するように調整します。
最高の音質を得るためには,平均転送速度の誤差を0
5%以内に抑えてください。またビットレートは160kbit/sを超えないようにするとともに,VBRは使わないでください。SM_DACTはSDIにおけるデータ・クロックのアクティブ・エッジを定義します。もし"0"ならデータは立上りエッジでサンプルされ,"1"なら立下りエッジでサンプルされます。SM_SDIORDを"1"にすることにより,SDIデータのビットの並びを逆,すなわちビット0が最初に送られ,ビット7が最後となる順番にすることができます。ただしバイトの並びは変わりません。またこの設定はSCIバスに影響を与えません。2項を参照してください。この機能を使う場合には併せてSM_SDINEWがセットされている必要があります。2項を参照してください。SCI_STATUSはVS1011eの現在の状態を示すとともに,グリッチ音が生じないシャットダウン手段をユーザに提供します。通常このビットは内蔵のシステム・ファームウェアによって制御されます。しかし,パワー・オフ時の過渡状態を最小限に抑えたい場合には,まずこのビットをセットし,さらに最低数msec待ってからデバイスをリセットします。
このビットはシステム・ファームウェアが使用します(ユーザは使えません)
SS_AVOLはアナログ・ボリュームを制御します。
このビットはシステム・ファームウェアが使用します(ユーザは使えません)
低音強調VSBEは,クリッピングを生じさせることなくヘッドフォンを最大限に生かす強力な低音域増強DSPアルゴリズムです。5倍位を目安に設定してください。注意:VSBEはクリッピングの発生を抑えようとするので,最大音量に対して余裕を持ったボリューム設定でないと,ダイナミックな音源の低音を十分に強調することはできません。また音源そのものに強調すべき低音成分が含まれている必要があります。両者は同時に使用できます。576MHzでない場合の周波数を設定するレジスタです。ハードウェア的に動作可能な上限値はありますが,設定できる値の範囲は0〜32767です。576MHzよりも低速なクロックの場合,全てのサンプル・レートに対応することはできなくなります。5%音程がずれてしまいます。SCI_CLOCKFのMSBに"1"をセットすると,次回サンプル・レートが設定された際に内蔵のクロック・ダブラが有効になります。注意:SCI_CLOCKFはオーディオ・データのデコード開始に先立って設定されなければなりません。そうでない場合,サンプル・レートが正しく設定されません。したがってこの周波数の場合,SCI_CLOCKFは設定する必要はありません。正常なデータをデコードしている時,その時点までのデコード時間を秒単位で表した値がこのレジスタに入ります。ユーザによりこの値を書き換えることは可能です。しかしその場合,新しい値により2度書き込みを行う必要があります。正常なデータをデコードしている時,このレジスタSCI_AUDATAのビット15:1とビット0のそれぞれに,現在のサンプル・レートおよびチャンネル数が入ります。ビット15:1にはサンプル・レートの1/2の値が入り,ビット0はモノラルなら0,ステレオなら1が入ります。このレジスタを書き換えると,実行中であってもサンプル・レートが変更されます。しかしステレオ・モードは変更されません。SCI_WRAMは,アプリケーションプログラムとデータを,それぞれインストラクションRAMおよびデータRAMにアップロードするために使われます。なおSCI_WRAMのリード/ライト1回で転送できるのは16ビットであり,インストラクション・ワードは32ビットなので,インストラクション・ワードの場合には連続2回のリード/ライトが必要です。バイト順はビッグ・エンディアン(MSBが先)です。ワードのリード/ライトごとに内蔵のアドレスポインタが自動インクリメントされます。VS1011eをリセットした直後は,この両レジスタの内容は0で初期化され,データが未検出であることを示します。アプリケーション・コードを使用しない場合には,このレジスタへの書き込みをしないままにするか,もしくは0で初期化します。SCI_VOLはプレーヤのボリュームを制御します。
左右各チャンネルに対して,それぞれ0〜254の範囲で値を設定でき,その値は最大音量からの減衰量を0
5dB刻みで表したものとなります。左チャンネルの設定値は上位バイト,右チャンネルは下位バイトに設定します。
例:左チャンネルのボリュームを-2
なお,起動時の設定はボリューム最大ですので注意してください。ソフトウェアをリセットしてもボリューム設定はリセットされません。576MHzを標準とする単一のマスタ・クロックで動作します。外部回路からのクロック入力(XTALI端子に接続),もしくは内蔵の発振回路と外付けクリスタルの組み合わせ(XTALI,XTALO端子に接続)が可能です。
内蔵のクロック・ダブラを併用することで,12
576MHzは,すべてのコーデックとサンプル・レート,ビットレートに対して高音および低音強調処理を加えても,高音質のオーディオ出力を得るために十分な周波数です。XRESET信号を"L"にするとVS1011eはリセットされ,すべてのコントロール・レジスタと内部状態が初期化されます。XRESET信号はいずれのクロックに対しても非同期です。またリセット・モードはフル・パワーダウン・モードとしても機能します。この時,VS1011eのディジタル部とアナログ部の両方とも最も低消費電力の状態になり,クロックは停止します。
ハードウェア・リセット後,またはパワー・アップ時,ユーザはデコードを開始する前に,まずボリューム設定SCI_VOLやSCI_CLOCKF(入力クロック24
576MHzでない場合)などの基本的なレジスタを設定する必要があります。時としてソフトウェア的なリセットが必要になることがあります。1項参照)のビット2をセットすると実行できます。セット後,2μs以上待ってから,DREQの状態をチェックしてください。そしてDREQが"H"に立ち上がれば,通常の再生動作が可能となります。もし低ビットレートのデータ・ストリームを使用していて,ソフトウェア・リセット時に音声出力の最後尾が途切れないようにしたい場合には,リセットをかける前に,そのデータ・ファイルの後に続けて2048個の0をSDIへ送信してください。SPIブート時には,次の表のとおり,端子の機能が一部変更されます。使用できる外部メモリはSPIバス型のシリアルEEPROMで,16ビット・アドレスを持つもの(すなわちメモリサイズは最低1KiB)です。
シリアルの転送速度は24
正しい記録フォーマットはVS10XXのアプリケーション・ノートを参照してください。これがVS1011eの通常の動作モードになります。SDIデータが順次デコードされます。デコードされたサンプル値は,内蔵のDACによりアナログ信号に変換されます。またデコードすべきデータ入力がない場合は,VS1011eはアイドル・モード(デコード時よりも低消費電力の状態)へと移行し,有効なデータが入力されるのを待ちます。VS1011eへWAVファイル・ヘッダを送ることにより,PCMデコーダとしても使用することができます。8ビット・リニアまたは16ビット・リニア・オーディオが,モノラル,ステレオともにサポートされます。VS1011eにはメモリ・テストやSCIバス・テスト,正弦波テストといったいくつかのテスト・モードが用意されています。これらのテストはいずれも同様の手順で開始されます。それはまずハードウェア・リセットの後,SM_TESTSをセットし,SDIバスにテスト・コマンドを送信することです。テスト・コマンドは4バイトの特別なコマンド・シーケンスと,それに続く4バイトの0です。それぞれ以下で説明します。
(訳注:正弦波テストでの実験によれば,上記のハードウェア・リセットはソフトウェア・リセットでも代用できました)
ここでnは正弦波を定義するための値で,次のように定められます。出力される正弦波の周波数Fは次式で求められます。注意:正弦波テストの信号はディジタル・ボリューム・コントロールを通ります。したがって各チャンネルを個別にテストすることも可能です。このテストはチップ製造時の検査用です。このシーケンスの後,200000クロック・サイクル待ってください。その値の中で"1"がセットされたビットの位置を次の表に当てはめて結果を解釈します。メモリ・テストはRAMの内容を書き換えますので注意してください。ここでn-48がテスト対象のレジスタ番号になります。これにより指定されたレジスタの内容がSCI_HDAT0にコピーされます。
1 本章を必要とするユーザ
ユーザが例えばDSPエフェクトのような独自の機能をVS1011eに追加したいと思うなら,そのためのソフトウェアが必要になります。しかし大部分のユーザにおいては,独自のプログラムを書くことや,またはこの章の内容について,心配する必要はありません。その中にはVLSI Solutionのウェブ・サイトからソフトウェア・プラグインをダウンロードするだけの人も含まれます。
(以下この章は省略)
この章ではVS1011の世代間での相違点について説明します。
・デコードの高速化:コーデック,ビットレート全種類に対して低音+高音制御を加えた処理をCLKI=24MHzで実行可能
ラウドネス・プラグインは不要
・SCI_WRAMを使ってメモリおよびレジスタ空間からのリードが可能(8
5のレイヤIIIのデコードがビットエラーに対してより強固に
5のデコードの互換性を向上
・ラウドネス・プラグインに代えて,内蔵の低音強調と高音制御を使用してください。ラウドネス・プラグインも使用できますが,内蔵のものの方がより高速です。
12 本文書の改版履歴
この章では,この文書の重要な変更点について説明します。
暫定の記述を削除
・4章の各表に正規の値を設定
2項のサポートされるオーディオ・コーデックについて,より明確となるように記述を更新
・・・本文ここまで
誤訳など,お気づきの点がございましたらお知らせください。掲示板はこちらです。なお,これはVS1011eを使う上で最低限必要な資料である「データシート」です。実際にプレーヤを作るにはさらに情報が必要かと思います。以下に,次のステップとなる情報源を挙げておきます。こちらはプレーヤを作る上での方法や注意点などをより具体的に説明しています。例えば,以下はその第5章です。8章の説明にしたがってVS10xxに電源を入れます。
クロックが24
もしクロック・ダブラを使用し,かつSCI_CLOCKFへの設定を直ちに有効にしたい場合には,任意のサンプル・レートをSCI_AUDATAにライトして下さい。
以後,より高速なSPIの転送速度が使用できます(12章参照)
DREQに関するルールを守りながら,VS10xxへのオーディオ・ファイルの転送を開始します。曲データの転送終了後,未再生のオーディオ・データが残っていないことを確実にしたい場合には,さらに2048個の0をSDIへ転送して下さい。もしユーザ・プログラムを有効にしているならば,AIADDRに0をライトして無効にします。ステップ3へ戻ります。その他アプリケーション・ノートはここにあります。デバイス・メーカ自身によって作成された処理例ですので,とても参考になります。回路図なども公開されています。△ページの先頭へ戻る。
*本バージョンでの変更点について
10の変更箇所は赤字にしてあります。些細なものも含めて全部で64箇所あります。その内,旧バージョンでの経験がある方はこことここについて要チェックかもしれません。【注意】このページの内容の一部または全部を断りなく複写複製することを禁じます。必ず事前にご連絡ください。メール・アドレスはトップ・ページにあります。【免責事項】この文書の内容により利用者に損害が生じたとしても著作権者は責任を負いません。この文書の内容の正確性は保障されません。また断りなく変更される場合があります。
・以下の各フォーマットをデコード可能 −
・MP3およびWAVのストリーミング再生をサポート
・チャンネル間で位相差のない高音質ステレオDAC内蔵
・なめらかなボリューム調節を可能にするゼロクロス検出機能
・30Ω負荷を駆動できるステレオ・ヘッドフォン・アンプ
・外付けDAC用のI2Sインターフェース
・アナログ用,ディジタル用,I/O用のそれぞれに分離された電源系
・ユーザが利用可能なコード/データ用RAMを内蔵
・シリアル方式のコントロールおよびデータ用インターフェース
・スレーブ・コプロセッサとして使用可能
・特殊なアプリケーション用のSPIフラッシュ・ブート
・デバッグに便利なUART内蔵
・ソフトウェアと最大8本の汎用I/Oピンにより機能追加が可能
高性能かつ低消費電力の独自DSPコアVS_DSP4を中心に,ワーキング・データ・メモリ,内蔵デコーダと並行して動作可能なユーザ・アプリケーション用16KiBインストラクションRAM+0
5KiBデータRAM,内部コントロールおよびデータ入力のためのシリアル・インターフェース,最大8本の汎用I/Oピン,UART,高品質の可変サンプル・レート対応ステレオADC(マイク1系統,ライン1系統,ライン+マイク各1系統,ライン2系統のいずれか)とステレオDAC,ヘッドフォン・アンプ,グランド・バッファを内蔵しています。VS1053bは,スレーブとして動作するシリアル・バスを通して,オーディオ・データのビット・ストリームを受信します。そのビット・ストリームはまずデコードされ,ディジタル・ボリューム・コントロールを通った後,18ビット・オーバサンプリング・マルチビット・シグマデルタDACへと送られます。デコード処理はシリアル方式のコントロール・バスによって制御されます。また基本的なデコード処理に加えて,例えばDSPエフェクトのような特定用途向けの機能をユーザRAM領域へ実装することも可能です。オプションとして,ディジタル著作権管理や機器の個体識別などに利用できる固有のチップIDを製造時にプログラムして提供することが可能です。
3 用語の定義
4 特性および仕様
5 パッケージとピンの説明
2 サポートされるオーディオ・コーデック
6 サポートされるWMAフォーマット
1 クロックについて
5 再生とデコード
1 ファイル全体を再生する。
2 再生の中断
4 無音での早送り/巻戻し
5 正しいデコード時間を維持するには
6 サンプル・レートについて
7 録音モニタのボリューム
5 新しい正弦波およびスイープ・テスト
1 本章を必要とするユーザ
6 割り込みと動作
12 本文書の改版履歴
注意:もしレイヤIおよびレイヤIIのデコード機能を有効にする場合には,それらのフォーマットを使用することにより生じうる全ての特許問題について責任を負う必要があります。0レイヤIIIのジョイント・ライセンスの範囲は,レイヤIおよびIIに係る特許の全てを網羅していません。本製品はMicrosoftが所有する特定の知的所有権により保護されており,同社によるライセンスがない限り本製品の使用や更なる頒布はできません。htmを参照してください。
我々の知る限り,最終製品が顧客ライセンスを別途必要とするであろう特定のフォーマット(MPEG1
MPEGレイヤIおよびIIのデコーディングはデフォルトで無効になっており,WMAとAACフォーマットを除外することはSCI_HDAT1レジスタの値を用いることで容易に実現できます。併せてPSおよびSBRのデコーディングも個別に無効化が可能です。特性や図は変更される場合があります。[訳注] 本バージョンから暫定版の注記が削除され,正式版となりました。
3 用語の定義
VS_DSPのインストラクション・ワードは32ビット幅,データ・ワードは16ビット幅です。
4 特性および仕様
[1] これを超える電流はラッチアップの原因となります。6Vを超えてはいけません。アナログおよびディジタル・グランド[1][1] ラッチアップ耐性向上のため,デバイスにできるだけ近い箇所にて両者を接続してください。65Vのいずれかにデバイス内部で切り替えられます。2項を参照してください。
したがって,サンプル・レート48KHzを本来の速度で再生するためには,XTALIは最低でも12
CLKIが最大値を超えないように注意して設定してください。[訳注1] 本文書ではこの表記が頻繁に出てきます。
とりあえず表記法は原文のままとしますが,読む際には"1
0倍"と読み替えると良いでしょう
全高調波歪み
第3次高調波歪み
リニア位相からの偏移
マイクロフォン入力全高調波歪み
マイクロフォン入力インピーダンス,1ピンあたり
ライン入力全高調波歪み
[1] モノラル差動出力接続ならば3
0V得られます。[2] AOLRはこの値より小さくできますが,歪み特性の標準値が得られない場合があります。[3] 振幅が標準値を超えると高調波歪みが増加します。6Vを超えてはいけません。
XRESETインアクティブからソフトウェア・レディまでの時間
パワー・オン・リセット時のCVDD立上り時間
それまではデータ,コマンドともに何も送信しないでください。
5 パッケージとピンの説明
fiにあります。
差動マイク入力(−),バイアス付き
アクティブ"L"の非同期リセット入力
コアおよびI/Oグランド
入力バスのデータ・リクエスト
コアおよびI/Oグランド
不使用ならIOVDDに接続すること
グランドへの接続不可
[1] Newモードの場合は"/"の左側の機能が有効になり,互換モードでは右側の機能が有効になります。[2] プルダウン抵抗が無い場合はSPIブートが試行されます。9項を参照してください。13項を参照してください。
ピンの種類:
コアおよびI/Oグランド・ピン
図中の注1(note1):マイクロフォン入力とライン入力のどちらも接続可能ですが,両方を同時に接続することはできません。
コモン・バッファGBUFはヘッドフォンのコモン電圧(1
その場合は出力ラインに必要な直流カット用大容量コンデンサを省略できるため,VS1053bのオーディオ出力ピンとヘッドフォン・コネクタとの直結が可能になります。いかなる場合でもGBUFをグランドに接続してはいけません。もしGBUFを使用しない場合にはLEFTおよびRIGHT出力にカップリング・コンデンサを接続してください。またGBUFを使用していなくてもその安定状態を維持するために抵抗およびコンデンサが必要です。詳しくはアプリケーション・ノートを参照してください。不使用のGPIOピンは抵抗でプルダウンしてください。ライン入力およびマイクロフォン入力を使用しない場合,該当ピンはオープンにします。XTALOに他の負荷を接続しないでください。
SPIは,元々モトローラのデバイスで使われ始めたバス方式で,VS1053bのシリアル・データ・インターフェースSDI(7
5項)およびシリアル・コントロール・インターフェースSCI(7
6項)の両方に採用されています。またBSYNCピンはデータ・インターフェース・チップ・セレクト(XDCS)機能に置き換えられます。アクティブ"L"のチップ・セレクト入力です。このピンを"H"にするとシリアル・インターフェースは強制的にスタンバイ・モードになり,その時点での操作は終了されます。さらにシリアル出力(SOピン)は強制的にハイ・インピーダンス状態になります。代わりにそれに相当する信号が,XCSの反転によって内部的に生成されます。シリアル・クロック入力です。このクロックは内部でレジスタ・インターフェースのマスタ・クロックとしても使われます。SCKは断続的,連続的のどちらも可能です。いずれの場合でも,XCSが"L"になった後の最初の立上りエッジが1番目のビットの取り込みタイミングとなります。シリアル入力です。チップ・セレクトが有効ならば,SCKの立上りエッジにてSIがサンプルされます。シリアル出力です。リード動作時,SCKの立下りエッジにてデータがシフト出力されます。ライト動作においてSOはハイ・インピーダンス状態を保持します。アクティブ"L"のチップ・セレクト入力です。このピンを"H"にするとシリアル・インターフェースは強制的にスタンバイ・モードになり,その時点での操作は終了されます。さらにシリアル出力(SOピン)は強制的にハイ・インピーダンス状態になります。SDIデータはBSYNCの立上りエッジをもって同期が取られます。シリアル・クロック入力です。このクロックは内部でレジスタ・インターフェースのマスタ・クロックとしても使われます。SCKは断続的,連続的のどちらも可能です。いずれの場合でも,XCSが"L"になった後の最初の立上りエッジが1番目のビットの取り込みタイミングとなります。シリアル入力です。シリアル出力です。リード動作時,SCKの立下りエッジにてデータがシフト出力されます。ライト動作においてSOはハイ・インピーダンス状態を保持します。DREQはストリーム・バッファが一杯のとき,またはSCIコマンドの実行中"L"になります。32バイトの安全領域により,32バイト以下のSDIデータならば送り手はDREQの状態をチェックすることなく連続して送ることが出来ます。これは低速なマイクロコントローラによるVS1053bの制御をより容易にします。注意:DREQはバイトの転送途中などを含め不特定のタイミングでレベルが変化します。したがって,DREQは次のバイト・データを送出できるかどうかを決めるためだけに使用してください。すでに開始したバイト転送を中断してはいけません。DREQが"L"であるにもかかわらず,SCIコマンドを送りたい場合があり得ます。これはDREQがSDIとSCIで共用されているためであって,SCIコマンドが実行中だからなのかSDIが受信可能でないからなのか判別できないことによります。このような場合には,SCIコマンドの後に十分長いディレイを設けて,それらの全てが確実に実行されるようにする必要があります。7項のSCIレジスタ一覧に,各レジスタ・ライトに対する実行時間のワーストケースが示してあります。シリアル・データ・インターフェースはスレーブ・モードで動作します。したがってDCLK信号は外部から供給する必要があります。
データ(SDATA信号)を取り込むタイミングは設定によりDCLKの立上り,立下りのどちらでも可能です(8
VS1053bへ入力されるデータは"バイト同期"が取られていることが必要です。1項)によってMSbファーストまたはLSbファーストを選択できます。VS1053b内部のファームウェアはSDIがサポートする最高のビット・レートでの受信が可能です。
[訳注]:"バイト同期"とは,データの送り手と受け手の両者間においてビット列のバイト境界を一致させることを意味します)
データ・バイトの転送中はXDCSの状態が変化しないようにしてください。仮にVS1053bが実装された基板上でグリッチなどが発生しても常にバイト同期を維持できるよう,例えばディスク・データのブロック送出毎にXDCSのレベルを遷移させ,ホストとVS1053bの同期を確実なものにしてください。新規の設計ではVS1002ネイティブ・モードの採用が推奨されます。VS1001互換モードの場合には,入力ビット・ストリームに対してバイト境界の補正を確実に行うための信号BSYNCを用意する必要があります。BSYNC信号が"H"となった後の最初のサンプリング・エッジ(極性設定により立上りまたは立下り)でのデータが,バイトの最初のビットとみなされます。このビットはLSbファースト設定の場合はLSbとして,MSbファースト設定の場合はMSbとして扱われます。そしてバイトの最終ビットを受信したとき,BSYNCが"H"のままであった場合には,続く8ビットも有効なデータとして引き続き取り込まれます。またこの場合もBSYNCの立上りエッジが同期のために使用されます。6項)のプロトコルは,常にインストラクション・バイトとアドレス・バイト,そして16ビットのデータ・ワードで構成されます。リード,ライトの各操作により,各レジスタの内容を読み,書きできます。データ・ビットは常にクロックの立上りエッジでサンプルされます。したがってデータの更新はクロックの立下りで行うようにして下さい。各バイトは常にMSbファーストで送受信されます。XCSは操作の間"L"を維持する必要があります。また必要に応じて任意のビット間隔を延長してもかまいません。操作は8ビットのインストラクション・バイト(オペコード)の値により規定されます。サポートされているインストラクションはレジスタのリードとライトです。次の表を参照してください。"L"の継続時間は操作の内容によって異なります。まず,XCSを"L"にしてデバイス・セレクトを有効にします。次に,リード・オペコード(0x3),8ビットのレジスタ・アドレス,2バイトのダミー・データを順次SIへ送信します。ダミー・データの値は何でもかまいません。図6のとおり,このダミー・データの送出と並行して,送られたアドレスに対応するレジスタの内容16ビットが,SOピンからシフト出力されます。シフト出力の完了後はXCSを"H"に戻して下さい。このリード操作の内部処理時に,わずかの期間DREQが"L"になります。これは非常に短期間なので,特に配慮は必要ありません。まず,XCSを"L"にしてデバイス・セレクトを有効にします。次に,ライト・オペコード(0x2),8ビットのレジスタ・アドレス,2バイトのライト・データを順次SIへ送信します。最終クロックが送られた後に,ライト・シーケンスを終了させるためXCSを"H"にして下さい。
この実行時間はレジスタおよびそのライト値によって変動します(詳細は8
もしもその最大時間が,マイクロコントローラによる次のSCIコマンドまたはSDIバイト送出に要する時間よりも長い場合,そのSCI/SDI操作の完了前にDREQの状態を確認する(訳注:DREQ="H"を待つ)必要があります。図8に示すように,VS1053bでは同一のSCIレジスタに複数個のデータを連続してライトすることにより,レジスタの内容を高速に更新することが可能です。シングル・ライトとの主な違いは,データ・ワードの最終ビット送出後,XCSが"H"に立上る代わりに,次のデータ・ワードが続けて送られる点です。最後のデータ・ワード送出後は,シングル・ワード・ライトと同様に,XCSを"H"にします。
この実行時間はレジスタおよびそのライト値によって変動します(詳細は8
もしもその最大時間が,マイクロコントローラによる次のSCIコマンドまたはSDIバイト送出に要する時間よりも長い場合,そのSCI/SDI操作の完了前にDREQの状態を確認する(訳注:DREQ="H"を待つ)必要があります。容量が小さい場合,この時間は短くなります。
注意:タイミングが内部クロックCLKIにより規定されている項目がありますが,デバイスは必ず1
図10は連続する2回のSCI操作を示しています。操作ごとにxCSを"H"にして,インアクティブ状態を作る必要があることに注意してください。併せてDREQも図の要件を満たす必要があります。図11のとおり,SDIデータはxCSの立上りエッジをもって同期が取られます。しかし個々のバイトごとに同期を取る必要はありません。図12は2つのSDI操作間にSCI操作が行われる場合を示しています。xCSのエッジはSDIおよびSCIの両方に対して同期を取るために使用されます。DREQについても図の要件を満たすようにしてください。併せてマイクロフォン・アンプかつ/またはラインレベル入力とステレオA/Dコンバータを使用したPCM/ADPCMオーディオ・エンコーディングも可能です。ソフトウェア・プラグインを使用すれば,高音質のOgg Vorbisフォーマットによる録音に加えて,FLACによるロスレス・デコードも可能です。またデバッグ用にUARTが用意されています。
2 サポートされるオーディオ・コーデック
サポートされるフォーマット
サポートされるが,完全にテストされていないフォーマット
サポートされないフォーマット
存在しないフォーマット
[1] 併せて可変ビット・レート(VBR)もサポートされます。現行のエンコーダでfloor 0を使うものは知られていません。1チャンネルおよび2チャンネルのOgg Vorbisファイルは全てこのデコーダで再生可能と考えられます。ストリームが複数のエレメントかつ/またはエレメント・タイプを含んでいる場合は,16シングル・チャンネル,16チャンネル・ペア,16low-frequencyエレメントから選択できます。デフォルトではストリーム中で最初に現れたものが選択されます。ショート・フレーム(120と960サンプル)は非サポートです。レベル3とは,SBRの有/無およびPSの有/無のそれぞれについて最大2チャンネルでサンプル・レート48KHz以下のサポートを意味します。併せて,ミキシング・モードRaおよびRb,IPD/OPD合成,周波数帯域分解能34分割,ダウン・サンプルされた合成モード(コア・コーダのサンプル・レートが24KHzより高く,かつSBR付きで48KHz以下)が実装されています。SBRおよびPSデコーディングを禁止することも可能です。併せて様々なオペレーティング・モードを選択することもできます。もし有効ならば[訳注2],内部クロックCLKIの周波数はAACデコーディングがより高いクロックを必要とする時,自動的に高く調整されます。一方,正確なデコーディングに対して内部クロックが不足する場合,PSおよびSBR機能は自動的にオフになります。5×のクロックが必要です。
このため,クロックのデフォルト設定としては3
AACのストリーミング再生に対してはADTSフォーマットを推奨します。このフォーマットは再同期化が容易なため,巻戻しや早送り動作に適しています。m4a)ファイルも再生できますが,これらのフォーマットは巻戻し/早送り動作の点で劣ります。
4項を参照してください)
m4aの各ファイルが再生可能であるためには,mdatアトムがMP4ファイルの最終アトムでなければなりません。VS1053bは全てのデータをストリームとして受信するため,全メタデータは音楽データに先立って受信され,有効となっている必要があります。いくつかのMP4ファイル・フォーマッタはこの条件を満たしていないので,その場合何らかの変換が必要となります。この点もストリーム可能なADTSフォーマットが推奨される理由です。m4aファイルの末尾がmdatアトムとなるように変換し,ゆえにウェブ・サーバのオーディオ・ストリーミングに適したいわゆるストリーム可能(streamable)フォーマットに最適化してくれるプログラムが存在します。この種のツールはVS1053b用のファイルにも利用可能です。[2] 併せて全ての可変ビット・レート(VBR)フォーマットがサポートされます。この表はAACの仕様によって規定されている通り,特定のサンプル・レートに対して2チャンネル用に許容される最高ビット・レートを示したものであることに注意してください。実際にはデコーダ自体にある固定された下限または上限はありません。
6 サポートされるWMAフォーマット
かつてストリームはクラス1,2a,2b,および3に分割されていました。本デコーダはMicrosoftの適合プログラムに合格しています。これらの期待されたWMAデコーディング・プロファイルに加えて,その他すべてのビット・レートとサンプル・レートの組み合わせおよび可変ビットレートWMAストリームがサポートされます。なおWMAのビットストリーム消費速度はMP3ほど均一ではありません。同じビットレートできれいな再生を得るにはより高い最大転送能力が必要です。詳しくはプラグインに付属の文書を参照してください。最も一般的な1または2チャンネルのRIFF WAVサブフォーマットがサポートされます。
48KHz以下任意のサンプル・レート
サポートされるMP3モード用
フォーマット1および2はユーザ側でフォーマット0に変換してください。最大同時発音数は64,最大サスティン発音数は40です。ただし実際の同時発音数は内部クロック・レート(ユーザ設定可能)の他,使用楽器(音源)の種類,リバーブ使用の有無,およびトーン・コントロールやEarSpeaker音場拡大処理などチップ全体に関わるポストプロセス・エフェクトのうちどれが有効になっているか,などによって決まります。SP-MIDIのMIPテーブルが存在する場合は同時発音制限アルゴリズムがそれを活用し,滑らかなノート除去を行います。5×)クロックにてサスティン・ノートを同時に19〜31個生成できます。瞬間的にはより多くの総ノート数が可能です。消費電力とクオリティの兼ね合いになりますが,より高いクロック周波数は同時発音数の増加を可能にします。リバーブ・エフェクトはユーザにより制御できます。オート・リバーブとリバーブ無しに加えて,14種類の異なった減衰時間を選択できます。それらは概ね音響空間の広さの違いに対応します。併せて,各MIDIソングも各インストゥルメントにどれだけエフェクトを掛けるかを定めています。
リバーブ・エフェクトはおよそ4MHz分の処理能力を消費するため,内部クロックが最低でも3
0×の時でないとオート・コントロールはリバーブを有効にしません。これはヘッドフォンでMIDIソングを聴くのに最適です。VS1003では36種類だったインストゥルメントですが,さらに新しいものが追加されました。VS1053bは今やGM1インストゥルメント・セットの全ておよびGM2パーカッションの1バンクにおいてユニークなインストゥルメントを備えています。デコード後,SCI_AIADDRが"0"でない場合はそのレジスタが指すアドレスからアプリケーション・コードが実行されます。詳細はVS10XXのアプリケーション・ノートを参照してください。続いてデータはSCI_BASSレジスタの設定に基づいて,低音および高音強調ユニットへと送られます。次にEarSpeaker音場拡大処理が有効に設定されている場合はその処理が行われます。その後データはオーディオFIFOへ送られます。オーディオFIFOはオーディオ割り込みによる読み出しまでの間データを保持し,サンプル・レート・コンバータおよびDACへ送出します。サンプル・レート・コンバータはさまざまなサンプル・レートの全てをXTALI/2,または18ビット精度で使用可能な最高サンプル・レートの128倍のいずれかにアップ・サンプルします。ボリューム・コントロールはこのアップ・サンプル領域の中で行われます。新しいボリューム設定はアップ・サンプルされた信号がゼロクロスする場合(またはタイムアウト後)に限りロードされます。このゼロクロス検出は急なボリューム変更の際に生ずる耳障りなノイズをほぼ完全に除去します。共通のサンプル・レートへの変換は,複雑なPLLベースのクロック・スキームを不要にし,固定周波数の単一クロックによる非常に高いサンプル・レート精度を実現します。144MHzで動作し,位相ずれの無いステレオ信号を生成します。オーバーサンプルされた出力はチップ内蔵のアナログ式ローパス・フィルタにより帯域制限が加えられ,その後ヘッドフォン・アンプへと送られます。ヘッドフォンで聴いている時,音は頭の内部で鳴っているように感じられます。その音場は平坦で奥行き間に欠けています。これは不自然で,ぎこちなく,時に落ち着かない状況にさえなります。これは音が“頭の中に”位置することを意味する“頭内定位”と言って,よく文献で言及される現象です。頭内定位の音を長時間聴くことは,聴取に対する疲労を招くこともあります。実世界の音源は全て頭外にあって,その音響波面に痕跡を残しながら鼓膜へと到達します。この痕跡によって脳の聴覚システムは各音源の方向や距離を認識できるのです。スピーカからの音を聴くことは外部的であり,その痕跡は利用可能です。一方ヘッドフォンの場合はその痕跡が得られないか,または不明瞭です。EarSpeaker処理はヘッドフォンを経由した音楽が本物のスピーカから,またはライブのものにより近く聴こえるように音を加工します。
EarSpeakerを有効にすると,各楽器が頭の中から外へと移動し,個々の楽器を分離することが容易になります(図14参照)
このリスニング体験はより自然かつ快適で,ステレオのイメージは各楽器がリスナの頭の中ではなく前に広がっているかのように,より鮮明なものになります。EarSpeakerは一般的な,例えばエコーやリバーブ,低音強調のようなエフェクト処理とは異なるものです。EarSpeakerは人間の聴覚モデルと実在のリスニング環境音響効果を正確にシミュレートします。従って先に挙げた形だけのエフェクトのように音楽の音色的特徴を変化させたりはしません。いろいろな個人の好みや録音の種類に合うように,EarSpeaker処理はいくつかのモードにパラメータ化されており,それぞれ若干異なる音響的シチュエーションをシミュレートします。
各モードを有効にする方法は8
1項を参照してください。オフ : スピーカで再生する場合,または再生音がバイノーラルで前処理されている場合に適しています。効果は弱めです。シリアル・データ・インターフェースは,VS1053bの各種デコーダに圧縮データを送るためのインターフェースです。デコーダの入力データが無効,または十分な速度で受信できない場合,アナログ出力は自動的にミュートされます。併せて9章で説明する通り各種テストもSDIを通して実行されます。シリアル・コントロール・インターフェースはSPIバス規格と互換性があります。転送されるデータは常に16ビット幅です。VS1053bは,このインターフェースを通した各種レジスタへのリード,ライトによって制御されます。
このコントロール・インターフェースにより,主に次の要素が制御されます:
操作モードやクロック,内蔵エフェクト類の制御
ステータス情報,ヘッダ情報へのアクセス
レコーディング・モードでのエンコード・データの受信
ユーザ・プログラムのアップロードおよび制御
"L"の継続時間は操作の内容によって決まります。[訳注]:本来ここに在るべき原文37ページ第2段落の説明は,他の部分の説明と矛盾していると思われます。和訳は割愛しますので,内容は原文をご参照ください。なお割愛部分の内容は他の部分にて説明されていますので(そちらが正しければ,ではありますが)問題は無いはずです。
内蔵の低音/高音コントロール
秒単位での再生時間
RAMリード/ライトのベース・アドレス
アプリケーションの開始アドレス
[1] これはレジスタに値を設定した後,DREQが"L"を継続する時間(実行時間)の最大値です。実行時間100クロック・サイクル未満のレジスタ・ライトに対しては,DREQのチェックを省略し,固定時間のディレイで代用してもかまいません。[2] さらにユーザ・アプリケーションの実行時間を加える必要があります。[3] この値はファームウェア[訳注1]により直ちに0x48(アナログ有効)に更新されます。その後程なく0x40(アナログ・ドライバ有効)へと更新されます。[4] モード・レジスタへのライトでソフトウェア・リセットが実行される場合,最大時間は22000XTALIです。
[5] CLOCKFレジスタへのライトによりクロック・マルチプライヤが変更されると,若干の間強制的に内部クロックが1
従って,ここに示すレジスタ更新処理期間内にSCIやSDIの転送を行うことは推奨されません。[訳注1]:ここでの"ファームウェア"とはVS1053bに組み込まれている内蔵プログラムのことです。したがってユーザから見ると,この値はリセット時に0x000cで,その直後に0x0048に,さらに程なく0x0040にといずれも自動的に変化します。
値の意味は8
2項を参照してください。
通常の同相オーディオ
左チャンネルを反転
リセットしない。リセットする。
現ファイルのデコード中断
SPIチップ・セレクトの共用
SM_DIFFをセットすると左チャンネル出力波形が反転されます。ステレオ入力の場合,仮想的なサラウンド効果が得られます。モノラル入力の場合には,左右両チャンネル出力を使った差動出力が簡単に得られます。注意:もしレイヤIおよびレイヤIIのデコード機能を有効にする場合には,それらのフォーマットを使用することにより生じうる全ての特許問題について責任を負う必要があります。0レイヤIIIのジョイント・ライセンスの範囲は,レイヤIおよびIIに係る特許の全てを網羅していません。SM_RESETに"1"をセットするとソフトウェア・リセットが開始されます。このビットは自動的にクリアされます。もし再生をファイルの途中で止めたい場合は,SM_CANCELに"1"をセットし,さらにDREQに従ったデータ送出を継続します。コーデックがSM_CANCELのセットを検出するとデコーディングを中止してメイン・ループに戻ります。2項を参照してください。12項を参照してください。このモードにおいては,データをできるだけ一定間隔で,かつ512バイト未満のデータブロックごとに送出してください。VS1053bは再生速度を5%以内で変動させながら,内部バッファの使用量が1/2を保つように再生を試みます。
最高の音質を得るためには,平均転送速度の誤差を0
5%以内に抑えてください。詳細はVS10XX用のアプリケーション・ノートを参照してください。このモードはMP3とWAVファイルでのみ機能します。SM_DACTはSDI用データ・クロックのアクティブ・エッジを規定します。もし"0"ならデータは立上りエッジでサンプルされ,"1"なら立下りエッジでサンプルされます。ただしバイトの並びは変わりません。またこの設定はSCIバスには影響を与えません。2項で説明したとおり,SCIとSDIでひとつのチップ・セレクト信号を共用できます。この機能を使う場合には併せてSM_SDINEWがセットされている必要があります。2項で説明したVS1002ネイティブのシリアル・モードが有効になります。なおVS1053bの起動時にはデフォルトでこのビットがセットされていますので注意してください。
8項を参照してください)
"1"にセットするとクロックは入力のところで1/2に分周されます。併せていくつかの低レベルな設定項目が含まれますが,通常それらに対する考慮は必要ありません。
ヘッダをデコード中,早送り/巻戻し禁止
この時ファイル内の別の位置へジャンプしてはいけません。もしソフトウェア・リセットやデコードの中断を行う場合には,このビットをクリアしてください。さもないと誤ってセットされたままになります。65Vのリファレンス電圧を選択することで,アナログ出力の振幅を大きくできます。これらのビットは内蔵のシステム・ファームウェアのみが使用します。パワー・オフ時の過渡状態を最小限に抑えながらVS1053bをパワー・ダウンしたい場合には,まずSCI_VOLに0xffffをセットし,さらに最低数msec待ってからデバイスをリセットします。これはGBUFとグランドの短絡を示すような過電流が流れた時にGBUFドライバ回路を遮断します。
設定値0は通常のモードで,1は+0
3から7を設定することはDACモジュレータの異常動作を招きますので使用しないでください。SCI_STATUSまたはSCI_VOLUMEへのライト,およびサンプル・レートの変更(低音強調または高音制御が有効な場合)はボリューム演算ルーチンがコールされる要因となります。しかしながら,この件で影響を受ける部分について性能に大きな差がないのであれば,デフォルトのモード[訳注1]を使用する方がより簡単です。低音強調処理VSBEは,クリッピングを生じさせることなくヘッドフォンを最大限に生かす強力な低音域増強DSPアルゴリズムです。5倍位を目安に設定してください。注意:VSBEはクリッピングの発生を抑えようとするので,ダイナミックな音楽素材かもしくは最大音量に対して余裕を持ったボリューム設定の時でないと,十分に低音を強調することはできません。また音源そのものに強調すべき低音成分が含まれている必要があります。両者は同時に使用できます。VS1053bでは,低音強調および高域制御の初期化とボリュームの変更処理は,次のサンプル・データのブロックがオーディオFIFOに送られるまで待たされるようになっています。
マルチプライヤでの1
5×が削除され,代わりにより高いクロック設定ができるようになっています。
許されるマルチプライヤ追加
SC_MULTは内蔵のクロック・マルチプライヤを有効にします。これはXTALIを逓倍し,より高い周波数のCLKIを生成するものです。
マルチプライヤが0
5×より大きな値に設定変更されると,内部動作は数百クロック・サイクルの間1
0×になります。
設定値は以下のとおりです:
SC_ADDは,SC_MULTのマルチプライヤ設定に対して,デコーダのファームウェアがどれくらいまで追加しても良いかを設定します。この追加はWMAおよびAACストリームをデコードするために,一時的により高い周波数が必要になった時に自動的に行われます。
設定値は以下のとおりです:
288MHzでない場合に,その周波数を設定するレジスタです。このレジスタへの設定値は次式で求めた値です。288MHzの場合には全てのサンプル・レートに対応することはできません。注意:自動的なクロック変更が行われるのはWMAおよびAACファイルのデコード時だけです。
クロックの変更幅は1回につき0
クロックが1
0×へ低下することはなく,ファイル全体を通してSCIとSDIで同じクロックを使用できます[訳注1]
クロック・マルチプライヤの設定は3
[訳注1]:この文の意味は理解できません。正常なデータをデコードしている時,その時点までのデコード時間を秒単位で表した値がこのレジスタに入ります。ユーザがこの値を書き換えることは可能です。その場合,内蔵ファームウェアがユーザのライト値を上書きするのを防ぐため,2度続けてライトするようにしてください。SCI_DECODE_TIMEの内容はハードウェア・リセットおよびソフトウェア・リセットごとに初期化されます。またファイルの再生終了時にクリアされなくなりました。これによりループ再生や複数ファイルの連続再生時にデコード時間を自動的に積算できます。早送り再生(エクストラ・パラメータのplaySpeedを参照)時にはこのデコード時間もそれに合わせて速く進みます。正常なデータをデコードしている時,現在のサンプル・レートおよびチャンネル数がそれぞれこのレジスタのビット15:1とビット0に入ります。ビット15:1にはサンプル・レートの1/2の値が入り,ビット0にはモノラルなら0,ステレオなら1が入ります。また,このレジスタを書き換えると,ダイレクトにサンプル・レートが変更されます。ステレオ・モードは変わりません。アイドル時にディジタル系の消費電力を抑えたい場合,SCI_AUDATAに低いサンプル・レートを設定すると効果があります。SCI_WRAMはアプリケーション・プログラムとデータを,それぞれインストラクションRAMおよびデータRAMへアップロードするために使われます。なおSCI_WRAMへの1回のリード/ライトで転送できるのは16ビットである一方,インストラクション・ワードは32ビットなので,インストラクション・ワードの場合には連続2回のリード/ライトが必要です。バイト順はビッグ・エンディアン(つまり上位ワードが先)です。ワードのリード/ライトごとに内蔵のアドレスポインタが自動的にインクリメントされます。X,Y,Iまたはペリフェラル・メモリをそれぞれアクセスするために,次の表に従ってアドレス・オフセットを加味してください。X,Y,およびインストラクション・メモリのユーザ・エリアは上記だけです。他のエリアもアクセス可能ですが,別途規定がない限りライトはしないでください。ファイルのビット・レートを得るには,この値を8倍してください。
CRCプロテクト付き
ビット・レートの表を参照
コピーライト付き
リセットするとこの両レジスタはクリアされ,データが未検出であることを示します。
上表のSCI_HDAT0の中の"サンプル・レート"フィールドの値は,次の表に従って解釈できます:
またSCI_HDAT0の中の"ビット・レート"フィールドの値は,次の表にしたがって解釈できます。なお可変ビット・レート・ストリームの場合には,この値は常に変化します。バイト/秒を単位とする平均データ・レートはメモリから読み出せます。エクストラ・パラメータのbyteRateを参照してください。その変数は全てのコーデックについてバイト・レートを保持します。ファイルのビット・レートを得るには値を8倍してください。ビット・レートの計算は曲間で自動的にリセットされません。しかしソフトウェアまたはハードウェア・リセットに頼らなくても,SCI_DECODE_TIMEへライトすることでリセットできます。アプリケーション・コードを使用しない場合は,このレジスタを初期化しないままにするか,もしくは0で初期化してください。詳細はVS10XXのアプリケーション・ノートを参照してください。SCI_VOLはプレーヤーのボリュームを制御します。このレジスタの上位バイトは左チャンネルを,下位バイトは右チャンネルを制御します。
ボリューム設定値は最大ボリュームレベルからの0
5dB刻みでの減衰量です。注意:ハードウェア・リセット後,ボリューム値は最大に設定されています。ソフトウェア・リセットはボリューム設定をリセットしません。
例:左チャンネルのボリュームを-2
VS1053bでは,低音強調および高域制御の初期化とボリュームの変更処理は,次のサンプル・データのブロックがオーディオFIFOに送られるまで待たされるようになっています。従来はサンプル・データがオーディオFIFOに入力されるときにボリューム制御が行われていましたが,VS1053bではDACでハードウェア的に行われます。よって,ボリューム設定に若干の遅れがあったとしても,総合的なボリューム変化のレスポンスは以前よりも改善されています。さらに,実際のボリューム制御はゼロクロス検出機能を持っており,急なボリューム変更の際に生ずる耳障りなノイズをほぼ完全に除去します。
1 クロックについて
288MHzを標準とする単一のマスタ・クロックで動作します。外部回路からのクロック入力(XTALIピンに接続),もしくは内蔵の発振回路と外付けクリスタルの組み合わせ(XTALI,XTALOピンに接続)が可能です。このクロックはアナログ部で使用されると同時に,対応可能な最大サンプル・レートを決めるために使われます。それによりシステム・クロックはクロック入力のところで1/2で分周され,12〜13MHzの入力クロックが生成されます。XRESET信号を"L"にするとVS1053bはリセットされ,すべてのコントロール・レジスタと内部状態が初期化されます。XRESET信号はいずれのクロックに対しても非同期です。またリセット・モードはフル・パワーダウン・モードとしても機能します。この時,VS1053bのディジタル部とアナログ部共に最も消費電力が少ない状態になり,クロックは停止します。併せてXTALOピンはグランドに接地されます。XRESETが有効になると,全出力ピンはデフォルト状態になります。全入力ピンはハイ・インピーダンス(入力状態)になりますが,SOピンだけが例外で,その状態はXCSによって制御されます。ハードウェア・リセット後(または電源投入時),DREQは約22000クロック・サイクルの間"L"を維持します。
時間にすると12
7項を参照してください。この時DREQを待つ必要はありません。内部クロックはPLLによって逓倍できます。
SCI_CLOCKFレジスタを通して設定できるマルチプライヤは入力クロックの1
マルチプライヤのリセット値は1
標準的な性能を得るためには,リセット後に内部クロックのマルチプライヤを3
5×に設定する必要があります。4項を参照してください。時としてソフトウェア的なリセットが必要になることがあります。セット後,2μs以上待ってから,DREQの状態をチェックしてください。そしてDREQが"H"に立ち上がれば,通常の再生動作が可能となります。以前のVS10XXチップとは異なり,曲間でのソフトウェア・リセットは推奨されません。それは低いサンプル・レートまたはビット・レートのファイルでも確実に最後まで再生されるようにするためです。デコードしていない時,システムを止めることはできないが消費電力は抑えたい,という場合には以下のトリックが利用できます。0×クロックを選択します。これによりPLLが停止し,多少の電力削減ができます。これはサンプル・レートおよびオーディオ割り込みの回数を削減します。割り込み終了から次の割り込みまでの間,VSDSPコアは単なる割り込み待ちとなるために,電力が少なくなります。オーディオ系のポスト・プロセス(トーン・コントロールやEarSpeaker)を全てオフにします。もし用途的に問題ないならば,SCI_VOLに0xffffをライトしてアナログ・ドライバをオフにします。低消費電力モードから復帰するには,逆順でレジスタ設定を元に戻してください。注意:低消費電力モードでも,ハードウェア・リセットと比べるとかなり多くの電力を消費します。
5 再生とデコード
SDIデータが順次デコードされます。デコードされたサンプル値は,内蔵のDACによりアナログ信号に変換されます。デコードすべきデータ入力がない場合,VS1053bはアイドル・モード(デコード時よりも低消費電力の状態)へと移行し,有効なデータが入力されるのを待ちます。1 ファイル全体を再生する。これはデフォルトの再生モードです。オーディオ・ファイルを最後までVS1053bへ送出します。11項)を読み出します。もしSM_CANCELがまだセットされていたら手順5へジャンプします。
もしSM_CANCELを2048バイト送出してもクリアされない時にはソフトウェア・リセットを実行します(これは極めて稀)
これで曲は正常に送出されました。HDAT0とHDAT1は共に0になっているはずで,それはデコードすべきデータが無いことを示しています。手順1へ戻ります。
2 再生の中断
曲の再生中断は,ある曲の再生中に別の曲へジャンプしたい時などで通常行われる操作です。VS1053bへオーディオ・ファイルを途中まで送出します。引き続きオーディオ・ファイルを送りますが,データの32バイト送出毎にSM_CANCELをチェックします。
もしまだセットされていたら手順3へ
もし2048バイトの送出または1秒間にわたりSM_CANCELがクリアされない場合には,ソフトウェア・リセットを行ってください(これは極めて稀)
11項)を読み出します。これでHDAT0とHDAT1は共に0になっているはずで,デコードすべきデータが無いことを示しています。次のオーディオ・ファイルを送出できます。もしマイクロ・コントローラがVS1053bへ十分な速さでデータを供給できるなら,これが早送りに適した方法です。VS1053bへのオーディオ・ファイル送出を開始します。11項)を設定します。オーディオ・ファイルの送出を続けます。
マイクロ・コントローラがVS1053bへ十分な速さでデータを供給できるかを推定するには,エクストラ・パラメータのbyteRate(9
11項)の値を参照します。なおbyteRateの値は,高速再生中であっても通常再生速度時のデータ・レートになりますので注意してください。注意:再生速度は曲が変わってもリセットされません。
4 無音での早送り/巻戻し
早送りと巻戻しを実現するには,オーディオ・ファイルへのランダム・アクセスが必要です。残念ながら早送りと巻戻しは常時可能ではなく,ファイル・ヘッダが読み込まれているようなときには実行できません。VS1053bへオーディオ・ファイルを途中まで送出します。これがもしセットされていたらランダム・アクセスは実行できないため,手順1へ戻ります。11項)を読み出します。そのファイルの前方または後方へジャンプします。ファイルの送出を続けます。注意:早送り中/巻戻し中は例えば10dB程度ボリュームを下げておくことを推奨します。注意:MIDIはランダム・アクセスに適しません。代わりにエクストラ・パラメータのplaySpeedを使用することで1〜128倍速の高速再生は可能です。どうしても巻戻しが必要なら,MIDIファイルのデコードを先頭からやり直し,目的のところまで早送りすることで実現できます。
5 正しいデコード時間を維持するには
早送りおよび巻戻し操作を行うと,ほとんどのファイルでは正しいデコード時間を維持できなくなります。
この正確な時間情報が有効な時にはそれを利用するようにするには,以下の手順になります:
あるオーディオ・ファイルをVS1053bへ送り始めます。11項)をリードします。VS1053bはWAVファイル・ヘッダを送ることによりPCMデコーダとしても使用できます。8ビット・リニアおよび16ビット・リニア・オーディオが,モノラル,ステレオともにサポートされます。
WAVファイル・ヘッダは以下のようなものです:
モノラルなら1,ステレオなら2
表中の4つの変数の計算方法は下記の通りです:
モノラル・データならC=1,ステレオ・データならC=2
[訳注] 上記ヘッダのアドレス欄が間違っていたので修正してあります。Ogg Vorbisは低〜中速ビット・レートにて高音質を実現する,オープンなファイル・フォーマットです。3種類のプロファイルが用意されています:ひとつは高音質のステレオ録音用でビット・レートは約140kbit/s,あとの2つはスピーチ音質のモノラル録音用で,ビットレートはそれぞれ15および30kbit/sです。htmlからアプリケーションをダウンロードし,添付の資料を参照してください。IME ADPCMは一般的に広くサポートされているADPCMフォーマットで,多くのPCオーディオ再生ソフトで再生できます。
例えばモノラルの8KHzオーディオが32
モノラル録音モードでは左または右チャンネルのいずれかを選択できます。SM_LINE1がセットされると,差動マイク入力に代わりライン入力1が使用されます。これらの値は録音開始時にしか読み込まれません。
1024はディジタル・ゲイン1と等しく,512はディジタル・ゲイン0
標準的なスピーチ用途では録音時の音量が比較的均一となるのでAGCを使用するほうが良いでしょう
これにより無音時のノイズ音量を制限できます。もしデータが十分な速さでリードされない場合には,バッファはオーバフローし,空の状態に戻ります。注意:もしSCI_HDAT1≧896の場合,リードはせず,バッファがオーバフローしてクリアされるのを待ったほうが良いと思われます。これはバッファのエイリアス信号の発生を防ぎます。もしデータのリードを一旦中断し,後で再開したいときには,その中断をブロック境界で行うようにしてください。それによりブロック全体がスキップされ,エンコードされたストリームの有効性が維持されます。PCMファイルをRIFF/WAVファイルとするにはデータにヘッダを付加する必要があります。下記にモノラル用のヘッダを示します。
この表では,2バイトおよび4バイト値はリトル・エンディアン(下位バイトが先)ですので注意してください:
モノラルなら1,ステレオなら2
モノラルなら2,ステレオなら4
表中の変数は下記にしたがって求められます:
もし事前に録音のデータ量がわかっているならば,実データに先立ってヘッダを完全に作成しておくことは可能です。逆に録音データ量がわからない時には,ヘッダ中のサイズ・データFおよびDを録音終了後に埋める必要があります。この時,まず先にSCI_HDAT0の上位8ビット,次に下位8ビットの順序でライトしてください。16ビット・マイクロコントローラの中には,この順序がデフォルトの動作と一致しないものがあります。結果が正しい順序となるように特に注意が必要です。下記は正しいヘッダの例です。下記にモノラル用のヘッダを示します。
この表では,2バイトおよび4バイト値はリトル・エンディアン(下位バイトが先)ですので注意してください:
モノラルなら1,ステレオなら2
仮にオーディオ・ブロックの数をn個とすると,表中の変数は下記のようになります:
もし事前に録音のデータ量がわかっているならば,実データに先立ってヘッダを完全に作成しておくことは可能です。逆に録音データ量がわからない時には,ヘッダ中のサイズ・データF,S,およびDを録音終了後に埋める必要があります。この時,まず先にSCI_HDAT0の上位8ビット,次に下位8ビットの順序でライトしてください。16ビット・マイクロコントローラの中には,この順序がデフォルトの動作と一致しないものがあります。結果が正しい順序となるように特に注意が必要です。正常な順序でファイルがライトされているかを調べるには,各256バイト・ブロックの2バイト目と3バイト目(先頭のバイトを0番目として数えて)をチェックします。2バイト目は0〜88,かつ3バイト目は0となるはずです。ステレオの場合は各512バイト・ブロックの2,3,6,7番目のバイトをチェックします。2番目と6番目のバイトが0〜88,3番目と7番目のバイトが0であれば正常です。下記は正しいヘッダの例です。4項で説明したヘッダが付いている必要があります。そうすれば,あとすべきことは他のオーディオ・ファイルと同様にSDIを通してそのADPCMファイルを入力するだけです。
6 サンプル・レートについて
しかし,他のプログラムの中には例えば8000Hzや11025Hzなど特定のサンプル・レートのファイルしか対応できないものがあります。また,いくつかのプログラムやシステムでは8000Hz未満のサンプル・レートをサポートしていない場合があります。もしデータ・レートを上げて音質を高めたいならば,例えば16KHzといった高いサンプル・レートが利用できます。
7 録音モニタのボリューム
そのため,IMA ADPCMモードの有効に先立ってボリュームを設定しておくか,もしくはVS1053のハードウェア・ボリューム・コントロール・レジスタDAC_VOLを直接設定します。
ハードウェア・ボリューム・コントロールDAC_VOL(アドレス0xc045)を使用すると,左チャンネル(上位8ビット)と右チャンネル(下位8ビット)それぞれを0
5dB単位で制御できます。
各8ビット値において,下位4ビットは6dB単位で,上位4ビットは0
5dB単位で減衰量を設定します。
SPIブート時には,次の表のとおり,ピンの機能が一部変更されます:
使用できる外部メモリはSPIバス型のシリアルEEPROMで,16ビットまたは24ビット・アドレスを持つものです。
シリアルの転送速度は12
2つの入力法を両方同時に使うことはできません。もしSDIを利用する場合は,まず0xffを送信し,続いてMIDIデータ・バイトを送信してください。リアルタイムMIDIはSCIにて小さなパッチ・コードを送ることでも開始できます。注意:VS1053bのリアルタイムMIDI構文解析はシステム・エクスクルーシヴ・メッセージをスキップできません。必要ならばIRAMに改良バージョンをロードすることができます。下記の構造体はXメモリのアドレス0x1e00(VS1033とは異なるので注意)に存在するもので,いくつかの付加的パラメータの変更,および有用な情報の取得のために利用できます。チップIDも簡単に得られます。それらの変数は下位と上位をリードする間に更新されるおそれがあります。値が正しいかどうかを判断するために,2度読みしてそれらを比較するようにしてください。下記の例は,bytesLeftが0x10000から0xffffへ減少する時に,その更新が下位ワードと上位ワードのリード間にて行われた場合,および更新が上位ワードのリード後に行われた場合のそれぞれで何が起こるかを示しています。
正しくないリード
正しいリード
正しくないリードでは,下位ワードが0x0000から0xffffにラップしているにも拘らず,上位ワードは同じ値が読まれています。この場合は2度目のリードが正しい値を返していますが,それ以外では最初のリード値が使えることになります。2度目のリードが必要となるのは,下位ワードがラップ・アラウンドして上位ワードが変化するおそれがある,すなわち下位ワードの値が小さい時です。bytesLeftは1ずつ減少していくため,2度読みが必要なのは下位ワードが0の場合だけです。これらのパラメータは全てのコーデックに共通です。他のフィールドは対応するコーデックが作動しているときのみ有効です。
ヒューズでプログラムされた固有ID(ヒューズの単なるコピー)
ファイルの後に続いて送るべきバイト
WMAおよびAAC用パケット・オフセット
ミリ秒単位でのファイルの位置(取得可能な場合)
ヒューズでプログラムされたIDは起動時にリードされchipIDフィールドへコピーされます。もし無効な場合,この値は0となります。versionフィールドは構造体のこれ以降のレイアウトを識別するために使用されます。構造体が変更されるとバージョン番号も変わります。ビット・ストリームのデコードが実行されるとき,playSpeedフレームごとにしか再生されません。ただし十分な速さでデータが供給されることが条件です。設定値0または1で通常の速度に戻ります。現在全てのコーデックがplaySpeed設定をサポートします。byteRateには各コードにおいて1秒あたりの平均ビット・レートをバイト単位で表した値が格納されます。この値は1秒ごとに更新され,残りの再生時間の推定などに利用できます。もしlatestJumpが指しているエントリをリードするだけならば,有効性の確保のために2度読みする必要はありません。mp4/m4a)において完璧な早送り/巻戻しを実装するために利用可能です。positionMsecフィールドは,ファイルにおける現在再生中の位置を,早送り/巻戻し操作の有無に関係なく,ミリ秒単位で示します。この値はストリーム自体から再生位置を抽出できるコーデックの場合に限り利用可能です。もし位置が掴めない場合には,このフィールドの値は−1となります。mp4/m4a)において,最初のエラー時にエンコードを終了させるのではなく,強制的に再同期させるために使われます。mp4/m4a)においてほぼ完璧な早送り/巻戻しを実装するために利用可能です。もし実行しようとしているデータ・シークがパケットまたはデータ・ブロックの境界では無いならば,事前にこのフィールドを設定してください。このフィールド値はギブ・アップまでに何回の試行を許容するかを規定します。リセット後,resyncフィールドにはデフォルトで再同期を実行するように32767が設定されますが,以前の動作に戻すためにリセット後クリアすることも可能です。
resyncが設定されているときは,各ファイルのデコード終了は常に9
1項で説明した手順で行われるようにしてください。Seekフィールドは削除されました。resyncが必要な時,WMAおよびAACコーデックはファイル・サイズ情報が無視されるブロードキャスト/ストリーム・モードに入ります。併せて,resyncがゼロでないときもWAVファイルのファイル・サイズとサンプル・サイズ情報は無視されます。デコードを終了させるにはSM_CANCELを使用するか,ソフトウェア・リセットが必要です。mp4/m4aファイルは先頭にメタデータまたはヘッダ・セクションを持っており,さらにそれらは早送り/巻戻し操作に先立って完全に処理されている必要があります。
処理中のパケットのサイズ
ASFヘッダのパケット・サイズ
この情報とjumpPointsで得られるパケット開始オフセットを合わせることで,ASFファイルのパケット・ヘッダの解析やパケットのスキップが可能です。WMAデコーダも現在のクロックで正常なデコードができないファイルを検出したときに自動的に内部クロックを高くします。クロックに許される最高周波数はSCI_CLOCKFレジスタにより設定されます。
再生エレメントの選択
playSelectはストリームが複数のエレメントを持っているときにどれをデコードするかを決定します。その値にはAACデコーディングが開始されるたびに0が設定されます。この0はストリーム中に現れるデコード対象エレメントのうち最初のエレメントが選択されることを意味します。自動選択が実行されているときは,playSelectは選択されたエレメントを反映します。この値はエレメント選択メニューに選択可能なエレメントだけを提示するために利用できます。これらもAACのデコード開始時に初期化されます。ビット5と4はSBRモードを,ビット7と6はPSモードをそれぞれ選択します。これらの設定はもしあなたのAACライセンスがSBRかつ/またはPSをカバーしていないときに便利です。<24KHzのAACファイルは自動的にアップ・サンプルしない。しかしSBRを検出したらアップ・サンプリングを有効にする。アップ・サンプルしない。通常モード,可能ならばPSを処理する。可能ならばPSを処理する。
ただしダウン・サンプル・モードにおいてのみ
PSを無効にする。AACデコーダも現在のクロックで正常なデコードができないファイルを検出したときに自動的に内部クロックを高くします。クロックに許される最高周波数はSCI_CLOCKFレジスタにより設定されます。もし,SBRおよびPSコンポーネントを持つAACファイルをデコードするには許されている最高クロックでも遅すぎる場合には,それら特徴的機能がデコードできるようになるまでひとつずつ無効化されていきます。
それでも不十分な場合は,スペクトラル・バンド・リプリケーションがダウンサンプル・モードへ移行します(バンド幅が縮小されます)
最後の手段はスペクトラル・バンド・リプリケーションの完全な無効化です。無効化された機能は曲の変更ごとに自動的に元に戻されます。
トラックの残りバイト数
config1の下位4ビットはリバーブ効果を制御します。Replay Gain技術は,ユーザが曲ごとにボリュームを調整しなくても済むように,各曲のボリュームを自動的に一致させるためのものです。プレーヤ・ソフトウェアはこのゲイン値を用いてボリューム・レベルを調整できます。負数はボリュームを小さくすべきであることを,正数はボリュームを大きくすべきであることをそれぞれ意味します。5)小さくすべきであることを表しており,従って左右両チャンネルの減衰量を11だけ増加させます。0)大きくさせるため,左右の減衰量を2だけ減少させます。なおボリューム設定は+0dBを超えられないので,設定値は0で飽和します。VS1053bにはメモリ・テストやSCIバス・テスト,正弦波テストといったいくつかのテスト・モードが用意されています。これらのテストはいずれも同様の手順で開始されます:まずハードウェア・リセットの後,SM_TESTSをセットし,SDIバスにテスト・コマンドを送信することです。テスト・コマンドは4バイトの特別なコマンド・シーケンスと,それに続く4バイトの0です。それぞれ以下で説明します。[訳注] VS1011eではソフトウェア・リセットでも代用できました。
ここでnは正弦波を定義するための値で,次のように定められます:
出力される正弦波の周波数Fは次式で求められます。注意:正弦波テストの信号はディジタル・ボリューム・コントロールを通ります。したがって各チャンネルを個別にテストすることも可能です。このテストはチップ製造時の検査用です。ここで n−48 がテスト対象のレジスタ番号になります。これにより指定されたレジスタの内容がSCI_HDAT0にコピーされます。このシーケンスの後,1100000クロック・サイクル待ってください。
そしてその値の中で"1"がセットされたビットを次の表に当てはめて解釈します:
メモリ・テストはRAMの内容を書き換えますので注意してください。
5 新しい正弦波およびスイープ・テスト
より正確な周波数の正弦波テストがSCIにより開始,制御可能です。これらのテストは通常のオーディオ・パスを使用します。
1 本章を必要とするユーザ
ユーザが例えばDSPエフェクトのような独自の機能をVS1053bに追加したいと思うなら,そのためのソフトウェアが必要になります。しかし大部分のユーザにおいては,そのような独自のプログラムを書くことや,またはこの章の内容について,心配する必要はありません。その中にはVLSI Solutionのウェブ・サイトからソフトウェア・プラグインをダウンロードするだけの人も含まれます。[訳注] 以下この章は省略します。原文をご参照ください。要望があれば追記するかもしれません。この章では,VS1053bに実装された最新かつ重要な変更点について説明します。
全くの新規または大きな変更:
正常動作中は曲間でのソフトウェア・リセットが不要になりました。致命的でないoggまたはvorbisデコード・エラーの場合は自動的に再同期が行われます。これは早送りと巻戻しを容易にします。WMAデコーダと同様に,AACデコーダでもデコーディング処理の状況に応じてクロック追加(SCI_CLOCKFを参照)が行われます。許されている最高クロックでもデコードができない場合は,HE-AACの特徴的機能がひとつずつ無効化されます。無効化された機能は次のファイルにて自動的に元に戻されます。ボリューム・コントロールが完全に一新され,ゼロクロス検出が付きました。ボリュームを変化させたときのポップ・ノイズを防止できます。オーディオFIFOアンダーラン検出(徐々に0へと減少)がオーディオ・バッファの内容のループに代わって機能します。全てのコーデックにおいて平均ビット・レート演算(byteRate)が可能です。全てのコーデックにおいて高速再生がサポートされました。最良の早送り操作を目的としたスピード選択機能も付いています。SM_CANCELを検出すると内蔵ファームウェアはストリーム・バッファの内容も廃棄します。ヘッダ処理中またはMIDIファイル再生中が該当します。IMA ADPCMエンコードにおいてステレオ・エンコーディングと各種サンプル・レートがサポートされました。
その他の変更または追加:
ボリュームおよび低音/高音コントロール計算にディレイが加えられたことにより,対応するSCI操作の所要時間が短くなりました。このディレイ処理と新しいボリューム・コントロール・ハードウェアにより,ボリューム更新期間中にオーディオ・サンプルが見送られる問題が回避されました。SCI_DECODE_TIMEはハードウェアおよびソフトウェア・リセットでのみクリアされるようになりました。このため複数ファイルの連続再生やループ再生に対応できるようになりました。古い操作ではリセット後,resyncに0をライトするように置き換えができます。WMA,AAC:再同期が実行された場合,ブロードキャスト・モードが自動的に有効になります。ブロードキャスト・モードはファイル・サイズのチェックを無効にし,SM_CANCELのセットまたはリセットの実行までデコーディングを継続します。
高音コントロールが修正されました(ボリューム変更が大きな副作用の原因となるおそれ)
MPEGレイヤIのモノラルが修正されました。
MPEGレイヤIIのハーフ・レート・デコーディングが修正されました(フレーム・サイズの計算ミス)
MPEGレイヤIIの精度問題が修正されました。正しくないグループの値には0がセットされます。WAV構文解析は未知のRIFFチャンクをスキップするようになりました。2項を参照してください。ソフトウェア・リセットによりGPIO_DDRがクリアされます。I2Sピンも影響を受けます。Ogg Vorbisが時々ウィンドウ処理にてオーバフローを起こし,オーディオに小さいグリッチを生じさせます。IMA ADPCMエンコーディングの開始のために短いパッチが必要です。1項にあります。
12 本文書の改版履歴
この章では,この文書の重要な変更点について説明します。I2Sレートとオーディオ・レートは独立しています。
量産バージョン,"暫定版"タグを削除
4章の表の値を更新
8項の例を追加
・・・本文ここまで
誤訳その他お気づきの点がございましたらお知らせください。掲示板はこちらです。具体的な検討の際には,VLSI社のサイトにて最新の情報をご確認ください。併せて他のドキュメント類,特に本文中でもたびたび参照されている『アプリケーション・ノート』には目を通しておくことをお勧めします。(ちなみにダウンロード・ページにはさりげなくEAGLE用のライブラリがあったりします(^^))
10に対応(本文中赤字の部分)
△ページの先頭へ戻る。
愛用の工具と材料
私が電子工作をする際に普段使っている工具や消耗品などです。
これら裏方は日の目を見ないことが多いですが、これらの活躍が無ければ作品の完成はあり得ません。なお、誤解の無いように申し添えますが、「電子工作にはこれが必要」などという大それた意図はありません。工具や材料は、大切な「ノウハウ」です。ノウハウ集のひとつとして、何らかの参考になれば幸いです。
【まれに追加する予定です】
細かい作業が多いので、もっともこだわり、大切にしている工具です。でも決して高価なものではありません。よく売っているステンレスの数百円のものです。ただ、売っている状態では、ピンセットの命である先端部が太かったり、不揃いだったりすることが多いので、まず研いでから使うようにしています。「研ぐ」といっても、金工やすりで形を整えるだけです。
主なポイントは、(1)先をきちんと揃える。(2)鉛筆の先のように尖らせる。(3)細くしすぎない。先を細くしすぎると、力が必要な時に先が負けてしまいます。糸面取りは、被覆を傷つけないようにするためですが、面を取りすぎると先が滑って使いにくくなります。
ちゃんと研ぐと、写真のように平置きされた0
1mm以下の細い線が楽につまめます。ちなみにICは関係ありません。大きさの比較用です。最後に取り扱いについてです。
とにかく作業台から落とさないように
固い床だと、先が曲がって使い物にならなくなります。もうひとつ、足の上に落とすと刺さります。
研いであるので、木の床でも刺さりますから
注意してるつもりなんですが、何度も痛い目にあってます。
【秋葉原にて購入:数百円】
私は配線材にラッピングワイヤを使うので必需品です。写真はPyxisでの数千本の配線作業を共に乗り越え、今なお現役のワイヤストリッパです。もう20年以上の付き合いになります。当時はAWG30が付いているものが店頭になかなか無くて、かなり探した記憶があります。
【秋葉原にて購入(おそらく昔のヒロセパーツセンターの2階にて):価格は忘れた】
》眉はさみ(化粧はさみ)
ちょっと意外な、だけどとても便利な道具です。化粧小物売り場にあります。カプトンテープやポリエステルテープを切るときにとても便利です。これらの薄いテープに鈍らのはさみを使うと、切れずに巻き込んでいらいらします。眉はさみは鋭利な刃がしっかりついているのできれいに切れますし、先が細いので細かな作業にも適しています。刃先の薄いものがお勧めです。また、もうひとつよく使うのは、細いジャンパ線を切るときです。
たとえばTimpyの基板のパターン幅は0
15mmですが、このような細いパターンをジャンパするときなどに、より線をほぐした線素(直径約0
そんな細い線の場合、ニッパよりもこのはさみのほうがずっと便利です。ジャンパ箇所の片方にはんだ付けして、もう片方を長さ出しした状態のまま切ることができます。
何種類か持っていますが、常用しているのはΦ0
いろんなものが販売されていますが、品質のいいものをお勧めします。
【秋葉原にて購入:価格は忘れた】
Pyxisのページでもご紹介している、長年愛用の一品です。
○銀メッキ線であること
芯線が銀メッキされているので、はんだのなじみが抜群です。フラックスが効いている状態ならば、予備はんだは要りません。
この魅力を知ってしまうと、もう普通のスズめっき線には戻れないでしょう
他社製品にも銀メッキ品はありますので、試してみてください。この素材、もちろんはんだの熱に耐えますが、よく売っているETFE線よりもずっと柔らかくしなやかで、とても素直です。Pyxisの数千本に及ぶ配線量をきれいにまとめられたのは、このワイヤのおかげです。
このワイヤを使い始めて20年以上になりますが、寿命の長い製品ですね
現在も生産されています。先日、秋葉原の鈴商で、このワイヤの小リールが売られているのを偶然見つけました。右の写真がそれです。
うれしくなって、即衝動買い
秋葉原でこのワイヤを見たのは久しぶりです。
【右の写真は最近秋葉原の鈴商にて購入:¥500】
透明度が高い、薄い、伸びない、丈夫などが特長の樹脂テープです。目につく部分の固定や表面保護に良く使います。0のリモコンケースの裏ぶたはこれで固定しています。薄く透明なので目立ちません。
写真でもそれとわからないでしょ
【都内のラジコン屋さんにて:価格は忘れた】
はんだこての熱にも耐える、とても便利なテープです。絶縁や裸線の固定などに良く使います。はんだこてを直接こすり付けたりしてもなんともありません。ポリイミドはフレキシブル基板の材料にも使われている例の黄土色の材料です。基板の材料ですから耐熱性は十分なんですが、実際には粘着材の違いなどにより、+180°Cくらいから+400°Cくらいまでいろんな種類があるようです。
決して安くないので、買う前に性能を確認したほうがいいでしょう
このテープはカプトンテープと呼ばれることもあります。カプトンはポリイミドを開発したデュポン社の、ポリイミドフィルムの商標です。ポリイミドテープの使用例のひとつとして、基板上でのジャンパ処理を挙げておきます。設計をミスったりすると、こういう作業で誤魔化すことになります。15mm幅のパターンが3本、並行して走っています。
この両端の2本をつなぎ換えてみましょう
(2)カッターでパターンに切れ目を入れます。パターン1本あたり2箇所切ることがコツです。(3)2箇所入れた切れ目の間の銅箔を、カッターの先で跳ね上げるようにしてはがし、取り除きます。これによりパターンは確実にカットされます。(4)カットしたパターンの端部のレジストを、カッターの先で削ってはがします。その後予備はんだをしておきます。はんだののり具合で、レジストの除去が十分かどうかが分かります。(5)ジャンパ線が通る箇所にポリイミドテープを貼っておきます。隣接するパターンとの絶縁を確実にするためです。このような細かなテープワークに、化粧はさみが威力を発揮します。(6)まず1本、ジャンパを飛ばします。(7)ジャンパ線の上にポリイミドテープを貼ります。(8)もう1本のジャンパをたすきがけに飛ばします。(9)最後に、全体を覆うようにポリイミドテープを貼って、絶縁します。テスターで導通と絶縁を両方確認して完了です。面実装が増えてくると、パターン上にスルホールがあるとは限りません。したがって、このようなパターン途中でのジャンパ処理が必要になることがあります。さらに(9)の定規の目盛が示すように、パターン幅も狭くなってきていますので、薄くてはんだの熱に耐えられるポリイミドテープは必須アイテムとなっています。
まあ、まずは設計をミスるな、という事なんではありますが・・・
絶縁などに良く使われる、アセテート布を基材としたテープです。もちろん寺岡ブランドです。
このテープの特長は手で簡単に切れること
しかも布の目に沿って、縦横どちらにでもまっすぐ切れます。工具はいりません。通常の絶縁用テープとして使えます。耐熱性もある(+105°C)ので、基板上の配線や部品の固定などに便利なテープです。ちなみに伸びないので、ビニールテープのように締め付ける使い方はできません。SDカード・トランスポートを作ってみました。放課後の電子工作 HOME > SDカード・トランスポートを作ってみました。SDカード・トランスポートを作ってみました。
一部を引用しますと:
『ディジタルオーディオの実験の興味から、WAVフォーマットをできるだけ遅延(ジッター)なく再生してI2Sで出力し、それをI2S入力を受け付けるD級アンプかDACのLSIに流し込んでみたく、VS1053を利用することを思いつきました。"I2S"というのはディジタルオーディオの信号形態のひとつです。
I2Sの規格書はこちら
0以降で使用しているデコーダIC"VS1053b"は、アナログ出力の他にこのI2S信号の出力機能も持っています。Bunpeiさんのお考えは、VS1053bを使ってWAVファイルをできるだけ正確なI2S信号へと変換し、外付けのDACに入力するとどんな音になるのか試してみたい、ということのようです。I2Sといえば十数年前、PCMCIAのフラッシュメモリカードに記録した無圧縮PCMデータをマイコンでDACに転送するスタンドアローン・プレーヤを作って以来のご無沙汰です。
いや、I2Sではなく標準フォーマットだったかな・・・まあ細かい話は置いといて
私も”耳が雑”なわりにオーディオは嫌いではなく、またVS1053bの新機能を試してみたいという興味もあって、Rev7
0を流用することでBunpeiさんのプランに便乗させてもらうことにしたのです。現在は192KHz、24ビットまでをサポートする第2作目が進行中です。
》SDカード・トランスポートを作ってみました : シリーズラインナップ
サンプルレート192KHz、24ビットまでをサポートするSDカード・トランスポートです。ページの先頭へ戻る。
SDカード・トランスポートを作ってみました −その2−
SDカード・トランスポートを
作ってみました。0"改")によりSDカード・トランスポートの有用性が確認できました。
FATのクラスタチェーンをたどりながら、SDカードから平均転送レート9
この点を確認すべく、ユニバーサル基板に手配線で製作したものがRev1