Cosmo-Zの大幅な機能強化
先月、学会でCosmo-Zを展示した反省点を踏まえ、大規模な機能の整理と向上を行っています。
もともとCosmoZは放射線、とりわけミューオンの検出用に開発したのですが、まずは柔軟なデータロガーとして動くように内部構造を整理しました。
次のようにすっきりとしました。
まず、可変クロック発生器(図の左下)というものがあって、こいつがすべてのADCのクロックの源を出しています。このクロック発生器は、単純に水晶から作っているのではなく、MMCMのダイナミックリコンフィギュレーションを用いて発振周波数を80MHz,100MHz,125MHzに動的に変えるのです。そして、Max 255分周の分周期でADCのサンプリングレートを1MHz~125MHzまで変えられるようにしています。
Gbpsに迫る速度でADCから送られてきたLVDSのデータをデコードするのが、ADC LVDSデコード回路の役割です。デコードされたデータは、オフセットと、ゲインをかけて補正を行い、その後、可変遅延回路に入ります。可変遅延回路というのは要はリングバッファです。
可変遅延回路を出力したデータはマルチプレクスされてメインメモリに格納されるというしくみです。
簡単に書いていますが、AXIバスは4本あります。ZYNQの中のAXI HPポートは高々64bit 250MHzまでしかいかないので、たった4Gbpsの帯域しかないのです。32ch同時に100MHzサンプリングしたらAXIバスが詰まってしまいます。
だから4本のAXIバスに分けてADからのデータをDDR3に送り込んでやろうというわけです。入口は狭いけど、きっと中は広いはず。
実際にどんな感じか、実験してみてみましょう。まず、Cosmo-Zの入力CH1とCH2をショートし、CH1とCH2に同じ信号が入るようにします。
Cosmo-Zを起動したら、helpコマンドを打ってみましょう。
ソフトウェアのバージョンも0.5になって、だいぶん洗練されたと思います。
今回のバージョンからは、cosmozのソフトの中でコンソールを持つようになったので、毎回毎回cosmoz.elfを起動する必要がなくなりました。
adc helpと打つと、ADC関係のコマンドのヘルプが出ます。
adc freq 25と打つと、ADCのサンプリングレートを25MHzに変更できます。
adc dispmodeは、表示をHEXにするかDECにするかを指定します。
adcとだけ打つと、現在の値を表示します。
上の図では8ch分しかありませんが、adc boards コマンドでチャネル数を増やすこともできます。
captureコマンドを打つと、データをキャプチャして画面に表示してくれます。ファイルに保存するモードであれば、レートとチャネル数にもよりますが、数十Mサンプリングまでできます。
見てわかるとおり、信号を入れていないチャネルは信号が±1しか変化しません。ノイズの影響はほとんどありません。
![]()
このように、ADCの速度をはじめとした様々なパラメータはLinuxのコンソールから行うのですが、波形はやはり画像で見たいものです。
そこで、Cosmo-ZのIPアドレスをブラウザに入力して、Web画面(のcgi-bin/pngwave.cgi)を開くと、現在のキャプチャされた波形が表示されるようにしました。
綺麗な正弦波ですね。
この波形キャプチャ画像ツールは、縦横の単位やサイズが自由自在に伸び縮みします。例えば、80MHzで10万ポイントをサンプリングして、横8000pixelの画像にすることもできます。
![]()
遅延時間や、ゲイン、オフセットはチャネルごとに個別に設定できるので、たとえば遅延時間を2つのチャネルでずらしてやると、同じ波形なのにこう見せたり、
こう見せたりできます。
これが何の役に立つのかというと、2つのチャネルから入ってきた信号を、どちらか一方だけ遅らせてトリガをかけるとか、信号の到達時間の差を補正するというのに使えるかと思います。
4月22日水曜日中には、この新しいデザインをリリースできるよう頑張りたいと思います。
もし、Cosmo-Zにご興味をお持ちいただける方がいらっしゃいましたが、下のリンクをクリックしてCosmo-Zのページにお越しいただけると幸いです。
![]()
また、もし、特電でアルバイトして一緒にCosmo-Zを開発したいという方がいらっしゃいましたら、こちらへ
| 固定リンク











コメント