ZYNQ搭載 ADCボード「Cosmo-Z」>ソフトウェア情報>内部レジスタ

内部レジスタ

Cosmo-Zには32bit幅の多くの内部レジスタがあります。

これらのレジスタを操作することで、各種の計測モード等を設定します。

Cosmo-Zのコンソールから書くときには、

/cosmoz.elf regwr アドレス データ

とします。

コンソールでレジスタの値を読み出すときには

/cosmoz.elf regrd アドレス

または

/cosmoz.elf dump

とします。

アドレスおよびデータは、数字のみで書けば10進数として解釈されます。0xを付けて書くと16進数として解釈されます。

例 /cosmoz.elf regwr 0x07 0x01

内蔵レジスタ一覧

全体コントロールレジスタ

0x00 ireg0 (R)

古い機能レジスタ。過去に使われていたが、現在は使用されていない。将来の拡張用に予約。

0x01 FPGA_VERSION (R)

FPGAのバージョンが8桁の16進数で返される。例) "15061501"

ADC設定

0x02 SPI読み出し

ADCチップの制御に使われる。ユーザは操作してはならない。

0x03 SPI状態

ADCチップの制御に使われる。ユーザは操作してはならない。

0x04 キャリブレーション状態(ch0~ch15)

ADCのリンクアップが正常が行われたかどうかを示す。

bit0はCH0のLow側、bit1はCH0のHigh側。

bit2はCH1のLow側、bit3はCH1のHigh側。・・

0x05 キャリブレーション状態(ch16~ch31)

前のレジスタと同様にCH16~CH31のリンクアップ状態を示す。

48bitタイムスタンプ

0x06 48bitタイムスタンプ操作

このレジスタを読み出すと、キャプチャされた48bitタイムスタンプが16bitずつ読み出せるようになっている。48bitタイムスタンプは、FPGAが起動してからの経過時間を10ns単位で計っている。このカウンタは48bitなので、約34日でオーバーフローする。

bit0 このビットが0→1に変わったときに、48bitタイムスタンプがキャプチャされる

bit2..1 00:下位16bitが読み出される 01:中位16bitが読み出される 10:上位16bitが読み出される

したがって、読み出すときにはbit0に0を書き込んだあと、1にする。

それから、bit2..1に00を書き込んで、このレジスタを読み出す。bit2..1に01を書き込んで、このレジスタを読み出す。bit2..1に11を書き込んで、このレジスタを読み出す。

タイムスタンプは自動的にカウントアップするので、ユーザは変更できない。

割り込み制御

0x07 割り込みコントロール

bit0(RW) 割り込み許可ビット

bit1(RW) 割り込み発生フラグ

bit31..2 予約済み

キャプチャ(データロギング)が終了するとbit1が自動的にHになる。bit0とbit1のANDがCPUの割り込みラインにつながっている。したがって、割り込みを発生させたい場合は、このレジスタに0x00000001を書くこと。

ADC設定

0x08 ADCコマンド (W)

bit31 ADCの再キャリブレーション(通常動作時は0にする)

bit30 テストモード(通常動作時は0にする)

bit29 0:旧ボード(シリアル番号001~005) 1:新ボード(シリアル番号006以降)

bit26:24 ADCボードの枚数 (1~4を設定。ハードウェア的な意味はない) 

bit23:16 ADC周波数の分周比

bit12 表示形式 0:10進 1:16進(ハードウェア的な意味はない)

bit11 ADC周波数変更開始

bit10:8 ADC周波数設定

 000:80MHz 001:100MHz 010:125MHz

bit1 テストパターン出力(通常動作時は0にする)
 

レジスタ9 読み書きチャネル

bit5:0 次の各レジスタが、どのADCチャネルのものを読み出し、あるいは操作するかを指定する。

ADC生データ、ゲイン補正とオフセット、チャネル遅延、トリガレジスタ、トリガコントロール、ペデスタルレベル、パルスカウント、パルスハイト

レジスタ10 ADC生データ

ADCの変換結果がそのまま読み出される。読み出したいチャネルはレジスタ0x09で選択する。

