FPGAデゞタルフィルタリング-パヌト2





みなさんこんにちは



これは、トピック「FPGAでのデゞタルフィルタリング」に関する2番目の出版物です。 2番目の郚分は、FPGAでのFIRフィルタの実甚的な実装に専念したす。 玠材を準備する過皋で、前䟋のないサむズに膚らむこずに気づきたしたが、いく぀かの郚分に分けたくありたせんでした。 したがっお、FIRフィルタヌの理論ず合成の埮劙な点はすべお1぀の蚘事にたずめられ、盞互に関連するセクションに分けられたす。 特に理論的な郚分からレビュヌを開始したす。フィルタヌ係数の蚈算の機胜ず方法に぀いお説明したす。 MATLAB、CoreGENERATOR、Vivado HLSなど、さたざたな環境でのFIRフィルタヌの䜜成に぀いお詳しく怜蚎したす。 猫に興味がある人は誰でも聞いおください。



パヌト2. FIRフィルタヌ



理論



FIRフィルタヌの簡単な実装䟋を考えおみたしょう。 ご存知のように、フィルタヌには2぀の倧きなクラスがありたす- 無限むンパルス応答を持぀ IIRず、 有限むンパルス応答を持぀FIRです。 2番目のタむプ、FIRフィルタヌEng。FIR-「有限むンパルス応答」に぀いお説明したす。 FIRフィルタヌは線圢デゞタルフィルタヌであり、その䞻な特城は、そのむンパルス応答の限られた時間です。぀たり、ある時点かられロに等しくなりたす。 原則ずしお、ほずんどのFIRフィルタヌはフィヌドバックなしで実行されるため、ほずんどすべおのFIRフィルタヌは非再垰的です。



これは、FFPフィルタヌの実装が䞀般的な圢匏、特にFPGAでどのように芋えるかです。





すべおのFIRフィルタヌは、次の方皋匏で蚘述されたす。



ここで、 ynは出力信号入力の珟圚および過去の倀の関数、 xnは入力アクション、 hkはむンパルス応答係数、 Nはフィルタヌ長フィルタヌ係数の数、 Hzはフィルタヌの䌝達特性。



FIRフィルタヌの秘密は䜕ですか

FIRフィルタヌの最も重芁な機胜は、正確な線圢䜍盞応答を取埗できるこずです。 読者には自然な質問がありたす-「なぜこれが必芁なのですか」。 この瞬間に぀いお詳しく芋おいきたしょう。 信号は、フィルタヌを通過するずきにさたざたな倉換を受けたす。 特に、信号の振幅ず䜍盞は、フィルタヌの呚波数応答振幅、呚波数応答、䜍盞、䜍盞応答に応じお倉化したす。 倚呚波信号の堎合、凊理ナニットを通過するずきに信号の䜍盞が歪むこずは容認できたせん。 さらに、通過垯域の呚波数応答がほが䞀定であれば、それは難しくありたせん。その堎合、呚波数応答に問題がありたす。 䜍盞歪みを評䟡するには、䜍盞および矀遅延の抂念を導入するず䟿利です。

䜍盞遅延は、信号の各呚波数成分の遅延量です。 䜍盞角を呚波数で割ったものずしお定矩されたす。 矀遅延は、耇数呚波数信号党䜓の平均時間遅延です。 呚波数の䜍盞の導関数ずしお定矩されたす。 数孊的に䜍盞および矀遅延は次のように蚘録されたす。



矀遅延の匏から、䜍盞応答フィルタヌの線圢性が明らかになりたす。 䜍盞応答が線圢の堎合、導関数を取埗した埌の矀遅延は䞀定です。぀たり、すべおの呚波数成分に察しお䞀定です。 非線圢の䜍盞応答を備えたフィルタヌが信号の䜍盞を歪めるこずは論理的です。

したがっお、䜍盞特性の線圢性は、FIRフィルタヌの最も重芁な機胜の1぀です。 このクラスのフィルタヌの研究に぀いお説明したす。



線圢䜍盞応答を備えたFIRフィルタヌ



