2016.09.24

新ADCボード「Cosmo-K」について

特電では、Kintexを使った、高速ADCデータ計測用ボードとして、新ブランド「Cosmo-K」(コスモ・ケイ)を企画しています。

Cosmo-Kでは、ボード上にADCを乗せるのではなく、ADCとキャプチャボードは分離し、その間を光ファイバでつなぐことにします。

イメージとしてはこんな感じです。

Adcprobe_2

高速ADCから出てくるデータはJESD204Bという規格です。JESD204Bというのは8b/10bを使った近代的なプロトコルです。Cosmo-Kでは、このJESD204B形式の信号を光ファイバでキャプチャボードへ伝送します。

実験の種類によって計測に必要なADCのスペックは様々です。例えば、1Gサンプリング 2ch 16bitが必要という人もいれば、250MHzで16chという人もいるし、10MHzでいいけど64chが欲しいという人もいます。

そのため、ADCプローブボードを実験に合わせて作り変えられるよう、分離することにしました。

1GHz,2ch,16bitならば40Gbpsになるので、QSFPのファイバが丸々1本必要な計算になります。

Cosmok

また、JESD204Bに対応していない汎用のADCを並べておいて、それらのADCから受け取ったデータをJESD204Bに変換して(エンコードして)送るようなボードも考えられます。

Adcprobe2

このことは、ノイズに敏感なADCのフロントエンドの部分と、データ処理を行うメインボードを分離し、ADCの部分をより小型にすることができるという効果もあります。

なお、Cosmo-KのKはKintexのKです。Cosmo-Kのキャプチャボードには、Cosmo-K0とCosmo-K-とCosmo-K+3種類のバリエーションを考えています。

one Cosmo-K0(コスモ・ケイ・ゼロ)

Cosmok0_2

Cosmo-K0は、SFPを2chと、ECL/NIM/オープンドレインの汎用入出力ポートを4ch搭載したボードです。

two Cosmo-K-(コスモ・ケイ・マイナス)

Cosmo-K-は、SFPを2ch搭載したロープロファイル型のボードです。ロープロファイルなので、小型のPCにも搭載できます。

2.54mmのピンヘッダも搭載しているので、拡張が容易です。EXPARTAN-6Tの後継機種としての位置づけです。

Cosmok