レジスタ11 ADCチャネル選択

bit7:0 SPIでレジスタを操作したいADCを選択する

  bit0 '1'ならばADC1を操作する
  bit1 '1'ならばADC2を操作する
  bit2 '1'ならばADC3を操作する
  bit3 '1'ならばADC4を操作する
  bit4 '1'ならばADC5を操作する
  bit5 '1'ならばADC6を操作する
  bit6 '1'ならばADC7を操作する
  bit7 '1'ならばADC8を操作する

bit9:8 どのADCチャネルを取得するか

 "00" ADC CH1~CH8を取得する
 "01" ADC CH9~CH16を取得する
 "10" ADC CH17~CH24を取得する
 "11" ADC CH25~CH32を取得する

レジスタ12 ゲイン補正とオフセット

bit31:16  ADC結果に乗じる。8.8bit固定小数点形式。0x1000は16倍を示す。通常は0x0100(ゲイン1倍)を設定する。

bit15:0  ADC結果に加算するオフセット。符号付き16bitの整数。通常は0x0000を設定する。

レジスタ13 チャネル遅延

bit9:0 各ADCのチャネルのデータを0~1023個分遅らせることができる。通常は使わないので0にする。

トリガ設定

レジスタ14  トリガレジスタ

bit19:0 トリガレジスタ rdwrchレジスタ(レジスタ9)で選択する

bit[ADC_BITS-1:0] トリガ値

bit18:16 トリガのタイプ

  • 000 => 常にトリガ状態
  • 001 => トリガ値以上でトリガ状態(upper)
  • 010 => トリガ値以下でトリガ状態(lower)
  • 011 => トリガ値を横切ったらトリガ状態(cross)
  • 100 => ディスクリ (パルス波形処理回路からのトリガを使用)
  • 101 => 規定値を横切って立ち上がったらトリガ状態(rising edge)
  • 110 => 規定値を横切って立ち下がったらトリガ状態(fallilng edge)
  • 111 => 予約 (常にトリガ状態)

レジスタ15  トリガコントロール

bit1:0  00 ADCX0ではトリガを発生させない
           01 ADCX0でレベルトリガを発生
           10 ADCX0が0→1になったらトリガ
           11 ADCX0が1→0になったらトリガ

bit3:2  00 ADCX1ではトリガを発生させない
           01 ADCX1でレベルトリガを発生
           10 ADCX1が0→1になったらトリガ
           11 ADCX1が1→0になったらトリガ

bit5:4  00 ADCX2ではトリガを発生させない
           01 ADCX2でレベルトリガを発生
           10 ADCX2が0→1になったらトリガ
           11 ADCX2が1→0になったらトリガ

bit7:6  00 ADCX3ではトリガを発生させない
           01 ADCX3でレベルトリガを発生
           10 ADCX3が0→1になったらトリガ
           11 ADCX3が1→0になったらトリガ

bit31 1なら、どれか1つのチャネルがHになるとトリガ状態(ORトリガ)
        0なら、すべてのチャネルがHにならないとトリガがかからない(ANDトリガ)

 

キャプチャ(データロガー)

これらのレジスタは、キャプチャ(データロガー)の機能をコントロールするために用いられる。

Cosmo-Zの計測モードには以下のものがある

  • データロガーモード (モード0)
  • パルス計測モード (モード1)
  • パルス計測モード (モード2)
  • マルチチャネルアナライザモード (モード3)
  • 長時間データロガーモード (モード4)
  • 繰り返し計測モード(モード5)

データロガーモードは、ADCのデータをただひたすら格納していくモードである。

長時間データロガーモードは、

波形測定モードは、ADCのデータにヘッダを付けてパケット化したものを格納していくモードである。低レートモードでは、波形データを含む。高レートモードは波形データを含まずヘッダのみ記録する。

マルチチャネルアナライザモードは、一定の時間間隔でMCAのスペクトラムを出力しつづけるモードである。

長時間データロガーモードは、常に計測はしているが、プレトリガの期間が長いのが特徴である。

繰り返し計測モードは、パルスレーザの実験などで用いる。トリガが入ってからのADCデータを何度も繰り返し測定するモードである。

 