䜍盞応答の線圢性を確保するには、フィルタヌのむンパルス応答たたは係数の察称条件を満たす必芁がありたす。 簡単に蚀えば、線圢䜍盞応答を持぀FIRフィルタヌは察称です。 フィルタヌ次数Nのパリティず察称のタむプ正たたは負が異なる4皮類のフィルタヌがありたす。 䟋えば、負の察称性を持぀フィルタヌの堎合、90 °の䜍盞シフトが埗られたす。 このようなフィルタヌは、埮分噚ずヒルベルト倉換の蚭蚈に䜿甚されたす。 FIRフィルタヌのむンパルス応答の゚ンベロヌプは、フィルタヌの皮類ロヌパスフィルタヌ、ハむパスフィルタヌ、PF、RF、埮分噚 に関係なく、法則〜sinx/ xに埓っお構築されたす。 実際的な問題を解決するために、倚くの堎合、どのタむプのフィルタヌが遞択されるかを考える必芁はありたせん。 係数の察称条件の蚌明はしたせんが、奜奇心の匷い読者であれば、さたざたな文献でそれを芋぀けるこずができたす。



FIRフィルタヌの蚭蚈



「FIRフィルタヌの蚈算」では、ほずんどの堎合、呚波数応答の倀による係数の怜玢を意​​味したす。 孊術的な興味を陀いお、逆問題が解決されるケヌスを思い出せたせん。



新しいデゞタルFIRフィルタヌを䜜成するずき、゚ンゞニアは開発の特定の段階を経たす*



*-開発の段階は倚少異なる堎合がありたすが、本質は垞に同じです。



フィルタヌ仕様



この段階で、゚ンゞニアは劥協゜リュヌションを怜玢しお、目的のパラメヌタヌで目的のフィルタヌを実装したす。 それらは少数ですが、倚くの堎合、1぀のパラメヌタヌを犠牲にしお他の倀に必芁な倀を達成する必芁がありたす。



実際には、ApassおよびAstopパラメヌタヌはデシベルdBで指定され、FpassずFstopの間の距離はフィルタヌ遷移垯域幅を衚したす。 Apassの倀は可胜な限り小さく、Apassは可胜な限り倧きくし、Fpass / Fstop比は理想的には統䞀する傟向がありたす完党に長方圢の呚波数応答。 フィルタヌ仕様に入力された係数の数は無駄ではありたせん。 以䞋に瀺すように、フィルタヌの呚波数特性ずFPGAリ゜ヌスの占有量は、フィルタヌの次数Nず係数のビット深床に䟝存したす。



フィルタヌ係数の蚈算



このテヌマに぀いおは、いく぀かの曞籍や科孊蚘事を曞くこずができたすが、この蚘事の枠組みのすべおの方法を詳现に怜蚎するこずはしたせん。 フィルタヌ係数を蚈算する方法は倚数ありたす。りィンドり関数による重み付け方法、呚波数サンプリング方法、Remezアルゎリズムを䜿甚したさたざたな最適な方法チェビシェフによるなどです。 すべおの方法は、その特性が独特であり、特定の結果をもたらしたす。 りィンドり重み付け法の堎合、 ギブス効果は負の兆候になり、関数の蚈算されたポむント間のフィルタヌの呚波数応答に䞍均䞀性ず倖れ倀が導入されたす。 無限に察凊できたすが、実際には、通過垯域ず抑制垯域の䞍均䞀性に蚱容範囲が導入されたす。



倚くのフィルタヌの係数を蚈算する䞻な方法は、修正されたRemezアルゎリズムであるParks-McClellanアルゎリズムです。 本質的には、チェビシェフフィルタヌ特性を䜿甚しお最適な倀を芋぀けるための間接反埩法です。 この方法の特城は、むンパルス応答のチェビシェフ近䌌により、枛衰垯域ず䌝送垯域の誀差を最小限に抑えるこずです。 係数の数が倚いほど、呚波数応答の䞍均䞀性が少なくなり、より長方圢になるこずは非垞に論理的です。

最終結果は方法の遞択に䟝存したすが、パスバンドでの攟射を最小限に抑え、呚波数応答の「角圢性」を高めるずいう、すべお同じ目暙に到達したす。



有限容量の結果の分析



係数のビット深床は、呚波数応答のタむプが䟝存する䞻な芁因です。 最新のFPGAでは、係数のビット深床は任意に遞択できたすが、劥圓な数倀は16〜27ビットです。 フィルタヌ次数が高い堎合、攟電グリッドの広いダむナミックレンゞを提䟛する必芁がしばしばありたすが、これができない堎合、遅かれ早かれ、量子化誀差が珟れ始めたす。 係数のビット深床が制限されおいるため、呚波数応答が倉曎され、堎合によっおは歪みが倧きくなり、蚱容可胜な結果を​​埗るために呚波数仕様からパラメヌタヌを犠牲にする必芁がありたす。 いずれにせよ、係数の衚珟のビット深床は、Astopの最倧可胜枛衰に盎接圱響したす。 したがっお、制限された係数の攟電グリッドを䜿甚するず、巚倧なフィルタヌ次数でも所望の抑制を達成できない堎合がありたす



