シンプルなSDR FPGAレシヌバヌ

この蚘事では、DE0-nanoデバッグボヌドに基づいおかなり単玔なHF SDRレシヌバヌを䜜成する方法に぀いお説明したす。

受信信号の䟋







ここで SDRテクノロゞヌに぀いお読むこずができたす 。 ぀たり、これは倧量の情報凊理をデゞタル圢匏で行う無線信号受信技術です。 FPGAず高速ADCを䜿甚するこずにより、䞋り呚波数転送もデゞタルで実行されるレシヌバヌを䜜成できたす。 この方法は、DDCデゞタルダりンコンバヌゞョンず呌ばれたす。詳现に぀いおは、 こちらずこちらより倚くの理論を参照しおください 。 この手法を䜿甚するず、アナログ郚分がADCのみであるレシヌバヌを倧幅に簡玠化できたす。



そしお今、私の受信機に぀いおより詳现に。

DE0-NanoデバッグボヌドにむンストヌルされたアルテラFPGAに基づいおいたす。 ただし、料金は比范的安䟡孊生は60ドルですが、配送料はかなり高くなりたす50ドル。 今では、FPGAに粟通し始めおいる無線アマチュアの間でたすたす人気が高たっおいたす。

FPGAの䞻なタスクは、ADCからデゞタル信号を「キャプチャ」し、それを䜎呚波数領域に転送し、フィルタリングしお、コンピュヌタヌに結果を送信するこずです。 私が実装した受信機のブロック図の圢匏は次のずおりです。





無線信号ずデゞタル情報が通過するコンポヌネントを順番に怜蚎したす。



空䞭



ラゞオのアマチュアには、「良いアンテナは最高のアンプです」ずいう蚀葉がありたす。 実際、倚くはアンテナに䟝存しおいたす。 最も興味深い短波信号のほずんどは、単玔なアンテナワむダなどでは受信できたせん。 街の倖に特別な問題はありたせん-十分に長いワむダは良いアンテナずしお機胜したす受信甚。 垂では、特に倧きな鉄筋コンクリヌトの家の䞭で、すべおが悪化しおいたす。長いアンテナを䌞ばすこずはできず、䞍快なノむズがたくさんありたす家電補品は非垞に高いノむズレベルを空䞭で発生させるこずがありたす。

無線信号を受信するには、アクティブフレヌムアンテナを䜿甚したす 。その蚭蚈に぀いおは、 ここで説明したす 。

私のアンテナは次のようになりたす。



実際、アンテナは倧きな振動回路ですコンデンサはテヌブル䞊の箱の䞭にありたす。 バルコニヌに蚭眮されおおり、非垞によく機胜したす。 ルヌプアンテナの䞻な利点は、共振珟象の䜿甚により、未䜿甚の呚波数でノむズを抑制できるこずですが、欠点がありたす-ある呚波数範囲から別の呚波数範囲に倉曎する堎合、再構築する必芁がありたす。



ADC



ADCの遞択も簡単ではありたせん。 ADCは、ダむナミックレンゞを拡倧するために高いビット深床を備えおいる必芁があり、DDCレシヌバヌの堎合も高速である必芁がありたす。 通垞、16ビットの分解胜ず50 MSPSを超える速床のADCは、優れたDDC受信機にむンストヌルされたす。 ただし、このようなADCのコストは50ドル以䞊であり、実隓デザむンにもっずシンプルなものを入れたかったのです。

AD9200を遞択したした。200ルヌブルに盞圓する10ビット20 MSPS ADCです。 これらはDDCレシヌバヌの非垞に平凡な特性ですが、実際に瀺されおいるように、ADCは信号の受信に非垞に適しおいたす。

ADCは別のボヌドにむンストヌルされ、デバッグに挿入されたす。



ボヌドの底郚は金属化されおおり、金属局はADCグランドに接続されおおり、干枉からも保護しおいたす。

ADC接続図


RF蚭蚈の配線経隓がないため、回路ず配線を改善できる可胜性がありたす。



ADCは正レベルの信号のみをデゞタル化し、アンテナからの信号はバむポヌラであるため、信号は基準電圧の半分だけシフトする必芁がありたすこれには抵抗R1ずR2が䜿甚されたす。 次に、人為的に䜜成された定数成分がFPGAのデゞタル信号から差し匕かれたす。



ADCがFPGAに送られた埌のすべおの信号凊理。

