HSIO2 Instruction
Useful links
Hardware and Software setup
- HSIOHardwareSetup
- HSIOForPixelReadout
Artix7にFirmwareを焼く
1. 新しいターミナルで:
bash> source /opt/Xilinx/Vivado/2015.4/settings64.sh
bash> vivado &
2.
Open Hardware Managerを開く
3.
open target -> auto connect
だめだったら、open target -> ~ connectで選択
4.
xc7a200t_0(1)を右クリック -> Program Device... ->
Bitstream file: /home/atlasj/Dropbox/SiliconMemo/memo/HSIO2/HsioCosmic_00000003.bit
-> Program
5. caliserver&calibGuiを立ち上げ直して確認
※電源を落とすとFPGAに書き込んだものは失われてしまう. FPGA & memoryに書き込む必要有.
メモリーに書き込む
xc7a200t_0(1)を右クリック -> Add Configuration Memory Device
All,1024, bpi, x16, -> ok,ok
HsioCosmic _00000003.mcs
(eraseからのprogramming)
Tuning & Source scan
CalibGuiの立ち上げ方
Running calibserver on the RCE:
bash> ssh rce0 -l root
root> source setup.sh
root> calibserver &
On the linux host:
bash> source ~/daq/rce/scripts/setup-gen3.sh
bash> calibGui &
Tuning Manual
calibGuiが立ち上がってから...
1) コンフィグファイルについて
/home/atlasj/Dropbox/FEI4tunings/HSIO2/macro/single_tuning_orgをコピーしてきて, 入ってるモジュールの名前にする。(ex. KEK82_KEK83)
rceconf/KEK*.cfg, config/KEK*_primlist_4_local__fe0.cfgを編集。
・rceconf/KEK*.cfg(全体のconfig)
rceに繋がっているセンサーを変える。
数字の意味は, (enable, inlink, outlink, gomi, gomi)
・config/KEK*_primlist_4_local__fe0.cfg (chipのconfig file)
ModuleID, Adress, Chip_SNを変える
2) calibGuiにおいて、
・Config Root Dir ... Browse → KEK~のディレクトリにいって、"rceconf"とタイプしてOpen
・Data Dir ... Browse → "data"とタイプしてOpen
・Load ... KEK~/rceconf/KEK~.cfgを選択してOpen
Config Halfstave A タブに選択したモジュールが入っているか確認(前の設定が残ってたら一回Quitする, そしたら治る)
3) Scan Configを選択(Digital, Analog, etc.)
4) Start Run → 結果は、Plotsタブに表示される
5) Prim Listを使いたいときはLoad Primlistでファイルを選択。
(/scratch/atlasj/Dropbox/FEI4tunings/HSIO2/primlist)
Tuningの手順
1) DIGITAL_TEST, ANALOG_TESTを確認
2) THRESHOLD_SCANをとってみて、KEK*_primlist_4_local__fe*.cfgのパラメータを調節しながら合わせる。
変えるパラメータは、Vthin_AltCoarse、Vthin_AltFineの2つ。Vthin_AltCoarseはthreshldを大まかに決めるパラメータで、0-3のどれかを入力。
Vthin_AltFineはthresholdを細かく決めるパラメータで、0-255の間で入力。
3)tuning targetに合わせてprimlistを読み込む。(例:fasttune_th3000_ToT7at10ke.pk)
4)thresold scan,ToT scanなどをしてtuning結果を確かめる
Hardware connection & software setup
Config file template
Mask
1.ANALOG_TESTを実行後、noisyなピクセルを確認。
2.CalibGuiの上のにあるUpdateを押し、maskを適用する。
3.noise scanを実行。
4.scanが終わったら、mask対象がどれくらいあるか確認(maskのヒストグラムを見る)。
5.mask対象が適切なら、同様手順でmaskをかける。 (noiseが多すぎるとコアダンプすることがあるので、その場合はnoise scan selftriggerを回し、これでmaskする。)
6.noiseがほとんど見えなくなったらソーススキャン("selftrigger")をする。
Tips
- リセット方法
-> HSIO-IIにあるボタン(SOFT RST, COLD BOOT, DTM BOOTの三段階)
- Threhoshold scanの範囲等を変える↓↓
THRESHOLD_SCAN,FEI4B,THRESHOLDTARGETVALUE=3000,TOTTARGETCHARGE=21000,TOTTARGETVALUE=7,MASKSTAGEMODE=FEI4_ENA_BCAP,LOOPVARVALUES=0[0;200;101]
(FEI4_ENA_BCAP...大きい方のcapacitorも入れる。)
Troubleshooting
基本的にlenovoでHSIO2を動かすこと前提です。。。
〇rce0にpingが通らない
・HSIO2に電源が入っているか
→電源を入れて下さい
・電源が入っているのに通らない
→/etc/sysconfig/network-scripts/ifcfg-eth0 をsudoで開いて"BOOTPROTO=dhcp"部分をコメントアウトし、HSIO2用の該当部分(for HSIO2や#####HSIO2#####などで分かりやすくなっているハズ)のコメントアウトを解除
sudo service network restart を実行
service dhcpd status でdhcpサーバーの状態を確認
→止まっていたらsudo service dhcpd start
/etc/hosts のrce0が正しいdtm番号の場所にいるか確認(いつも使ってるHSIO2のdtm番号は50 or 56)し、必要なら直して保存
〇rce0が見つからない
/sbin/ifconfig -a でeth0が無いことを確認(代わりに他のeth5とかがいたりする)
/etc/udev/rules.d/70-persistent-net.rules を開いて NAME="eth0" と書いてあるPCI deviceの行を削除し、NAME="eth5"(上で代わりにいたethの名前)と書かれている部分をeth0に書き換えてサーバー再起動
/sbin/ifconfig -a でeth0のMACアドレス(HWaddr)を取得し、/etc/sysconfig/network-scripts/ifcfg-eth0 内のHWADDRを取得したものに書き換え
sudo service network restart でeth0がいるのを確認
◯flexにconfigが通らない
flexはシリアルパワーリングなため遅い信号は通らない。
マンチェスターエンコーディングでCMDクロックを40MHzから80MHzに変える必要がある。
diff --git a/rce/pixelrce/server/CalibGui.cc b/rce/pixelrce/server/CalibGui.cc
index 8569959..efd1e2f 100644
--- a/rce/pixelrce/server/CalibGui.cc
+++ b/rce/pixelrce/server/CalibGui.cc
@@ -668,6 +668,7 @@ int
CalibGui::startRun(){
}
for (std::map <int, unsigned int>::const_iterator it = rcemap.begin(); it = rcemap.end(); ++it){
int rce=it->first;
+ fw.setEncoding(rce,FWRegisters::MANCHESTER);
fw.setTriggermask(rce, 0);
fw.setMode(rce, FWRegisters::NORMAL);
fw.setL1Type(rce, FWRegisters::SINGLE);
diff --git a/rce/pixelrce/server/CosmicGui.cc b/rce/pixelrce/server/CosmicGui.cc
index 23ca2f9..a17de13 100644
--- a/rce/pixelrce/server/CosmicGui.cc
+++ b/rce/pixelrce/server/CosmicGui.cc
@@ -804,6 +804,7 @@ int
CosmicGui::startRun(){
for (std::map <int, int>::const_iterator it = rcemap.begin(); it = rcemap.end(); ++it){
int rce=it->first;
fw.setMode(rce, FWRegisters::NORMAL);
+ fw.setEncoding(rce, FWRegisters::MANCHESTER);
//Discriminator Delays
fw.setDiscDelay(rce, 0, m_delay0->GetIntNumber());
fw.setDiscDelay(rce, 1, m_delay1->GetIntNumber()
EUTelescope Integration
--
Koji Nakamura - 2016-03-14