sPHENIX実験
中間飛跡検出器INTTのためのデータ処理FPGAの改良
奈良女子大学 理学部数物科学科物理学コース
高エネルギー物理学研究室 4回生
加納麻衣

2023/3/3

卒業研究発表会

1目次
1. 研究背景2. 研究目的
3. 開発環境のテスト

4. FPGAコードの改造
5. まとめと今後の課題

2023/3/3

卒業研究発表会

2

研究背景

2023/3/3

卒業研究発表会

3

研究背景
RHIC-sPHENIX実験
アメリカブルックヘブン国立研究所（BNL)・RHIC（Relativistic Heavy Ion Collider）加速器での実験
・2000年-2016年まで稼働していたPHENIX実験を高度化、2023年より稼働予定
・衝突により発生するJet現象やUpsilon粒子を測定し、QGPの性質を決定することが目的
・金原子核対（200GeV）、陽子対（510GeV)の衝突

クォーク・グルーオン・プラズマ（QGP)とは高温高密度状態で、ハドロン内に閉じ込められていたクォークやグルーオンが解放されたプラズマ状態の物質
ビックバンから数10μ秒後に実現していたとされる。

2023/3/3

卒業研究発表会

4

中間飛跡検出器INTT

TPC•

INTT（INTermadiate Tracker)

MVTX

•

sPHENIX実験で用いられる3つの飛跡検出器のうちの1つ•

ビームパイプから6-12cmに位置する

INTT• バレル状の2層構造のストリップ型シリコン検出器•

位置分解能と時間分解能が高く、飛跡再構築において重要な役割を果たす

2023/3/3

卒業研究発表会

5

設定値読み出しシステム
INTTには検出器の設定値を読み出すシステムがある（Readbacker）
設定が正しく行われているか確認するために必要
暗箱

Full Ladder

20cm

BEX

ROC

FEM
FEM-IBPC• FPHXチップ：ラダー内にあり、信号を読み出す• ROC（Read Out Card）：複数のFPHXチップから送られてきたデータを次に転送する読み出し基板• FEM（Front End Module）：ROCから送られたデータをまとめ転送する• FEM-IB：FEM全体を制御する役割• Bus-Extender（BEX）：シリコンセンサーとROC を接続するためのデータ送信ケーブルでありその全長は 1.2 ｍある

2021/8/31

Readbacker Debug

6

研究目的

2023/3/3

卒業研究発表会

7

課題：Readbackerの問題点

BEX繋げた時のPCの様子
設定値 読み出し値• FPHXとROCの間でBEXを繋げない場合、設定値と読み出し値一致する。
→正常• BEXを接続し読み出し線路が長くなると、設定値と読み出し値一致しない。
→正常でない• ここでの設定値とはDAC値などがある
DAC値： FPHXにおいてエネルギー損失の波形整形を行って３bitのADCの8つの閾値をそれぞれ８bitのDAC値で設定可能

一致しない
2023/3/3

卒業研究発表会

8

BEXあり先行研究
読み出し値をオシロスコープで測定

FPHX

ROC

FEM

設定値
10101011
FPHXとROC間の読み出し値
11010101

FEMで受信した読み出し値
11101010

読み出し値の順が反転したら正常
11010101

ROC前後で読み出し値が変わっている
問題箇所はROCと特定
2023/3/3

卒業研究発表会

9先行研究より• 読み出し距離が長いためデータが遅れ、受信タイミングがずれてしまう。
設定値を変えて測定したデータ
設定値
読み出し値ROC前
10101011
11010101
10101010
10101101

01010101
10110101

読み出し値ROC後11101010
00101010
11011010

ROC前の1bit目と、ROC後の2bit目がいつも同じなことがわかった。

１bit分データが遅れて届いている
2023/3/3

卒業研究発表会

10

研究目的
設定値読み出しシステムにおいてBus-Extenderを使用した際
Readbackerが正常に動作しない問題の解決

2023/3/3

卒業研究発表会

