SPADI-A Wiki/SPADI-A DAQ マニュアル/ソフトウェア/DAQのセットアップ


DAQ のセットアップ

DAQ 関連のソフトウェアをインストールが終わったら、各々の実験に合わせて、スクリプトを用意する。基本的には、これまでの実験で使われたスクリプトをまとめた GitHub の以下のリポジトリをベースにするのがよいであろう。

ここに、AMANEQ といった FEE 用のレジスタ設定スクリプトのサンプルや、NestDAQ の設定スクリプトのサンプルがある。

設定の手順について

まず、リポジトリを GitHub から clone する。

$ cd $HOME/
$ git clone https://github.com/spadi-alliance/exp-config

その後、exp-config 内に入り、自身のセットアップに近いディレクトリをコピーして、自身の実験用のディレクトリを作成する。

$ cd $HOME/exp-config
$ ls
README.md	jparc_e50_blm	jparc_t103	raris_bpm	rcnp_d202407a	rcnp_e585
$ cp -a rcnp_d202407a my_exp
$ cd my_exp
$ ls
fee_scripts run

ちなみに、各ディレクトリ内の run スクリプトには頻繁にアクセスするため、ホームディレクトリにリンクを作っておくと便利であろう。ls コマンドなどで $HOME/run ディレクトリが存在しないことを確認したら、以下のリンクコマンド (ln -s) を実行。

$ ln -s $HOME/exp-config/my_exp/run $HOME/run

そのあと、実験ごとのセットアップ (FEE の台数や IPアドレスなど) に応じて、スクリプトの編集を行う。以下、それぞれのスクリプトの説明と編集方法を記述する。

my_exp/fee_scirpts 内のスクリプトの編集

my_exp/fee_scripts ディレクトリには、AMANEQ のレジスタ設定を行う以下のスクリプトが用意してある。

config_modules.sh
init_hrtdc.sh
reset_modules.sh
set_hbfstate_on.sh
set_hbfthrottling.sh
set_selfrecovery.sh
set_tdcmask.sh
set_totfilter.sh

この中で、実験時に実行するスクリプトは config_modules.sh である。config_module.sh の中身を確認すればわかるが、このスクリプトを実行することで、その他のスクリプトが順次実行される。特に問題がなければ、AMANEQ 電源投入時に config_modules.sh を実行すればよい。なんらかの問題が生じた場合 reset_modules.sh を実行して、モジュールのリセットを行う。これらのスクリプトはパスがベタ書きになっているので、それをすべて書き換えるか、うまく変数を使って書き直すのが良いであろう。さらに、その他のスクリプトの中身をセットアップに合わせてすべて書き換える。各スクリプトの意味と編集方法は、以下の通り。

fee_scripts/config_modules.sh

実験時に実行するスクリプトは config_modules.sh である。このスクリプトの中身は以下のようになっており、

#!/bin/bash

$HOME/exp-config/rcnp_d202407a/fee_scripts/init_hrtdc.sh
$HOME/exp-config/rcnp_d202407a/fee_scripts/set_tdcmask.sh
$HOME/exp-config/rcnp_d202407a/fee_scripts/set_totfilter.sh
$HOME/exp-config/rcnp_d202407a/fee_scripts/set_selfrecovery.sh
$HOME/exp-config/rcnp_d202407a/fee_scripts/set_hbfthrottling.sh
$HOME/exp-config/rcnp_d202407a/fee_scripts/set_hbfstate_on.sh

これを実行することで、その他のスクリプトが順次実行される。特に問題がなければ、システム起動時に config_modules.sh を実行すればよい。現状のディレクトリ構造に合わせて、編集する。パスがベタ書きになっているので、それをすべて書き換えるか、うまく変数を使って書き直すのが良いであろう。

fee_scripts/reset_modules.sh

データ収集を行なっている際になんらかの問題が生じた場合 reset_modules.sh を実行して、モジュールのリセットを行う。現状のディレクトリ構造に合わせて、編集する。パスがベタ書きになっているので、それをすべて書き換えるか、うまく変数を使って書き直すのが良いであろう。

#!/bin/bash
#low resolution
$HOME/exp-config/rcnp_d202407a/hul-common-lib/install/bin/gen_user_reset 192.168.2.160
$HOME/exp-config/rcnp_d202407a/hul-common-lib/install/bin/gen_user_reset 192.168.2.161 
...
$HOME/exp-config/rcnp_d202407a/hul-common-lib/install/bin/gen_user_reset 192.168.2.169

#high resolution
$HOME/exp-config/rcnp_d202407a/amaneq-soft/install/StrHRTDC/bin/gen_mzn_userreset 192.168.2.169 both

fee_scripts/init_hrtdc.sh

HR-TDC FPGAファームウェアのリセットと、HR-TDC メザニンのリセットを行う。HR-TDC を利用する場合、AMANEQの電源を投入後、一度だけこのスクリプトを実行する必要がある。そうしないとデータ収集はできない。一度実行した後はもう実行する必要はないが、何度実行しても問題はない模様。中身は以下のようになっている。

#!/bin/bash

$HOME/exp-config/rcnp_d202407a/amaneq-soft/install/StrHRTDC/bin/write_mzn_register 192.168.2.169 both 0x2010 0x0 1
$HOME/exp-config/rcnp_d202407a/amaneq-soft/install/StrHRTDC/bin/initialize 192.168.2.169 both 
$HOME/exp-config/rcnp_d202407a/amaneq-soft/install/StrHRTDC/bin/write_mzn_register 192.168.2.169 both 0x2010 0x2 1

バイナリのパスと 192.168.2.169という部分を自身の環境に合わせて編集する。ここで、 192.168.2.169 は HR-TDC の IP アドレスである。HR-TDCが2台以上ある場合は、上記の 3 行をモジュールの台数に合わせて増やせば良い。

my_exp/run ディレクトリ内のスクリプトの編集

my_exp/run ディレクトリ内のスクリプトは NestDAQ を動かすための各種スクリプトが格納してある。

-

付録: AMANEQ のリセットについて

ここで、reset_modules.sh の利用機会について言及しておく。AMANEQから読み出したデータに問題があるといった場合、reset_modules.sh スクリプトを実行し、AMANEQ のソフトウェアリセットを行う。ただ、最新のファームウェアの動作はかなり安定しつつあり、リセットが必要な機会は減ってきている。( 前のHR-TDC のファームウェアバージョンでは、データの読み出しで負荷がかかった場合、Local Heart Beat Frame Mismatch が起きて、リセットが必要になる時があった。)何らかの理由でソフトウェアのリセット効かない場合は、AMANEQのハードウェアリセットスイッチを押す。ちなみに、本多氏曰く、AMANEQ のパワーサイクル (電源 OFF/ON) が有効な場合はあまり考えられず、問題を悪化させるだけであろうとのこと。