▼ コメント記入欄はページの下の方にあります。 ▼
|
▼ 307 : 2009年8月2日(日) 24:52:28
|
カテゴリ: 設定なし
|
|
Wolfson Microelectronics のWM8805 という S/PDIF トランシーバを入手して、ようやく音が出たので顛末を記録。
以前組んだ ■ 抵抗DAC の機能にはいまいち満足していなくて、たとえばレベルメーターとかチャンネル選択機能とか欲しいのだけれど、そのためには処理能力の低いPICを捨てなければならず、つまりDAI基板とLCD表示基板を全部取り換えることになる。ならばいっそ全部新しいのを組んでみようか、と思ってとりあえずDAIチップだけを購入。左の写真は抵抗DACを開腹して抵抗アレイ以降の基板に接続して音を鳴らしているところ。
PICに比べてAVRは4倍速、余裕だろうと思っていたらそうでもなかった、というのも前作で使ったTC9245は音声1フレームあたり32ビットの音声信号を出力するのに対して、WM8805は64ビット。しかもこれが最少。よってやはりシリアル入力を愚直に読むわけにはいかない。
ならばと思い最初は入力にSPIを使ってみたのだけれども全くうまくいかず。入力も出力もうまくいっていないようでダメダメ。入力は読み始めのトリガのタイミングがうまくいっていないようで、出力は単純に間に合っていないらしい。さらにノイズがひどい。WM8805は3.3Vで動いているので5VのAVRとは信号レベルが合わないのかもと思い、AVRのVccを4.5Vくらいにしてみたり、レベル変換回路などを組んでみたけれどやっぱりだめ。
ここで音声1フレームあたりにAVRのクロックをいくつ使えるかを計算し、avr-gccの吐き出したアセンブリコードを見て全く足りていないことを認識する。うーん。前作ではPICの処理を軽減するために74ロジックでシリアル→パラレル変換を組んでいたので、今回もとりあえずその線でいくことにする。がしかし74ロジックでまた組むのもばからしいので、ATTiny2313をWM8805のクロックと同調させて動かして変換させることに。
WM8805からは1フレームあたり256クロックのマスタークロックが出ている。これでAVRを動かすと、1フレームあたり64クロックのビット信号を読むには、まずフレーム開始のトリガを待って、それから4クロックあたり1ビットのサンプルを行えばよい。クロック数を制御するのはアセンブラを使えば自ずとそうなるので、別に用意されているビットクロックを監視する必要もない。いままでCでAVRをプログラムしていたのもあって、至極簡単なのになかなか思いつかなかった。くやしい。
この方法でシリアル→パラレル変換はあっさりと解決。あとはATMega168の外部割り込みを使ってパラレル信号を読ませて、USARTをSPIとして使って抵抗アレイのシフトレジスタへ送信。細かいバグとりやタイミング調整をしたら、めでたく音出し成功。ノイズは電源ラインやGNDを配置しなおして解消。
というところで現在。
写真のブレッドボードにのっかっている3つのチップは、右から、今回のS/PDIFトランシーバであるWM8805、音声信号のシリアル→パラレル変換を行っているATTiny2313、パラレル信号から抵抗アレイのシフトレジスタへ再度シリアル変換し送信しているATMega168。 ATMega168はもともとATMega88だったのがなにかの拍子に応答しなくなったので代替しているだけで、そんなに大きなメモリが必要なわけではない。
レベルメータやチャンネル選択と、それに付随するユーザインタフェースとの通信は、それなりにパワーが要りそうだと思ってMega168を中心に据えているのだけど、パラレル変換担当のTiny2313のプログラムを組んでみたら意外とnopが多かったので、うまいことやればTiny2313は取り払って、Mega168も元に戻して、Mega88ひとつだけでいけるかもしれない。これは要検討。うまくいくと前作でTC9245以外に5つもチップがあったのを1つにできるかもしれない。
ところでWM8805から出てきたデジタルオーディオの音質について、ジッタ除去回路がWM8805に内蔵されているだけあって、なかなかしっかりしている印象。もともとジッタの少ない同軸信号を入力するとTC9245との違いは特に感じないけど、光信号を入力すると差がわかる。いままでちゃんと聴きたいときには同軸につなぎかえたりしていたので、光でしっかりした音が出るのはうれしい。これが10年分の技術の進歩か。 |
|
|
|
|
■ 一覧へ戻る ■
|
 |
 |
 |
| -- じゃんぷ -- |
☆ 最近の10件
|
| 2009年8月 |
| 日 |
月 |
火 |
水 |
木 |
金 |
土 |
| * |
* |
* |
* |
* |
* |
1 |
| 2 |
3 |
4 |
5 |
6 |
7 |
8 |
| 9 |
10 |
11 |
12 |
13 |
14 |
15 |
| 16 |
17 |
18 |
19 |
20 |
21 |
22 |
| 23 |
24 |
25 |
26 |
27 |
28 |
29 |
| 30 |
31 |
* |
* |
* |
* |
* |
| 9月 >> |
|
|
|