11データズレが起きる原因

読み出し値10101011

データが遅れていないとき

データが遅れてくるとき

クロック
BCO_CLK ……

……

データ
DATA
読み出しタイミング
CS_DATA

８bit

８bit２１クロック目
固定

２１クロック目
固定

クロック（BCO_CLK）と読み出しタイミング（CS_CLK)は同期している→タイミングは固定されている
2023/3/3

データが遅れると、データの８bitと読み出しタイミングの８bitがずれる
卒業研究発表会

12

解決方法
SlowControl FPGAを改造
・BEXが無いときは、信号の遅れがないのでそのままで良い。
・BEXがあるときは、信号が1bit分遅れてしまうので読み出すタイミングを1bit分ずらさなければならない。

BEXがあってもなくてもデータ８bitを正しく読み出すために読み出しを８bit→９bitに変更する
2023/3/3

卒業研究発表会

13

ROC-FPGA• FPGA（field programmable gate array)：
現場でプログラム可能な論理回路配列
製造後に購入者や設計者が構成を設定できる。
ハードウェア記述言語（HDL）を用いる。

• 本研究では、ROC内でReadbackerに関係するSlowControl FPGAの改良を行う。
言語はHDLの1つであるVHDLを使う。

2023/3/3

卒業研究発表会

14SlowControl FPGAのコードについて
BCOclkp/n

PLL

OUTclkp/n(200MHz)
BCOclkp/n(10MHz)

CLK_START_SC_p/n

RESET_OUT[31:0]
SC_OUT[31:0]

DATA_IN_FO[8:0]

Input_block

DATA_SC
COMMAND_OUT[7:0]
WEDGE_ADDR[7:0]
CS_SC
EMPTY
SYNC_OK

ROC_slowControl

FPHXを制御

TP用波高制御(DAC)
TPを制御
CALIB_IO[3:0](SDIN, SCLK, SCS, ONOFF)
TP選択のMUX制御
ENABLE_PUL
decode_calib_ WEDGE_ID_ Set_pulser_c SER[3:0]
WEDGE_SET_PULSER
ID[5:0]FULL
wedge
ontrol
[11:0]LATCH[7:0]
SC_TO_DATA_FPGA[3:0]SC_EN_TO_DATA_FPGA[3:0]
RESET

to DATA_FPGA

Readbackデータを受信するFPGA内モジュール
SC_FROM_FPHX_p/n[31:0]status_serial_output

SC_DATA

data_streamer

AMPL[5:0]

AMPL[9:0]
DO_CALIBDATA_OUT_FO[13:0]

TX_CLK

2023/3/3

卒業研究発表会

15

Status_serial_outputの内容

読み出し値の受信タイミングについての記述箇所

2023/3/3

16
卒業研究発表会

研究の流れFPGA開発ソフトウェアのテスト改造に用いるコードの内容確認
FPGA書き換えのテスト
FPGAコードの改造
改造したコードの動作確認
2023/3/3

卒業研究発表会

17

FPGA開発ソフトウェアについて
開発の流れ
シミュレーション

仕様設計
HDLコード記述

論理合成
SlowControl FPGAに対応するものはLibero SoC v11.9

配置配線
ダウンロードファイル作成ダウンロード（一部作業には別のツールも併用）

コード改造前に使用できるかテストする

実機で動作確認2023/3/3

卒業研究発表会18

開発環境のテスト
FPGA開発ソフトウェアのテスト改造に用いるコードの内容確認

FPGA書き換えのテスト
FPGAコードの改造

改造したコードの動作確認
2023/3/3

卒業研究発表会

19

HDLコード記述で回路設計テストで、回路を一つVHDLコードで設計を行った

右の回路を設計したVHDLコード2023/3/3

設計した回路

卒業研究発表会20設計した回路図

シミュレーションのテスト
設計した回路が正しくできているかのシミュレーションを行う。
任意の入力信号を設定し、動作を表示する。

AB
S
C

