MAXI-GSC 地上試験用 アナログ・デジタル処理ボード

MAXI-GSC 地上試験用
アナログ・デジタル処理ボード
GNV-190 (東工大 VME-UIO)
2002.04.29 release
東工大
大阪大学
理研
青山学院大学
片岡、 河合
能町 (核物理センター)
三原、 小浜
吉田
開発目的
MAXI –GSC フライト品の地上試験を円滑に行う。
特に、センサ+アナログ部(AE)、デジタル処理部(DP)
の性能を、独立な環境で試験
電気消去可能なFPGAを利用
同じハードウェアで両方を実現
汎用のシステム(VMEバス+Linux)を用いて簡便で
機能性の高いデータ処理系を構築
ボードの使用形態
(1)擬似DP として
AE データ
GSC
カウンタ
エレキ
(MDP)
μ-D sub
コマンド
RS422
QL
linux
TIT
ボード
VME-bus
GSC・エレキに任意のコマンドを送信
AE からデータを取得し、メモリに詰める
QLはメモリデータを画面表示する
カウンタ・フライトエレキの試験
(2) 擬似AE として
VME
linux
AE データ
TIT
ボード
地上系
QL
DP
コマンド
VME-bus
RS422
TCP/IP
DPからのコマンドを受け取り、識別
メモリをダンプし、擬似AEデータを送る
メモリを書き換えれば、あらゆるパターンが可能
DPの詳細試験とバグ出し
地上QL系の作成補助
ボードのハードウェア構成 - front panel LED
インジケータ
トリガ入出力
(信号の確認)
外部クロック入力
(not used)
USB
(not used)
JTAG
(FLEXへの
ダウンロード)
RS422
(擬似 AE 専用)
RS422
(擬似 DP 専用)
ボードのハードウェア構成 - side view –
DIPスイッチ
(VME
アドレス)
RS422
インター
ェース
EEROM
(MAX7000)
Altera- FPGA
(100,000 Gate)
高速SD-RAM
(16 Mbyte)
ボード全体の機能構成
E2-ROM
Miscellaneous
MAX7000
(LED/JTAGなど)
VME
インターフェース
FPGA
External I/O
FLEX
(10万ゲート)
(バストランシーバ)
フロントパネルI/O
(Dサブ,
レモ出力)
メモリー
(16MB)
Flex/MAXは3.3 V
デバイスを用いる
FLEX … EPF10K100ARC240-3
MAX … EPM7128AETC100-5
SDRAM … μPD45128441
FPGA構成 (擬似DP)
HDL (Hardware Description Language)でプログラミング
(http://www.hp.phys.titech.ac.jp/kataoka/FTP.html)
pde_final
io_ctr
外部のROMや
メモリとの接続定義。
内部モジュールの信号
接続定義。
コマンド・データ
入出力の制御
in_ctr
AEデータ
制御
out_ctr
AE宛コマンド
制御
ptr_ctr
メモリ制御
mem_ctr
メモリーへの
アクセス制御
vme_ctr
VMEバスの
アクセス制御
usb_ctr
USBのアクセス制御
(現在対応せず)
メモリ構成(ダブルバッファ: 擬似DP)
- 「データ数格納領域」 「ポインタ・ビット数格納領域」 ×2 に分ける
- データの書き込みをしていないバッファでQL 側へ。
終了後、Buffer A/B を切り替える。
AF000000
AF200000
Bit count 1
Packet pointer 1
Bit count 1
Packet pointer 1
Bit count 2
Packet pointer 2
Bit count 2
Packet pointer 2
1Mbyte
RING
BUFFER
1Mbyte
AF100000
AF300000
Data packet1
Data packet1
Data packet2
Data packet2
Data packet3
Data packet3
1Mbyte
Buffer
A
1Mbyte
仮想的なリングバッファを構成
FPGA構成(擬似AE)
(http://www.hp.phys.titech.ac.jp/kataoka/FTP.html)
pae_final
io_ctr
外部のROMや
メモリとの接続定義。
内部モジュールの信号
接続定義。
コマンド・データ
入出力の制御
in_ctr
out_ctr
AE宛コマンド
制御
AEデータ
制御
mem_ctr
メモリーへの
アクセス制御
vme_ctr
VMEバスの
アクセス制御
usb_ctr
USBのアクセス制御
(現在対応せず)
の部分が擬似DP
と異なる
メモリ構成(擬似AE)
あらゆる擬似データパターン・出力レートが実現可能
BC000000
flg
出力タイミング
- メモリーの内部に、異なる種類の
データをダウンロードしておく
GSC-data 上位 32bit
GSC-data 下位 32bit
flg
出力タイミング
GSC-data 上位 32bit
GSC-data 下位 32bit
flg
出力タイミング
VME側
で指定
- 受け取ったコマンドにより、参照する
メモリーアドレスを指定
GSC-data 上位 32bit
GSC-data 下位 32bit
- 出力タイミング31bit を調整し、
0.01~2000 evt/s の任意のレート
4Mbyte
0
0
まとめ
MAXI-GSC 地上試験用のボードを開発した
- ハードウェアは完成
- プログラムのバグ出しも終了した(と思う)
- 9月中に、受け側のQL ソフトを立ち上げる
R2 から本ボードを活用する機会が増えると思うので、
特に若い人の修行を歓迎 ^^;
(とりあえずはQLのお仕事)
VMEアドレス設定 (擬似DP register)
Don’t Care
(メモリ側の指定)
A31 A30 A29 A28 A27 A26 A25 A24
DIPスイッチでハード指定
(デフォルトは “1100110111001100” = CDCC)
A23 A22 A21 A20 A19 A18 A17 A16
A15 A14 A13 A12 A11 A10 A9
A7
A6
A5
A4
A3
A2
A8
A1
ユーザー
A0 がソフト的に
配分
レジスタにアクセスする場合は、24bit アクセスでA23-A8 の値を参照。
A7 以下は次ページのように配分する (最大 256通りのレジスタが定義可)。
VMEアドレス設定 (memory アクセス)
base[] の値で指定
(デフォルトは“11”)
DIPスイッチでハード指定
(デフォルトは “101011”)
メモリのアドレス
“AF******”
A31 A30 A29 A28 A27 A26 A25 A24
A23 A22 A21 A20 A19 A18 A17 A16
A15 A14 A13 A12 A11 A10 A9
A7
A6
A5
A4
A3
A2
Don’t
Care
(レジスタ
側の設定)
A8
A1
A0
メモリーにアクセスする場合は、32bitアクセス で A31-A24 の値のみ参照
(A23 以下のDIPスイッチの設定によらない)
メモリサイズは 224 byte = 16 Mbyte まで可能。ただし、現状ではA23, A22 を
“00” として 4Mbyte のみを使用。つまり AF000000~AF3FFFFFF。
メモリ制御シーケンス(mem_ctr)
160 us
idle
Modeset
wait
refresh0
v1
v_mem_ws
v_mem_ws
v0
v_mem_rs
v_mem_rs
vwite1
vread0
10 usに1度
refresh
ref1
base[]
= v_address[]
ref4
ref2
base[]
= v_address[]
v_mem_ws
メモリwrite
シーケンス
(VME 経由)
vwrite
2..13
vwrite14
vread
1..13
メモリread
vread14 シーケンス
(VME 経由)
ref3
refresh
シーケンス
FPGA内部バス構成(擬似AE)
V_A
V_D
v_address
v_data
io_address
io_data
vme_ctr
M_D
io_ctr
M_A
usb_ctr
out_ctr
mem_ctr
in_ctr
AE宛
コマンド
VME/USB
コントロール
Serial I/O
AE
データ
SDRAM
(16 Mbyte
DBL buff)
VMEアドレス設定 (擬似AE register)
Don’t Care
(メモリ側の指定)
A31 A30 A29 A28 A27 A26 A25 A24
DIPスイッチでハード指定
(デフォルトは “1100110011001100” = CCCC)
A23 A22 A21 A20 A19 A18 A17 A16
A15 A14 A13 A12 A11 A10 A9
A7
A6
A5
A4
A3
A2
A8
A1
ユーザー
A0 がソフト的に
配分
レジスタにアクセスする場合は、24bit アクセスでA23-A8 の値を参照。
A7 以下は次ページのように配分する (最大 256通りのレジスタが定義可)。
レジスタの配分( A7~A0:擬似DP)
A7~A0
レジスタの種類
操作の内容
00
04
outctr_reg
inctr_reg
08
buffer_reg
AEへのコマンドを書き込む
入力AEデータの確認(debug 用)
dbl-buffer の切り替え
(0x00… bufferA/ 0x100 bufferB)
0C
10
14
18
20
24
50
wrd_ptr_A
wrd_ptr_B
pkt_ptr_A
pkt_ptr_B
p_ptr
w_ptr
memctr_reg
buffer A のデータ格納領域指定
buffer B のデータ格納領域指定
buffer A のポインタ格納領域指定
buffer B のポインタ格納領域指定
現在のデータ格納領域(debug用)
現在ポインタ格納領域(debug用)
メモリアドレスA25-24の指定
たとえば、AE宛のコマンドを送信する場合は “CDCC00”に
コマンドデータを書き込む。
レジスタの配分( A7~A0:擬似AE)
A7~A0
レジスタの種類
操作の内容
00
04
08
0C
10
14
50
mem_addset
memout_go
cmddat_reg
cmdbit_reg
cmdflg_reg
cmdack_reg
memctr_reg
出力の入ったメモリアドレスを指定
AE出力のGO
入力コマンドの確認
コマンドビット数の確認(debug用)
コマンド入力のフラグ
コマンド処理後の確認フラグ
メモリアドレスA25-24の指定
たとえば、AE宛のコマンドを受け取った場合
(1) CCCC10 によりコマンド受信を知り、
(2) CCCC08 でコマンドの内容を照合。正しいコマンドであった場合
(3) CCCC14 にACK を返す。
(4) CCCC00 に、対応するAEデータの入っているメモリアドレスを指定し
(5) CCCC04 でAEデータの出力をスタートする
VMEアドレス設定 (memory アクセス)
base[] の値で指定
(デフォルトは“00”)
DIPスイッチでハード指定
(デフォルトは “101111”)
メモリのアドレス
“BC******”
A31 A30 A29 A28 A27 A26 A25 A24
A23 A22 A21 A20 A19 A18 A17 A16
A15 A14 A13 A12 A11 A10 A9
A7
A6
A5
A4
A3
A2
Don’t
Care
(レジスタ
側の設定)
A8
A1
A0
メモリーにアクセスする場合は、32bitアクセス で A31-A24 の値のみ参照
(A23 以下のDIPスイッチの設定によらない)
メモリサイズは 224 byte = 16 Mbyte まで可能。ただし、現状ではA23, A22 を
“00” として 4Mbyte のみを使用。つまり BC000000~BC3FFFFFF。
FPGA内部バス構成(擬似DP)
V_A
V_D
v_address
v_data
io_address
vme_ctr
io_data
io_ctr
M_D
M_A
ptr_ctr
usb_ctr
in_ctr
mem_ctr
out
_ctr
AE宛
コマンド
VME/USB
コントロール
AE
データ
Serial I/O
SDRAM
(16 Mbyte
DBL buff)
メモリ制御シーケンス(mem_ctr)
160 us
idle
Modeset
wait
refresh0
v1
v_mem_ws
v_mem_ws
i0
io_mem_rs
io_mem_rs
vwite1
iread0
10 usに1度
refresh
ref1
base[]
= v_address[]
ref4
ref2
base[]
= v_address[]
v_mem_ws
メモリwrite
シーケンス
(VME経由)
vwrite
2..13
vwrite14
iread
1..13
メモリread
iread14 シーケンス
(I/O経由)
ref3
refresh
シーケンス
I/O制御シーケンス(io_ctr:擬似AE)
fetch_
first
idle
int_cmd
(メモリ読み出しの
インターラプト。
新しいメモリ
アドレスをセット)
newptr_
set
fetch_
data
inc_
ptr1
!int_cmd
flg
wait
chk_
csr
csr[31..0] == 0
exec_
send
send_
ldata
ptr++
send
read_
hdata
AEデータ
下位4byte出力
inc_
ptr2
inc_
ptr3
read_
ldata
send_
hdata
ptr++
AEデータ
上位4byte出力
ptr++
!flg
end_
data