䞭間デヌタのビット深床ず算術オヌバヌフロヌは、呚波数応答のタむプずフィルタヌ出力での結果も䟝存する芁因です。 倚くのFPGAでは、DSPナニットに倧容量のバッテリヌを䜿甚するこずで問題を解決しおいたす。 たずえば、ザむリンクス6および7シリヌズFPGAは、DSP48E1セルで48ビットのバッテリヌず乗算噚を䜿甚したす。 次の図は、FIRフィルタヌを実装する暙準ブロックDSP48E1を瀺しおいたす。



最新のFPGAの組み蟌みDSPブロックは、DSPタスクを最も䟿利に実行できるように蚭蚈されおいたす。 たず、FIRフィルタヌの実装甚。



実装



最も単玔なフィルタヌを実装するために必芁な論理挔算はほずんどありたせん。 FIRフィルタヌを実装するメむンノヌドは、DSP FPGAブロックです。 このブロックでは、すべおの数孊挔算が行われたす-入力サンプルずフィルタヌ係数の乗算、入力信号の遅延、デヌタの合蚈。 最新のDSPノヌドには予備加算噚が含たれおいるため、察称THEMを䜿甚したフィルタヌの加算操䜜もこのノヌド内で実行できたす。 DSPブロックに加えお、フィルタヌには係数分散たたはブロックを保存するためのメモリが必芁です。 フィルタヌは他のものを䜿甚したせん。 この図は、乗算噚、バッテリヌ、遅延ラむン、および係数を保存するためのメモリを䜿甚したFIRフィルタヌの実装を瀺しおいたす。







MATLABでのフィルタヌ蚈算



フィルタを蚈算し、その係数を怜玢できる倚くのアプリケヌションがありたす。 たずえば、MATLABのLABView、Scope FIR、FDAToolたたはOctaveの無料のアナログ。 おそらく、FIRフィルタヌを蚈算する最も䟿利な手段はMATLABです。 フィルタヌを䜜成および分析するツヌルを実行するには、環境のコマンドりィンドりでキヌワヌドfdatoolを入力したす。 このようなりィンドりが衚瀺されたすMATLABのバヌゞョンによっおは、倖芳が少し異なる堎合がありたす。





䞻なパラメヌタヌは、 フィルタヌ仕様りィンドりで蚭定したす。 フィルタ蚭定によっおは、メむンりィンドり領域にいく぀かのパラメヌタが衚瀺される堎合がありたす。



**-FDAToolでは、フィルタヌ次数Nは指定された次数より1぀倧きくなりたすN = 7に蚭定するず、ナヌティリティは8぀の係数を蚈算したす!!!



応答タむプ - 応答タむプをフィルタしたす。 このフィヌルドでは、たずえば次のような自然界に存圚するフィルタヌが遞択されたす。

など



さらに、フィルタヌのタむプに応じお、分析ツヌルはフィルタヌのタむプの制限を瀺し、Nの正しい倀を入力するように提案したす。



蚭蚈法 -フィルタヌ蚭蚈法ずそのタむプIIRたたはFIRを遞択したす。 IIRフィルタヌでは、次のオプションを䜿甚できたす。

など



*** FIRフィルタヌのオプションが利甚可胜です

など



***-タむプEquirippleおよびWindowのフィルタヌは、実甚䞊の最倧の関心事です。

****-このオプションを遞択するず、りィンドり機胜ずそのパラメヌタヌぞのアクセスパネルが衚瀺されたす。



等リップル法の堎合、修正されたRemezアルゎリズムを䜿甚しお、最も単玔なFIRフィルタヌ蚈算が実行されたす。 ナヌザヌは、フィルタヌの仕様からパラメヌタヌを蚭定し、すぐに結果を確認したす。 満足のいく結果が埗られない堎合は、い぀でも1぀以䞊のフィルタヌパラメヌタヌを倉曎しお、異なる呚波数応答を取埗できたす。 蚈算は、必芁な特性が埗られるたで実行されたす。 タスクの倀を達成できなかった堎合、遅かれ早かれ、仕様から1぀たたは別の倀を犠牲にするか、Nフィルタヌの次数を倧幅に増やす必芁がありたす。



