製品情報>ZYNQ搭載 ADCボード「Cosmo-Z」>開発日記>2015年6月

2015年6月

Cosmo-Zで長時間のプレトリガ機能を開発

2015.06.30

ZYNQ搭載のADCボード「Cosmo-Z」をデータロガーとして使う場合の、長時間のプレトリガ機能を開発しました。

下の図は、100MHzで5000万ポイントをサンプリングした0.5秒間の波形を示したものです。

オレンジ色の波形が立ち下がるところでトリガをかけていますが、10msのプレトリガ期間があるので、トリガ前も後もちゃんと取れています。

Cosmozlong

このようなことをするために、ZYNQにつながったDDR3メモリを長大なリングバッファにしています。

Ringbuf_2

Cosmo-Zには1GBのDDR3メモリが乗っていますが、そのうち512MBがFPGAのPLが自由に使える領域(いわばDMA領域)です。これを大きなリングバッファとして使っていて、トリガが入った前も後も取れるようにしているわけです。

使い方は簡単。Cosmo-ZのLinuxにログインして、

/cosmoz.elf capture 49000000 trig=long ch=x45 pre=1000000 file=file.dat

と入力します。

49000000が記録データ数で、pre=1000000がプレトリガデータ数を示しています。

 

この機能がどういう用途を想定しているかというと、たとえば自然現象など、いつ起きるかわからないイベントを24時間365日監視して、その前後の情報が必要になる場合です。

雷の波形の観測とかにも使えるかもしれません。

理化学研究所へ

2015.06.24

Cosmo-Zの件で理化学研究所へ行ってきました。

ある繰り返し波形を計測して、FPGAで処理して、フィードバックをかけるのですが、この機能ができればいろいろと応用ができると思いました。

パルスレーザでのポンプ・プローブ分光とかにも応用ができそうな機能なので、ぜひ開発を進めていきたいですね。

持ち運び便利なミューオン検出器 

2015.06.19

プラスチックシンチレータとフォトマル、そしてデータ処理用のCosmo-Zを1つのチューブに入れています。

2つのプラスチックシンチレータが同時に信号を出せば、その方向から飛んできたということがわかるというものです。

そこで、内径90mm、長さ600mmのアクリルのパイプを買ってきて、中にフォトマルの筒を入れ、真ん中にCosmo-Zのデータ処理装置を置きます。

Csztube_1

中心部はこんな感じ。真ん中にZYNQがいます。

Csztube_2

ここまでやって、帰りの時間になったので家に持ち帰って続き。

アクリルチューブ1本にまとめた結果、可搬性がよくなりました。これなら自転車で持って帰れます。途中でパトカーに遭遇しましたが、職務質問されることもなく、自転車のかごに入れて持ち運んでいても問題なしでした。

電気系統の配線を行いました。ACアダプタ1つで動きます。

Csztube_3

では、実験開始。

Csztube_4

 

ちゃんと、ミューオンだか何だかのパルスが見えてきました。

Csztube_5


ただ、直径80mm程度のプラスチックシンチレータを20cm離れた距離に置いているので、同時に光る頻度はそれほど多くないように感じます。(立体角計算しろ!angry>>自分)

Cosmo-Zとフォトマルをチューブに入れる

2015.06.18

Cosmo-Zとフォトマルを長さ60cm、直径9cmのチューブに入れてみました。

Pmttube


USSボイジャーのワープコアみたいで、なかなかいい感じです。

静電気が少し心配ですが、こすらなければよいのでしょう。

来週中には、これを背中に担いで、地下鉄の駅へミューオンを測りにいってきます。

Cosmo-Zのパルス計測機能

平成27年6月16日

最近、地震や火山の噴火が多いですよね。Cosmo-Zはミューオンを使って地面の中を観るための装置なので、早く現場で使っていただけるよう、開発を急いでいます。

本日、ついに大きな進歩がありました。

Cosmo-Zにパルス計測機能を付けたのです。

いままではただのオシロのように、波形を波形のままログするだけでした。これだと毎秒100MBでサンプリングしていると、すぐにメモリもバッファもいっぱいになってしまいますので、イベントが発生したときだけ記録する、あるいは発生したイベントの特徴だけを記録していくようなモードが求められていました。

 

 

そこで、パルス波形の情報をパケット化することにしました。

 

 

次の図をご覧ください。これは、光電子増倍管からの波形を重ね合わせて描いたものです。光電子増倍管からの波形は負のパルスで、数μ秒で減衰する波形なのですが、大きいものや小さいもの、いろいろな軌跡があります。

 

これを重ね合わせて描いてみると濃いところや薄いところが見えてきます。

パルスの大きさは完全なランダムなのではなく、何らかの理由があるからです。

