オリジナルの無線LANをFPGAで作ろう 14ページ目
過去の記事はこちら
1ページ目 2ページ目 3ページ目
4ページ目 5ページ目
6ページ目 7ページ目 8ページ目 9ページ目 10ページ目
11ページ目 12ページ目 13ページ目
1-受信側FPGA-低速DACのインターフェースモジュール
引き続き受信側FPGAのファームを作っていきます。
低速DACのインターフェースモジュールをつくります。
低速DACには、テキサスインスツルメントのPCM1754を採用します。PCM1754のデータシートはメーカサイトからダウンロードしてください。
PCM1754は24ビット・ステレオのDACですが、24ビットの下位8ビットにはダミーデータを入れて、ステレオのうち片CHのみ使います。
前のページで16ビット48kSpsの音声データが得られるところまで作りました。16ビットのデータはFPGA内部ではパラレルになっていますが、PCM1754はI2Sシリアル入力ですので、
変換モジュールを作る必要があります。変換モジュールの名前は、pcm1754にします。
pcm1754モジュールはVerilogで作成しました。Verilogのソースコードはこちらからダウンロードしてください。
pcm1754ソースコードをダウンロードしましたら、シンボル化して回路図に配置してください。
2-受信側FPGA-10MHzバンドパスフィルタ
IQ復調回路の直前に挿入するバンドパスフィルタをつくります。バンドパスフィルタの中心周波数は10MHzです。
バンドパスフィルタを挿入して高速ADCで取り込んだ波形データから10MHz近傍だけを抽出して、外来ノイズでの通信エラーを起こしにくくします。
今回の実験では送信・受信をケーブルでつなぎますので、外来ノイズはほとんど入り込みません。ケーブルではなく空間を伝送させるとときは、バンドパスフィルタが威力を発揮します。
バンドパスフィルタを作るには、NCOと同じようにMegaWizardを使います。
メインメニュー → Tools → MegaWizard Plug-In Manager で新規モジュール作成画面が開きます。
モジュール一覧からDSP→Filters→FIR Compiler v11.1を選びます。名前はBPF_10MHZにします。
FIR Compiler のウィザードが開いたら、
@Step 1 Parameterizeをクリックして、Parameterizeダイアログを出します。
AParameterizeダイアログが開いたら、Edit Cofficient Setをクリックして、Cofficientダイアログを開きます。
BCofficientダイアログで、バンドパスフィルタの中心周波数や、バンド幅などのパラメータを設定します。
CCofficientでパラメータを設定して、Applyをクリックすると周波数特性をグラフで確認できます。
Cofficients(タップ数)などをいろいろ変えながら、周波数特性がどのように変わるか遊んでみてください。
今回作るBPFのパラメータは、FilterType:BnadPass WindowType:Rectangular Cofficients:20 SampleRate:7.32728E7 Cutoff Freq1:9.0E6 Cutoff Freq2:1.1E7に設定しました。
Dパラメータ設定が終わったら、OKをクリックして、Cofficientダイアログを閉じてください。
Parameterizeダイアログで、ビット数などのパラメータ設定をします。
@Coefficientsのビット数を16に設定します。
Ainputのビット数を16に設定します。
Bフィルタ内部では35ビット精度で計算されますが、下位19ビットを捨てて16ビットで出力するようにします。
CustomResolutionを選択して、MSB:0 Truncate LSB:0 Truncateを設定します。
Cパラメータ設定が終わったら最後に、Finishをクリックします。
FIR Compiler のウィザードのStep3 Generateをクリックして、バンドパスフィルタの作成が完了です。
このページで作成したpcm1754モジュールとBPF_10MHZモジュールを回路図に配置して、結線をします。下の図は結線の終わった状態です。
2015年2月20日 記
15ページ目に続く
戻る