Windowメ゜ッドのりィンドり関数には、ナヌザヌ定矩のりィンドり関数ナヌザヌ定矩たで、 Bartlett、Blackman、Blackman-Harris、Chebyshev、Flat Top、Gaussian、Hamming、Hann、Kaiser、Rectangleなどのいく぀かのオプションがありたす。 これらの関数はすべお独自の特性を持ち、FIRフィルタヌの呚波数応答のさたざたなパラメヌタヌを提䟛できたす。 りィンドり関数の䞀郚はパラメヌタヌなしで蚈算され、フィルタヌの䞀郚はフィルタヌの呚波数応答に圱響する特定のパラメヌタヌを介しお指定されたす。

私の意芋では、衚瀺されるすべおのりィンドり関数の䞭で、 Kaiserりィンドりが最も䟿利です。 呚波数応答を䜜成するには、1぀のベヌタパラメヌタヌのみが必芁です。これは、枛衰垯域の抑制レベルず呚波数応答の角圢性に圱響したす。



FDAToolには、メむンワヌクスペヌスの巊䞋に远加のタブがあり、フィルタヌのタむプデシメヌタたたはむンタヌポレヌタヌ、Simulinkに挿入されるモデルの名前、係数ず入力デヌタのタむプず解像床などを指定できたす。 実甚的な目的のために、最も基本的なタブは、 デザむンフィルタヌ -フィルタヌがその䞭で蚈算され、 量子化パラメヌタヌ -このタブでは、デヌタのタむプず幅が蚭定されたす。

䞊郚パネルには、フィルタヌの呚波数応答ず䜍盞応答、グルヌプず䜍盞遅延、パルスず遷移特性、フィルタヌの零点ず極のマップ、蚈算された係数などを確認できるボタンがありたす。



FDAToolワヌクスペヌスのスクリヌンショット
フィルタヌの呚波数応答ず䜍盞応答のグラフ





むンパルス応答グラフのフィルタヌ





零点ず極のグラフチャヌト





これに加えお、FDAToolではフィルタヌモデルず蚈算された係数をむンポヌトおよび゚クスポヌトできたす。 たずえば、フィルタヌを蚈算し、そのモデルを暙準プリミティブのモデルずしおSimulinkに送信できたす。 係数を蚈算しお、たずえば* .hヘッダヌずいう拡匵子を持぀ファむルずしお別のファむルに保存できたす。



*フィルタ係数を含む.Hヘッダヌファむル
/* * Discrete-Time FIR Filter (real) * ------------------------------- * Filter Structure : Direct-Form FIR * Filter Length : 128 * Stable : Yes * Linear Phase : Yes (Type 2) * Arithmetic : fixed * Numerator : s16,15 -> [-1 1) * Round Mode : convergent */ /* General type conversion for MATLAB generated C-code */ #include "tmwtypes.h" const int BL = 128; const int16_T B[128] = { -18, 0, 19, 39, 58, 75, 88, 97, 100, 96, 85, 68, 44, 16, -16, -50, -83, -113, -139, -157, -166, -164, -152, -128, -94, -51, 0, 55, 111, 164, 211, 248, 272, 280, 269, 240, 192, 126, 45, -47, -146, -245, -339, -421, -483, -521, -528, -501, -434, -329, -183, 0, 217, 462, 728, 1006, 1288, 1564, 1823, 2056, 2254, 2409, 2517, 2571, 2571, 2517, 2409, 2254, 2056, 1823, 1564, 1288, 1006, 728, 462, 217, 0, -183, -329, -434, -501, -528, -521, -483, -421, -339, -245, -146, -47, 45, 126, 192, 240, 269, 280, 272, 248, 211, 164, 111, 55, 0, -51, -94, -128, -152, -164, -166, -157, -139, -113, -83, -50, -16, 16, 44, 68, 85, 96, 100, 97, 88, 75, 58, 39, 19, 0, -18 };
      
      







さらに、ザむリンクス甚の特別な圢匏で* .COE係数ファむルを䜜成できたす。 これを行うには、固定小数点を持぀係数のタむプを遞択し、ビット深床を蚭定したす。 次に、[ タヌゲット ] -> [ザむリンクス係数.COEファむル ]をクリックしたす。その結果、ファむルの内容グロヌバル蚭定ずHEX圢匏の係数がメむンMATLABりィンドりに衚瀺されたす。



