ADCをFPGAに接続したす。 機胜、困難、実装







みなさんこんにちは この蚘事では、ADCチップずFPGAクリスタルの接続に぀いお説明したす。 回路ノヌドの接続の䞻な特城が考慮され、最新のADCずその特性が提瀺されたす。 この蚘事では、最小限の時間コストでADCをFPGAに迅速か぀正しく接続する方法に関する実甚的なヒントを提䟛したす。 さらに、1぀たたは別のADCを接続する原理に぀いお説明したす。入力FPGAバッファヌずその基本コンポヌネントトリガヌ、IODELAY遅延ノヌド、ISERDESシリアラむザヌなどを怜蚎したす。 より詳现には、VHDLのプログラムコヌドの䟋を䜿甚しお、ADCからのデヌタの高品質受信に必芁な基本芁玠の抂芁を実行したす。 これは、入力バッファ、シングルチャネルおよびマルチチャネルシステム甚のデヌタパッキングノヌド、FIFOベヌスのデヌタ同期およびデヌタ送信モゞュヌル、SPIむンタヌフェむスを䜿甚するADCプログラミングノヌド、およびデヌタ呚波数合成ノヌド-MMCM / PLLです。 たた、この蚘事では、アナログおよびデゞタル回路の䞻芁な倖囜および囜内メヌカヌの完成したデバむスFMC芏栌の抂芁を説明したす。 蚘事の最埌に、マルチチャネルADC回路からのデヌタの受信機のナニバヌサルノヌドの゜ヌスコヌドぞのリンクがありたす。 コヌドはシンプルで構成が柔軟で、VHDL蚀語で衚瀺され、Xilinx 7シリヌズ以䞊のFPGAでシャヌプになりたすが、他のFPGAでも䜿甚できたす。



蚘事の抂芁





A / Dコンバヌタヌ



ADCは、幅広い皮類の無線゚ンゞニアリングタスクに䜿甚されたす。アナログ信号をデゞタル圢匏に倉換する必芁があるすべおのデバむスで䜿甚されたす。 オヌディオおよびビデオシステム、氎音響孊および氎通信の問題䜎サンプリング呚波数、高ビット深床、無線呚波数範囲を倉換するデバむスDDC / DUC回路、レヌダヌおよび無線ナビゲヌション高サンプリング呚波数、䞭ビットで䜿甚できたすデヌタ。 ADCは、デゞタル電圧蚈およびマルチメヌタヌ、コンピュヌタヌのビデオ入力ボヌド、ビデオカメラ、音声認識システム、サりンドデバむスで䜿甚されたす。 高速ADCは、オシロスコヌプおよびスペクトルアナラむザヌで䜿甚され、実隓装眮および医療機噚で䜿甚されたす。 倚くの堎合、ADCは高速でデヌタを収集および凊理するタスクで䜿甚されたす。



ご芧のずおり、ADCチップはA / Dデバむスの䞍可欠な郚分です。 珟代の䞖界では、ADCがないデバむスを芋぀けるこずは非垞に困難です。 ADCの叀兞的な倖芳を次の図に瀺したす。









これは、AD9684チップのデヌタシヌトから取られた簡略図です。 2぀の差動アナログ入力VINAおよびVINB 、 CLKクロック入力、SPI制埡、パラレル出力バスD0-D13 、マむクロ回路のさたざたなコンポヌネントの電圧ポむント、同期ブロックSYNCおよびその他の制埡信号が含たれおいたす。



ADCのマむクロ回路は、ナヌザヌの最終的な遞択に䟝存し、ADCの範囲を決定する特定のパラメヌタヌのセットによっお特城付けられるこずは明らかです。 デゞタル郚では 、これはデヌタ転送速床有効クロック呚波数であり、数十kHzから数GHzの範囲です。 ADCの出力でのデヌタ容量-最新のデバむスでは8〜32ビットのデヌタ。 アナログ偎では、これらは信号察雑音比 SNR ずスプリアスフリヌダむナミックレンゞ SFDR であり、通垞はデシベルで衚されたす通垞のSNRレベルの範囲は70〜80 dB、SFDRレベルは玄90 dBc。 ADCを遞択する際の重芁なパラメヌタヌは、消費電力W、1぀のハりゞング内のチャンネル数、デゞタルノヌドずのむンタヌフェむス、そしおもちろんコンポヌネントのコストです。



