« 2015年8月 | トップページ | 2015年10月 »

2015.09.27

高位合成について思ったこと

最近、高位合成が流行っているようなので、自社でも取り入れてみたいと思い、Vivado HLSなどを少し試していました。

物理学の計算に出てくるような式をお客様サイドでFPGAに落とし込めるように・・と思っていたからです。

でも、いくつかサンプル回路を作ってみてもなかなか思いどおりの回路になりません。

いろいろ実験してわかってきたことは、

  • C言語で書いた回路は、原則として1行(あるいは1つの処理)を1クロックで実行する
  • 入力Aを出力Bに出すだけでも3クロックかかったりする
  • pragma文を書くことでループが展開されたり少しだけマシになったりする

高位合成って使えないなーと思っていたのですが、FPGAマガジンを読んでようやくわかりました。

つまるところ、高位合成というのは、C言語で書いたプログラムを効率のよい回路に落とし込んでくれる魔法のツールじゃないということです。

効率の良い回路(速くてコンパクトな回路)になるかどうかは、人間が最適化しなければならない。いや、最適化というよりは粒度の大きな設計は人間がやらなければならない。このことは20年前から何も変わっていない、というわけです。

FPGAマガジンではJPEGデコードの例が書かれていましたが、データの全体を読んでからじゃないと処理が始められないもの(逐次処理でないもの)はソフトウェアをそのままFPGAにしても速くならないよということでした。

ハードウェア化するということは、各部が並列に動くから早そうだけど、メモリがあまり使えないから全体の設計を見直さなければならない。設計の一番根幹になる部分を自動的にツールが考えてくれるわけじゃないので、全部、人間が作り直して(そして全部テストをやりなおして)という羽目になります。

これが高位合成が今まで流行らなかった一番の原因のようです。

ただ、最近は事情が変わってきて、

  • CPUの拡張命令をFPGA部分で実装する
  • シーケンサのように遅くてもよい部分を作る

という需要が出てきたようです。JPEGのデコードとは違いデータの処理順序や全体設計を大きく変えるようなことはなく、与えられた入力を逐次処理すればいいから、高位合成の使いどころとなるということです。

なるほど、Vivado HLSはシステム全体をC言語で書くのではなく、こういう部分を書くために使えばよいのですね。

Vivado HLSが吐き出した回路は遅いのですが、クロックサイクルを隠ぺいするといって、ユーザは何クロックかかって出てくるかを気にしてはいけないそうなので、遅いことを責められません。

私はRTLで書くのが好きです。HLSに移行しなければならないのか・・と思っていましたが、FPGAマガジンを読んだ結果、RTLがなくなることは永遠にないだろう、と安心することができました。

1クロック単位で最適化されたパイプラインな回路はRTLじゃなきゃ書けないし、システム全体の構成を決めるのは人間がやらなければならないので、しばらくは仕事がなくなることはないでしょう。

| | コメント (6)

2015.09.26

Cosmo-Zが32chで安定して動作するようになった

Cosmo-Zは拡張基板を最大3枚重ねて、最大32chで動作するように設計したのですが、これまで、安定して動作してくれませんでした。

Cosmoz_32ch

Cosmo-Zは、たくさんのADCからのデータをFPGAに集めるため、LVDSのシリアル通信を使っています。32chあれば、64対(128本)のLVDS信号に最大750MHzの速度でデータを乗せて送ります。これをZYNQのISERDESでデコードしているのです。

問題は、ISERDESでデコードしたデータにノイズが乗ったり、ISERDESがそもそも正しいデータをデコードしなくなることでした。

現象1 メイン基板のみ(8ch)のときには125MHzまで動作するのに、16,24,32chでは80MHzどまりとなってしまう。周波数を上げると、データがめちゃくちゃになる。

Cosmoz_ng

現象2 計測データにノイズのようにスパイク状のFFFや000が乗ったり、データが大きく崩れる。

Cosmoz_ng2


この問題に向き合って4か月。当初は拡張ボードの消費電力が大きすぎるのではないかとか考え、いろいろ試したのですが、どうも違う。消費電力の問題ではない。

ZYNQのLVDS入力で実はDIFF_TERMが使えないのかも・・と思ったりもしましたが、そうではない。HPポートでVCCO=1.8VにしてIOSTANDARD="LVDS"にすれば、DIFF_TERMは使える。DIFF_TERMを使っても、基板上に終端抵抗を実装してもこの問題は解決しない。・・

・・・そんなことをやりながら1週間ほど徹底的にデバッグして、ようやく原因がわかりました。

決めてとなったのは、ノイズが乗るときのデータの出方でした。