設計した回路の真理値表
A B S
C０ ０ ０ ００ １ １ ０１ ０ １ ０１ １ ０ １

開発ソフトウェアにおいてVHDLコードで回路を設計し正しくシミュレーションできた

2023/3/3

卒業研究発表会

21

開発環境のテスト
FPGA開発ソフトウェアのテスト改造に用いるコードの内容確認

FPGA書き換えのテスト
FPGAコードの改造

改造したコードの動作確認
2023/3/3

卒業研究発表会

22

FPGAコードについて• 以前ROCが用いられていた検出器に関するWebページ上のSlowControl FPGAコードを使用。

• 最新のFPGAコード（12-Sep-12,fast ファイル名ROC_slow_control.zip) でHDLコードの記述の確認～ダウンロードファイルの作成までを行った。

→このファイルをFPGA書き換えテストに利用

2023/3/3

卒業研究発表会23

開発環境のテスト
FPGA開発ソフトウェアのテスト改造に用いるコードの内容確認

FPGA書き換えのテスト
FPGAコードの改造

改造したコードの動作確認
2023/3/3

卒業研究発表会

24

FPGA書き込みツール• Flash Pro ：FPGAと接続してファイルを書き込む（プログラミング）作業を行うツール• Flash Pro5：基板上に実装されたFPGAをPCと接続し、プログラミングするハードウェア

2023/3/3

卒業研究発表会

25

Verify
FPGA内で設計されている内容と、コードの内容が一致しているか確認
書き込みを行う前に、他の測定で使用中のROC-FPGAとWebページ上のFPGAコードをそれぞれVerifyを行った。 →全てエラー

エラーより、Webページ載っているコード全て現在使われているROC-FPGAの内容と一致していないことが分かった。
2023/3/3

卒業研究発表会

26

FPGAの書き換えテスト• 先ほどのダウンロードファイルの作成まで成功したコードのProgram成功。
• 次にそのコードでのVerifyも成功。
→FPGAの書き換えすることが出来た。

2023/3/3

卒業研究発表会

27

FPGAの書き換えテスト
改造したコードで書き換えて反映できるか、オシロスコープで確認した。
• テストでコードを変更しFPGAに書き込んだ。
→特定のピンにH/Lを出力することが出来た。
変更した内容2023/3/3

卒業研究発表会

28

FPGAの書き換えテスト
デジタル回路上の多数信号を表示するツール（Identify）で書き込んだFPGA内でどのように動作しているかの確認も行った。

→変更したコードの通りに動作した。

開発ツールの使用テスト完了した→実際にFPGAコードの改造を行う

29

FPGAコード改造
FPGA開発ソフトウェアのテスト改造に用いるコードの内容確認

FPGA書き換えのテスト
FPGAコードの改造

改造したコードの動作確認
2023/3/3

卒業研究発表会

30

FPGAコードの改造
改造前のシミュレーション（読み出しが正常にできる状態に設定）
1 0 1 0 1 0 1 1

設定値 11010101→正しい読み出し値 10101011

8bit

改造前のシミュレーション（1bit信号が遅れてくる状態に設定）
0 1 0 1 0 1 0 1
９bitに変更

2023/3/3

8bit

卒業研究発表会

改造後のシミュレーション
0 1 0 1 0 1 0 1 1

9bit

31

変更したコード

改造後、信号が１bit遅れても正常に読み出せることをシミュレーションで確認できた
32

FPGAコード改造
FPGA開発ソフトウェアのテスト改造に用いるコードの内容確認

FPGA書き換えのテスト
FPGAコードの改造

改造したコードの動作確認
2023/3/3

卒業研究発表会

33

改造したコードの動作確認• 改造したコードをROC7のFPGAに書き込み、電源とラダーに繋ぎ全体の動作確認を行うため、キャリブレーションテストを行った。

↓キャリブが正常に動いている時のFEM→キャリブレーションテストが出来なくなった↓キャリブレーションデータが来ないPCの様子

