割り込みがないときは、4個のADコンバーターと1回の通信がクロック周波数20MHzぐらいでSPI通信し続けて、最新の256個ぐらいのbitデータを配列などに保存して、CPUから割り込みをかけたときに、

工学 | C言語関連179閲覧

ベストアンサー

0

ADS8329のSPIクロックはmaxで20MHz程度なので、1Mspsで使う限りバス接続はできません。4chのSPIが必要ですね。 保存が必要なのは直近256回分のデータなので、4ch分でもFPGAの16kbit BlockRAM資源一個で収まります。平均値算出に256クロック+αのレイテンシが発生します。 レイテンシ無しのリアルタイムで平均値算出する場合も、256depthのFIFO、24bitのadderとsubtractorを組み合わせ、「256回分の加算値、そこから256回前のデータを一個減算」という処理で、小規模な回路で実現できます。 一番小規模なFPGAで十分です。

ThanksImg質問者からのお礼コメント

回答ありがとうございました。

お礼日時:7/7 7:33

その他の回答(4件)

0

ydohiさんの意見に1票。 マイコンで取り込んだ場合、取り込んだデータをどうするの?という問題も発生します。能力いっぱいいっぱいで書き出す暇がない。 STM32系とかで 「100ksps × 2ch のデータを SDへ書き出す」実績はありあます。割り込み、DMAフル稼働です、もちろんSDカードも産業用で高速の奴です。 FPGAなら問題ないでしょうけれど・・・大量に貯められないなぁ。

0

ydohiさんの意見に1票。 1MSPS16bit と簡単におしゃっていますが最大性能であれば16Mbpsの通信速度が要求される。これって、USB1.0, USB1.1より高いのでは?既成のマイコンでは無理。しかも4CHでしょ。吐き出しも考えると5CH必要。 概略システム検討からやり直しする必要がありそう。 そもそもSPIの利点であるバス形式に接続できることを利用するなら通信速度は2Mbpsぐらいがいいところではないかな。これでも4ヶぶら下げるとなると苦労すると思うよ。 2Mbpsというが1ヶあたりで見れば250kbsです。マージンをみればさらに低くなる。

0

あなたの文章には肝心なAD変換器の分解能、サンプリング周波数がありません。 SPI通信は8ビットだと20MHzクロックで400nSです。この時間で処理できるマイコンが必要です。 システムの必要性を具体的に把握して作るべきシステムを確立するデータを得てからシステムをどのようにすれば実現するかを考えます。 十分高速のマイコンがあるのでFPGAはたぶん論外でしょう。 PICとはマイコンのメーカのマイコンの総称みたいなもので個別に性能も違うものがあります。 私ならルネサスの組み込み用マイコンの機種から必要な機能を達成できるものを選ぶだろうと思います。豊富に選べます。

回答ありがとうございます。 用いるADコンバーターはTexas InstrumentsのADS8329です。このADコンバーターは16ビット、1MSPSです。 FPGAはマイコンに比べて高いから論外ということでしょうか?

0

CPUと、ADCを4ch持っているマイコン(PICなど)をSPI接続するということですよね? ADCのデータを256個保持して、割り込みがあったときにSPIで送るだけの機能ならば、PICが適切だと思います。 調べたところ、Raspberry Pi PicoはADCが3つしか無いようです。 FPGAは、その機能だけに使うにはもったいない気がします。 (CPU(PICなど)と、SPI通信機能を持った4chのADCを接続するということではないんですよね?そういうICは配列データを用意するとかマイコンみたいな機能はないと思うので)

回答ありがとうございます。やりたいのは、まず、PICなどをマスターとして4つのADコンバーターとSPI通信して、WindowsやRaspberry Pi4BなどのOSを持ったものからPICなどに割り込みを入れたときだけ、スレーブとしてSPI通信してOSを持ったものに最新の256個のデータの平均を渡すというものです。マイコンのADコンバーターを使うわけではないので、Raspberry Pi Picoのアナログ入力が3個しかないのは問題ないです。