ノイズが乗るときや、データが壊れるときには、000やFFFといったデータが出現します。

もし、ISERDESとIDELAYの問題でサンプリングタイミングがずれる(あるいは反射などで波形が乱れている)とするならば、データが1bitずれたり隣のビットと混ざることはあるけれども、000やFFFになるということはないはずです。

000やFFFが頻繁に観測されるということは、ADCが出しているデータそのものに問題があるということだと考えました。つまり、FPGAのせいではない。

ADCが誤動作するのだということは、考えられる原因はクロックです。

使っているADCは、AD9633というものですが、データシートにはこのような絵が描かれています。

Ad9633_clk_2

何がいいたいかというと、LVDSのクロックを与えるときには100Ωの抵抗で終端しなければならないということです。この終端抵抗を忘れていたためクロックの波形に反射が生じて誤動作してしまっていたのでしょう。

基板のスルーホール上にチップ抵抗で終端抵抗を実装してみたところ、見事に安定動作するようになりました。

Add_res

拡張ボード上のADCからのデータも綺麗に受信できるようになりました。

Cosmoz_ok



今回得られた教訓は、

  • 使いたいICで、LVDS入力は目的の抵抗で終端されていない可能性があるから、いつでも終端抵抗を入れられるようにしておく。
  • 使いたいICで、LVDS入力にコモン電圧の規定もあるかもしれないから、いつでもカップリングコンデンサを入れられるようにすること

つまり、LVDSの信号やクロックは直結するのではなく、CやRを入れられる余裕を持たせておくということです。

| | コメント (0)

2015.09.22

新幹線の車内で放射線を測ってみた(後編)

それでは、本当にトンネルと関係があるかを検証してみます。

まず、東京から小田原までの区間のカウントの変化とGoogleマップの地図を合わせてみてみましょう。

Tokyo

このあたりは平地なので、トンネルもなく、ミューオンのカウント数は1分間に60カウント前後でほぼ一定しています。大磯と二宮で短いトンネルに入りますが、その影響か、小田原の手前で二回ほど(30分あたり)カウント数が若干下がっています。これは誤差の範囲ともいえなくないです。

次に、小田原~新富士の間ですが、ここは東海道新幹線の中でも最も難所。箱根の山を迂回して湯河原・熱海を回って三島へ抜けるルートです。基本的にずっとトンネルです。

小田原から熱海は海に近いけど、熱海-三島間は箱根の山裾なのでトンネルは深いと予想されます。

結果は・・・

Odawara

小田原を越えるとミューオンが激減します。真鶴・湯河原付近で少し地上に出るのでミューオンを再び検出し、またトンネルに入って激減し、熱海で地上に出るので少し検出します。

そして、熱海~三島間では2分間にわたってカウント数が0~1という、Cosmo-Z至上最低のカウント数となりました。それだけ地面の深いところを走っていたのでしょう。

三島を抜けると新富士まで地上を走るのでカウント数は回復します。

新富士から掛川までの間も興味深い結果となりました。

Sinfuji

新富士~静岡間は、前半がトンネル、後半が平地です。グラフで見ると2~3分間ずつカウントが低い状態と高い状態が見えます。次に、静岡を越えて1分くらい走ると長さ1分程度のトンネルに入ります。これもはっきりと見えています。

2分くらい平地を走った後、また2分程度トンネルに入ります。ですが、この掛川の手前のトンネルの深さは浅いと思われます。

今気がついたのですが、Googleマップの5kmと出ている長さを走るのにちょうど1分くらいかかっていますね。時速300kmで走っているのでしょう。なんだか納得。

掛川を出るとしばらくは平地です。トンネルはありません。ミューオンのカウント数も一定しています。

Kake

豊橋を過ぎてから名古屋までは平地なのですが、蒲郡(がまごおり)市付近で短い時間ではあるけれどもカウント数の減少が見られます。

Nagoya

5km以内で2回トンネルがあるので1分以内で通過してしまうのでしょう。でも、ミューオンカウント数の減少をとらえていました。

Googleマップでみてみると、山の大きさとかなんとなくわかります。

Gamagori

このトンネルを抜けたら名古屋まで平地なので、カウント数は平たんです。

Cosmo-Zを使って東京から名古屋までの宇宙線のカウント数を測ってみたところ、カウント数とトンネルは相関があって、

  • トンネルに入ったかどうかという事実
  • トンネルの長さあるい深さ

まで見えそうだということがわかってきました。今回は新幹線で移動しながら測ったので、トンネルの中にいるのは一瞬ですが、止まって測ればもっといろんなことがわかるでしょう。

