NP1003応用例A へぇ〜しっく (HASIC)発表日 2004年1月9日
2004年1月9日 発表 へぇ〜しっくとは 「へぇ〜しっく」はFPGAワンチップで構成するへぇボタンです。
なお、「へぇ〜しっく」の語源ですが、FPGAは広義のASICといえますので、「へぇ〜」とASICをかけて、HASICと名づけています。 機能概要 FPGA内のブロックRAMを波形ROMとして使用し、FPGA内にDelta-Sigma型1ビットDACを構成して、FPGAのI/Oから直接アナログ信号を出力します。
と、重なり合って聞こえます。「へぇ〜しっく」ではこの重なり合い機能を4多重まで実装しています。 実体配線図以下に、「へぇ〜しっく」の作り方を示します。 これだけで、圧電サウンダが「へぇ〜」と言います。 電源投入で「へぇ〜」がなるということ -コンフィグROM- NP1003はコンフィグROMがオンボードで標準搭載されているため、USBケーブルを挿入と同時に「へぇ〜」を発声でき、すぐに楽しめます。 Delta Sigma 1ビットDACのしくみ簡単に申しますと、1と0を高速に切り替えて、その密度で中間値を出すというものです。 簡単なイメージ図で、PWMと比較してみましょう。 図2 PWM出力の波形 図3 Delta Sigma 1ビット DAC出力の波形 PWMもDelta Sigmaも1と0の密度で中間値を表現する方法なのですが、Delta Sigmaの方がきめ細かい出力が可能です。波形はどちらもギザギザしていますが、周波数成分で見ると、次のように大きな差があります。 図4 PWM出力のスペクトラム 図5 Delta Sigma 1ビット DAC出力のスペクトラム PWMは低い周波数成分に高い周波数成分にもだいたい一様なノイズを持ちますが、Delta Sigmaではそのノイズが高い方へと押しやられてしまい、低い周波数成分は綺麗なスペクトルになります。実際、耳に聞こえるのは20kHzくらいまでなので、数百〜数MHzにあるノイズは耳に聞こえず、クリーンな音が聞こえるのです。 なお、本来はDACの出力にローパスフィルタをつなげるべきです。 このため、Delta Sigma DACの出力にはローパスフィルタを入れることを強くおすすめします。しかし、CR型のフィルタはエネルギを消費しますので、エネルギが勿体無いだけでなく、パワーMOS FETの大きなアンプでは発熱しそうですね。このため、最終段階でLC型のフィルタを使うのが一般的だそうです。コイルとコンデンサではエネルギを消費しませんので。 Delta Sigma DACの実装については、XILINXのアプリケーションノート XAPP155がとても簡単な方法を紹介しています。 なお、Sigma Delta 1ビットADCといのもあります。これを使えば、FPGA単体でADCとDACが構成できます。速度はあまり速くはないのですが、数10k
sample/sec、10ビットくらいのDACやADCは簡単につくれてしまいます。 波形の測定Sigma Delta DACでは、その波形を見てもとてもアナログには見えません。 写真3 Delta Sigma 1ビット DAC出力の波形 より拡大していくとこのように密度の差が見えてきます。 写真4 Delta Sigma 1ビット DAC出力の波形波形 圧電サウンダをつなぐと、FPGAのI/Oピンがなぜかハイパスフィルタのような波形になりました。圧電素子に短時間の間にエネルギが蓄積されたり開放されたりを繰り返すのでしょうか? 写真5 圧電サウンダ上の電圧 LPFをつなぐと、このようにアナログ信号が取り出せます。なお、写真6は「へぇ〜」を、「へぇ〜 へへへぇ〜」の要領で4回鳴らしています。 写真6 LPFを通した場合の電圧波形
「へぇ〜」の音をPCのマイク入力から入力し、測定したスペクトラムです。 今後の方針一般に、「へぇ〜」の音声は、10kHzくらいまでの成分を含んでいるので、サンプリング周波数が低いと曇った音になってしまいます。しかし、サンプリング周波数を上げると、FPGA内の(ブロックRAMでつくる)ROMの容量が足りなくなります。そこで、音声を圧縮してROMに記憶し、それをリアルタイムに展開して発声するのがベストかと思います。音声圧縮には、ADPCMやCELPなどいろいろあり、また、メーカー系のADPCMのアルゴリズムはいろいろとライセンスがあると思うので、G.726のアルゴリズムを探しているのですが、ネットで簡単には落ちていません。G.726を使って音声を圧縮し、サンプリングレートを少なくとも20kHzくらいまでは上げられれば、音質がとてもよくなると思います。
今回の記事は、Sigma Deltaの理論的な部分には深入りせずにさらっと書きました。私もSigma Deltaを勉強して、そのうち高度な解説ができるようにします。 ソースコードNP1003用
上のソースから最終的に出来上るファイルは、次のbitファイルです。 HuMANDATA社製、XSP-006-200用
圧電素子のサイズが小さいためか、低音がよい音で鳴りません。アンプとスピーカーをつなぐととても良い音が楽しめます。また、7セグメントLEDによって999999へぇまで数えることができます。
| |
|