オリジナルの無線LANをFPGAで作ろう 7ページ目


過去の記事はこちら 1ページ目 2ページ目 3ページ目 4ページ目 5ページ目 6ページ目


1-送信FPGA-2の補数変換回路
6ページ目からのつづきです。FPGAのファームウェアを作っていきます。

これまで作ってきたIQ変調器は10MHzの波形データを14ビット2の補数で出力します。
一方、使用するDACは14ビットオフセットバイナリですので、データ形式を変換するモジュールが必要になります。

モジュールの名前はunsigned_2_signedにします。unsigned_2_signedモジュールはVerilogで作ります。
unsigned_2_signedモジュールのソースコードはこちらからダウンロードしてください。
コードをダウンロードしましたらaudio_2_iqと同じようにしてコードを回路図に組み込みます。
回路図に組み込む手順の詳細は、5ページ目をご覧ください




2-送信FPGA-IOピンの配置
以上で送信に必要なモジュールを作成し終わりました。最後にFPGAのIOピンを作ります。
IOピンを追加するために回路図を左ダブルクリックしてシンボル一覧を出します。シンボル一覧からlibraries→primitives→pin から入力もしくは出力ピン選びます。

FPGAの入出力ピンをつけて完成した状態が下図です。

FPGAのピンに名前はデフォルトのままになっていますから、ピン名を編集します。ピン名が小さくて見にくいですので、赤の大きな文字で書きました。
ピン名のあたりを左ダブルクリックするとピン名を編集できます。

前までのページで作成したモジュールに一部間違いがありますのでここで修正します。
10MHzの発振NCOが18ビット出力になっていますので16ビットに修正します。
NCOをダブルクリックすると、NCOを作ったときのウィザードが表示されます。

ウィザードのStep1 parameterizeをクリックしてparameterizeダイアログを開きます。parameterizeダイアログのparametersタブの中にあるMagnitude Pricisionを16ビットに変更します。
parameterizeダイアログのFinishをクリックして、ウィザードのStep3 generateをクリックしてNCOの修正は完了です。

ここまで完成するとコンパイルが通ります。メインメニュー → processing → Start Compilationでコンパイルが通るか確認します。
C言語などと違いFPGAはシンプルな構成でもコンパイルに多くの時間がかかります。私のPC(Core-i3 2120T 2.6GHz)では51秒かかりました。

プログラミング言語でのコンパイルは"printf"などを機械語に置き換えていく作業です。一方、FPGAのコンパイルは、NCOや加算器やVerilogで書いたコードを
FPGAの最小構成単位のLUTに置き換える作業や、伝送遅延が小さくなるようLUT配置とLUT間配線の最適化作業です。
作業内容の違いで、プログラミング言語とFPGAのコンパイルの時間の違いが出てきます。ちなみに伝送遅延を小さくするのは動作周波数を上げるためです。



次回はFPGAのファームウェアから離れて、送信側の回路図を紹介していきます!


2015年1月18日 記
8ページ目に続く

戻る