当面の目標は山の材質(岩なのか粘土なのか、水脈があるのか等)を非破壊で測る計測装置を創ることです。そして、ゴールはリニア新幹線の建設の地質調査に役立ててもらうことです。

Cosmo-Zとプラスチックシンチレータを使えば、持ち運びができる放射線計測装置が作れることはわかりました。こんどは、もっと深くて長いトンネル・・・たとえば上越新幹線とか青函トンネルとかでも試してみたいですね。

| | コメント (2)

2015.09.21

新幹線の車内で放射線を測ってみた(前編)

先週の日曜日(9月13日)、新幹線のぞみ号に乗って東京から名古屋まで行きました。そのときの社内でガンマ線や宇宙線の量を測定してみたところ、面白い結果が出ました。

やろうとしたことは、宇宙線やガンマ線を、プラスチックシンチレータと光電子増倍管(シンチレーション検出器という)でとらえるということです。使った装置は下の写真のとおりで、円筒状の装置の両側に2つのアルミの筒があって、その中にシンチレーション検出器が入っています。

1441944962_cosmoz0911

真ん中にある電子回路はCosmo-Z(コスモゼット) というもので、FPGAを使って放射線のパルスを信号処理して記録するためのものです。こういう計測をしようとするには従来ではNIM/CAMACのラックマウント型の非常に大きなサイズのデータ処理システムでやらなければなりませんでしたが、Cosmo-Z(コスモゼット)は超小型なので、新幹線の車内に手荷物として持ち込んで膝の間に抱えて計測できてしまいます。低消費電力なので、携帯電話充電用のモバイルバッテリで駆動できます。

Cosmozkakudai

さて、東京から名古屋間の生のデータですが、1分毎のカウント数の変化を見てみると、こうなりました。波形が2個あるのは、シンチレーション検出器が2個あるからです。

Nozomi_raw

紫の線は新幹線の床上付近。緑の線はその50cmくらい上の部分です。(テーブルくらいの高さ) ギザギザしているのですが、これを見てもあまり面白い結果ではありません。

スペクトラムを見てみましょう。

Spec_1

これは、横軸にパルスの高さ、縦軸に頻度をとったグラフです。茶色い線はCH1(床上)、黄色い線はCH4(テーブルの高さ)です。光電子増倍管が違うので、ゲインも違っていますが、スペクトラムの形は同じです。黄色のスペクトラムで40くらい、茶色のスペクトラムで18くらいの位置にあるのがカリウム40のガンマ線です。ミューオンを見たいのでそれより大きなパルスだけを弁別してカウント数の変化を見てみることにしましょう。

Spec_2

すると、最初に示したカウント数の変化はこうなります。

Nozomi_discri

小田原から三島の間、新富士と静岡の間、静岡と掛川の間でカウント数が激減していますね。

これはトンネルの中を走ることと相関関係があります。

トンネルの中を走るいうことは、新幹線の上に山があるわけですから、大量の土にさえぎられて宇宙線(特にミューオン)の数が減った考えるのが妥当です。

(つづく)

| | コメント (0)

2015.09.18

Cosmo-Zの32ch化ができた!

Cosmo-Zがようやく32chで動作するようになりました。

Cosmoz32ch

いままでは拡張ボードを重ねると、2枚目や3枚目のボードがうまく動きませんでした。その原因は、乗っているADCが80MHz版だったためということでした。

拡張ボードの消費電力が大きいという問題もありましたが、OPアンプを低消費電力版に変え、ADC用の電源をスイッチング電源+LDOの2段構成だったものをスイッチング電源だけの1段構成に変えたところ、3W→1.5W程度に下がりました。

これで32ch 12bit 80MHzのADCが12W程度のシステムで動くようになったというわけです。

| | コメント (0)

2015.09.17

Kintex-7のPCI Expressボードの開発を再開します

応物学会も終わったので、そろそろこのボードの開発を再開します。

Np1078

メインはKintex-7で、SFP+が2チャネル、DDR3 SDRAM、PCI Expressという構成です。

せもぽぬめさんに手伝ってもらい、少し進みました。

現在、横幅は15cmくらい。

上のLEMOコネクタが出ている部分は勿体ないので、思案中。

| | コメント (0)

2015.09.14

第76回応用物理学会秋季学術講演会に出展中!

今、名古屋で行われている「応用物理学会」の付設展示会に出展しています。

1日目のブースは・・

Jsap2015_1

こんな感じでした。

筒状のCosmo-Zを応用した検出器は、真ん中にCosmo-Zとハイボルがあって、上と下のアルミの筒の中に光電子増倍管とプラスチックシンチレータが入っています。