あらゆる皮類のADCおよびDACチップの補造分野の巚人である有名なサむトAnalog Devicesから抜粋した衚の䟋を䜿甚しお、最新の高速ADCずその特性を怜蚎しおください。 䟿宜䞊、衚には、マむクロ回路の最も重芁な特性が芁玄されおいたす。これらは、デゞタルデバむスずの通信むンタヌフェむスのタむプによっお分けられ、情報転送の速床クロック呚波数に応じお倧きな倀から小さな倀に配眮されたす。









この衚は、LVDS芏栌に埓っおデヌタを䞊列圢匏で送信する4぀のトップ゚ンドマむクロチップを瀺しおいたす。 デヌタの容量は14〜16、チャネル1〜2、最倧サンプリング呚波数は500 MHzです。 平均SNRずSFDRは、それぞれ70 dBFSず90 dBcです。 シリアルデヌタバスシリアルを䜿甚する䞀郚の回路では、特性はほが同じです。 JESD204B䌝送むンタヌフェむスを䜿甚し、ギガビットラむンを介しおFPGAに接続する最新のADCチップの堎合、クロック呚波数ははるかに高くなりたすが、アナログ特性はわずかに悪くなりたす少なくずもデゞタルデヌタ容量が䜎いため、12ビットず14ビットです。 この蚘事では 、ギガビット回線を介したADCのFPGAクリスタルぞの接続に぀いおは説明したせん 。 超小型回路を接続するためのシンプルで十分に研究されたオプションに焊点を圓おたす-LVTTL、LVDS、LVCMOS、LVPECLなどのデヌタ転送むンタヌフェヌスを備えたシリアルおよびパラレルバス。 特に、LVDSバスでデヌタを転送する興味深い方法は、PCBトレヌスの単玔さ、䜎コストパフォヌマンス、䜎ノむズおよび電力損倱、および高速デヌタ転送速床によっお区別されたす。 FPGAは、シリアラむザ/デシリアラむザを䜿甚しおシリアルバスデヌタを受信したす。 パラレルバスの堎合、すべおがはるかに単玔であり、デヌタはそのたた受け入れられたす。



アナログデバむスずデゞタルデバむスのペアリングの過皋で、次のADCチップを習埗する必芁がありたした。 これらはすでに廃止されおいたすが、ただ䜿甚されおいたす-AD9224、AD6644ST-65、AD9244、LCT2207、ADS5474、AD9432BST-105、AD7475BR 、最新レベルのマむクロチップ-AD9430BSV、ADS54RF、AD9467、ADC12D1800、AD9680など 私の仕事の領域はアナログ回路に郚分的にしか関係しおいないため、完成したアナログデゞタルモゞュヌルのパフォヌマンスを改善する方法に぀いおお話しするこずはできたせん。 たた、アナログパスの定性的な構成や、最良のアナログ性胜SNR、SFDRを達成するための1぀たたは別の回路コンポヌネントを遞択するための方法論に぀いおアドバむスするこずはできたせん。 しかし、この蚘事のフレヌムワヌク内でADCをFPGAクリスタルに接続し、さらにデヌタを凊理するずいう質問に答えようずしたす。



ADCモゞュヌルの䟋



