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


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


1-送信FPGA-IQ変調器
3ページ目からのつづきです。FPGAのファームウェアを作っていきます。
2ページ目に続けてシンボルを追加します。 定数を作ります。定数は発振器(NCO)を10MHzで発振させるためです。
NCOは32bitの周波数端子を持っていますから、発振周波数=FPGAクロック周波数×周波数端子の値÷2^32 で計算されます。
今回のFPGAは80MHzのクロックで駆動しますから、10MHzを発振させるには、周波数端子に0x20000000 という値を入れます。

乗算器などと同じように、回路図上でダブルクリックしてシンボル一覧からlibraries→megafunctions→gates→lpm_constant を選びます。
定数の詳細パラメータ設定画面が開きます。

定数の名前はデフォルトのlpm_constant0のままで大丈夫ですからNextをクリックします。次にビット幅と値の設定画面が出てきます。

32ビット、0x20000000を設定したらNextをクリックします。

シミュレーション設定は何も変えずにNextをクリックします。

サマリーも特に何も変えずにFinishをクリックします。定数が作成されて回路図に定数が追加されます。

NCOに入力する定数として、1ビットの"1"も必要ですので作成します。
先ほどの定数シンボルで作成しても良いのですが、見やすいように1ビットの"1"は、VCCシンボルとして作ります。
VCCシンボルは、回路図上でダブルクリックしてシンボル一覧からlibraries→primitives→other→ vccで作成できます。
乗算器などと違ってパラメータ設定はありません。




回路図のシンボル同士を結線していきます。上の図は結線の終わった回路図です。
回路図ができたら保存しておきます。回路図のファイル名はプロジェクト名に揃えて"musen_lan"にします。
プロジェクト名=FPGAファーム名になっていますから、コンパイラは"musen_lan"として保存した回路図をFPGAファームと認識します。
設定を変えることで、プロジェクト名≠FPGAファーム名 とすることもできます。

太い線はバス配線で、細い線は1ビット配線です。2ビット以上の信号線はバス配線とします。
配線するときは回路図ツールの、バス配線もしくは1ビット配線を使用します。


1ビット配線にclkと書かれているのはネットラベルで、clk同士が接続されることを意味します。
"clk"同士を線で繋いでしまってもOKですが、回路図が見やすくなるように適宜ネットラベルを活用します。
ネットラベルのつけかたですが、バス配線や1ビット配線を選択して左クリックするとメニューが出ますので、メニューからpropertiesを選択します。
GeneralタブのNameにネットラベルを入力すればOKです。



2-送信FPGA-IQ変調器と低速ADCのインターフェース回路
送りたい16ビットの音声データに対して256QAMで一度に送れるデータは8ビットですから、16ビット→8ビット+8ビットに2分割しなければなりません。
音声データは44.1kSpsですが、IQに変換後は倍速の88.2kSpsになります。
作成したIQ変調器にIQそれぞれ16ビットで入力します。256QAM方式ですとIQそれぞれ16値になりますから、IQ入力が16ビット分解能のところを、
16値に離散化(4ビット化)する必要があります。

また、送受信の10MHzの位相を合わせるために特殊コードを挿入する機能を作ります。特殊コードは100回に1回挿入するようにします。
特殊コードを挿入するときは、音声データと置き換えるようにします。100回に1回は音声データが失われますから、少し音質が悪くなります。
音声が劣化しないように、100個の音声データ→100個の音声データ+1個の特殊コードにすることもできます。こうすると、IQデータ変換後はデータ速度が1%増えます。
今回は構造を単純にするために、音質が劣化しますが、下の図のような仕様で作ります。



次回も引き続き送信FPGAを作っていきます!


2015年1月11日 記
5ページ目に続く

戻る