« 2016年1月 | トップページ | 2016年3月 »

2016.02.29

Cosmo-Zでディジタルロックインアンプを作る(3)

前2回の記事で、ディジタルロックインアンプを作る要となる部分の説明をしました。

では、実際にどのような感じになるのか、試してみましょう。

まずは入力に与えている正弦波の振幅やオフセットを振ってみます。

Lockinamploffset_3


うねうねと気持ち悪いですが、わかりますでしょうか。

  • 茶色が入力信号です。
  • 灰色が、ファンクションジェネレータのトリガ信号(参照入力)
  • 赤が位相
  • オレンジがsin、黄色がcos
  • 緑と青が乗算結果

です。

次は周波数を振ってみます。

Lockinfreq

ちゃんと追従してきていますね。

ロックインアンプたるもの、計測した結果を表示しなければならないので、画面上に表示することにしました。

Lockin13_3

sinを掛けた成分とcosを掛けた成分の二乗の和をとり平方根を取って求めています。確度は、元の参照入力に対してどれだけずれているかを表したもので、atanで求めています。

平方根やatanはさすがにハードウェアでやる気力はないし、ゆっくりで良い処理なので、ZYNQのPSを使ってソフトウェアで処理しています。

このできたてほやほやの「ロックインアンプ内蔵 Cosmo-Z」を日曜日に早速、出荷しました。

Cosmozwithlockin


この装置がお客様の研究の役に立つことを願っています。

| | コメント (0)

2016.02.28

Cosmo-Zでディジタルロックインアンプを作る(2)

ロックインアンプの原理は前回のブログで書いたとおり、簡単なのですが、実際に作ろうとすると2つの難しいところがあります。

① 除算器

② 三角関数の生成

まず、除算器ですが、FPGAで除算回路を作るのはとても難しいので、CoreGenを使います。

周期を計るカウンタを16bitにすると、80MHz÷65536=1220Hzなので、1.2kHz以下の信号にロックさせようとすると溢れてしまいますから、16bitでは足りません。

ここでは24bitにしました。すると、除算器に与えるdividendとdivisorも24bit精度にして、24bit/24bitの除算器を作らなければならないことになります。

すごい回路規模なんだろうな・・と想像しながらCoreGenでポチポチと設定します。

Lockin6

赤い枠で囲ったところが設定した項目です。

なお、dividendというのが分子でdivisorというのが分母です。

Output Channelというのが出力のビット幅を指定する部分で、小数点以下の部分をどういうフォーマットにするかを指定するものです。Reminderにすると「余り」が、Fractionalにすると「商」が出てきます。

今回はdividend < divisorで、結果は0~1の範囲ですから、欲しいのは商です。よってFractionalにします。24にすると、出力48bitのうち、24.24の固定小数点形式で出てきます。

Lockin7

こうして24bitの、0~FFFFFFまで周期Nでなめらかにカウントアップするカウンタが作られました。なお、割り算回路は結果が出るまでに20クロックくらいかかります。

次に、sinとcosを求める回路ですが、入力が24bitカウンタなので、テーブルで持つには大きすぎます。そこで、CORDIC法で求めます。CORDIC法についてはGoogleに聞いてください。

XILINXユーザはCoreGenの中からCORDICを選べばよいので、とても簡単にsin、cosを作ることができます。

Lockin8

CoreGenのMathFunctionから選ぶだけです。

設定は↑の図のように、関数をSin Cosにして、入力幅を24bitに、出力幅を16bitにするだけです。また、Phase FormatはScaled Radiansにします。

このコアは、Scaled Radiansにすると、入力に1と設定するとπとして解釈されます。

入力は固定小数点数ですが、フォーマットは下の図のように符号と整数部で3bit使います。
Lockin9

注意すべき点は、値の範囲は-π~πにすることです。0~2πを入れようとしたら飽和してしまってうまく結果が出ませんでした。

CORDICコアの出力結果のフォーマットは、こうなっています。

Lockin10

符号と整数部で2bitあることに注意してください。

上16bitと下16bitで取り出したとき、最大値が0x4000までしかいきません。

除算とか三角関数とかいかにも複雑な回路なので、どのくらいのレイテンシがかかるかを見ておいたほうが良いでしょう。

ISim(シミュレータ)を使って調べてみました。

Lockin11

なんと、24bitの除算で50クロック、24bit→16bitのCORDICで20クロック。合わせて70クロックもかかっています。