次の図は、ロシアおよび海倖のメヌカヌからのアナログからデゞタルぞのデヌタ倉換甚の完成した高品質モゞュヌルの最新の䟋を瀺しおいたす。 それらはすべお、1぀たたは耇数のアナログ接続入力ず、デヌタプロセッサがむンストヌルされおいるキャリアボヌド通垞はFPGAに接続するためのFMCFPGAメザニンカヌドアダプタヌコネクタを備えおいたす。 FMCは、モゞュヌルアヌキテクチャで補品を接続するための䞻芁な暙準の1぀です。 倚くの堎合、アナログ郚分はメザニンボヌドメザニンボヌドにむンストヌルされ、デヌタ凊理を実行する䞭倮ナニットはキャリアモゞュヌルキャリアボヌドにむンストヌルされたす。これは1぀以䞊のFPGAおよび/たたはシグナルプロセッサです。 デバむスの倖囜メヌカヌのうち、2぀の䞻芁な補造䌚瀟を区別する必芁がありたす-これらは4dspずhitechglobalです。 怜玢の最初の行にあるGoogleの囜内メヌカヌのうち、CJSC Scan Engineering Telecom、CJSC Instrumental Systemsなど。 蚘事の著者は提瀺されたモゞュヌルに぀いお責任を負わ ず 、特定の䌚瀟の補品を宣䌝するために蚘事を䜿甚したせん 。



HTG-ADC16 。 次の特性がありたす公匏サむトから取埗。











FMC1044チャンネル250 MSPS @ 14ビット 特性情報の冗長性のために削陀されたもの











このモゞュヌルは、4぀のADCチャネルず1.8V電源を備えおいたすHP Xilinx FPGAが䜿甚されおいたす。



FMC1204チャンネル250 MSPS @ 14ビット 特城











FMC1404チャンネル16ビット370MSPS A / D 次の特性がありたす。











このモゞュヌルは、4぀の高速ADCチャネル、16ビットのデヌタ容量、およびJESB204B通信を備えおいたす。



SFM-4A1000モゞュヌル 特城











モゞュヌルの特城は、囜内開発、4぀の高速ADCチャネル、2 GHz垯域、およびJESB204Bむンタヌフェむス亀換です。



FMC212x4GDAモゞュヌル 特城











このモゞュヌルは、2぀の高速ADCチャンネル、最倧2 GHzの信号垯域幅、JESB204Bむンタヌフェむスでの亀換、ビルトむンDDCチップ、4぀のDACチャンネルを備えおいたす。



FMC816x250Mモゞュヌル 特城











このモゞュヌルは、8぀のADCチャネル、デュアルモゞュヌルを備えおいたす。



ご芧のずおり、FMC芏栌のアナログ-デゞタル倉換モゞュヌルの倚くは類䌌しおおり、ほずんど同じ特性を持っおいたす。これらの特性は、取り付けられたADCおよびDACチップによっお決たりたす。 モゞュヌルの最終的な遞択は、゚ンドナヌザヌが解決する必芁のあるタスクによっお決たりたす。



ADCをFPGAに接続する



この蚘事のメむンセクションであるADCチップをFPGAクリスタルに接続するこずに進みたしょう。 デヌタ転送むンタヌフェヌス LVTTL、LVCMOS、LVDSを䜿甚しお、ADCをパラレルおよびシリアルバスに接続するこずを怜蚎しおください。 この蚘事では 、 JESD204Bむンタヌフェヌスを介したADCの接続に぀いおは考慮したせん。これは、耇数の本栌的な蚘事を取り䞊げる別のトピックの資料であるためです。 さらに、JESD204Bは、ADCチップを接続するための「クラシック」オプションず実装が倧きく異なるため、より詳现な怜蚎が必芁です。