そこで、横軸に「パルスの高さ」を、縦軸に「発生した頻度」を取ってヒストグラムを作ってみました。

 

ちょっと左側の部分を拡大してみます。

 

 

このようにスペクトラムが得られました。

現在はまだスペクトラムの描画はPCでやっていますが、ZYNQのARMでもできるはずです。次はスペクトラムの描画までZYNQにやらせたいと思います。

 

Cosmo-ZのSATA開発

平成27年6月2日

Cosmo-ZのSATAが動くようにと開発しています。

Spartan-6LXTの時に作ったSATAコアがあるので、その物理層部分をGTXに置き換えてみたのですが、どうもうまく動きません。GTXをSATA1の1.5Gbpsで動かそうと、QPLLを使ったりCPLLを使ったりしているのですが、どうにもうまく動かないのです。

具体的に言うと、受信したデータが化け化け。

Spartan-6のGTPのときは、COMRESET→COMWAKEというOOB(信号の有無を使って情報を伝達する)の手順の後で、D10.2が安定して見えていたのですが・・

Sata_1

ZYNQの7Z030(Kintex-7)で、ラインレート1.5Gbpsの設定でやってみると・・

Sata_2_3

何か汚い。

COMWAKEやCOMINITは受信できているけど、その後、rxerrorがずっとバタバタしていたりcdrlockがふらふらしていたり、CDRがちゃんとロックしていない感じがするのです。

XILINXのアンサーを見ていたら、「7 シリーズ FPGA GTX/GTH トランシーバー - SATA Gen 1、Gen 2、Gen 3 の最適パフォーマンスを得るための推奨事項および設定 http://japan.xilinx.com/support/answers/53364.html

というのがありました。

SATAはスペクトラム拡散をしているので、RXOUT_DIVという値をCoreGeneratorが生成した値から、下記の表の値に直せというものです。

  • SATA3(6G)・・・ RXOUT_DIV=1, RXCDR_CFG=72'h03_8000_8BFF_1020_0010
  • SATA2(3G)・・・ RXOUT_DIV=1, RXCDR_CFG=72'h03_8800_8BFF_4020_0008
  • SATA1(1.5G)・・・ RXOUT_DIV=1, RXCDR_CFG=72'h03_8000_8BFF_4010_0008

これを変更する箇所は、ipcore_dir/sataphy_gt.vhdの368行目付近にあるようです。(※sataphyというのはCoreGenで自分で付けた名前)

RXCDR_CFG =>  (x"0380008BFF40100008"),

この変更を行ってみると、心なしか安定したような気もしますが、あまり変わっていないような気もします。

Sata_3_2

リンクはアップしたり、しなかったりです。

次の図は、デバイスがALIGNを送ってきて、ホストがD10.2を送っていた段階から、次のホストがALIGNを送るところです。

Sata_4

このときもまだcdrlockがバタバタしています。xrdyが送られてくることはあるのですが、その後のwtrmがなかったり、不正なプリミティブが来たり、極めて不安定な感じでした。

Sata_5


こんな感じで行き詰まっていたのですが、ためしにPLLとGTXの設定を3.0Gbpsにしてみました。すると、なんということでしょう!

最初のCOMINITとCOMEAKEから綺麗です。

Sata_6


今までの苦労が嘘みたいにリンクアップはするし、XRDYも普通に来るではないですか!

Sata_7

もちろん、最初のD2Hパケットもちゃんと受信でき、ホストから送るソフトリセットも認識されたようです。

3Gbpsよりも1.5Gbpsのほうが難しいってどういうことでしょう。受信イコライザや送信のエンファシスの問題か、それともSATAはリンクアップのときに、デバイスはまず3GbpsでリンクアップしようとしてALIGNを送ってくるからかもしれません。

つまり、1.5Gbpsにコンフィグした状態でCDR(クロック・データ・リカバリ)ユニットが3GbpsのALIGNを受け取るとおかしくなるとか。

まとめると、

  • CDRがSpartan-6とだいぶん違いそうだ
  • RXELECIDLEだけじゃなく、何か別の信号もいろいろ使って、CDRRESETとRXCDRHOLDを動かさなければならないのかもしれない。
  • なぜか1.5Gbpsでは安定しない。3.0Gのほうが安定する
  • イコライザはDFE AUTOでよく、受信終端電圧は600mVでよい
  • クロックコレクションは自分でやるから特にいらない

です。

とりあえず、リセット関係の再点検と、イコライザレベル・電圧振幅などをデータシート上でチェックし、それでもダメなら工業試験場に行って高速オシロを使わせてもらって波形を見てこようと思います。


© 2017 TokushuDenshiKairo Inc. All rights reserved