しかし、これらの回路は内部で完全にパイプライン化されているので、連続でデータを与え続けても大丈夫なようです。

こうして、80MHzで1クロックごとに更新されるsinとcosのデータを作ることができました。

これを波形で見てみましょう。

Lockin12

・灰色が、ファンクションジェネレータのトリガ信号(参照入力)

・赤が位相

・オレンジがsin、黄色がcos

です。

| | コメント (0)

2016.02.27

Cosmo-Zでディジタル・ロックイン・アンプを作る(1)

ZYNQ搭載のADCボード「Cosmo-Z」のFPGAは自由にカスタマイズできるので、お客様からの要望があったロックインアンプを作ってみました。

ロックインアンプというのは、ノイズに埋もれた微弱な信号を計測するためのものです。入力信号があらかじめ何らかの周波数に同期している場合に、極めて強力なツールとなります。

原理は、入力信号とsin波、cos波の「参照信号」を掛け算して、それを長時間積分する、あるいはLPFを通すというものです。

Lockin1_2


ノイズ成分はランダムに生じているわけなので、∫n(t)×sin(t)dt = 0に近づきます。2倍の周波数成分や3倍の周波数成分も、∫a×sin(2t)×sin(t)dt = 0となります。

そして、内部で生成したsin波・cos波と一致した周波数の成分のみが残るというわけです。つまり、フーリエ変換をどこか特定の周波数でのみやっているようなものです。

レーザとかを使った実験ではとても良く使います。下の図のような構成の場合、検出器から検出される信号は何らかの変調がかかっているので、検出された信号をロックインアンプにいれれば、参照入力の成分の大きさが見えるというわけです。

Lockin2

これをFPGAでやるには、どうしたらよいでしょう。

まず、入力信号と、参照入力を用意します。参照入力からトリガ信号を作って、そのトリガ信号の周期を測ります。

参照信号の周期はクロックN個分・・というふうに測ります。

Lockin3

この部分の目的は、周期Nに合わせて0~2πまでカウントアップするカウンタを作ることです。しかし、Nの値は周期ですから、実験によって異なります。どんな周期であっても最大値までカウントアップさせるのは意外と難しいことです。

そこで、除算器を使います。

Lockin4


このような構成にすれば、トリガの周期に合わせて0~N-1までカウントアップするカウンタが作られます。そして、除算器によって、0~1まで周期Nでカウントアップする出力(位相)が得られます。

そして、位相カウンタの値に2πをかけて、sinとcosを生成します。テーブルを引いたりCORDIC法で作ればよいでしょう。

得られたsinとcosは、元のトリガ(参照入力)に同期しているので、このsin,cosと入力信号を掛け算して積分すればよいというわけです。

Lockin5


以上がディジタル式のロックインアンプのおおまかな仕組みです。

では、実際にFPGAに実装してみましょう。

| | コメント (0)

2016.02.23

RXマイコンボード「究極のRX62Nボード」の最終ロットのご案内

2011年に発売を開始して、当時はそれなりの人気を誇っていた「究極のRX62Nボード」ですが、徐々に受注数も減ってきたので、今回製造のロットをもちまして販売を終了させていただく予定です。

2011年のころはRX62Nが最新のデバイスでしたが、その後、RX63N、RX64。そしてRZと進化していったので、そろそろRX62Nは潮時でしょう。

既に何台か予約をいただいているので、残りの受注可能数量は全部で10台となります。
お早目にご注文いただければ幸いです。

http://www.tokudenkairo.co.jp/rx62n/index.html

特電のRX製品は、若干のRX62Nボードの保守在庫を残して、閉じることにします。

長い間のご愛顧、ありがとうございました。

| | コメント (0)

2016.02.22

Cosmo-Z 12台の実装が上がってきた

今日、実装屋さんからCosmo-Z 12台が上がってきました。

Cosmoz12

内訳は、Cosmo-Z 80が3台、105が6台、125が3台です。

半分ほどは既に行き先が決まっていますが、在庫として持っておく分も若干あります。

いまご注文いただければ、今年度中に納品いたします。

もし、品切れになってしまうと、次の製造は3月末に間に合わないかもしれないので、お早目にお願いします。

| | コメント (0)

2016.02.14

【東工大生歓迎】イベントスタッフ・激レアバイト募集中【短期】