既知のように、FPGA I / Oバンクピングルヌプは、氎晶メヌカヌによっお境界が決定されるさたざたな䟛絊電圧に蚭定できたす。 最新のザむリンクスFPGAでは、適甚される電圧範囲はバンクのタむプによっお異なりたす。 銀行には2぀の䞻なタむプザむリンクスがありたす-HP 高性胜ずHR 暙準ず食品の遞択肢が豊富な銀行。 たずえば、Xilinx Series 7チップでは、HRバンクの電圧範囲は1.2〜3.3Vであり、HPバンクの電圧範囲は1.2〜1.8Vです。 さらに、さたざたな暙準デヌタ転送むンタヌフェむス甚にバンクピンをプログラムできたすが、暙準の最終的な遞択は、FPGAバンクの電圧ずリモヌトデバむスずFPGAの接続方法ずいう2぀のルヌルによっお決たりたす。 䞀方、FPGAバンクの䟛絊電圧を遞択する際には、氎晶のファミリが重芁な芁玠です。 したがっお、Kintex-7では、LVDS 25芏栌を䜿甚しお2.5Vの電圧でバンクに電力を䟛絊するこずができ、倚くのVirtex-7 FPGAでは、接続芏栌は排他的にLVDS 18であり、バンクは1.8Vの電圧で駆動されたす。 この点で、いく぀かのアナログモゞュヌルずキャリアボヌドを異なるFPGAファミリずペアリングする問題がありたす。 そのため、サヌドパヌティのメヌカヌからADCモゞュヌルやキャリアボヌドを賌入する堎合は、それらが暙準および䟛絊電圧ず互換性があるこずを確認する必芁がありたす。 原則ずしお、デヌタ転送むンタヌフェむスはプロゞェクト゜ヌスコヌドではなく、制限ファむル UCFたたはXDC に曞き蟌たれたす。これにより、構成の柔軟性ず他のプロゞェクトでの゜ヌスコヌドファむルの再利甚が可胜になりたす。



プロゞェクトの最䞊䜍ファむルの構造図およびLVTTL / LVCMOS / LVDS暙準に埓っおADCチップからデヌタを受信するために䜿甚される内郚ナニットを次の図に瀺したす。









次の芁玠が含たれたす。





これらのノヌドに加えお、䞊䜍レベルでは、MMCMに基づく呚波数合成モゞュヌル暙準FPGAリ゜ヌスが䜿甚されたす。 たた、IDELAYCTRLコンポヌネントは、IODELAYノヌドの遅延を制埡するために䜿甚されたす。



FPGAの回路の構成が䟝存する最䞊䜍ファむルの䞻なパラメヌタヌ





その他のオプション。



ADCレシヌバヌのトップレベルファむルのコヌドの䞀郚は次のようになりたす。



xFIFO: CTRL_FIFO_CONFIG generic map ( DATA_WIDTH => PACK_OUT, ADDR_WIDTH => FIFO_ADDR ) port map ( reset => reset, wr_clk => clk_pack, rd_clk => sys_clk, data_i => do_pack, data_o => do_fifo, rd_en => cs_fifo, wr_en => dv_pack, empty => ef_fifo, full => ff_fifo );
      
      





これにより、FIFOノヌドが接続され、デバむスのシステムバスずデヌタが同期されたす。 マルチチャネルおよびマルチビットバッファ回路でのIODELAYのプログラミング遅延は次のずおりです。



 ---- Data delays ---- x_dat_dd <= x_dat_do(conv_integer(unsigned(dl_chan))) when rising_edge(dl_clk); x_dat_in(conv_integer(unsigned(dl_chan)))(conv_integer(unsigned(dl_muxs))) <= dl_dat_in when rising_edge(dl_clk); x_dat_ce(conv_integer(unsigned(dl_chan)))(conv_integer(unsigned(dl_muxs))) <= dl_dat_ce when rising_edge(dl_clk); x_dat_ld(conv_integer(unsigned(dl_chan)))(conv_integer(unsigned(dl_muxs))) <= dl_dat_ld when rising_edge(dl_clk);
      
      





dl_chanは遞択されたADCチャネルであり、 dl_muxsはADCの遞択されたビットです。 これは、デヌタの各ビットを個別にプログラムするために行われたす。



各ノヌドを詳现に怜蚎しおください。



泚 FPGAずDACデゞタル-アナログコンバヌタヌを接続する堎合、状況は反映されたす。 同じこずを行う必芁がありたすが、順番は逆です。 この蚘事では、FPGAのDACぞの接続は考慮されおいたせん。



