06-24-2020 03:55 AM
お世話になっております.現在学生で研究用途でmyRIOを使用している者です.デジタルMEMSマイクから出力されるPDM信号をmyRIOのFPGA側に入力を考えていますが苦戦しております.恐縮ですが,何卒ご教授いただけますと幸いです.
【使用する機材・ソフトウェア】
①デジタル出力MEMSマイク変換基板
商品ページ:https://www.switch-science.com/catalog/3379/
②Ni myRIO-1900
ユーザガイドと仕様:http://www.ni.com/pdf/manuals/376047c.pdf
③プログラミング環境
NI LabVIEW 2018 SP1 (32bit)
【現状】
I2SもしくはSPIでオーバーサンプリングすると,①のマイク信号を入力することができると記載があり,myRIOのDIOから入力を試みました.実際に,②のFPGA側にPDM信号を入力したく,myRIOのDIO端子をマイクを接続し,clk信号の出力とdata入力のviを③で作成し,myRIOへコンパイルして試しました.
デジタルマイクの各端子から,myRIO-Aポートへは,
・3.3V・・・+3.3V端子(33番ポート)
・GND・・・DGND端子(30番ポート)
・CLK・・・DIO0端子(11番ポート)
・DATA・・・DIO1端子(13番ポート)
・SEL・・・+3.3V端子(33番ポート)
で接続しました.
また,FPGA_main.vi側でfpga-CLK出力とPDM信号入力するために,
・fpga-CLK出力のシングルサイクルループ(派生クロック:5MHz)・・・DIO0書き込み
・DATA入力のシングルサイクルループ(派生クロック:5MHz)・・・DIO1読み込み
を実行し,DIO1からの入力信号を確認しました.
結果として常にDIO1の値が1(HIGH)となってしまい正常にPDM信号を取得できていない状況です.
【質問】
myRIOでデジタルマイクロフォンからのPDM信号を入力するための,参考資料等がありませんでしょうか?また,PDM信号をmyRIOのFPGA側で入力する際,参考になるライブラリ(viやURL等)等がありませんでしょうか?
初歩的な質問で大変恐縮ですが,お知恵をお借りしたく何卒よろしくお願いいたします.
06-24-2020 10:25 AM
知識が全然ないなかしゃしゃり出るのは良くないかもしれませんが、myRIOとMEMSというキーワードで何となくマニュアルみたいなものがあるようでした。
https://learn.ni.com/teach/resources/91/mems-microphone
正確に問題を把握できていないのですが、信号を取り込む部分がおかしい、ということになるんですかね・・・
二つのDIOのポートをつないで、例えばDIO0からPDM信号を出してもう片方のDIO1で受け取ることはできると思うので、そのPDMを出すDIO0がマイクになった状態にした際に
上手く動かない?ということなのでしょうか
トラブルシュートするときに、どこの部分で問題になっているのかを一つ一つ見ていくのも大切かなと思いますので、以下のサンプルで仮想的にPDM信号を出したり、あるいは、マイクからの信号がどのようになっているかをオシロスコープで確認するなどしてみると何かわかるかもしれません。
https://forums.ni.com/t5/Example-Code/Pulse-Density-Modulation-PDM/ta-p/3532976
いいアドバイスにはなっていませんが何かご参考になれば。
06-25-2020 05:54 AM
すみません、私もあまり詳しくないところですが、コメントさせていただきました。
①I2CもしくはSPI
「I2SやSPIでもデータを受けることはできますが、受けた後にSINCフィルタなどのデジタル処理が必要です。」
と記載あることから、myRIOのI2CまたはSPIのExpressVIを使えば、
比較的容易に動作を確認できそうですが、それはあまりうまくいかなかったでしょうか?
NI myRIO: I2C serial communication - YouTube https://www.youtube.com/watch?v=7CgNF78pYQM
NI myRIO: SPI serial communication - YouTube https://www.youtube.com/watch?v=GaXtDamw5As
Sinc Interpolation Example - NI Community https://forums.ni.com/t5/Example-Code/Sinc-Interpolation-Example/ta-p/3504315
②FPGA
「結果として常にDIO1の値が1」というのがそもそも問題なのか?という疑問もあります。
可能でしたら、オシロで出力波形を確認してみてはいかがでしょう。
マイクの状態遷移図を見ると、仮にSleepモードなどの場合は波形が出ない可能性もあると思います。
https://media.digikey.com/pdf/Data%20Sheets/Knowles%20Acoustics%20PDFs/SPH0641LU4H-1.PDF
私もネットを調べてみましたが、このマイクロフォンのデータ取得並びに
PDM FPGAの実装について、LabVIEWの事例は見つかりませんでした。
こういう時にSTMマイコンだと、ライブラリが準備されていて便利ですね。