Deprecated: Array and string offset access syntax with curly braces is deprecated in /mnt/hep_web/hep_web/member/ichikawa/dokuwiki/inc/init.php on line 563
Warning: Declaration of action_plugin_asciimath::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /mnt/hep_web/hep_web/member/ichikawa/dokuwiki/lib/plugins/asciimath/action.php on line 39
Warning: Declaration of action_plugin_indexmenu::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /mnt/hep_web/hep_web/member/ichikawa/dokuwiki/lib/plugins/indexmenu/action.php on line 18
====== サルでもわかるDAQ入門 ======
DAQサル作なのであやしいです。
===== DAQ =====
Data AcQuisition systemつまりデータ収集システムのこと。
デジタル化された信号を計算機に読み込ませるためにCAMACとVMEとかを使う。クレート(箱)に親玉モジュール(crate controller)と子分ジュール(ADCモジュールとかTDCモジュールとか)を差して使う。クレートにはバックプレーン(要するに箱の奥が配線でつながれている)があって、それを使って親玉と子分がデータをやり取りする。親玉モジュールは、PCIカードなどを使ってケーブルで計算機につなぎ、データのやり取りを行う。
VMEの方がCAMACより新しい。CAMACは業界内で作られたが、VMEはもともと産業用に作られた規格。
計算機(普通 Linux)上でプログラムがクレートコントローラを通してアクセスするには、専用のデバイスドライバを使う。(デバイスドライバとは、計算機が周辺機器を操作するための専用のプログラム。ユーザーは、自分のプログラムからデバイスドライバを通して周辺機器を操作する。)
===== CAMAC =====
どのモジュールにアクセスするのかを区別するのに、スロット番号(クレートでどこに差したか)を使う。
デバイスドライバとしては、camdrv [[http://www.awa.tohoku.ac.jp/~sanshiro/kinoko/camdrv/index.html]]が有名。
これは、Linuxから東陽テクニカ製 CAMAC コントローラ CC-7700 / CC-7000 (PCI/ISA) および豊伸電子製 CAMAC コントローラ CCP (USB/PCI/ISA) を使用するためのもの。
===== VME =====
どのモジュールにアクセスするのかを区別するのに、モジュールに割り当てられたアドレスを使う。各モジュールの中にジャンパーピンがあって、それでアドレスを割り当てる。それ用のドライバをインストールした計算機とつなげば、各モジュールには、内部メモリーにアクセスするのと同じように、アドレスを使ってアクセスできる。
モジュールのコントロールも、モジュール上のレジスターの値を(メモリーに書き込むように)変えることで実現する。
具体的には、mmap()を使用してVMEアドレスを仮想メモリへマッピングしてアクセスする方法と、read(), write()を使用してアクセスする方法がある。
* mmap()をすると、あとは、ポインタと同じように使える。
* read(), write()を使う場合は、lseek()を使って、ファイルポインタを目的のアドレスにして行う。
が、下記のvmedrvのページにあるサンプル文を見た方がわかりやすい。
デバイスドライバとしては、vmedrv[[http://www.awa.tohoku.ac.jp/~sanshiro/kinoko/vmedrv/index.html]]が有名。
これは、Linux 上で SBS Technologies (Bit3) 社製 PCI-VME アダプタ (Model 616/617/618/620) を使用するためのもの。
転送の仕方には、
* PIO: Programmed I/O。いったん、CPUを通る。
* DMA: Direct Memory Access。CPUを通さず、直接、内部メモリに移す
の2種類がある。DMAの方が速いが、動かしにくい?