[KEKB Bunch Feedback Group]

株式会社デジテックス研究所社製64ch ADC 18K14用EPICS Device Supportの製作(Japanese)


by とびやま まこと(Makoto Tobiyama)/KEKB ビームモニターグループ

警告
以下の記述に関しては、意図する、しないに関わらず多くの誤り、誤解が含まれていると思われますので、 決して信用してはいけません。これを信じて起きた損害に関しては、当方は一切責任を持ちません。


If you want to contact with the author, please E-mail to makoto.tobiyama@kek.jp.
目次

1.はじめに

18K14型64チャンネル16ビット自動ピークホールドADCは、64チャンネルのsingle-end入力 を内部1kHz信号で16ビット分解能でサンプルし、その間の最大、最小、平均、そしてアクセスされた時点での 現在値を出力するモジュールです。

アナログ入力コネクタピンアサインは以下の通りです。
Input 1(上)
19GND
37 CH818CH0
36 CH917CH1
35CH1016CH2
34CH1115CH3
33CH1214CH4
32CH1313CH5
31CH1412CH6
30CH1511CH7
29GND 10GND
28CH24 9CH16
27CH25 8CH17
26CH26 7CH18
25CH27 6CH19
24CH28 5CH20
23CH29 4CH21
22CH30 3CH22
21CH31 2CH23
20GND 1GND
Input 2(下)
19GND
37CH4018CH32
36CH4117CH33
35CH4216CH34
34CH4315CH35
33CH4414CH36
32CH4513CH37
31CH4612CH38
30CH4711CH39
29GND 10GND
28CH56 9CH48
27CH57 8CH49
26CH58 7CH50
25CH59 6CH51
24CH60 5CH52
23CH61 4CH53
22CH62 3CH54
21CH63 2CH55
20GND 1GND

2.VMEバスレジスタ

18K14ボードのI/Oマップは以下の通りです。
アドレスWrite/Readデータ
313029282726252423222120191817161514131211109876543210
0x******(**00)00(R)AVE CH0AVE CH1
(R)
0x******(**00)7C(R)AVE CH62AVE CH63
0x******(**00)80(R)MAX CH0MAX CH1
(R)
0x******(**00)FC(R)MAX CH62MAX CH63
0x******(**01)00(R)MIN CH0MIN CH1
(R)
0x******(**01)7C(R)MIN CH62MIN CH63
0x******(**01)80(R)MON CH0MON CH1
(R)
0x******(**01)FC(R)MON CH62MON CH63
0x******(**01)FC(R)MON CH62MON CH63
0x******(**10)00(R/W)MATH_ENB
0x******(**10)04(R/W)MATH_SIZE
0x******(**10)08(R/W)MATH_SINGLE
0x******(**10)0C(R)MATH_END
0x******(**10)10(R)STATUS
0x******(**10)14(R)ADC_SW
0x******(**10)18(R)IRQ_ID
0x******(**10)1C(R)IRQ_NO
0x******(**10)20(R/W)IRQENB
0x******(**10)24(R/W)SYNC
N/A
0x******(**10)30Reserve
0x******(**10)34(R/W)AVE_MODE
0x******(**10)38Reserve
0x******(**10)3C(R)FPGA_VER
N/A
0x******(**11)FCNot used

各レジスターの説明は以下の通りです。

3.EPICS環境

本デバイスサポートは、EPICS R314.12.1のVxWORKS(MV5500)用に開発したものです。 VxWorksのバージョンは6.8.3です。

EPICSそのものに対する入門出家入道については徳の高い専門家に帰依するなり、 各種のweb上の資料をご参照下さい。

4.コードの概要

全体のコードを以下のリンクに示します。
ソースファイル(devVme18k14.c)
また、dbdファイルの中身は
device(bo,VME_IO,devBo18k14,"V18K14")
device(bi,VME_IO,devBi18k14,"V18K14")
device(waveform,VME_IO,devWf18k14,"V18K14")
device(longout,VME_IO,devLo18k14,"V18K14")
device(longin,VME_IO,devLi18k14,"V18K14")
です。

割り込み機能はサポートしていません。特に説明するほどのコードではn ないと思いますので、詳細説明はサボらせて頂きます。

Makefile

以下の様に、devVme18k14.dbdとdevVme18k14.cを追加します。
fb5500_DBD += devVme18k14.dbd

fb5500_SRCS += devVme18k14.c
初期化ファイルはdev18k14Configで、ベースアドレスが0x08000000で、 6枚使うとすると、

dev18k14Config(6,0x08000000)

の様に指定します。

5.EPICSデータベースサンプル

サンプルファイルは以下を参照してください。 compactSubarrayを使って、各64chのデータを1つずつのレコードに 分解しています。また、複数枚の同期をしたいときは、データベースファイルに またがる部分を作っておいた方が良いです。(FB_LOSS_EXT.db)
record(bo,"$(USER):ALL:K14:ALLSYNC"){
        field(DTYP,"Soft Channel")
        field(FLNK,"$(USER):ALL:FAN1")
}
record(fanout,"$(USER):ALL:FAN1"){
        field(LNK1,"$(USER):AS:K14:SYNC")
        field(LNK2,"$(USER):AT:K14:SYNC")
        field(LNK3,"$(USER):AU:K14:SYNC")
        field(LNK4,"$(USER):AV:K14:SYNC")
        field(LNK5,"$(USER):AW:K14:SYNC")
        field(LNK6,"$(USER):AX:K14:SYNC")
}

6.スタートアップファイルサンプル

6枚の18k14ボードを使用する時のスタートアップファイル(の関係部分)は次のようになります。
dbLoadRecords("db/FB_LOS14.db","USER=FB, PLACE=AS, CHAN=C0")
dbLoadRecords("db/FB_LOS14.db","USER=FB, PLACE=AT, CHAN=C1")
dbLoadRecords("db/FB_LOS14.db","USER=FB, PLACE=AU, CHAN=C2")
dbLoadRecords("db/FB_LOS14.db","USER=FB, PLACE=AV, CHAN=C3")
dbLoadRecords("db/FB_LOS14.db","USER=FB, PLACE=AW, CHAN=C4")
dbLoadRecords("db/FB_LOS14.db","USER=FB, PLACE=AX, CHAN=C5")
dbLoadRecords("db/FB_LOSS_EXT.db","USER=FB")

dev18k14Config(6,0x08000000)
Delphiで1枚のボードのデータを表示するソフトを作りました。詳細については ここをご参照下さい。

7.おわりに

SuperKEKBロスモニター読み出し用64chピークホールド、平均機能付き16ビットADC 18K14のデバイスサポートについて紹介しました。
Makoto Tobiyama
4/Jun/2014

Return to FB Home Page...