来る3月19日(土)~3月22日(火)の4日間にかけて、東工大大岡山キャンパスにて応用物理学会春季学術講演会が行われます。

特殊電子回路㈱はその付設展示会に出展します。場所はポスターセッションが行われる会場(おそらく体育館)だと思います。

そのため、東工大生のアルバイトを募集します。仕事内容は弊社ブースでの案内スタッフで、特電の製品(Cosmo-Z)をご来場いただいたお客様に説明していただくというものです。

Ap

(写真は昨年秋の応物学会@名古屋のブース)

会場にご来場いただいた方々(主に、学会で発表した研究者の方や学生さん)と楽しくおしゃべりし、お客様の研究内容の話を聞いて理解し、製品をさりげなく紹介していただくという、とても簡単なアルバイトです。

【募集要項】

  • 東工大生であること(学部・院生問わず)
  • 物理か電気のどちらかの話ができること
  • 明るく、誰とでもコミュニケーションが取れる方
  • 3月19日(土)~3月22日(火)の4日間のうち、2日以上来れる方。時間は9:00~18:00ごろ。
  • 給与は応相談
  • 昼食(四川)補助

お申し込みは、 naitou@tokudenkairo.co.jp まで、どしどしお願いします。

具体的には、下の写真のような「放射線信号収集・処理装置」を出展するので、シンチレータとかFPGAでの信号処理の話題が多くなります。

Cosmoz32

Cosmozac

しかし、実際には、放射線関係の方以外にも、半導体レーザや、プラズマなど様々な分野の方がいらっしゃいますので、いろんな分野のお話ができるといいと思います。

たくさんのご応募お待ちしております。

| | コメント (0)

2016.02.13

ZYNQボード「ArduZYNQ」と「SoftPropeller」販売開始

ドイツTrenzElectronic社のZYNQボード「ArduZYNQ」と「SoftPropeller」の販売を開始しました。

Te0722_2Te0723

● SoftPropeller(ソフトプロペラ 写真左)は、DIP 40ピン形状のZYNQボードで、XC7Z010が搭載されています。40ピンの形状にZYNQに詰め込んだ密度はすごいです。

DIP40ピン形状だから、ブレッドボードに搭載して実験することもできます。 非常に小型なので、いろいろなところに組み込めまるでしょう。

価格は10,260円(税抜)で、送料は無料です。

● AruZYNQ(アーデュジンク 写真右)は、Arduino互換のZYNQボードです。同じくXC7Z010が搭載されているほか、64MBのLPDDR2が搭載されています。

CERN Open Hardware License 1.2でライセンスされたオープンハードウェアです。

価格は14,460円(税抜)で、送料は無料です。

どちらの製品も初回はわずかな数量しか入荷していないので、ご注文はお早目に!

| | コメント (0)

2016.02.09

Cosmo-ZのShaperのGUIインタフェース

波形整形回路をGUIで操作できるようにしています。

波形が出ているときに、ツールボタンの「歯車ボタン」を押すと、

Cosmoztestwave_2
このようなダイアログが開いて、

Shaper_dialog_2

波形整形回路の時定数を設定できるようになります。

τ=1.5usにすると、綺麗な台形になりました。

Cosmoztestwave2

m1/m2 = Mとして、

M = 1 / (exp(Tclk/τ) - 1)

の関係があります。

簡単に言うと、m1が比例成分、m2が積分された時間遅れ成分です。m1とm2の値が大きすぎるとオーバーフローします。

m1とm2とτの関係は結構厳しいので、τを細かく設定できるようにするにはm1の値をもっと大きくする必要がありそうです。

| | コメント (0)

2016.02.07

Cosmo-ZにハードウェアMCAを搭載

Cosmo-ZにハードウェアMCAを搭載しました。MCAというのは、マルチチャネルアナライザのことで、パルスの高さのヒストグラムを作るものです。

まず、テスト波形をFPGA内で作り出します。

Cosmoztestwave

exp(-t/τ)で減衰する波形なのですが、少しだけローパスフィルタをかけて鈍らせています。

このパルスの高さを横軸に、頻度を縦軸にしてヒストグラムを作ると、

Cosmozmca

こうなります。



| | コメント (0)

2016.02.05

Cosmo-Zの32ch版を初出荷!

Cosmo-Zの32ch版を出荷しました。

Cosmoz32

ケースに入っていますが、それだけではありません。

まず、全部のコネクタがLEMOでできています。