入力レシヌバヌ



倖郚PCB信号ずFPGAロゞック間の接続の䞻芁な芁玠が含たれおいたす。 これは、FPGAピンからIOBUF入力バッファロゞックぞのIPADバッファです。 デヌタ転送むンタヌフェむスに応じお、バッファは差動IBUFDSおよびナニポヌラIBUFになりたす。 倚くのバッファでは、必芁な暙準ぞの厳密なバむンドが可胜です。たたは、属性を介しお出力信号のタむプを蚭定するこずができたす。 たずえば、 IOBUFD属性を䜿甚しおIBUFDSの堎合 、゜ヌスコヌドで暙準の「 LVDS_25 」を事前定矩および蚭定できたす。



バッファに続いお、 IODELAY信号遅延遅延制埡ナニットがむンストヌルされ、パラレルデヌタバスの゚ッゞを揃え、最初にADCのマルチチャネルノヌドをFPGA接続に調敎したす。 IODELAYはプログラム可胜なFPGAリ゜ヌスであり、遅延倀はデフォルト蚭定で固定しお決定するか、0〜31の埓来の時間倀の範囲でプログラムできたす図はFPGAチップのデヌタシヌトによっお決定されたす。 プログラミングは、いく぀かの信号を䜿甚しお基本的な方法で行われたす。 プログラミングアルゎリズムの詳现な分析に぀いおは説明したせんが、詳现に぀いおは、この蚘事の最埌にある参照リストのドキュメントを参照しおください。 IODELAYノヌドの堎合 、各FPGAクロック領域の遅延をリアルタむムで范正する特別なIDELAYCTRL遅延制埡ノヌドを接続する必芁がありたす 。 氎晶の枩床、電源電圧、FPGA負荷の圱響を排陀するために、IDELAYCTRLノヌドは独立したREFCLK信号によっおクロックされたす。 このクロック信号は、各FPGAクロック領域のすべおのIODELAYノヌドで同量の遅延 TAP を提䟛したす。 各クロック領域に独自のチュヌニング倀が必芁な堎合、いく぀かのIDELAYCTRLノヌドがFPGAチップで初期化されたす。 REFCLKクロック信号は、FPGAの倖郚にむンストヌルされた倖郚ゞェネレヌタヌから䟛絊するか、 FPGAチップのMMCMノヌドで呚波数を合成するこずで取埗できたす。









IODELAY遅延ノヌドに続いお、デヌタ転送モヌドがDATA_RATE = " SDR "の堎合、 FDトリガヌを蚭定できたす。 このトリガヌは、オプションで入力バッファに配眮され、アナログモゞュヌルからのデヌタに付随するADCの呚波数によっおクロックされたす。 DATA_RATE =“ DDR ”モヌドでは、トリガヌが1぀のデヌタ入力ず2぀の出力を持぀IDDRの掗緎されたバヌゞョンに眮き換えられたす。 出力からいく぀かのモヌドでデヌタを出力するこずは可胜ですが、実際には1぀だけを䜿甚したした。「 SAME_EDGE_PIPELINED 」では、出力Q1およびQ2からのデヌタがクロック信号の同じ゚ッゞで出力されたす。









最埌に、最も興味深いオプションは、IODELAYノヌドをISERDESデヌタ逆シリアル化モゞュヌルに接続するこずです 。 シリアラむザノヌドは、FPGA入力バッファの耇雑な芁玠であり、次のオプションが含たれおいたす。





ノヌドは、いく぀かの信号によっおクロックされたす。これは、受信したCLKデヌタの高い呚波数の信号ず、DATA_WIDTHパラメヌタヌによっお決定された数で割ったCLKDIV信号です。 分割はFPGAの倖郚で発生する可胜性がありたすが、実際には、MMCMず呌ばれるFPGAチップ自䜓で呚波数シンセサむザヌが䜿甚されたす。 したがっお、CLK呚波数のシリアル信号がISERDESノヌドに入力され、䜎枛された呚波数CLKDIV = CLK / DATA_WIDTHのパラレルデヌタストリヌムがISERDESノヌドの出力で取埗されたす。 クロック呚波数は、リヌゞョナルバッファヌBUFR 、分呚係数BUFR_DIVIDE = 1-8の倀、たたは広範囲にプログラムされた呚波数シンセサむザヌMMCMのノヌドを䜿甚しお分呚できたす。









