« MPPCアレイの設計 | トップページ | 日本物理学会に行ってきました »

2016.09.20

Cosmo-Zの新しいソフトウェア開発

現状のCosmo-Zのソフトウェアは、Web経由での操作や、Linuxのコンソールからの操作、WindowsやLabViewの専用アプリからの操作など、いくつかのアプリが用意されています。

CosmozwebappCosmozlinCosmozwin

これらのアプリの構造は、下の図のようになっています。

Cosmoz_hier

基本的にはZYNQ Linux上で動くコンソールのアプリがベースとして動いていて、WindowsアプリはTCP/IP経由でコマンドを送って動いているにすぎません。

また、この構造だと、コマンドの解釈ルーチンと、ハードウェアを操作する部分が一体となっているので、ユーザがプログラム全体を把握して、独自の機能を追加するのが極めて困難になってきています。

Cosmozapp

そこで、アプリからハードウェアを操作している部分、コマンドを解釈している部分、レジスタやメモリ操作の手順を実行している部分を分けて、APIの形で整理することにしました。

新しいアプリの構造は次の図のようになります。

Cosmoz_hier2_2

まず、Cosmo-ZのアプリからFPGA内のレジスタやメモリを操作する部分をHAL層として分離します。

具体的には

  • 物理メモリへのRead/Write
  • FPGA内蔵レジスタへのRead/Write
  • 割り込みのハンドリング

のような低レベルの処理です。

そして、ユーザAPIからはHAL層を隠ぺいし、「サンプリング周波数の変更」「波形キャプチャの実行」などの高レベルな処理をユーザに解放することにします。

こうすることで、Cosmo-ZのプログラムはZynq Linuxの上で動くだけではなく、Windowsのアプリとして、VisualStudioやBorland C++で作ることができるようになります。

例えば、Windows PC上で動作するCosmo-Z APIが、「波形キャプチャ」という関数を呼び出されたら、

  • FPGAのレジスタの○番に○○を書く
  • FPGAのレジスタの○番が○になるまで待つ
  • メモリの○番地から読み出し

という処理を行っているのですが、このレジスタの読み書きはWindows PC上で実行されるわけではなく、TCP/IPを通じてターゲットボードのZYNQ Linuxへ送られ、ZYNQ Linux上のCosmo-Zのアプリがそのレジスタ/メモリ操作を行い、生のデータをWindows PCに送り、Windows PC上でデータを解釈して結果を組み立てるという仕組みです。

|

« MPPCアレイの設計 | トップページ | 日本物理学会に行ってきました »

コメント

コメントを書く



(ウェブ上には掲載しません)




« MPPCアレイの設計 | トップページ | 日本物理学会に行ってきました »