FEMに本来ついていない箇所でランプがついている↑
2023/3/3

卒業研究発表会34

改造していないコードの動作確認①今まで使っていたコードの改造前のもの②FVTXのWebページにある別のFPGAコード （未改造）
・12-Sep-12,slow version
ファイル名ROC_slow_control_slow_5Feb13.zip・5-Sep-12,fast
ファイル名ROC_slow_control_NoReadClkRelay_94Mhz.zip

上記をFPGAに書き込み、キャリブレーションテストを行った。
→いずれもデータが取れなかった。
2023/3/3

卒業研究発表会35

まとめ・FPGAの書き換えを行うことが出来るようになった。
・SlowControl FPGAコードで読み出しを8bit →9bitに変更できた。
動作をシミュレーションでも確認できた。

・改造したコードを書き込んだROCでは、キャリブレーションテストが出来ない。
2023/3/3

卒業研究発表会36

今後の課題・改造したコードを書き込んでる状態で、FPGAがどのように動作しているのかを調べる。

・FEMで正常な場合と異なるランプがついている原因の確認。

2023/3/3

卒業研究発表会

37

Back Up

2023/3/3

卒業研究発表会38先行研究のデータまとめ
GUI
INPUT

SC_OUT(ICB)

SC_OUT(FEM)

GUI
ReadBack

171 (10101011)

11010101

11101010 (87)87 (01010111)

170 (10101010)

01010101

00101010 (84)84 (01010100)

172 (10101100)

00110101

00011010 (88)0173 (10101101)

10110101

11011010 (91)91

174 (10101110)

01110101

00111010 (92)92

138 (10001000)

01010001

00101000 (20)20 (00010100)

122 (01111010)

0101111000101111 (244)244 (11110100)

20 (00010100)

00101000

00010100 (40)40 (00101000)

40 (00101000)

00010100

00001010 (80)80

25 (00011001)

10011000

11001100 (51)51

30 (00011110)

01111000

00111100 (60)60

35 (00100011)

11000100

11100010 (71)712023/3/3

読み出し結果がおかしい

卒業研究発表会

39

開発環境について
Libero SoC v11.9（ProAsic3Eで使える）
・VHDL言語を用いる 論理合成＋配線ツール
・V11.9はProAsic3E用の最終版
・FVTX開発にはv9.1が使われている
FlashPro（ソフトウェア）
・FPGA書き込み用ソフトウェア
・PCとの接続にFlashPro５を用いる
Identify Synopsys社のハードウェアデバッガ
・ロジックアナライザー（デジタル回路上の多数のデジタル信号を表示するもの）のように動作する
・Identifyで見たい信号などを設定し、波形で見ることができる
2023/3/3

卒業研究発表会

40改造前 遅れず信号が来た時のシミュレーション

2023/3/3

卒業研究発表会

41

Bus-Extender（BEX）をつないだ時のように読み出し値1bitずれる状態をシミュレーション（読み取り開始クロックを21→22に変更)

2023/3/3

卒業研究発表会

読み出し信号が10101011 -> 01010101に変わった。 1つずれた。

42

読み出し値が1bit遅れる場合に合わせてコードを改造した時のシミュレーション

9bit
読み出せるようにできた。読み出しデータは010101011
2023/3/3
卒業研究発表会43

シミュレーションの設定（テストベンチ）

2023/3/3

卒業研究発表会

44

SlowControl FPGAROC内で読み出しコマンド（SlowControl コマンド）をラダーに送受信する。

• SlowControl の信号の内容(32bit)

••
•
•
•
•

Header（7bit): 1100111
Chip-ID(5bit): 00001 = chip1
RegAddr(5bit): 10001 = 17
Instruction(3bit): 001 = write
Data(8bit): 11010101 = 213
Trailer(4bit) : 0000

固定
chip位置
何の値か
動作値←これを読み出している
固定• この時の入力データは 1100111_00001_10001_001_11010101_0000 になる
2023/3/3

卒業研究発表会

45