クロック゚ッゞずデヌタの䞀臎の圱響を排陀するには、MMCMのIODELAYノヌドず呚波数調敎だけでは必ずしも十分ではありたせん。 倚くの堎合、この問題の代替゜リュヌションを探す必芁がありたす。 幞いなこずに、この解決策は私の同僚によっお発芋されたした。圌は最近、圌の蚘事 Useful Properties of Jitter でそれに぀いお話したした。



䞊蚘のすべおのノヌドMMCMを陀くは入力FPGAバッファヌの䞀郚であり、チップの論理リ゜ヌスを占有したせん。 FD / IDDR / ISERDES出力から、デヌタは既にロゞック゚レメントに送られたす。これは、MMCMノヌドでADCサンプリング呚波数を通過した埌に埗られた呚波数にデヌタをプラむマリ再同期するための小さなトリガヌたたはFIFOです。 堎合によっおは、再同期は䜿甚されず、デヌタはADCのサンプリング呚波数ず盎接同期されたす。 次の図は、ISERDESデバむスのADCチップからのシリアルデヌタを凊理するタむミング図を瀺しおいたす。 入力クロック呚波数、入力デヌタのシリアル圢匏、およびパラレルコヌドに倉換されたデヌタが衚瀺されたす。









したがっお、構成に応じお、図に瀺すように、入力バッファヌで3぀の信号パスが可胜です。









A SDRモヌド-デヌタはパラレルバスで受信され、各FPGAは独自のFPGAバッファヌを䜿甚し、

B DDRモヌド-デヌタはパラレルバスで受信され、デヌタは2倍の呚波数でクロックされたす。

C SERDESモヌド-デヌタはシリアルバスで受信されたす


デヌタパッカヌ



このノヌドは、ADCからデヌタを受信するためのシングルチャネルおよびマルチチャネル方匏で䜿甚されたす。 その䞻な目的は、FPGA内で䜿甚される内郚バスに適した圢匏でデヌタをパックするこずです。 内郚バスの容量は、開発者たたは䌁業暙準によっお決定されたす。 パッカヌの出力での䞀般的なビット倀は、32、64、128、256、512ビットのデヌタです。 堎合によっおは、パッカヌが構成されおいない可胜性がありたす。 入力チャネルの数、入力および出力デヌタバスパッカヌの幅によっお異なりたす。 たずえば、入力ビット深床= 16ビットの4チャネル゜ヌスの堎合、出力バスビットがWOUT = WIN * NCHAN = 16 * 4 = 64ビット未満のリパッカヌを線成するこずはできたせん。 入力ず出力のビット深床が同じ単䞀チャネルデヌタ゜ヌスの堎合、デヌタは16ビットのパックで64ビットのビットグリッドに順次パックされたす。 ぀たり、ADCの最初のサンプルはビットフィヌルド[150]、2番目のサンプル-[31:16]、3番目-[47:32]、4番目-[63:48]を取りたす。 さらに、サンプルは出力デヌタグリッドの最䞋䜍から最䞊䜍にビットフィヌルドを呚期的に占有したす。 別の䟋。 2぀のデヌタチャネルが䜿甚され、入力ず出力のビット幅は同じたたですそれぞれ16ビットず64ビット。 リモヌトデバむスのデヌタ収集システムに含たれるチャネルが1぀だけの堎合、䞊蚘の䟋に瀺すようにパッキングが行われ、どのチャネルがオンになっおいるかは関係ありたせん。 集録システムに䞡方のチャネルが含たれおいる堎合、デヌタはビットグリッドの若い郚分から叀い郚分にペアでパッケヌゞ化されたす。 最初のチャンネルの最初のカりントダりンは䜍眮[150]に、2番目のチャンネルの最初のカりントダりンは䜍眮[31:16]に、最初のチャンネルの2番目のカりントダりン-[47:32]、2番目のチャンネルの2番目のカりントダりン-[63:48]になりたす。 実践が瀺しおいるように、これは、特定の䌝送チャネルが切断された堎合に、マルチチャネル凊理でデヌタをパックするための最も䟿利なオプションです。 泚チャネルの数は、2の环乗の倍数-1、2、4、8などでなければなりたせん。 このノヌドを実装しお理解するのは難しいように思えるかもしれたせんが、プロゞェクトでいく぀かのアプリケヌションを実行した埌、ここには耇雑で珍しいものは䜕もないこずがわかりたす。



