« 2016年2月 | トップページ | 2016年4月 »

2016.03.31

Cosmo-ZのWindows版アプリ

Cosmo-ZをWindowsから操作するためのネイティブアプリを作っています。

Cszwin

TCP/IPのポート11068を使用して、計測した波形などをホストPCへ転送するという仕組みです。

いままで、Cosmo-Zは、ZYNQ上で動くプログラムと、WebインタフェースとJavaScriptで動いていましたが、さすがに限界を感じてきたのでWindows版のネイティブアプリを作っているというわけです。

通信部分だけをDLL化して、LabVIEWなどとも接続できるようにしたいと考えています。

1000ポイントをサンプリングした単純な波形ビューワ(オシロのような)とした場合、画面の更新は毎秒300回くらいできるので、速度的にも十分です。

Ce2g66muyaimvokCe2g68nuyaalamx_2


125MHzサンプリングのオシロのように使えます。

会社のCosmo-Zに自宅からVPNで接続した場合でも毎秒20回くらいの画面更新ができるのでまあまあかも。

| | コメント (0)

2016.03.28

ハードウェアFFTマシンの納入

今日は、Cosmo-Zで作ったハードウェアFFTマシンを納入しに、母校、東工大へ行ってきました。なにやら学位授与式をやっているみたいで、晴れ着姿やスーツ姿の若い人がたくさんいます。ほほえましいですね。

さて、Cosmo-Z上のZYNQのPLで、65536ポイントのFFTを行う回路が、ようやく動いたのです。徹夜でした。

このFPGAは、ハードウェアでリアルタイムに窓関数を掛けて、

Hwfft1

それをリアルタイムにFFTしてくれます。

Hwfft2

下のほうが荒いように思えますが、それは16bit固定小数点だからです。実数部・虚数部ともに0x0000~0xFFFFまでの16bitの値なので、どうしても-80dB以下の部分は荒くなります。

でも、65536ポイントで2ch分のFFTを7.2ms実行できるので、5MHzのADCから入ってきたデータを切れ目なくFFTできるようになっています。

もし、浮動小数点にするならば、メモリアクセスの時間が2倍になるので、速度が半分になるでしょう。とりあえずこれでも毎秒百数十回できます。

比べてみたら、ZYNQのPSで行うソフトウェアFFTよりも断然高速でした。

やっぱり気になるのは計算の精度の問題。

下の図は、ファンクションジェネレータで作った100kHzの正弦波を65536ポイントのハードウェアFFTしたものです。窓関数はナットール窓。

Hwfft3

下の図は、同じものをZYNQ上のソフトウェアでFFTしたものです。

Hwfft4

同じものを見ているのですが、-100dBまで見えています。だいたい-80dBくらいのところに計算精度によるノイズの壁(床?)があるのがわかります。

下の図は、CH1を指で触って、ノイズをFFTした結果です。

時間軸で見ると、このように

Hwfft7

フルスケールに対してものすごく小さな信号を見ているわけなのですが・・

まずはハードウェアFFTの結果。数本のスペクトラムのピークが見えます。

Hwfft6

次はソフトウェアFFT。

Hwfft5

より小さなピークまで、はっきりと見えています。

小さな信号を見る場合には、断然、浮動小数点のほうがよいですね。

固定小数点は、やはり粗いです。

これらの結果を踏まえて、今後、どうするかを考えていきたいと思います。

| | コメント (0)

2016.03.26

光センサアンプが完成

光センサアンプが完成しました。

Np1084a

下の波形は、赤外線LEDを正弦波で発光させて(オレンジの線)、それを赤外線フォトダイオードで受けてこのアンプから出力したもの(青の線)です。

Np1084a_wave

1μW程度の光でもちゃんと検出してくれるし、半固定抵抗を回せばゲインが×1~×100までスムーズに調整できます。

気になる周波数特性も設計通り、160Hz~80kHz程度を通すようになっています。

Np1084a_freq

| | コメント (0)

2016.03.24

18bit 8ch A/Dの基板が実装上がる

先週末に実装業者に出した18bit 8ch 5MHzの基板の実装が上がってきました。

Np1084pcb

さて、動くでしょうか。


| | コメント (0)

2016.03.22

応用物理学会2016の展示会に出展しました

3月19日から22日かけて、わが母校、東工大で応用物理学会が開催され、その展示会に出展しました。

Jsap2016_1

展示物は、ZYNQ搭載のADCボード「Cosmo-Z」です。

Jsap2016_2

前回の反省を踏まえて、展示物を展示台の上に乗せることにしました。

Jsap2016_3

このような目立つ台の上に置いておけば、どれが商品なのか、一目瞭然となります。

相変わらずミューオン検出デモも行っていたのですが、前回、このデモ機が製品だと思われたことがあったので、そうならないようにするための工夫です。

Jsap2016_4

4日間で、延べ26人くらいの方に見ていただきました。

Jsap2016_5Jsap2016_6

Jsap2016_7

いろいろな方からいただいた意見をまとめると、

  • 4GHzくらいの超高速なのがほしい(1chでよい)
  • 250MHzサンプリングが欲しい
  • LabVIEWに対応してほしい
  • D/A出力がほしい
  • CFDやTFA、汎用のゲートジェネレータを搭載して、ON/OFFで回路を構築できるようにする

