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:start [Ichikawa's wiki]

ユーザ用ツール

サイト用ツール


daq:start

====== 差分 ====== この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

次のリビジョン
前のリビジョン
daq:start [2014/09/22 08:23]
ichikawa 作成
daq:start [2014/09/22 13:09] (現在)
ichikawa [VME]
ライン 4: ライン 4:
 Data AcQuisition systemつまりデータ収集システムのこと。 Data AcQuisition systemつまりデータ収集システムのこと。
  
-dititizeされた信号を計算機に読み込ませるためにCAMACとVMEとかを使う。クレート(箱)に親玉モジュール(crate controller)と子分ジュール(ADCモジュールとかTDCモジュールとか)を差して使う。クレートにはバックプレーン(要するに箱の奥が配線でつながれている)があって、それを使って親玉と子分がデータをやり取りする。親玉モジュールは、PCIカードなどを使ってケーブルで計算機につなぎ、データのやり取りを行う。+デジタル化された信号を計算機に読み込ませるためにCAMACとVMEとかを使う。クレート(箱)に親玉モジュール(crate controller)と子分ジュール(ADCモジュールとかTDCモジュールとか)を差して使う。クレートにはバックプレーン(要するに箱の奥が配線でつながれている)があって、それを使って親玉と子分がデータをやり取りする。親玉モジュールは、PCIカードなどを使ってケーブルで計算機につなぎ、データのやり取りを行う。 
 + 
 +VMEの方がCAMACより新しい。CAMACは業界内で作られたが、VMEはもともと産業用に作られた規格。 
 + 
 +計算機(普通 Linux)上でプログラムがクレートコントローラを通してアクセスするには、専用のデバイスドライバを使う。(デバイスドライバとは、計算機が周辺機器を操作するための専用のプログラム。ユーザーは、自分のプログラムからデバイスドライバを通して周辺機器を操作する。)
  
 ===== CAMAC ===== ===== 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 ===== ===== 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の方が速いが、動かしにくい?
  
  
  
daq/start.1411374208.txt.gz · 最終更新: 2014/09/22 08:23 by ichikawa