次の図に、モヌドでのデヌタパッカヌノヌドの動䜜のタむミング図を瀺したす。NCHAN = 1、 WIN = 8、 WOUT = 32。









赀い線は、出力バスにデヌタをパックするプロセスを瀺しおいたす。これには、4぀のデヌタサンプルを受信した埌の解像床信号DVAL = 1が䌎いたす。



デヌタストリヌムシンクロナむザヌ



このノヌドは、プリミティブFIFOスキヌムに基づいお構築されおおり、1぀の重芁で単玔な目的がありたす。デヌタストリヌムをサンプリング呚波数CLK_ADCから凊理呚波数たたはSYS_CLKデバむスの内郚バスの動䜜呚波数システムクロック呚波数に倉換したす。 簡単にするために、 Xilinx Core GeneratorでFIFOノヌドを䜜成できたすが、理想的には、任意のバス幅 FIFO_WIDTH およびメモリの深さ FIFO_DEPTH に察しお柔軟に構成できる独自のモゞュヌルを䜜成する方が良いでしょう。 次の図は、FIFOノヌドの動䜜のタむミング図、入力デヌタず出力デヌタ、および空 empty およびfull full FIFOのフラグを瀺しおいたす。 FIFO ADCの通垞動䜜では、FULLフラグは垞に0である必芁がありたす。これは、ADCからのデヌタ受信の正確さずオヌバヌフロヌがないこずを瀺したす。 フラグFULL = 1の堎合、リモヌトハンドラヌによるデヌタ受信の速床が䞍十分であるか、ADCの速床が遞択したシステムに察しお速すぎたす。









次の図は、Plan Ahead環境のFIFOノヌドの抂略図を瀺しおいたす。









FIFOはデュアルポヌトメモリに基づいお構築されおいるこずがわかりたす。 グレヌコヌドのデヌタはメモリアドレスバスに送信されたす。図では、これらは読み取りず曞き蟌みの2぀のノヌドです。 これにより、高呚波でのビット゚ラヌを枛らすこずができたす。 グレむコヌド内の隣接する倀は、1ビット䜍眮のみが異なりたす。 FIFOフラグのロゞックは、グレヌカりンタヌのモゞュヌルの倀によっお決定され、レゞスタヌは出力でのノヌドのクロック呚波数を䞊げるために䜿甚されたす。



むンナヌタむダ



質問が発生したす- 収集およびパッケヌゞ化されたデヌタは次にどこに行きたすか 答えは簡単です。PCI/ PCIe、USB、むヌサネット、SRIO、SATAむンタヌフェヌスの助けを借りお、デヌタは最終目暙に到達し、そこで凊理され、すべおの情報が収集されたす。 このリンクの前に、FPGA内にデゞタル信号凊理ナニットDSP、たずえばDDC、DUC、FFT / IFFTなどがありたす。さらに、デヌタはDDR3 / DDR4などの倧きな倖郚メモリにバッファリングできたす。 これは、倧量の情報フロヌを高速で凊理するために䜿甚される頻繁な手法です。 この堎合、倖郚メモリは倧きなFIFOをシミュレヌトしたす。 倖郚メモリを䜿甚しおFPGAを制埡するには、特別なコントロヌラヌを䜿甚したす。これらのコントロヌラヌは、原則ずしおアクセス可胜で、䜿甚するために開いおいたす。 ザむリンクスの堎合、それらはIPコアゞェネレヌタヌにありたす。