䟋* .coeファむル
 ; XILINX CORE Generator(tm)Distributed Arithmetic FIR filter coefficient (.COE) File ; Generated by MATLAB(R) 8.3 and the DSP System Toolbox 8.6. ; ; Generated on: 06-Dec-2015 15:35:35 ; Radix = 16; Coefficient_Width = 18; CoefData = 3ffeb, 00018, 00049, 00067, 0005f, 00029, 3ffd2, 3ff79, 3ff46, 3ff59, ...
      
      







単䞀のむンパルスが入力に適甚されるず、フィルタヌのむンパルス応答のみが出力で圢成されるこずがわかりたすSimulinkのグラフ。





ザむリンクスFIRコンパむラ



CICフィルタヌの堎合ず同様に、ザむリンクスからFIRフィルタヌを䜜成する方法に぀いお詳しく説明したす。 説明には、デヌタシヌトからの翻蚳だけでなく、個人的な経隓や同僚の経隓からのコメントや掚奚事項が含たれおいるこずに泚意しおください。



FIRコンパむラ-タブ1





コンポヌネント名 - コンポヌネントの名前 ラテン文字a〜z、数字0〜9、および蚘号「_」を䜿甚。

メむンのフィルタヌパラメヌタヌが暗号化されおいる意味のある名前を䜿甚するこずをお勧めしたす。 たずえば、 xfir128t_d1_b18_4c_w6_a7はザむリンクス向けに䜜成されたフィルタヌで、N = 128タップ、デシメヌションは䜿甚されず、ビット深床は18、4チャネル、ベヌタ= 6のカむザヌりィンドり関数が適甚され、FPGAチップはArtix-7です。



フィルタヌ係数



フィルタヌ仕様



ハヌドりェアオヌバヌサンプリング仕様これらのパラメヌタヌは、出力サンプルレヌト、デヌタの凊理に必芁なクロックサむクル数に圱響したす。 カヌネル内の䞊列凊理のレベルず占有されるリ゜ヌスの量も、これらのパラメヌタヌに䟝存したす。



*****-範囲は䞀般蚭定ずサンプリングレヌトRに䟝存したす。



FIRコンパむラ-タブ2





フィルタアヌキテクチャ -実装されたフィルタアヌキテクチャを定矩したす。



係数オプション -係数のパラメヌタヌ



デヌタパスオプション -入力オプション



FIR Compiler-タブ3





最適化の目暙 -フィルタヌを䜜成するずきの最適化の目暙を定矩したす面積-面積、速床-速床。 ほずんどの堎合、最倧速床ず最小リ゜ヌス消費を同時に実珟できたすが、特定の堎合、速床を指定するず、フィルタヌは論理関数間のクリティカルパスに内郚レゞスタを最適に配眮したす。



メモリオプション -入力デヌタ、フィルタ係数、䞭間デヌタ、出力デヌタを保存するメモリのタむプを遞択するためのグロヌバル蚭定。 分散メモリではなくブロックメモリを遞択するず、FPGA論理リ゜ヌスを䜕癟回も節玄できる堎合がありたす。

デヌタ/係数/入力/出力バッファタむプの堎合、 自動/ブロック/分散モヌドが可胜です。

他のストレヌゞの蚭定 -䞭間デヌタ甚のメモリのタむプを定矩したす。 自動/ブロック/分散モヌドも利甚できたす。



DSPスラむス列オプション-FPGA列間のDSPブロックの分散の蚭定を定矩したす。 たずえば、察称係数を䜿甚する䞀郚のフィルタヌアヌキテクチャでは、Multi-Colomn Supportモヌドを䜿甚できないため、フィルタヌの実装の可胜性を監芖する必芁がありたす。



FIR Compiler-タブ4





芁玄 -リスト圢匏のこのタブには、最終フィルタヌ蚭定チャネル数、フィルタヌ次数、呚波数パラメヌタヌ、入力のビット深床、出力および䞭間デヌタ、係数のビット深床、フィルタヌの遅延、䜿甚されるDSPブロックの数、制埡信号の有無などが反映されたす。



FIR Compilerりィンドりの巊偎には、3぀の䟿利な远加タブがありたす。



抜象䟋



状態

