1 / 21

Chapter 5. Describing a FIR Filter 5.1 ~ 5.3 前半

Chapter 5. Describing a FIR Filter 5.1 ~ 5.3 前半. 6311621 小野翔人. 導入. シンプルなデジタルフィルタリングアプリケーションの紹介 目的 基盤となるプログラムの流れの概念の導入 デスクトップシミュレーションを用いたデモ. デジタルフィルタ. デジタル信号処理: デジタル信号 ( 離散的な信号) <= 数学的な処理 デジタルフィルタ: 入力データ <= 数学的な処理 →得たい周波数成分を抽出する. デジタルフィルタの種類.

adeola
Download Presentation

Chapter 5. Describing a FIR Filter 5.1 ~ 5.3 前半

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 5. Describing a FIR Filter5.1~5.3前半 6311621 小野翔人

  2. 導入 シンプルなデジタルフィルタリングアプリケーションの紹介 目的 • 基盤となるプログラムの流れの概念の導入 • デスクトップシミュレーションを用いたデモ

  3. デジタルフィルタ • デジタル信号処理: デジタル信号(離散的な信号) <= 数学的な処理 • デジタルフィルタ: 入力データ <= 数学的な処理 →得たい周波数成分を抽出する

  4. デジタルフィルタの種類 • FIR フィルタ(Finite Impulse Response Filter) =有限インパルス応答フィルタ • IIR フィルタ(Infinite Impulse Response Filter) =無限インパルス応答フィルタ • アダプティブ・フィルタ(応用型フィルタ)

  5. FIRフィルタ • 「有限」 入力データは決められた有限な期間のみシステムで使用 • フィルタの位相応答が重要 • 正確な線形位相応答の設計 • 安定で予測可能 という性質を必要とするシステムで利用

  6. 5.1 DESIGN OVERVIEW • FIRフィルタの出力 = 過去と現在の入力値の加重和 • 全ての型は主に与えられたフィルタ計算の実行に用いる ウィンドウのサイズ(離散的なサンプル数)によって定義 • このウィンドウサイズ => "filter taps " • C言語やImpulse Cライブラリを用いるフィルタ: 51-tap FIRフィルタ →ハードウェアのプロセス信号を例示 ハードウェアの為のCプログラミングの側面を紹介

  7. FIRフィルタの数式

  8. 5.2 THE FIR FILTER HARDWARE PROCESS • Figure 5-1 51-tap FIRフィルタと表わすハードウェアプロセス 前章のHelloFPGA同様 • 入力ストリーム上のデータを受け取る(filter_in) • 反復的に計算を実行する(filter_out) (ストリーム上でフィルタリング済の出力に対応するものを得る為)

  9. 入出力プロセスの唯一のインタフェースは filter_inと filter_outの二つのストリームを介する 操作実行の為の係数が必要 (本例のフィルタは32bit整数値) →フィルタリング済データとして同様の入力ストリームを介して送信 (恐らくシステム初期化の一部分) 後期の改良設計では共有されたメモリー資源からその係数を 得られたり、入力信号に反応して新しい係数を動的にロードする様な プロセス変更があるかも

  10. ローカル配列"coef","firbuffer" プロセスの初期に変数"nSample","nFiltered","accum","tap"に沿って定義 TAPS(51)の定義とデータ幅(32bits)よりこれらの配列は それぞれ204bytes(1632bits)のストレージと同一視可

  11. 入出力ストリームが開かれた後 (それぞれO_RDONLY、O_WRONLYモードを使う) 係数(51)は"co_stream_read"を用いて 入力ストリームから読まれる(filter_in) • 上流プロセスが適切に書かれている場合 係数の数を数えるこの方法は安定性が高い =>自己同期性質より、上流下流プロセスが 大きく異なるレートで動作している (=ソフトウェア内で生産プロセスが実行されている時や   ハードウェア内でプロセス消費があるときなど) かどうかに関わらず、データが失われることを防げる

  12. 一番目のループが終了し、係数の読込が済んだ後、一番目のループが終了し、係数の読込が済んだ後、 二番目の初期化ループ(メインループの外側のループ)で計算を開始する為の値をプライマリバッファに充填  することによって後続のメインプロセスループにおけるフィルタの設定を行う • メインループは前章のHelloFPGAの例と同様のパターン "co_stream_read"の返り値はループ条件 =>Impulse C内部コードのループをコーディングする上 =>で最も効率の良い方法 →可能な限り使用する必要がある

  13. FIRフィルタリング操作を行う為の実際の計算はFIRフィルタリング操作を行う為の実際の計算は 二つの内部コードのループに含まれる 1番目:現在値(入力バッファ"firbuffer"や対応する係数から  得られた値)におけるフィルタ計算 2番目: (出力ストリームに結果値が書き込まれた後)  次のメインループを反復させる為の準備の一つとして  配列をシフト

  14. フィルタプロセスがストリームの終了条件を検知フィルタプロセスがストリームの終了条件を検知 (プロセスへのフィルタ入力がこれ以上存在しない) するとコントロールはループの外に移り、 “filter_in”,“filter_out”は閉じる =>実際のハードウェア実装では決して起こらないことを 前提とすることができる プロセスはシステムの電源が切られるまで値の処理を継続

  15. 一連のテスト後にその様なクリーンアップを行うデストップ一連のテスト後にその様なクリーンアップを行うデストップ シミュレーションはプロセスに反応して動作し続ける ストリームが閉じないまま =>プロセスは永久に自身を処理しない 他のプロセス群も結果として閉じない • シミュレーションが期待通りに完了しない

  16. 5.3 THE SOFTWARE TEST BENCH • FIRフィルタの適切な関数を確認する為の 標準的なC言語のfopen及び関連する関数を使用した 簡単なソフトウェアテストベンチ • ファイルから係数,ソースデータを読み取り、 デスクトップシミュレーション中にこれらの値を FIRフィルタプロセスに示す

  17. How fast will it run? • 汎用的な51-tap FIR filterを定義する必要がある • FPGAハードウェアが生成されたとき、プロセスはどの様に実行されるか? • 待ち時間及びスループット • ロジックの大きさ →C言語からハードウェアへのコンパイラやオプティマイザを 駆使して初期コンパイルを行うことで回答が得られる • ループの遅れに関する情報(ステージ毎に測定) • パイプラインの遅延と割合 • サイクル数 • 生成されたロジックの大まかなサイズ

  18. パフォーマンスに関するより正確な情報 • 出力に対してハードウェアシミュレーションを実行 (HDLシミュレータを用いる) • FPGAのネットリストを取得するために生成されたロジック を組み合わせる ネットリスト … 素子間を接続する配線(ネット)の一覧を記述した 設計データの表現形式

  19. 内部コードのループを手動でアンロール or • 自動でその様なアンロールをする為 コンパイラプラグマ(Impulse Cに付属)を使用したり 必要に応じてパイプライン化をする • これらの設計はいくつかの明確なトレードオフがある   大きさと速さのバランス

  20. About this FIR filter • かなり遅いFIRフィルタの実装をするためにコンパイルを行う =>生成されたハードウェアの観点で合理的かつコンパクト • 一つのフィルタ処理を終えるクロックサイクルの観点で このフィルタは遅い =>デフォルトではImpulse Cコンパイラは内部コードのループやメインプロセスのループにおける パイプライン化やアンロールすることを試みない為

  21. システム要件に関する独自の知識を持っていれば...システム要件に関する独自の知識を持っていれば... • 最適化 • コード内やプラグマ内にその様な効果を持つ命令を挿入 • 常に起こり得る結果を認識 • どの様にサイズとスピードのバランスを考慮し最適化を行うか?

More Related