レジスタ16  キャプチャ長 capture_length

bit29:0 キャプチャするデータ長を30bitで指定する。
データロガーモードのとき、この個数のデータをキャプチャすると、キャプチャは終了する。
波形測定モードではこのレジスタは使用しない。

レジスタ17  キャプチャ・チャネル capture_channel

各ビットが、キャプチャしたいチャネルに対応する。

つまり、bit0が1の場合、CH0をキャプチャする。このようにして、32個のチャネルの任意のチャネルを計測するように指定できる。

レジスタ18  キャプチャアドレス capture_saddr / capture_waddr

書き込みを行うと、キャプチャされたデータが、メモリに格納される先頭アドレスが設定される。通常は、0x20000480を指定する。 

読み出しを行うと、最後にキャプチャされたデータの格納されているアドレスが読み出される。

レジスタ19  キャプチャ時間 capture_time

パルス波形測定モードのとき、この時間が経過するとキャプチャを終了する。

1LSBが約0.65ms単位である。(正確には65536*10ns)

レジスタ20  キャプチャコントロール/キャプチャステータス

bit0 このビットが0→1に変わると、キャプチャを開始する。キャプチャ中に0にすると、キャプチャは終了する。

bit1 0の場合、トリガが入るまで実際のキャプチャ動作を保留する。1の場合、トリガに関わらず即座にキャプチャを開始する。

bit2 0の場合、データロガーモードとして動作する。1の場合、波形測定モードとして動作する。

レジスタ21  繰り返し回数 W:max_iteration / R:capture_count

書き込むと、最大繰り返し回数を指定する。(未実装)

読み出すと、現在のキャプチャカウント数が読み出される。

レジスタ22 キャプチャ遅延

パルス波形測定モードでは、プリトリガの量と、キャプチャする全体の長さを指定する。
15:0は、トリガ後の長さ。30:16は、トリガ前の長さ。
31で固定長/可変長のモードを切り替える。

レジスタ23 未使用

放射線パルス測定 (V0.7でアドレス移動)

レジスタ32  ペデスタルレベル

レジスタ33 カウント/秒

レジスタ34 パルスハイト

レジスタ35 MCA設定

 bit0 MCAをスタートする
 bit1 MCAをリセットする

内蔵XADC (V0.7でアドレス移動)

レジスタ40 温度

レジスタ41 VCCINT

レジスタ42 VCCAUX

レジスタ43 VCCDDRO

GPSインタフェース (V0.7以降で新設)

レジスタ44 GPS時刻秒(秒単位で32bit)

GPSの時刻を秒単位に直し、ソフトウェアでこのレジスタに書き込む。
GPSのパルスが入るたびに、自動的にカウントアップされる。

時刻の基準は任意であるが、UNIX時刻にしておくのが望ましい。

レジスタ45 GPS時刻10ns(10ns単位で32bit)

内蔵100MHzクロックでカウントアップし、GPSのパルスが入ると0にクリアされる。
すなわち、現在のGPS時刻はREG(44) + (double)REG(45)÷(double)REG(46)で取得できる。

レジスタ46 GPS時刻補正

GPSの1秒パルスから次のパルスまでの内部カウンタの値を保持する。
この値が例えば、100001234であった場合、内部クロックはGPSの値に対して12.3ppm進んでいることになる。

レジスタ47 キャプチャ時GPS時刻(秒)

キャプチャトリガが入った時点でのGPS時刻を返す

レジスタ48 キャプチャ時GPS時刻(10ns)

キャプチャトリガが入った時点でのGPS時刻(10ns)を返す

すなわち、キャプチャ時のGPS時刻はREG(47) + (double)REG(48)÷(double)REG(46)で取得できる。

波形整形回路 (オプション)

レジスタ50 波形整形回路ゲイン1

レジスタ51 波形整形回路ゲイン2

レジスタ52 波形整形回路時定数1

レジスタ53 波形整形回路時定数2

レジスタ54 波形整形回路コントロール


© 2015 TokushuDenshiKairo Inc. All rights reserved