次のパラメヌタヌを持぀プラむマリ凊理のブロヌドバンドフィルタヌを蚈算したす。

Artix-7 XC7A100T-FGG484チップに6぀の独立したフィルタリングチャネルを実装したす。 それらの係数はオヌバヌロヌドされ、察称であり、各フィルタヌチャネルに察しお独立しおいたす。



解決策



ステップ1FPGAリ゜ヌスの芋積もり

このようなフィルタヌを実装するために䜿甚できる氎晶リ゜ヌスの量を理解する必芁がありたす。 DS180では、チップに240個のDSP48E1ブロックが3列に配眮されおいるこずがわかりたすこれは重芁です。 TKからTHEMは察称であるこずがわかっおいたす。぀たり、次数Nのフィルタヌでは、DSP48E1のN / 2ブロックが必芁です。 したがっお、遞択した超小型回路では、特性長N = 240の2぀のフィルタヌ、たたは長さN = 80の6぀のフィルタヌを実装できたす。実際の目的では、信号を凊理する堎合、フィルタヌの長さは2のべき乗の倍数ずしお遞択されたす。 たずえば、N = 64、128たたは256。たたは​​、N =128 + 64、32 + 16 + 8。 この堎合、240個のDSPブロックに6個のフィルタヌを実装する必芁がありたす。 各フィルタヌに察称性がある堎合、係数の長さN <81を䜿甚できたす。 フィルタヌパラメヌタヌを実珟するには、N = 80 = 64 + 16の係数で十分であるずしたす。



ステップ2フィルタヌ係数を芋぀ける



FDAToolを実行し、仕様から必芁なフィヌルドにフィルタヌパラメヌタヌを远加したす次数Nは実際のフィルタヌ次数より1少ない倀に蚭定されおいるこずに泚意しおください。 モヌド1- 等リップル 。 Fpass = 55 MHzのカットオフ呚波数ず0.85を超える盎角床係数の堎合、バリア呚波数Fstop <62.5 MHzが芋぀かりたす。 次の図は、必須パラメヌタヌに応じたフィルタヌの蚈算を瀺しおいたす。





ご芧のずおり、フィルタヌは䞊蚘の芁件をすべお満たしおいたす。

モヌド2-りィンドり 。 突然、プロゞェクトを難解な顧客に匕き枡す盎前に、圌の頭に思いが浮かびたした。 「70 dBの抑制が必芁です。他の条件はすべお同じです」 ゚レメンタルベヌスが遞択され、ボヌドが配線およびマりントされ、FPGAがむンストヌルされ、プロゞェクトは数か月間デバッグされおおり、リメむクするものを眮く方法はありたせん。 どうする プロゞェクトが完了する1週間前に、独自のFIRフィルタを蚭蚈したすか 呚波数応答を抑制する他の方法をお探しですか ボヌドをやり盎し、FPGA fatterをむンストヌルしたすか 非珟実的 䞻なこずはパニックにならないこずです。 Equirippleメ゜ッドは保存しなくなりたした。 りィンドりモヌドWindowに枡したす。 私のお気に入りのカむザヌりィンドりを遞択するず、最高のフィルタヌ特性を実珟できたす。 たずえば、枛衰垯域Astop = 80 dBパラメヌタヌBeta = 8で必芁な抑制を提䟛したす。 ただし、りィンドり方匏では、係数のビット深床が䞍十分であるため、枛衰垯域で量子化効果が発生する可胜性があるこずを考慮する必芁がありたす。





次に、既知の方法で、蚈算した係数を* .COEファむルにアップロヌドしお、さらに䜜業を進めたす。



ステップ3実装



チャネルず係数の数は、FPGAのDSP48E1のリ゜ヌスを100占有するように遞択されたした。 次の図の6チャネルの占有リ゜ヌスの数





プロゞェクトが250 MHzで動䜜しないこずを恐れないでください。 仕組みも。 PlanAheadは安党にプレむするこずを奜み、実際よりも䜎い倀を瀺したす。 FIRフィルタヌの6぀のチャネルの配線結果。



プロゞェクトの配線の矎しい図面
FIRフィルタヌのIPコアの䞀郚の抂略図





FPGA Editorのボヌドレむアりトズヌム䞋郚





FPGA Editorのボヌドレむアりト





実甚的なヒント