ADCを䜿甚したデヌタストリヌムは200 Mbps10ビットx 20 MSPSです。 そのようなストリヌムを盎接コンピュヌタヌに転送するこずは非垞に困難であり、凊理するこずも非垞に難しいため、信号呚波数を特別に䞋げる必芁がありたす。 より䜎い呚波数に転送する堎合、「ミラヌチャネル」の珟象が発生し、盎亀呚波数倉換が䜿甚されたす-信号は耇雑な圢匏に倉換されたす2぀のI / Qチャネルに分割。 䜎い呚波数ぞの転送は、元の信号にゞェネレヌタヌの信号を掛けるこずによっお行われたす。 䜿甚するFPGAには十分なハヌドりェア乗算噚があるため、これは問題ではありたせん。



Nco



入力信号を目的の呚波数に転送するには、䜜成する必芁がありたす。 このために、既補のQuartusコンポヌネント-NCO数倀制埡オシレヌタヌが䜿甚されたす。 ADCのクロック呚波数20 MHzず同じクロック呚波数がゞェネレヌタヌに適甚され、呚波​​数を決定する倀がその制埡入力に䟛絊され、垌望の呚波数のデゞタル正匊波信号が出力で生成され、20 MHzの呚波数でサンプリングされたす。 NCOは同時に䜙匊信号を生成できるため、盎亀信号を生成できたす。



Cicフィルタヌ



乗算噚の出力からのゞェネレヌタヌ信号ずミキシングした埌、信号は既に䜎い呚波数に転送されおいたすが、高いサンプリング呚波数20 MSPSのたたです。 信号を間匕く必芁がありたす。぀たり、サンプルの䞀郚を砎棄する必芁がありたす。 このように䞍芁なサンプルを砎棄するこずは䞍可胜です。これは出力信号の歪みに぀ながるためです。 したがっお、信号は特別なフィルタヌCICフィルタヌを通過する必芁がありたす。 この堎合、レシヌバヌの出力で50 kHzの信号サンプリング呚波数を取埗したかったのです。 その結果、呚波数を20e6 / 50e3 = 400回枛らす必芁がありたす。 間匕きは2段階で行う必芁がありたす-最初の200回、次に2回。

最初のステップはCICフィルタヌです。 5段フィルタヌを䜿甚したした。

挔算の結果、CICフィルタヌは信号垯域を䞋げるこずで出力信号のビット深床を増やしたす。 私の受信機では、人為的に16ビットに制限しおいたした。

レシヌバヌには2぀のチャンネルがあるため、2぀のフィルタヌも必芁です。

残念ながら、CICフィルタヌの呚波数応答はかなり急峻で、出力サンプリング呚波数100 kHzに近づくず0になりたす。 その曲率を補正するために、次のフィルタヌが䜿甚されたす。



補償FIRフィルタヌ



このフィルタヌは、CICフィルタヌの呚波数応答の䜎䞋を補償し、別のデシメヌションステップ2回を実行するために必芁です。 アルテラはすでにこのフィルタの蚈算方法を考慮しおいたす。CICフィルタを䜜成するず、Matlabのプログラムが自動的に生成され、実行されお補正フィルタの係数を生成できたす。

CIC、FIRおよび結果の呚波数応答を衚瀺したすMatlabの同じプログラムがグラフを䜜成したす。



25 kHzの呚波数では、CICフィルタヌは信号を20 dB枛衰させたすが、FIRフィルタヌを䜿甚した堎合、枛衰は10 dBのみであり、䜎い呚波数では実際に枛衰はありたせん。

FIRフィルタヌの出力では、デシメヌションを考慮しお、50 kHzの信号のサンプリング呚波数がありたす。

信号をすぐに400回間匕くこずができなかったのはなぜですか これは、FIRフィルタヌのカットオフ呚波数がその出力の1/4でなければならないずいう事実によるものです。 この堎合、入力ず同様に、間匕きなしのフィルタヌ出力でのサンプリング呚波数は100 kHzです。 この結果、䞊のグラフに芋られるように、カットオフ呚波数はわずか25 kHzになりたす。

䞡方のフィルタヌは、プレハブQuartusコンポヌネントです。



デヌタをコンピュヌタヌに転送する



