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