three Cosmo-K+(コスモ・ケイ・プラス

Cosmo-K+は、40GbpsのQSFPと、低速のSFPを1ch搭載しています。SFPはMGT(GTX)ではなく、汎用のI/Oポートにつながっているので、クロック・データ・リカバリなどの高度なことはできません。8b/10b変換も自前で行う必要があります。

Cosmok_2

QSFPは、JESD204B規格でADCからのデータを受信するためのポートとして使い、SFPはADCボードへコマンドを送ったりするために使います。

  • Cosmo-K0…SFP 10G×2ch。トリガ等の汎用入出力あり
  • Cosmo-K-…SFP 10G×2ch。
  • Cosmo-K+…QSFP 40G + 低速SFP 1G

もちろん、40Gbpsで受け取ったデータのすべてをパソコンに取り込むことはできないので、波形をFPGAの中でフィルタして、有意なイベントだけを取り込むという使い方になると思います。

開発ソフトウェアについては、Cosmo-Zのライブラリを改良したものが使われますが、APIを用意してユーザが自由にプログラムを作れるようにします。

sun

このCosmo-Kは、今年の展示会ET2016に出展しようと思います。

ご意見やご要望などがあれば、当ブログのコメント欄や、メール、会場で直接、どうぞお寄せください。

| | コメント (0)

2016.09.23

Kintex-7のPCI Expressボードを作ります

特電では、Kintex-7のPCI Expressボードを作ることにしました。

Kintex-7のは昨年の7月ごろ設計していたのですが、その後、モチベーションが続かずに開発を中断してしました。

  • Kintex-7 XC7K160T-2FBG656C
  • DDR3メモリ 1GB
  • SFP+(光ファイバ)2本
  • SATA
  • PCI Express
  • 2.54mmピッチのピンヘッダ
  • USB3.0

という仕様でした。

昨年の最後の段階が↓の図です。

Kintexboard

特電では、お客様からの要望で12~16bit、2ch、1Gサンプル/秒のデータ取得装置を作ろうとしていますが、このクラスになるとADCからのデータがJESD204Bという高速シリアル通信で送られてくるのですが、10Gbpsを4レーンで受けられるボードが必要になります。

このボードをのSFPを4chに増やしてパソコンで受け取れるようにしたほうが良いかなと思い、開発を再開することにしました。

目的がはっきりしてきたので、俄然やる気が出てきました。

MGTとSDRAMの部分の配線ができました。MGTのコンデンサと、配線の引き出しが終わっています。

Mgtsdram_2

SDRAMの配線は、Cosmo-Zの配線をだいたいそのまま持ってきた感じになっています。

Sdram

ボード全体はこんな感じ。

Np1078

| | コメント (0)

2016.09.21

日本物理学会に行ってきました

今日の1日だけ、日帰りで日本物理学会に行ってきました。

宮崎空港を降り立つと、南国の雰囲気。

Miyazakikuukou

電車はほとんど走っていない

Miyazaki_train_2


のでタクシーで会場の宮崎大学に向かいます。

私が興味あるのは、素粒子・核物理・宇宙の、通称「素核宇」という分野ですが、FPGAを計測に使っている話や、自分で計測器を作っている人の発表を何件か聴いてきました。

物理界隈でFPGAというと、Open-ITというがあって、みんなSiTCPを使っているという印象でした。

今の仕事で知り合った人にも何人か合いました。

| | コメント (0)

2016.09.20

Cosmo-Zの新しいソフトウェア開発

現状のCosmo-Zのソフトウェアは、Web経由での操作や、Linuxのコンソールからの操作、WindowsやLabViewの専用アプリからの操作など、いくつかのアプリが用意されています。

CosmozwebappCosmozlinCosmozwin

これらのアプリの構造は、下の図のようになっています。

Cosmoz_hier

基本的にはZYNQ Linux上で動くコンソールのアプリがベースとして動いていて、WindowsアプリはTCP/IP経由でコマンドを送って動いているにすぎません。

また、この構造だと、コマンドの解釈ルーチンと、ハードウェアを操作する部分が一体となっているので、ユーザがプログラム全体を把握して、独自の機能を追加するのが極めて困難になってきています。

Cosmozapp

そこで、アプリからハードウェアを操作している部分、コマンドを解釈している部分、レジスタやメモリ操作の手順を実行している部分を分けて、APIの形で整理することにしました。

新しいアプリの構造は次の図のようになります。

Cosmoz_hier2_2

まず、Cosmo-ZのアプリからFPGA内のレジスタやメモリを操作する部分をHAL層として分離します。

具体的には

  • 物理メモリへのRead/Write
  • FPGA内蔵レジスタへのRead/Write
  • 割り込みのハンドリング

のような低レベルの処理です。

そして、ユーザAPIからはHAL層を隠ぺいし、「サンプリング周波数の変更」「波形キャプチャの実行」などの高レベルな処理をユーザに解放することにします。

こうすることで、Cosmo-ZのプログラムはZynq Linuxの上で動くだけではなく、Windowsのアプリとして、VisualStudioやBorland C++で作ることができるようになります。

例えば、Windows PC上で動作するCosmo-Z APIが、「波形キャプチャ」という関数を呼び出されたら、

  • FPGAのレジスタの○番に○○を書く
  • FPGAのレジスタの○番が○になるまで待つ
  • メモリの○番地から読み出し

という処理を行っているのですが、このレジスタの読み書きはWindows PC上で実行されるわけではなく、TCP/IPを通じてターゲットボードのZYNQ Linuxへ送られ、ZYNQ Linux上のCosmo-Zのアプリがそのレジスタ/メモリ操作を行い、生のデータをWindows PCに送り、Windows PC上でデータを解釈して結果を組み立てるという仕組みです。

| | コメント (0)

MPPCアレイの設計

青函トンネルでの実験により、プラスチックシンチレータとMPPCで宇宙線(おそらくミューオン)を観測することができることがわかったので、今度は2次元にならべたものを作ろうと思います。

MPPCは遮光と温度が大事なので、プラスチックではなくアルミで箱をちゃんと作ります。

今回は、6cm×6cm×1cmのプラスチックシンチレータを、縦横に4個×4個並べて、16個入りのユニットを作ります。

Asm1

1つ1つのシンチレータの部屋はアルミの壁で分離されていて、互いに光が漏れないようになっています。

Asm2

金属加工屋さんに見積もりを依頼したら、だいたい10万円くらいでできそうです。16個のシンチレータとMPPCとアンプ基板を合わせても、100万円はかからないでしょう。

これが完成すれば、宇宙線(おそらくミューオン)がどこを通ったかがわかるはずです。この箱を最低2レイヤー並べれば、宇宙線が飛来した方向がわかるでしょう。

そんなに簡単にはできないとも言われましたが、やってみないとどうして簡単にできないのかもわからないので、チャレンジしてみる価値はあると思っています。

| | コメント (0)

2016.09.19

VivadoでGenericのパラメータを垂直伝搬させる方法

VHDLで書いたコードなら、Genericで指定したパラメータを、

INST_XXX : XXXX generic map (
  PARAM1 := PARAM1
);

とやれば上から下のモジュールへ伝えられるのですが、Vivado IPインテグレータではどうやるのでしょう?

Vivadoでは、VHDLのGenericの部分が自動的にGUI化されて、ユーザがカスタマイズできるようになるのですが、それを垂直伝搬させる方法がわかりません。

例えば、ADCのビット数や、ADCの数などです。

Vivado_param

ブロックデザインを階層化したときに、上のモジュールで指定したのが下のモジュールに自動的に設定されれば便利なのに。


| | コメント (0)

2016.09.16

Vivado版Cosmo-ZでMCA動作

Vivado版の新デザインのCosmo-Zで、MCAを長時間走らせてみた。

2台の「プラスチックシンチレータ&MPPC検出器」をつないでバックグラウンドを8時間測定。

Mcanewcosmoz

MPPCは温度にすごく敏感なので、設置場所に注意しないと(他の機器の排熱や空調で)結果に差がでてしまうが、今回はうまくいった。

2つのスペクトラムはぴったり重なる。

中央の少し盛り上がっている部分が40Kによるもの。それ以上はだいたい宇宙線と思われる。

| | コメント (0)

2016.09.15

Cosmo-ZのVivado化が完成

ようやく、Cosmo-Zの(ほぼ)全機能をVivadoへ移植できました。

Cszv1

ちゃんと波形のキャプチャも、

Cszv3

マルチチャネルアナライザも動きます。

Cszv2








| | コメント (0)

«VivadoでのZYNQの割り込み