特に、開発者はADCレシヌバヌのすべおのリ゜ヌスを管理するための独自の有限状態マシンを䜜成する必芁がありたすこれはIODELAYの遅延構成、MMCM呚波数シンセサむザヌのプログラミング、ADCおよびDACモゞュヌルぞのSPIコマンドの送信、ADCからのデヌタ収集の開始ず終了の制埡、アクティブチャネルの数の制埡、倖郚DDRメモリなどの䜿甚。 誰もが独自のアヌキテクチャを持っおいたすが、基本的な原則は倉わりたせん。 私が働いおいる䌚瀟では、 ノヌトブックず呌ばれるコントロヌルノヌドを䜿甚しおいたす。 それらの詳现は私の同僚がここで話したした 。



ADCモゞュヌル制埡



原則ずしお、アナログモゞュヌルはSPIのようなむンタヌフェむスを介しお制埡されたす。 プログラムにプログラマブルロゞックずFPGAの孊習が含たれる䞊玚生にSPIむンタヌフェむスを実装したす。 SPIノヌドには焊点を合わせたせん。 蚘事の最埌に、 MIL-STD-1553圢匏のメッセヌゞを凊理するリモヌトマむクロサヌキットHI-6131を制埡するための゜ヌスコヌドの䟋を瀺したす。 コヌドはパラメヌタ化できず、遞択したチップに合わせお特別に調敎されおいたす。 りォヌムアップするために、SPIパラメヌタヌを䜜成しお、さたざたなパラメヌタヌ甚に構成できたす。 SPI制埡のタむミング図は次のずおりです。









゜ヌスコヌド



すべおのコンポヌネントおよびアセンブリの゜ヌスコヌドはVHDL蚀語で衚瀺され、ザむリンクス7シリヌズFPGAチップおよびそれ以降甚です。 ゜ヌスコヌドは公開されおおり、 githubのリンクから入手できたす 。 こちらをご芧ください 。 すべおのコンポヌネントは、構成で可胜な限り柔軟に䜜られおおり、゜ヌスコヌドぞの倧幅な介入を必芁ずしたせんSPIノヌドを陀き、 申し蚳ありたせんが、怠でした 。 残念ながら、既存のすべおの゜リュヌションに適応するこずは䞍可胜ですが、この䟋は、䜿甚したすべおのアナログモゞュヌルで正垞に機胜したした。



たずえば、FIFOでの読み取りおよび曞き蟌み操䜜、およびバむナリコヌドをグレむコヌドに倉換するためのノヌドの接続は次のずおりです。



FIFO R / W
 ---- Read data ---- pr_rd: process(rd_clk) begin if (rising_edge(rd_clk)) then if (rd_en = '1' and xempty = '0') then data_o <= Mem(conv_integer(pNextWordToRead)); end if; end if; end process; ---- Write data ---- pr_wr: process (wr_clk) begin if (rising_edge(wr_clk)) then if (wr_en = '1' and xfull = '0') then Mem(conv_integer(pNextWordToWrite)) <= data_i; end if; end if; end process; ---- Gray counters ---- xGray_WR : rtl_gray_count generic map ( COUNTER_WIDTH => ADDR_WIDTH ) port map ( cnt => pNextWordToWrite, ena => NextWriteAddressEn, rst => reset, clk => wr_clk ); xGray_RD : rtl_gray_count generic map ( COUNTER_WIDTH => ADDR_WIDTH ) port map ( cnt => pNextWordToRead, ena => NextReadAddressEn, rst => reset, clk => rd_clk );
      
      







参照資料



など



継続するには...



All Articles