OSQZSS

オープンソース準天頂衛星(QZSS)受信機

Nios IIの割り込み処理

2012-03-19 23:09:56 | FPGA
Nios IIにGPSコンポーネントを追加することで,ベースバンドプロセッサが完成しました.
次のステップは,受信機ファームウェアの開発です.

Nios IIのソフトウェア開発のために,Nios II Software Build Tools for Eclipseを起動します.



起動後,ファイルメニューから,New -> Nios II Application and BSP from Templateを選ぶと
次のようなダイアログが表示されます.

(クリックで全体表示)

ここで,Target hardware informationのSOPC Information File nameには,Qsysで開発した
.sopcinfoファイルを選択します.CPU nameは,自動的に入力されます.

Application projectのProject nameはNamuru_Nanoとし,Project templateにはHello Worldを
選びました.

これで,Namuru_NanoとNamuru_Nano_bspのプロジェクトファイルが生成されます.

Namuru_Nanoのソースファイルの名前がデフォルトでhello_world.cなので,
ファイル名を右クリックし,namuru_nano.cにrenameします.
このようにrenameすると,それに対応したmakefileが自動的に生成されます.



ここで,とりあえずBuild Allを実行し,system libraryを生成します.
これにより,Namuru_Nano_bspフォルダの中にsystem.hが作られます.
このヘッダファイルを開くと,GPSコンポーネントに関連した#defineが見つかります.



このままtemplateをコンパイルし実行すれば,JTAG UARTのコンソール画面にHello Worldが表示されます.
それだけでは面白くありませんので,GPSコンポーネントにアクセスするためのサンプルプロジェクトを用意しました.

http://www.sensorcomm.co.jp/osqzss/fpga/namuru/Namuru_Nano_20120318.zip

ベースバンド処理で一番頻度の高いものは,ACCUM_INTの割り込み処理です.
この信号は,1msの長さをもつC/Aコードより早い周期で割り込みをかけます.

次に重要なタイミングは,TICになります.ここでは,TICの周期を0.1sに設定しています.
この信号は,設定された周期でコード位相など測位演算に必要なレジスタをラッチします.
つまり,このTICのタイミングがGPS受信機における観測時刻になります.



ACCUM_INTに対応した割り込みハンドラでは,まずSTATUSレジスタを読み込み,
ACCUM_INTフラグをクリアします.



実際のベースバンド処理では,さらにNEW_DATAレジスタを読み込み,1コード分の
相関処理が終了しているチャンネルをチェックし,相関値を読み出します.
この相関値を使用して,GPS信号の捕捉や追尾が実施されます.

この割り込みハンドラは,alt_ic_isr_register関数によって登録されます.
このときのIRQのIDや優先度などは,system.hに定義されています.
また,割り込みハンドラとパラメータのやり取りを行うcontextとして,
gps_tというstructureを用意しました.



このサンプルを実行すると,ACCUM_INTが発生する度に,STATUSレジスタを読み込み,
TICフラグをチェックします.TICが発生していればLEDをカウントアップします.

以上,GPSコンポーネントの基本となるタイミングを利用したLEDチカチカの例でした.
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« GPSコンポーネントの追加 | トップ | DE0-NanoでuC/OS-IIを動かす »
最新の画像もっと見る

コメントを投稿

FPGA」カテゴリの最新記事