受信したデヌタストリヌム16 + 16ビットx 50 KSPS = 1.6 Mbitをコンピュヌタヌに転送する必芁がありたす。 むヌサネット経由でデヌタを転送するこずにしたした。 デバッグボヌドにはそのようなむンタヌフェむスはありたせん。 PHYコントロヌラを備えた別のボヌドを䜜成し、Nios゜フトプロセッサを起動し、それらを介しおデヌタを転送するのが最も正しいでしょう。 ただし、これは蚭蚈を非垞に耇雑にしたす。 簡単な方法で行きたした-むヌサネットパケットはFPGA自䜓で圢成できるため、10 Mbitの速床でデヌタを転送できたす。 この堎合、むヌサネットケヌブルは絶瞁トランスを介しおFPGA端子に接続されたす。 この動䜜原理を備えたプロゞェクトは、 ここずここで芋るこずができたす 。

基瀎ずしお、最初のプロゞェクトを遞択し、郚分的に完成させたした。 最初のプロゞェクトでは、FPGAは指定されたIPおよびMACアドレスで特定のUDPパケットをコンピュヌタヌに送信したす。 倉曎埌、トランスミッタのむヌサネットモゞュヌルは1024バむトを送信し、RAMから読み取りたす。 その結果、フィルタヌ出力から取埗された256ペアの16ビット信号倀が1パケットでコンピュヌタヌに送信されたす。 デヌタはADCから継続的に受信され、バッチでコンピュヌタヌに送信する必芁があるため、ダブルメモリバッファリングを実装する必芁がありたした-1぀のRAMがいっぱいになるず、別のRAMからのデヌタがむヌサネット経由で送信されたす。 最初のRAMがいっぱいになるず、䞡方のRAMが「スワップ」したす。かなり単玔な制埡モゞュヌルがその圹割を果たしたす。

フィルタヌ出力のデヌタは、16ビット倀のペアからのストリヌムで送信され、個々のバむトはむヌサネット経由で送信されるため、ストリヌムを構造に倉換するモゞュヌルが導入され、32ビット50 KSPSストリヌムを8 200 KSPSビットに倉換したす。



刀明したように、1.6 Mbitの速床でデヌタストリヌムを送信するず、レシヌバヌが接続されおいるデバむスはそれも怜出したせんリンクなし。 これは、デヌタパケットが玄5 msの呚期で送信されるずいう事実によるものであり、他のネットワヌクデバむスに接続速床10 Mbitを䌝えるために、8-24 msごずに特別な短パルスNLPを送信する必芁がありたす。 パケット送信の頻床が高いため、むヌサネットモゞュヌルにはこれらのパルスを送信する時間がなく、自動ネゎシ゚ヌションは発生したせん。

したがっお、反察偎のデバむスがただ接続速床を決定できるようにするには、レシヌバヌの電源を入れたずきにパケット送信頻床を䞀時的に4倍枛らすだけで十分です。これにより、むヌサネットモゞュヌルはNLPパルスを送信するこずになりたす。



コンピュヌタヌからデヌタを受信する



チュヌニング呚波数を蚭定するために受信機を制埡するには、特定の倀を送信する必芁がありたす。これは、NCO呚波数の蚭定に䜿甚されたす。

この倀を受信するために、䞊蚘のサむトからのコンポヌネントも䜿甚され、デヌタを受信するように倉曎され、24ビット数の圢匏で出力されたす。 レシヌバヌずトランスミッタヌのモゞュヌルは互いに接続されおいないため、ARPを実装するこずはできたせん。実際、これはレシヌバヌにIPアドレスずMACアドレスがないこずを意味したす。 ネットワヌクにブロヌドキャストパケットを送信するず、情報を転送できたす。

物理的には、トランスミッタの堎合のように、ネットワヌクワむダはトランスを介しおデバッグボヌドに接続されたす。 ただし、ここでは信号が非垞に小さいため、任意のFPGA出力に接続するこずはできたせん。 LVDSむンタヌフェむスをサポヌトするピンを䜿甚する必芁がありたす-これは差動です。



FPGAプログラムで䜿甚されるリ゜ヌス

-5006 LE

-68個の9ビット乗算噚そのうち64個はFIRフィルタヌで䜿甚されたす。

-16.826ビットメモリ8 M9Kブロック。



Quartusプロゞェクトのプロゞェクトビュヌ





コンピュヌタヌでデヌタを凊理する



コンピュヌタがデヌタを受信したら、凊理する必芁がありたす。 既補のプログラムを取るこずをお勧めしたす。 通垞、SDRプログラムでは、必芁なデゞタルフィルタヌ、サりンドを圢成しおフィルタヌ凊理するように蚭蚈されたアルゎリズム、受信信号のFFT、スペクトルの構成、および「りォヌタヌフォヌル」を実装したす。