Cosmoz32lemo

フロントパネルにはチャネル番号が表示されています。

Cosmoz32front

後ろは、PCI Expressのコネクタや、USBポート、イーサネット、DCジャック、SDカードスロットなどがあります。

Cosmoz32rear

| | コメント (0)

2016.02.04

Windows 8.1が8.1 Proにアップグレードできない!?原因と対策

1年くらい前に、メーカー製のWindows8.1プリインストールパソコンを購入したのですが、リモートデスクトップが使いたくて8.1 Proにアップグレードしようととしました。ですが、どうしてもアップグレードできずに悩んでいました。

対象としたパソコンはASUSのCP3130なのですが、おそらくどのメーカーのパソコンでも状況は同じだと思います。

まずはシステムのプロパティから、「Windowsの新しいエディションで機能を増やす」をやってみたのですが、

W81upg1

オンラインでプロダクトキーを購入するか、プロダクトキーは入手済みかを選ぶ画面になります。

W81upg2

以前、自作PCでやったときには、「オンラインでプロダクトキーを購入します」でPro版へのアップグレードができたのですが、今ではなぜか「お住いの地域ではオンラインで購入することはできません。ほとんどの場所では、実店舗でプロダクトキーを購入できます。」

W81upg3

と出て、アップグレードさせてくれません。(Windows 8.1Proじゃなくて10にしろという陰謀か!?)

そこで「プロダクトキーは入手済みです」を選び、

W81upg4

このPC用にヨドバシで購入したWindows8.1のDVDのシリアルキーを入れても、うまくインストールできません。

Windows 8.1のDVDを入れてsetup.exeを起動してアップグレードしても、Pro版にはなりません。というかプロダクトキーの入力画面にさえなりません。

HDDをまっさらに消してクリーンインストールしても、インストールが完了すると、やはりWindows 8.1のままです。

Windows 8.1→10にアップグレードしても、Pro版にはなりません。

マイクロソフトに電話して聞いてみると、「お客様が購入した8.1ProはDSP版だからサポートはできません。販売店(ヨドバシ)に聞いてください。マイクロソフトは有償でサポートになります。だいたい1万数千円になります」とのことでした。

つまり、DSP版が安いのは、マイクロソフトに聞く権利がないわけなのですね。

そこで、自分で調べていたのですが、いろいろわかってきました。

Windows XPや7の頃には、メーカー製パソコンの筐体にシリアル番号シールが貼ってあったが、Windows8以降ではシールがない。その理由は、マザーボード上のファームウェアにシリアル番号が記録されているから。(ユーザはどうしようもない)

WindowsのインストールDVDを入れて、インストールしようとすると、以下の順番でプロダクト番号が参照される。

    ① アンサーファイル
    ② マザーボード上のファームウェアに書かれたプロダクトキー
    ③ インストール中にユーザが入力 XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

それゆえ、メーカー製のWindows8プリインストールPCでは、クリーンインストールしようとしても、プロダクトキーを入れる画面にならず、「Windows 8.1(無印)」用に作られたものは、Proにはならない

ようです。

この現象を回避するには、「アンサーファイル」を作ります。

やり方はマイクロソフトのドキュメントに書かれています。

https://support.microsoft.com/en-us/kb/2796988

https://msdn.microsoft.com/ja-jp/library/hh824952.aspx

やり方は、意外と簡単です。

① Windows 8.1 ProのDVDの中身を、USBメモリに全部コピーする。USBメモリにコピーするのは、インストールメディアの中に2個のファイルを追加しなければならないから。

② インストール用のUSBメモリのルートに、\sourcesというフォルダがあるので、その中にEI.cfgとPID.txtという2つのテキストファイルを作って入れる

(1) EI.cfg

[EditionID]
Professional
[Channel]
Retail
[VL]
0

(2)

[PID]
Value=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

※この25桁のXXXXXには購入したプロダクトキーを書きます

③ USBを挿して、USBからパソコンを起動すると、Windowsのインストーラが起動して、自動的にインストールしてくれます。プロダクトキーの入力を求められることはありません。

④ こうすることで、マザーボードに書かれているプロダクトキーよりも自分で購入した情報が優先されるので、Windows 8.1 Proがインストールできるというわけです。

W81upg5


この情報が、同じ症状で悩む方の役に立てば幸いです。

| | コメント (5)

« 2016年1月 | トップページ | 2016年3月 »