DAC出力とファンクションジェネレータの設定

ファームウェアのアップデート

DAC機能を使用するには、update-cszmini2 コマンドでFPGAのバージョンを0x24012401以降にアップデートしてください

 

DAC操作コマンド

DACの操作はUSBシリアルのコンソールか、SSHから以下のコマンドで行います。

/cosmoz.elf dac チャネル番号 [コマンド パラメータ] [コマンド パラメータ] ...

チャネル番号はCosmo-Zの場合は1~8、Cosmo-Z Miniの場合は1~2となります。

コマンドには、show、func、on、off、freq、ampl、offset、load、duty があります。

周波数の設定で1.0MHzや100kHzを指定したい場合には、補助単位(M k)が使用可能です。

電圧の設定には0.4とV単位で指定するほか、100mのように補助単位(m)が使用可能です。

電源投入時には出力OFFとなっているため、最初にdac 1 on の操作が必要です。

?

コマンド名 機能 引数
show 現在の状態を表示する なし
func 出力波形を設定する

sin
squ
ramp
saw
pulse
dc
noise
user

on 波形を出力する なし
off 波形の出力を停止する(0V出力) なし
freq 周波数を設定する 周波数(Hz)
ampl 振幅を設定する 振幅(V)
offset オフセット電圧を設定する 電圧(V)
load 負荷抵抗値を設定する 負荷抵抗値(Ω)
duty パルス出力のときのデューティー比を設定する 0~100

?

操作コマンドの例

周波数1.2MHzの正弦波出力。50Ω負荷に対して振幅0.5V。

/cosmoz.elf dac 1 func sin freq 1.2M ampl 0.5 load 50 on

周波数312.5kHz のこぎり波 0V~0.5V

/cosmoz.elf dac 1 func saw freq 312.5k ampl 0.25 offs 0.25 load 50 on

出力波形は正負電圧となるので、オフセットを加えることで0~0.5Vの波形としています。

周期333us、デューティー比20%のパルス

/cosmoz.elf dac 1 func pulse freq 0.3M ampl 0.5 offs 0 duty 20 load 50 on

各波形は正負の電圧で出力されるため、±(amplコマンドで設定された振幅)となります。

例えば、ampl 0.5とすると、-0.5V~+0.5Vまで変化する波形が出力されます。
0V~0.5Vの矩形波を出力したい場合は、ampl 0.25 offset 0.25と設定します

周期10us、振幅-0.5V、デューティー1%のパルス

?/cosmoz.elf dac 1 func pulse freq 100k ampl 0.25 offs -0.28 duty 99 load 50 on

squ(矩形波)はデューティー比50%の矩形波であるのに対し、pulseはデューティー比可変のパルスとなります

デューティー99%のパルス波形とすることで1%の細い負のパルスを作ります。オフセットをマイナスの電圧にすることで、負極性のパルスとしています。

更新レート1MHz、振幅0.1Vの疑似乱数

/cosmoz.elf dac 1 func noise freq 1M ampl 0.2 offs 0.2 load 50 on

乱数波形(noise)は、XOR128による疑似乱数です。周波数で設定されたレートで波形が更新されます。

ユーザ波形出力

/cosmoz.elf dac 1 func user 1 ampl 0.5 offs 0 load 50 on

Cosmo-ZのDACコアにあるadcdata_ip[111:0]ポートは、14bit×8chの単純なバスとなっています。

func user 1 を指定すると、このバスの[13:0]がDACから出力され、
func user 2?を指定すると、このバスの[27:14]がDACから出力され、
・・・
func user 8 を指定すると、このバスの[111:98]がDACから出力されます。

ユーザ回路から送信されたデータはamplで乗算されてoffsが加算されます。ユーザ回路のデータをそのまま出力したい場合は、ampl 0.5 offs 0を指定してください。

出力負荷設定

本DACの出力インピーダンスは50Ωであるため、50Ωのインピーダンスの負荷をドライブすると振幅が半分に減ってしまいます。

そこで、あらかじめ負荷のインピーダンスを指定しておいて、ファンクションジェネレータの出力電圧を補正する機能があります。

例えば、

/cosmoz.elf dac 1 load 50 func sin ampl 0.2?freq 100k on

とすると、50Ωの負荷に対して0.2Vの振幅が加わるように実際には0.4Vで出力します。この電圧が0.5Vを超えないようにしてください。すなわち50Ωの負荷を駆動できる最大電圧振幅は±0.25Vとなります。
非公開のコマンドを使えば±0.5Vの出力(すなわち±1.0V出力)は可能。

負荷インピーダンスを∞(または、非常に高い)を設定したい場合はload 0 または、
load 9999と指定してください。