Article #54

既に発行済みのブログであっても適宜修正・追加することがあります。
We may make changes and additions to blogs already published.
posted by sakurai on August 20, 2018 #54

次はサウンドです。音を出すには可聴周波数帯域の適当な振幅のアナログ信号を出力します。そのために前述したPMOD-I2SというDACが必要になります。

製品データシート: https://reference.digilentinc.com/_media/reference/pmod/pmodi2s/pmodi2s_rm.pdf

使用DACデータシート: https://www.mouser.com/ds/2/76/CS4344-45-48_F2-472818.pdf

このデータシートによればステレオの24ビットオーディオDACとのことで、ゲームサウンドには高級すぎますが、それほど高価ではないのでこれを使うことにします。インタフェースはI2Sというシリアルデータです。 マニュアルに掲載されているシリアルデータフォーマットを次の図に示します。

図%%.1
図54.1 シリアルデータフォーマット

16bitデータ2ch(L, R)の32bitデータをシリアルでDACに供給しますが、注意点は図のように1ビットズレていることです。

入力としては、waveファイルをデコードし、シリアルデータを出力するようなモジュールを作成します。以下に入力のwaveフォーマットを示します。 http://sky.geocities.jp/kmaedam/directx9/waveform.html

このwaveをデコードするFSMを設計します。以下にサンプルのwaveフォーマットを示します。

図%%.2
図54.2 waveフォーマット例

入手したwavファイルのサンプリング周波数とデータ精度がバラバラで、ハードで扱うには厳しいので、全て11.025KHz、8bit、Mono、メタデータ無しに変換しておきます。そのコマンドは以下のとおり。

$ ffmpeg -i input.wav -ac 1 -ar 11025 -acodec pcm_u8 -fflags +bitexact -flags:v +bitexact -flags:a +bitexact output.wav

次回に続きます。


左矢前のブログ 次のブログ右矢

Leave a Comment

Your email address will not be published.

You may use Markdown syntax. If you include an ad such as http://, it will be invalidated by our AI system.

Please enter the numbers as they are shown in the image above.