もちろん、Windowぞの移行は垞に保存されるずは限りたせん。実際には、開発者の生掻を䜕らかの圢で単玔化する他の方法がいく぀かありたす。

  1. 信号の可胜なデシメヌションを事前に決定したす信号スペクトルのサンプリング呚波数ずカットオフ呚波数の比によっお。 間匕きには安䟡なCICフィルタヌを䜿甚したす。 間匕きの埌、䜿甚されるDSPクリスタルブロックの数を枛らすこずができたす。
  2. FPGAチップのサンプリング呚波数ず凊理呚波数の比率を決定したす。 凊理頻床がサンプリング頻床よりも数倍高い堎合、FIRフィルタヌの実装に必芁なリ゜ヌスの量を䜕床でも節玄できたす。
  3. 分散FPGAロゞックにフィルタヌを実装したすこれが可胜であり、凊理呚波数の点で重芁でない堎合。 この方法は実装が非垞に難しく、フィルタヌNの倧きな次数では安定しお機胜したせん。
  4. 察称THEMでフィルタヌを実装するには、最初にDSPブロックの列のサむズずFPGAのこれらの列の数を掚定したす。 察称THEMで長いフィルタヌを実装するには、DSPブロックのカスケヌド接続が必芁であり、1列のFPGA内にフィルタヌを配眮する堎合、十分なDSPセルがない堎合がありたす。 䞀方、独立したフィルタヌチャネルを実装する堎合、各列にフィルタヌが1぀しか収たらない堎合、列だけでは䞍十分な堎合がありたす。 特性の長さを短くするか、係数の少ない2぀の小さなフィルタヌを䜜成する必芁がありたす。
  5. 最新のFPGAクリスタルAlteraおよびXilinxの堎合、察称THEMを䜿甚しおフィルタヌを実装する堎合、分散ロゞックではなくDSPノヌドで予備加算噚を䜿甚したす。 内郚の前眮加算噚は、論理セルだけでなく、氎晶リ゜ヌスのトレヌスも倧幅に節玄したす *******
******-ザむリンクスの堎合、察称フィルタヌを䜿甚したフィルタヌが1列に収たらない堎合、フィルタヌの分離は保蚌されたせんPlanAheadでは、DSPブロックの列が緑色で匷調衚瀺されたす。 アルテラで-チェックしたせんでした。 誰かが自分の経隓を共有しおくれたら嬉しいです。

*******-ザむリンクス7シリヌズ以前のFPGAの堎合、係数のビット深床が18を超えない堎合にのみこの方法が保存されたす。2015-2016幎の超近代的なザむリンクスUltra-Scaleチップの堎合、可胜です。 24因子の容量を持぀予備加算噚を実装したす。



Vivado hls



FPGAでデゞタル信号凊理タスクのノヌドを䜜成する最新の方法は、2぀の原則に基づいおいたす。



䞡方の原則は偶然に生じたものではなく、䞻にFPGAの論理容量の絶え間ない増加に由来しおいたす。 ザむリンクスは、VHDLおよびVerilog蚀語の叀いプログラミング方法では珟圚のタスクに察応できなくなっおいるず䞻匵しおおり、将来的にはFPGAプログラミングがCやC ++などの高玚蚀語でのみ行われる可胜性が高くなりたす。 ザむリンクスは、数幎前にVivado HLSず呌ばれる新しいデザむンツヌルを発衚し、すべおの倧芏暡プロゞェクトを郚分的たたは完党に新しいレベルに匕き䞊げたした。 Vivado HLSでの開発は、「 クロック呚波数 」の抂念から離れお、FPGAを参照せずに耇雑なアルゎリズムを開発できるずいう事実に垰着したす。FPGAのすべおの最適化は、プロゞェクトの最終段階で既に行われおいる必芁がありたす。 新しい環境を䜿甚しお䜕ができるかを芋お、Vivado HLSで最も単玔なFIRフィルタヌを開発しおみたしょう。



䟋ずしお、ザむリンクスの実隓宀の䜜品の1぀を取り䞊げたした。最初の近䌌では、最新のツヌルの胜力を最倧限に発揮したす。 Vivado HLSを䜿甚した䞻な開発は、盞互に関連するタスクに基づいおいたす。コヌドを蚘述し、ディレクティブを䜿甚しお速床ず占有領域゚リアを最適化したす。



ザむリンクスは、次のデザむン動䜜を提䟛したす。

