• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CPLDで平均等の数値演算)

CPLDで平均等の数値演算

このQ&Aのポイント
  • CPLDを使用して、A/Dコンバータの取り込み結果のノイズレベルを低く抑える方法について、質問させていただきます。
  • 具体的には、数十μsの周期でA/D変換を行い、連続したn個の値を平均化することでノイズ成分を収めたいと考えています。
  • CPLDを使用すれば、μS以下の処理速度でこのような演算が可能なのでしょうか?ご意見をお聞かせください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> 74シリーズのようないろんなロジックICをプログラムで構成できるものと理解しています。(あってますでしょうか...) 合っています。 > 数十μsの周期でA/Dの変換結果をそのままCPUで読み込んでいますが、連続したn個の値を平均化すれば、ノイズ成分が収まることが経験的に確認できています。 もうひとつの解決方は、アナログフィルタを通す方法です。 元のアナログ信号をあなたの必要としているAD変換周波数の2倍をカットオフ周波数とするローパスフィルタを通せば、オシロで見ているノイズは消えるでしょう。 もちろん、AD変換周波数もその周波数に落とします。 > CPLDでそうした事が可能なのでしょうか? AD変換はCPLDではできません。 よって、必要なサンプリング周期のADコンバータを動作させなければなりません。 その周期は、CPLDのクロックと同期を取るのが定石です。 それをn回加算し、nで割れば良いのは、理解しているとおりです。 さて、ここでnをいくつにするべきか、です。 デジタル回路においてn(≠2の冪乗)で除算するのはコストのかかる演算です。 よって、nを2の冪乗に置くべきです。 20μ秒のADコンバータで1m秒毎にデータが欲しいのであれば、n=32となるでしょう。 ∵20μ秒×32=640μ秒≦1m秒 15μ秒であれば、n=64でも可能です。 ∵15μ秒×64=960μ秒≦1m秒 32で除算するということは、log2(32)=5なので、5ビット右シフトすることと同じです。

scheimpflug
質問者

お礼

okazaki0koさん、遅ればせながらご回答ありがとうございました。 しばらくここを覗いてなかったのと、回答投稿のあったときにお知らせが届く設定になっていなかったようで、気づきませんでした。 実は、過去のトラ技にアルテラのMAX2が付録で添付されていたので 早速使っていました。(知らずに5V印加してこわしちゃいましたが・・・) 2のべき乗での加算処理に関しては、参考になりました。 改めて御礼申し上げます。ありがとうございました。

関連するQ&A