この2つのシンチレーション検出器が同時にイベントを発生させたとき(つまり、上下のシンチレータを貫く高エネルギーの粒子が入ったとき)に、LEDのフラッシュライトがまばゆい光を放ちます。

Jsap2015_5

それから、32chに拡張されたCosmo-Zの静展示を行っていました。こちらはアクリルのケースに入れて電源は入れずに展示のみです。

Jsap2015_2

ただ、1日目はお客様が本当に少なくて、さびしい限りでした。4人しかいらっしゃいませんでした。隣のブースはにぎわっていたので、特電ブースの集客が悪かったのでしょう。反省。
A4の紙をつなげた垂れ幕が良くなかったのと、Cosmo-Zの検出器のデモが「製品」だと思われてしまいました。ちょっと失敗。

2日目は、スタッフの(藤堂)さんと、(せもぽぬめ)さんに行ってもらいました。

ブースのようすはこんな感じ。

Jsap2015_3

紙をつなげた垂れ幕をなくして、筒状のCosmo-Zのデモのところに「非売品」と書くようにしました。

Jsap2015_4


結構お客様がいらっしゃったようで、二人の意見を総合してみると20人くらいかなと思います。二人とも遠いところをお疲れ様でした。

1日目、新幹線で東京から名古屋へ行くときに、上の写真の筒状のCosmo-Zデモ機を手荷物で持っていった(めちゃくちゃ怪しい人ですよね)のですが、実はCosmo-Zには電源を入れていて、新幹線の中でずっと放射線量を測り続けていました。

小田原を超えて長いトンネルがあるところで3回くらい少し線量が増えるようでした。おそらくトンネルの中は周囲が土やコンクリで囲まれているから40Kの放射線が多いのかと思うのですが、詳しい結果は後ほど解析して書きたいと思います。

| | コメント (0)

2015.09.08

Cosmo-Zで大江戸線一周のデータを処理してみた

昨日の測定結果では、地面の深さとの相関関係がよくわかりませんでした。

その原因としては、

  • カリウム40やラドン娘核のからのγ線を測っている
  • 電車のモータからのノイズ等を測っている
  • 「地下深さ」が実は海抜を表している
  • 周囲のビルが山の役割をしている

などが考えられます。

そこで、、「深さ」が海抜を表しているとして、国土地理院のWebサイトから各駅の標高を調べて地下鉄駅の深さに加算し、地面の厚さを求めました。

Chizu_hyoukou


それから、得られたパルスの高さの分布からエネルギーの分布が求め、高エネルギーのものだけをカウントするようにします(ディスクリという)。こうすることで、40Kやラドン娘核からのγ線、その他ノイズを排除できます。

Csz_hist

こうして求めたのが次の図です。

Csz_ooedo

地下鉄駅の上の地面の厚さと、カウント数に相関関係が見えてきました。

  • 地面が厚い方が、カウント数が減る
  • 2つの光電子増倍管のカウント数の傾向が似る

地面の厚さとカウント数の相関は、誤差を全く考慮していないのでいい加減なグラフですが、

Csz_atsusa

誤差が大きくはっきりとはしませんが、相関があるように思えます。地上では毎秒60カウントあったのに、地下では20カウント以下に減ってしまいます。

ただ、減り方が急な気もします。

この計測システムでは、2つのシンチレータと光電子増倍管が垂直に配置されています。2つの光電子増倍管からのパルスが同時であれば、それらを貫く方向(つまり真上)から来た高エネルギー(約3MeV以上)の何かを測っているといえます。おそらく、地下では斜めからくる成分は減衰が大きくて、垂直に来るものの割合が増えているためでしょう。

いろいろ新たな疑問も湧いてくるのですが、Cosmo-Zでミューオンが測れていることがわかっただけでもよかったといえるでしょう。

次は飛来方向の分布について調べる方法を考えてみたいと思います。

| | コメント (0)

2015.09.07

大江戸線一周してミューオンを測ってきた

Csz0907

スタッフが、ZYNQ搭載のADCボード「Cosmo-Z」を持って都営大江戸線を一周して、宇宙線+バックグラウンドの量を測ってきてくれました。

                      Cosmo-Zの紹介ページ

最近のCosmo-Zは、持ち運びに便利なように光電子増倍管とともにアクリルの円柱に入れられて、モバイルバッテリで動き、とてもポータブルなのです。

大江戸線で都庁前から都庁前まで一周したときの、1分間あたりのプラスチックシンチレータのカウント数をグラフにしました。横軸に駅名が書いてありますが、おおよその目安です。

Ooedo_mu