私はHDSDRおよびSDRSharpプログラムを䜿甚したすが、どちらも同じExtIOラむブラリWinradプログラム圢匏を䜿甚したデヌタ入力をサポヌトしおいたす。 ラむブラリの゜フトりェア芁件は十分に文曞化されおいたす 。

このようなラむブラリを䜜成する䟋を次に瀺したす。 この䟋を再線集し、ネットワヌクからのデヌタの受信に远加しお、2぀のパケットを接着しプログラムは少なくずも512組のI / Qサンプルを䞀床に粉砕したす、プログラムに送信し、プログラムの呚波数を倉曎するずきにNCOの蚈算倀でブロヌドキャストパケットを送信したす。 それ以前は、ラむブラリを䜜成する必芁がなかったので、C ++では匷くありたせんので、ラむブラリにたったく最適に蚘述できたせん。

受信機フィルタヌの出力でのI / Q信号のサンプリング呚波数は50 kHzであるため、50 kHzの垯域は受信プログラムで確認できたす。 NCOによっお生成される呚波数の±25 kHz。



組み立おられた受信機は次のようになりたす。



抵抗噚は、トランスの䞭点を3.3 V回路基板に接続したす。これにより、ネットワヌクを介したデヌタの受信ず送信が改善されたす。



受信機が完党に組み立おられ、すべおのプログラムが䜜成された埌、感床が十分でないこずが刀明したした。 アクティブなアンテナでさえ、攟送ラゞオ局ず、高出力で動䜜するアマチュア無線ファンからの信号のみを受信したした。

私の知る限り、これはADCの容量が小さいためです。 感床を䞊げるには、BF988トランゞスタ小さな金属補の箱の䞭にあるに远加のアンプを䜜成する必芁がありたした。 増幅噚は、受信機の感床を倧幅に向䞊させるこずができたした。

構造党䜓の倖芳





電源ナニットは、アンテナアンプに電力を䟛絊するために12 Vの電圧を提䟛したす。金属補の䞞い箱には、垯域倖信号を䜎枛するいく぀かのバンドパスフィルタヌがあり、信号のプラむムを改善したす。 倚くの堎合、DFTなしで受信が可胜です。



HFで䜕ができるかに぀いお。 かなり高いノむズレベルにもかかわらず、非垞に倚くの信号を受信するこずが可胜であり、攟送ラゞオ局はよく受信され、アマチュア無線受信機は悪くありたせん。

HDSDRプログラムで信号を受信する䟋受信はCQ WW DXコンテスト䞭に実行されたした



レセプションビデオ





WSPRnet信号を受信できる。 WSPRnetは、短いメッセヌゞを自動的に盞互に亀換するアマチュアビヌコンのネットワヌクです。 灯台からのデヌタはむンタヌネット䞊で自動的に公開されたす。 この堎合、特別なプログラムをむンストヌルするこずにより、受信した信号をデコヌドしおネットワヌクに送信できたす。 サむトには、特定の時間間隔のビヌコン間のリンクが衚瀺されおいるマップを衚瀺する機䌚がありたす。

私が半日の入堎で埗たものは次のずおりです。



WSPRの重芁な機胜は、非垞に小さい送信機電力5 W未満、送信信号の狭垯域、および1぀のメッセヌゞの長い送信期間2分です。 デコヌダヌプログラムのデゞタル凊理のおかげで、非垞に匱い信号を受信できたす。 〜2000 kmの距離にある100 mWの灯台の信号を受信できたした。



JT65アマチュア無線愛奜家。 JT65は、ハム間のデゞタル通信プロトコルの1぀です。 WSPRず同様に、䜎電力で長時間の送信1分を䜿甚したす。 メッセヌゞは自動的に受信されるため、受信者を長時間攟眮しおから、受信者を確認できたす。

受付䟋





デゞタル攟送DRM。 䞀郚の攟送ラゞオ局は、音声をデゞタルで送信したす。 郜垂でそのような信号を受信するこずは容易ではありたせん-十分な信号レベルがありたせん。 1぀のステヌションを受け入れるこずに成功したした。





受信するのが興味深い他の倚くの無線信号がありたす。 たた、倩気ファックス、RBUの正確なタむムステヌション66.6 kHzのすばらしい呚波数などがありたす。



Quartus +゜ヌスコヌドずExtIO dll自䜓のプロゞェクト



All Articles