という意見を多くいただきました。これらは確実に対応すると思います。

また、現在のソースコードを解析しながら自分でFPGAの回路を作って、実際に実験に使われているというすごい方もいらっしゃいました。

少しずつですが、物理の計測にCosmo-Zが浸透していっている確かな感触を掴めました。

また、放射線だけではなく、いろいろな分野の研究者の方が来ていただきました。研究者の中には、自分の専門分野だけではなく幅広くいろいろな情報を集めている人もいるのだなと。

逆に、自分と教え子の研究室グループという狭い世界に閉じこもって、外から一切情報を得ようとしない人たちがいるのも何となく感じました。

特殊電子回路は、既存の研究に、何か新しい手法を取り入れたい人を応援していきたいと思います。

| | コメント (0)

2016.03.16

第63回応用物理学会春季学術講演会の付設展示会に出展します

特殊電子回路㈱は、3月19日(土)から東京工業大学大岡山キャンパスで行われる「応用物理学会春季学術講演会」の付設展示会に出展します。

Cosmo-Zで作った「フルディジタル化された放射線/X線計測システム」を出展します。

なお、研究成果の発表ではなく、出入り業者としての展示です。

http://www.tokudenkairo.co.jp/jsap2016.html

19日~21日と、4日間の長丁場なので、私、「なひたふ」が席を外している時間もあると思います。

そこで、ご来場いただいた方をお待たせしないよう、「ご来場日時のお知らせフォーム」というものを作りました。

何月何日の何時から来場予定というのを入れていただくと、できるだけその時間に私がいるようにいたします。

多くの皆さまのご来場を心よりお待ちしております。

| | コメント (0)

2016.03.14

18bit8ch 拡張AD変換ボードを出図

1週間ほど根詰めて設計していた基板がようやく出図できました。

出来上がりは19日。ちゃんとできているかハラハラします。

基板の設計がだいたい出来上がってから、実際に出図するまでには、

  • 部品表記のゆれ(0.1uFにするか100nFにするか等)
  • 基板の外周から内層プレーンがはみださないように、内層を縁取りする
  • 基板番号や製造者をシルクで表示する
  • ポリゴンの貼り付けと、VIA打ち
  • REFDESの振り直し
  • シルクの位置調整
  • 面付け(捨て板)の追加
  • 製造指示書の作成

などがあります。概ね4時間くらいかかります。

Np1084_top

Np1084_bot





| | コメント (0)

2016.03.12

18bit AD変換の配線がだいたい引けた

引き続き、18bit 8ch 5MHz A/D変換基板の設計を進めています。

昨日の失敗は、1つのLVDSバッファで2つのチャネルをドライブしようとしたことと、表裏の配線層を使ってしまったことです。

Np1084_1

そこで、LVDSバッファ周辺を見直し、1つのバッファで1つのチャネルをドライブするようにしました。

その結果、LVDSの配線を部品面だけでできるようになり、はんだ面は各種制御信号用に使えるようになりました。

Np1084_3

これなら4層基板で作れそうです。

| | コメント (0)

2016.03.11

18bit AD変換基板の設計の続き

18bit 8ch 5MHzのAD変換基板を作っています。

下の図は3月11日の朝の時点の図。Np1084

LVDSのバッファを配置した。ADC1とADC2へ、クロックと変換開始信号を1個のLVDSバッファ(4ch回路)から供給する。

P板.comで作るので、15:30が締めの時間。

6層でチャッチャッと作って15:30に間に合わせても、じっくり時間をかけて4層にして翌日にスーパークイックで出しても、出来上がり日は同じなので、より時間をかけることにした。

下の図が16:30の時点。

Np1084_2

あまり変わっていないように見えるが、実は、そうではない。

LVDSのバッファを8ch分引き終わったが、しかし、ここで大きな問題が生じた。

基板の表(赤い線)と裏(青い線)で同じような場所に並行して配線すると、それを横切る配線が引けないのだ。

そのため、この配置・配線はボツとなった。

夕方、東大の地震研に行ってCosmo-Zのチューンしたものを納めてきた。

事務所を引っ越したので5分で行けるようになって便利になった。

その後、私が院のときにいた研究室の助教の先輩が、地震研の別のところで助教をしているらしかったので、ずっと気になっていた。訪ねていった。

私のことを覚えていてくれた。今年の3月で任期が切れて民間企業に移られるらしい。さびしい。

| | コメント (0)

2016.03.08

基板の出図

今日は基板を2種類出図しました。

まず、Cosmo-ZのAD拡張基板。今度の応物学会でデモ機に使う基板として必要だったので急ぎで発注することにしました。それから、光センサ基板。

下の図は面付けした状態の図です。以前、面付けで大失敗した(異種基板を面付けしたときに、複数の基板で内層のネットが異なっていて、接続されていない箇所が多数出た)ので今回はあまり多くの基板を面付けしないことにしました。

Np1069a_1

左にある4つの基板がComso-Zの拡張基板。右下のが光センサ基板です。