ほとんどの駅で、カウント数は地上よりも少ない値になりました。都庁を離れて遠くのほう(墨田区や江東区)のほうが全体的に低い傾向があります。

東京都交通局のWebサイトに駅の深さが載っているので、これを一緒にプロットすると、

Ooedo_mu2

うむぅ。相関があるのかないのか、よくわかりません。

この東京都交通局のWebサイトに載っている深さというのが、海抜なのかそれとも地面からの深さなのかよくわかりません。

講談社「現代ビジネス」さんのWebサイトに、「路線を超えた地下鉄浸水のシミュレーション」という図があって、大江戸線の深さをグラフにしたものがあります。

こちらのグラフと比較してみると、おおよそ一致しているように見えます。

Cosmoz329mm

| | コメント (0)

2015.09.03

TrenzElectronics社のZYNQモジュール「TE0720」の取り扱いを開始しました

特殊電子回路では、TrenzElectronics社のZYNQボード「TE0720」シリーズの取り扱いを開始しました。

詳しくは特設サイトへ http://www.trenz.jp/

トレンツエレクトロニック社は、ドイツの産業用FPGA/CPUボードベンダです。

Trenz_site

4cm×5cmのコンパクトなサイズに、ZYNQやギガビットイーサ、NANDフラッシュ、SPI ROM、1GBのDDR3 SDRAM、RTCなど様々な部品を凝縮しています。

Te072045s_gross_25

特殊電子回路は、このTE0720モジュールの日本での販売を行います。

なお、TE0720モジュールを使用するためには、ベースボードが必要で、このベースボードもセットで、(少しだけセット割引して)販売します。

Trenz_set

小型軽量で高度な信号処理が必要になるような用途、例えば、無人飛行機やロボット、計測機器への組み込みに最適だと思います。

詳しくは特設サイトへ http://www.trenz.jp/ をご覧ください。

| | コメント (0)

2015.09.02

Cosmo-Zにオンラインの波形解析機能を追加

Cosmo-Zにオンラインの波形解析機能を追加しました。

まずは、下記のページを見てください。

http://cosmoz.tokudenkairo.co.jp/files.html

Csz_1

これは、Cosmo-Zで過去に測った様々な計測データです。主に7月末から雨が降ったときにプラスチックシンチレータとフォトマルで測った波形が多くあります。

ファイル名のところをクリックすると・・・

Csz_2

このように波形が見えます。

で、カウントレートやヒストグラムと書いたところをクリックすると・・

Csz_3Csz_4

このように1分間あたりのカウント数や、パルス高さと頻度のグラフが見えるようになっています。

これは、パソコンで動いているのではなく、全部、ZYNQの中のARMで動いているのです。

ZYNQでWebサーバと波形解析プログラムを動かせば、こんなことができてしまうんですね。

いままでは計測したデータをパソコンにFTPして、解析プログラムを走らせて、ExcelとかGnuplotでグラフにしていたのですが、ZYNQの中のARMでできるようにしたので、すっっごーーーーーーーーーーく楽になりました。

取り溜めしたデータを見て喜んでいます。





| | コメント (0)

特電が11周年を迎えました!

ず今日で特殊電子回路は11周年を迎えました。

設立したのは平成16年の9月2日。暑い中、千葉県の公証人役場とか回ったような気がします。

最初の4年くらいは一人でやっていて、次の6年くらいは不器用ながら何人かの人を雇い、直近の1年で本気を出し始めました。だから、まだ設立1周年くらいの気持ちです。

会社組織にする前の「個人事業者ナヒテック」のころから数えると15年くらいになるので、本当に初期のころから応援してくださっている方もいれば、最近知った方もいらっしゃると思います。

もしかすると、ナヒテックの頃の趣味向けの数千円の商品の路線や、趣味人向けの適当なフリーソフトを作っていたinnocentなままでいることを期待していただいていた方もいらっしゃるかもしれません。そう言う方には申し訳ないと思います。

でも、みんなちょっとずつ変わっていきます。

10年前も今も、私はFPGAやJTAGをメインに据えているのは変わらないのですが、その中身で大きく変わってきたことがあります。

最初のころはオリジナルなハードウェアやソフトウェアを作るという会社でした。好きなものを作って売っていました。

今ではお客様、特に大学や研究所の研究者の方々に実験のためにFPGAを使っていただき、研究が成功するようにサポートするためのソリューション、というふうに変わってきたと自覚しています。

特電の製品が関わった実験で、ヒッグス粒子や超対称性粒子が見つかったら嬉しいじゃないですか。

今後ますますその路線でいきたいと思います。

| | コメント (0)

« 2015年8月 | トップページ | 2015年10月 »