ADCの操作
adcコマンドはADCの操作をします。adcコマンドには様々なサブコマンドが用意されています。サブコマンドを指定しない場合は、adcコマンドは現在のadc値をサンプリングして表示します。
ADC値の表示
root@cszmini:~# /cosmoz.elf adc CH1: val=8455 CH2: val=8726 CH3: val=8659 CH4: val=9581 CH5: val=2048 CH6: val=2048 CH7: val=2048 CH8: val=2049
サブコマンド
val
adc valコマンドは、adcサブコマンドなしで実行した場合と同じです。現在のADCの値をサンプリングして表示します。
root@cszmini:~# /cosmoz.elf adc val CH1: val=8458 CH2: val=8722 CH3: val=8662 CH4: val=9581 CH5: val=2048 CH6: val=2048 CH7: val=2048 CH8: val=2049
reset
adc resetコマンドは、ADCをリセットします。リセットというのはLVDSによるADCの伝送線路の位相調整を行うもので、計測データにノイズが混ざるような場合や、同期が外れた場合に直すために使います。
root@cszmini:~# /cosmoz.elf adc reset ADC reset. reset start
enumerate
adc enumerateコマンドは、接続されているADCを探索し、表示します。
以下はCosmo-Z Miniの場合の例で、1個のADCが発見されています。
root@cszmini:~# /cosmoz.elf adc enumerate ADC enumerate: 1 ADCs are found. 0:AD9253(14bit) 125MHz
regdump
adc regdumpコマンドは、ADCのレジスタ(AD9633チップ内部のコントロール・ステータス・レジスタ)の値をダンプして表示します。ADCが複数ある場合は最初の1個のみを表示します。
root@cszmini:~# /cosmoz.elf adc regdump ADCReg(0x 0) = 18 SPI port configuration ADCReg(0x 1) = 8F Chip ID (global) ADCReg(0x 2) = 63 Chip grade (global) ADCReg(0x 4) = 0F Device Index 2 ADCReg(0x 5) = 3F Device Index 1 ADCReg(0x FF) = 00 Transfer ADCReg(0x 8) = 00 Power modes (global) ADCReg(0x 9) = 01 Clock (global) ADCReg(0x B) = 00 Clock divide(global) ADCReg(0x C) = 00 Enhancement control ADCReg(0x D) = 00 Test mode (local except for PN sequence resets) ADCReg(0x 10) = 00 Offset adjust (local) ADCReg(0x 14) = 00 Output mode ADCReg(0x 15) = 20 Output adjust ADCReg(0x 16) = 03 Output phase ADCReg(0x 18) = 04 VREF ADCReg(0x 19) = 80 USER_PATT1_LSB (global) ADCReg(0x 1A) = 80 USER_PATT1_MSB (global) ADCReg(0x 1B) = 80 USER_PATT2_LSB (global) ADCReg(0x 1C) = 80 USER_PATT2_MSB (global) ADCReg(0x 21) = 30 Serial control (global) ADCReg(0x 22) = 00 Serial channel status (local) ADCReg(0x100) = 00 Resolution/ sample rate override ADCReg(0x101) = 00 User I/O Control 2 ADCReg(0x102) = 00 User I/O Control 3 ADCReg(0x109) = 00 Sync
regwr
adc regwrコマンドはADCレジスタの値を書き換えます。ADC自体に内蔵されたテストパターンの切り替えや、消費電力低減効果の実験などに使用します。
regrd
adc regwrコマンドはADCレジスタの値を読み出します。
test
adc testコマンドは、ADCからのサンプリングデータを使用するか、テスト波形を使用するかを選択します。adc test onで、ADCデータではなくFPGA内で生成したテスト波形が用いられるようになります。adc test offで、再びADCデータが用いられるようになります。
adc testと入力すると、現在の状態を表示します。
root@cszmini:~# /cosmoz.elf adc test ADC Test mode is OFF. root@cszmini:~# /cosmoz.elf adc test on root@cszmini:~# /cosmoz.elf adc test ADC Test mode is ON.
freq
adc freqコマンドはサンプリング周波数を設定したり、現在の設定を読み出します。
adc freq <周波数>を指定すると、ADCのサンプリングレートをMHz単位で設定できます。有効な値は1,2,4,5,8,10,16,20,25,40,50,80,100,125です。ただし、ADCのサンプリングクロックは80MHz,100MHz,125MHzのいずれかなので、それ以外の値はデシメーションによって作られます。
例えば25MHzの設定はクロック100MHzを4分の1にデシメーションして実現しているので、80MHz版のCosmo-Zではオーバークロックとなることにご注意ください。
root@cszmini:~# /cosmoz.elf adc freq 25 ADC freq set to 25MHz. reset start
引数の<周波数>を付けない場合は、現在の周波数を表示します。
root@cszmini:~# /cosmoz.elf adc freq ADC freq is 16MHz.
info
adc infoコマンドは、ADCのサンプリングクロック、デシメーション比、分解能などの詳細な情報を表示します。
root@cszmini:~# /cosmoz.elf adc info basefreq=100 decimation_ratio=4 sampling_freq_mhz=25.000000 adc_num=2 testmode=1 device_max_freq=125 device_resolution=14 current_resolution=10 device_type 0:AD9253(14bit) 125MHz 1:none 2:none 3:none 4:none 5:none 6:none 7:none
maxch
adc maxchコマンドはADCの最大チャネル数を表示します。
root@cszmini:~# /cosmoz.elf adc maxch ADC max CH is 8
detect
adc detectコマンドはADCの検出結果をJSON形式で返します。これはCGIインタフェースのために作られたコマンドなのでユーザが使用する必要はありません。
root@cszmini:~# /cosmoz.elf adc detect {"adcchip":[{"chip":"AD9253(14bit) 125MHz","maxfreq":125},{"chip":"none","maxfreq":125} ,{"chip":"none","maxfreq":125},{"chip":"none","maxfreq":125},{"chip":"none","maxfreq": 125},{"chip":"none","maxfreq":125},{"chip":"none","maxfreq":125},{"chip":"none","max freq":125}]}
clkphase
adc clkphaseコマンドは、ADCクロックをシステムのベースクロックに対して位相調整します。システムのベースクロックは一定のタイミングで刻んでいますが、ADCのクロックは位相調整が可能です。この機能は等価サンプリングなどを行う場合に考慮するものであって、普通の計測では意識する必要はありません。
DACのクロックはADCのクロックと同期しているため、DACの値がひずんでいる場合に、このコマンドで歪が取れて綺麗になることがあります。
root@cszmini:~# /cosmoz.elf adc clkphase 100 Phase adjust done.
DACのクロック位相が合っていない場合は下の図のようにノイズが多くなります
/cosmoz.elf adc clkphase 100 コマンドを何回か実行することで、綺麗な波形になります。