この基板は、4素子のアバランシェフォトダイオードを搭載するためのものです。目的はレーザ光の測定ですが、実験の種類によってレーザの強度はログスケールで変わってくるので、ゲインを変えられるようにしたほうがよいと考えました。

Np1082a


そこで、VCA810AIDRというTexasInstrumentsの可変ゲインアンプを使うことにしました。VCA810は見た目は8ピンのOPアンプですが、Vc(コントロール端子)に負の電圧を与えることで、ゲインを-40dB~+40dBまで変えられるという異色のICです。

Vca810

つまり、Vcに-2Vを与えれば100倍に増幅される。0Vを与えれば100分の1になる、というわけです。

このアンプを使えばレーザのいろいろな実験に使えるでしょう。

昨日から作っていた18bit AD基板は、ADCとOPアンプまわりの配置配線を直しています。

Np1084_2

だいぶんすっきりしてきました。

Np1084_3

この基板は一緒に面付けはせずに、別の基板として出図することにします。

3月末納期なのに間に合うでしょうか。

| | コメント (0)

2016.03.07

18bit 8chのA/D変換ボード

18bit 8chのA/D変換ボードを作っています。A/D変換ボードとはいっても、Cosmo-Zに搭載するタイプの拡張ボードで、最大5Mサンプリング/毎秒です。

現状では、Cosmo-Zに搭載できる最高ランクのADCは、125MHz 16bitの「AD9653」です。

しかし、このAD変換は下3ビットくらいはいい加減な値が出てきます。下の図はデータシートに記載されているヒストグラムの図ですが、一定の電圧を入れても下の3~4ビットはノイズで揺らいていて、正規分布を作っているのがわかります。

Ad9653hist

        AD9653 (16bit 125Mサンプリング)のノイズ

実機で測ってみるとさらに悪く、データシート(↑の図)の2倍くらいのノイズがあります。

Ad9653hist2

さて、ここでCICフィルタというLPFを通して5MHzにダウンサンプリングすると、

Ad9653hist3

ゆらぎは1LSB程度(≒15μV)に減ります。

時系列でみてもほとんど±1しか変化していません!

Ad9653raw_2

16bitの125MHzでサンプリングしてLPFとデシメーションすれば、5MHzの意外と良いADCとして使えてラッキーと思うかもしれません。私もそうでした。

しかし、これはノイズを減らしているだけなのであくまでもフェイクです。LPFではひずみ率や、INL/DNLは改善しないので、真の16bit性能が出るわけはありません。

高調波はだいたい-80dB以下でノイズに埋もれて観測できないのですが、個体差によって調子の悪いやつがいると、-75dBくらいの大きいのが見えることがあります。

Spectrum

では、最初から18bitで5MHzのADコンバータ「AD7960」はどうでしょう。

Ad7960_hist

            AD7960 (18bit 5Mサンプリング)のノイズ

揺らぎは±2LSBで16bit版に比べて半分ですが、16bit版に比べて分解能は4倍になっているので、ノイズは約8分の1になっています。

また、ひずみ率はAD9653が-90dBなのに対して、AD7960は-117dBです。30dBも良いのです。

つまり、16bitの高速ADCのデータをどう処理しても、最初から18bitには敵わないのです。

そこで、中速でもいいから高精度のがほしいという方のために拡張ボードとして18bitのA/D変換ボードを作ることにしました。

東工大のアルバイト君に任せていたら、だいぶん良い感じの基板を作ってくれていました。彼はこの基板でまだ2作目なのですが、よくここまでできたと思います。

Np1084_1

| | コメント (0)

2016.03.06

ZYNQのTCP/IP速度

先日、産総研に行ってディジタル化された放射線計測装置をみてきました。

Cosmo-Zでもこのようなものを作りたいと思い、まずは、計測データをTCP/IPで操作用PCに転送するところから始めることにしました。

いったい、ZYNQのTCP/IPはどのくらいの速度が出るのでしょうか?

ZYNQは普通にLinuxが動くので、Socketを使ったプログラミングができるので、ZYNQ側をサーバにしてPCから接続し、sendで大きなデータを送ってみました。そして、ZYNQのほうでgettimeofday()関数を使ってus単位の実行時間を計ります。

	struct timeval tv_start,tv_end;
	gettimeofday(&tv_start, NULL);
	for(int i=0;i<N;i++) {
		int stat = write(client,data,1048576);
		if(stat <= 0) break;
	}
	gettimeofday(&tv_end, NULL);

まず、100BASE-Tで接続し、TCP/IPで1048576バイトのデータを送ると、13.4Mbytes/secでした。それを10回繰り返して10.4Mbytesのデータを送ると12Mbytes/sec。256回繰り返して、トータルで256MBytesのデータを送ると11.9Mbytes/secでした。

ZYNQで普通に書いたプログラムのTCP/IPの速度は100BAST-TXでの接続ならば12MB/sec弱ということでした。

一方、1000BASEでつないで256Mbyteのデータを転送したときは、66.6 Mbytes/secでした。

結構速いですね。

| | コメント (0)

« 2016年2月 | トップページ | 2016年4月 »