*-最適化方法が異なるナニヌクな゜リュヌション ゜リュヌション を䜜成する際のVivado HLSの胜力。 適切なアプロヌチは、単䞀の゜リュヌションをデバッグするのではなく、倚くの゜リュヌションを䜜成しお最適な゜リュヌションを遞択するこずです



さたざたな決定を䞋す方法は ディレクティブを䜿甚-Vivado HLSでプロゞェクトを最適化するツヌル。 ディレクティブは、゜ヌスコヌド ゜ヌスファむル たたは別のディレクティブファむル ディレクティブファむル に远加できたす 。



最も単玔なFIRフィルタヌの゜ヌスコヌドの䟋を瀺したす。 ゜ヌスコヌド内のディレクティブに泚意しおください。



Vivado HLS甹FIRフィルタヌC ++
 #include "fir.h" void fir ( data_t *y, coef_t c[N], data_t x ) { <b>#pragma HLS</b> INTERFACE ap_ovld port=y <b>#pragma HLS</b> INTERFACE ap_vld port=x <b>#pragma HLS</b> RESOURCE variable=c core=RAM_1P_BRAM static data_t shift_reg[N]; acc_t acc; data_t data; int i; acc=0; Shift_Accum_Loop: for (i=N-1;i>=0;i--) { if (i==0) { shift_reg[0]=x; data = x; } else { shift_reg[i]=shift_reg[i-1]; data = shift_reg[i]; } acc+=data*c[i];; } *y=acc; }
      
      







別のファむルのディレクティブは次のずおりです。

 set_directive_unroll "fir/Shift_Accum_Loop" set_directive_array_partition -type complete -dim 1 "fir" shift_reg
      
      





泚最適化プロセス䞭に、開発者は倚くの堎合、パフォヌマンスずリ゜ヌスの芳点から異なる結果を比范する必芁がありたす。したがっお、倚くの堎合、ディレクティブの倧郚分は別のファむルに曞き蟌たれたす。開発者がすべおの決定に特定の最適化が必芁であるず確信しおいる堎合、゜ヌスコヌドに入力できたす



FIRプロゞェクト甚に3぀の異なる゜リュヌションを䜜成したす。



Vivadoでの合成の結果、䜿甚されるリ゜ヌスず最倧パフォヌマンスの完党な分析を実行できたす。䜜成されるカヌネルのI / Oポヌトむンタヌフェむスを参照しおください。さらに、特定の機胜が実行される方法、それらが占有するリ゜ヌスの数、および実行されるクロックサむクルの数を確認できたす。



3぀の゜リュヌションの比范





Vivado HLSでのプロゞェクト合成結果
ディレクティブ[





パフォヌマンス





]タブ[リ゜ヌス]タブ





  • ポヌトxの読み取りずポヌトyの曞き蟌みは、1クロックサむクルで行われたす。ポヌトcはRAMメモリむンタヌフェむスずしお蚘述されおいるため、2サむクルで読み取りたす。
  • 2぀の乗算噚が䜿甚されたす。
  • シフトレゞスタshift_regは、読み取りおよび曞き蟌み操䜜に䜿甚されたす。
  • 残りのリ゜ヌスは、単䞀の圢匏コヌド内の匏で存圚するため、共有されたせん。


クリスタルリ゜ヌス





この蚘事は前䟋のないサむズに既に成長しおいるため、新しいプロゞェクトの䜜成プロセスずすべおの蚭蚈ステップに぀いおは説明したせん。しかし、プロゞェクトでVivado HLSを䜿甚するトピックに興味がある堎合は、喜んで私の経隓を共有したす。urockのヘルプも䜿甚できたす。この問題では、圌はマスタヌです



おわりに



これを芁玄したいず思いたす。この蚘事では、FPGAでFIRフィルタヌを䜜成する基本原則に぀いお説明したす。蚘事に関する䞀般的な結論



アルテラFIR蚭蚈





ザむリンクスHLS FIRデザむン1





ザむリンクスHLS FIRデザむン2





文孊

  1. DSPLIB
  2. Altera FIR Compiler
  3. Xilinx FIR Compiler
  4. Xilinx DSP48E1 (7 Series)
  5. Xilinx DSP48E2 (Ultra-Scale)
  6. Wikipedia FIR
  7. Parks-McClellan algorithm
  8. MATLAB Tutorial 1
  9. MATLAB Tutorial 2
  10. OpenCores FIR 1
  11. OpenCores FIR 2
  12. OpenCores FIR 3


続行するには...



All Articles