この節はもともと最初に書いていたのですが、出来がわるいので後ろに回してしまいました。
こて試しはシリアルポートの制御です。EZ-KIT Lite 2191 はDSPのSPORT0にAC97コーデックを接続しています。このコーデックを制御して音でも出してみましょう。実用性は無視してとにかく触って音を出すことを目指します。
また、SPORTを使う上で必要なレジスタの知識やAC97コーデックについても説明します。
下の図はADSP-2191内部の同期シリアルポート関連のデータの流れを模式化したものです。SPORTはSynchronized serial PORTの略だとか、synchronized Serial PORTだとかうわさされますが、実際のところはスポーツ好きのお兄さんのべたな駄洒落じゃないかと思います。それはともかく、ADSP-2191内部にはSPORTに関するデータの流れが二つあり、好きなほうを使うことができます。
一つはコアから直接SPORTをアクセスする方法であり、下の図では青で表されています。この方法ではデータの転送が可能になる度にSPORTから9xコアに割り込みが入ります。そして、割り込みハンドラがデータをメモリーから取り出してSPORTに書き込みます。VisualDSP++の備え付けの割り込みハンドラは大体200サイクルくらいのオーバーヘッドがありますので、この方法は結構きつい負荷がかかります。実は今回はオーバーヘッドが理由で原理的にこの方式は使えません。
もう一つのアクセス方法はDMAを使う方法です。ADSP-2191内蔵のDMAはSPORTから受信したデータをメモリーに転送し、他方で送信すべきデータをメモリーからSPORTに転送します。この方法は最初の設定さえしてしまえば指定したデータ数だけ自動的に転送が行われます。もちろん転送のペースはSPORTの通信速度にあわせますし、DMAが転送を行っている間は9xコアは別の仕事に専念することができます。このように性能上のメリットが大きなDMA方式ですが、難点があるとすれば最初の設定が大掛かりなため、とっつきにくいことでしょう。なんにせよ例題があればそれほど難しいことではありません。
一方、EZ-KIT Liteは3系統あるADSP-2191のSPORTのうち、SPORT0にAC97コーデックを接続しています(下図)。コーデックの入出力はLine-in、Line-outに接続されており、外部の音源やアンプ付きスピーカーに接続することができます。AC97コーデックAD1885AはDSPと接続するのに都合のいいSLOT16モードを持っていますが、今回はこれは使わずに使用する実験を行います。
AC97コーデックのデフォルトのサンプル周波数は48KHzです。これは21μ秒ごとにサンプルが行われ、ステレオの各チャンネルの処理は10μ秒以内に処理しなければならないことを意味します。
⇒次は同期シリアル伝送