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

2019.02.27

アルミケース入りCosmo-Zを2台製造

今日は真夜中に会社に来て、アルミのケースに入ったCosmo-Zを2台製造しています。

Cosmozalm2

2台目の製造時にAD変換値がめちゃくちゃになるという不具合が見つかりましたが、ある信号が浮いていたようで、FPGAのUCFファイルにPULLUP属性をつけることで解決しました。

今日中に発送できるでしょうか・・・

| | コメント (0)

2019.02.26

原因不明で回路が壊れる、回路が動かない時に取った選択

今年に入ってから、作った回路がどんどん壊れるという現象に悩まされていました。

① Cosmo-Z MiniのOPアンプの抵抗値を変更して波形を綺麗にする実験をしていたら、DACやOPアンプが次々と故障した。この問題は努力と根性(OPアンプとDACの貼り換え)で解決。(1月)

② Cosmo-K DVIを8台、前と同じレシピで作ったのに、歩留まりが極端に悪い。原因はわからない。(1月下旬)

③ お客様から、FPGAを指で押さえると動くという動作が怪しいCosmo-Zが戻ってきた。実装工場に戻して再加熱してもらったら、FPGAの電源ピンが全部ショートして完全に壊れて戻ってきた。(2月中旬)

④ Artix-7ボードを基板屋さんに発注したら、6枚製造したうちの3枚でフライングチェッカーで異常が見つかったとのこと。結局、良品の3枚だけ納品してもらった。(2月中旬)

⑤ Cosmo-Z Miniを組み立てたら、AD変換値がめちゃくちゃ。(2月下旬)

⑥ Cosmo-Zの電源を入れたら、AD変換値がめちゃくちゃ。(2月下旬)

こんな感じで、片っ端から回路が壊れていくという状況でした。

あまりにも運が悪い状態でArtix-7ボードの動作検査なんてすると絶対に不良品が出るだろうと思い、基板を検査する前に浅草寺に行って厄除けを祈願してきました。

その結果、不良品が出ずにすべて完全に動作しました。64本のGPIOもテストパターンを出して、オシロで念入りにチェックし、オープンやショートがないことを確かめました。

Art71

無事に出荷できてよかったです。

Art72

さらに、⑤のCosmo-Z Miniが動かなかった原因は、間違ったジャンパーをつないでアナログフロントエンドのOPアンプがシャットダウンしているからで、事なきを得ました。

⑥のCosmo-Zが動かなかった原因は、FPGAのUCFファイルにPULLUP属性をつけるのを忘れていて、入力信号がバタバタしていたからでした。

②のCosmo-K DVIが動かない原因のひとつは、少なくとも4枚の基板はデータバスの同じところがショートしていて、基板屋さんによればフライングチェッカーで検出可能な箇所とのこと。実装での問題があったか、FPGA自体に問題があったか。

③の壊れたCosmo-Zも、基板のパターンの問題ではなくFPGAの内部でのショートだったようで、実装屋さんにFPGAの貼り換えをお願いしたところです。

回路が動かないとき、原因不明で機械が壊れるときには、ぜひ、厄除けをしてみてください。

◆追記

②のCosmo-K DVIの歩留まりが悪いことについて。基板製造業者から下請けの実装業者に出していて、その下請けから孫請けの実装業者に出していて、X線検査をしていなかったとのこと。

うーむ。

| | コメント (3)

2019.02.24

MITOUJTAGでDDR2/3メモリのテスト

MITOUJTAG Proには、C言語を使ってバウンダリスキャンの動作を記述する機能があります。この機能をつかって、DDR2メモリやDDR3メモリを操作してみました。

使ったボードは、特電Artix-7評価ボードと、Spartan-6評価ボード

Art7Sp6_3

まず、MITOUJTAG Proを起動したら、論理合成のときに使ったピン定義ファイル(XDCファイルや、UCFファイル)を記述します。

そして、ピン定義ファイルというファイルを自動生成します。これは、何番目のJTAGデバイスのどのピンに、どんな名前の信号がつながっているかを記述したシンプルなファイルです。

Pindef_2

それから、DDR2やDDR3メモリを操作するサンプルが用意されているので、それを見てピン定義ファイルに記述した「信号名」をC++のクラスのメンバ変数に代入していきます。

Jscr1

・・・

プログラムのコア部分はこんな感じです。

Jscr2

 

プログラムが書き終わったら実行してみます。

このような表示が出て、正常にメモリテストが終わったことが示されます。

Ddrtest1_2

このテストでは何をしていたかというのを波形で表示してみると、まず、DDR3メモリのデータバスの1本1本をHにして読み書きし、全データピンの結線を調べています。

次に、同様にデータバスの1本1本をLにして全データピンの決戦を調べます。

Ddrtest2_2

次にアドレスバスの1本1本をHにして、アドレスピンが切れていないか、ショートしていないかなどを調べます。

Ddrtest3_2

バウンダリスキャンは大変遅いので、1回のテストに秒単位の時間がかかります。

SDRAMはリフレッシュが停止するとデータは消えるとされていて、検査時間はリフレッシュ時間よりもはるかに長いのですが、数秒程度ならば消えないようです。

そのため、MITOUJTAGのバウンダリスキャンを使ってDDR2/3メモリのテストができるのです。

| | コメント (0)

2019.02.23

MITOUJTAG BASIC 3.41とMITOUJTAG Light 3.41をリリース

MITOUJTAG BASIC 3.41とMITOUJTAG Light 3.41をリリースしました。

Mjb34

MITOUJTAG BASIC 3.4から3.41への更新点は、

  • Digilentのユーティリティがインストールされていない状態でも、起動時にエラーが出ないようにした
  • ALTERA MAX10のBSDLデータベースを更新
  • インストーラから、Pocket JTAG Cableのデバイスドライバをインストールできるようにした

です。

Mjl34

MITOUJTAG Lightは3.2から3.41への更新となります。更新点は、

  • XILINX UltraScale+のバウンダリスキャンに対応
  • UltraScale+への書き込みにも対応
  • Digilent製のオンボードUSB-JTAGに対応

です。

Digilent製のUSB-JTAGを認識できるので、例えば、PYNQにつなげば、

Pynq_connect

このように全ピンの状態をスキャンして表示することができます。

Pynq_bscan1_2

PYNQは7シリーズなので、内蔵の温度センサや電圧センサの値を表示することもできます。

Pynq_bscan2

XILINXに強いJTAGツールという感じになってきています。

MITOUJTAG BASCI 3.41とLight 3.41は、下記の「お客様サイト」からダウンロードすることができます。

https://www.tokudenkairo.co.jp/login2/download.php

Mjdownload

お買い上げいただいた際のシリアル番号を登録すれば、サポート期間内であればダウンロードURLが表示されるようになっています。

 

快適なFPGAを送るためにも、ぜひともMITOUJTAGをご利用ください。

| | コメント (0)

2019.02.19

特電Artix-7ボードの製造

特電Artix-7ボードのための部品がDigikeyから届きました。

Art7_1

届いた部品を社内の部品管理データベースに登録します。

Buhindb

DigikeyのInvoiceのPDFからデータベースに取り込んでくれるPHPのプログラムを開発したので、この作業はとても楽です。

このデータベースの内容を印刷し、それを見ながらせっせと管理番号シールを貼ります。ここはどうしても人手になってしまいます。

Art7_2

地道な作業です。

 

そしたら、これを部品番号(リファレンス)順に並べたクリアファイルに入れます。

こうしておくと、部品を部品表の順番に並べることができるので、チェックがしやすくなります。

Art7_3

部品が全部揃ったのを確認したら、通い箱に入れて実装屋さんに送ります。

Art7_4

さらに省力化するために、在庫部品の数と必要数量からDigikeyに自動注文するPHPを作りたいですね。ラベルシールも手で貼るのではなく、バーコードか何かを見て自動的にその場で印刷できるようになったらいいのに。

出来上がりは2月26日ごろ。

 

今回のロットは、製造数は多くないので、またすぐに在庫切れになってしまうかもしれません。

ご注文はお早めに。

| | コメント (0)

2019.02.18

Cosmo-Z Mini用の高速DACの完成

今日も深夜に会社に来たので、昨日の続きとして、THS4041(165MHz帯域)とTHS4011(290MHz帯域)の比較をしてみます。

CH1(オレンジ)のOPアンプはTHS4041、CH2(緑)はTHS4011です。緑のほうが高速なOPアンプです。

昨日との違いは、

  • 非反転増幅回路のゲインを1にしたこと (昨日は2だった)
  • 非反転増幅回路の帰還抵抗に並列したコンデンサを1.8pFに減らしたこと

です。

 

まず、FPGAとDACで1V振幅の矩形波を作ります。

サンプリングクロックは125MHzで、Hの期間とLの期間がそれぞれ5クロックの波形を作ります。12.5MHzの矩形波になります。

Scope_237

次はDACの振幅を制限して、H=2,L=2でトグルさせた場合。(出力周波数としては31.25MHz)

Scope_240

次はH=1,L=1でトグルさせた場合。(出力周波数としては62.5MHz)

Scope_239

 

LFSRの信号を出してみると、そんなに悪くないという印象です。

Scope_242

やはり、非反転増幅回路のゲインを減らしたのが大きく効いているようで、容量を減らしたことも少し効果がありそうです。

高速ディジタル信号はDACから満足に出せましたが、歪の少ないアナログ信号についても今まで同様に出すことができました。

下の図は、±0.5V振幅の正弦波を出して、それをCosmo-Z Mini自身で受けてFFTしてスペクトラムを表示したものです。

Cszmini_self_dac3

2次高調波、3次高調波の歪率が-80dB程度であることがわかります。

最終的なスペックは、

  • 高精度アナログ信号は±0.5Vpp (DACを歪の少ない小電流モードにする)
  • 高速信号は±0.5Vpp (DACを歪の少ない小電流モードにし、振幅を制限することで帯域確保)
  • 低速なディジタル信号は±1.0Vpp (DACを歪の大きい大電流モードにする)

こうしてようやく、高速、低速、低歪の信号を自由に出すことができるFPGA+DACができました。

箱に納めて、完成です。

Cszmini_front

Cszmini_rear

| | コメント (0)

2019.02.17

DACの出力OPアンプをTHS4011に交換してみる

久しぶりに夜中に会社に来たので、Cosmo-Z Miniの高速DAC出力回路の出力段OPアンプである「THS4041」を「THS4011」に取り換えてみました。

THS4041は160MHz帯域の高速OPアンプで、容量負荷に対して安定しているとされています。

THS4011は同じ形状の290MHz帯域の高速OPアンプです。

 

まず、現状の回路です。

2CHのDACの出力回路なのですが、下側の出力段を実験中に壊してしまったままになっていました。

Broken_circuit

U6と書かれた正方形のICがTHS4520という高速差動アンプ(600MHz帯域)その右にあるU14がTHS4041です。

このU6が何らかの原因で壊れてしまって、取り換える時間もなかったので、いままで実験ができなかったというわけです。

 

さて、まずはアルミホイルとカプトンテープで養生し、

Heatgun1

ヒートガンを使って温めて剥がします。

Heatgun2

はい、綺麗に外れました。

Heatgun3

そして、ここに新しいTHS4520とTHS4011をはんだ付けします。

Dac_fixed

さて、できました。

これで2つのアンプの特性を比較してみましょう。

今回、THS4011のアンプはゲイン2の非反転増幅器にしています。非反転増幅器は-入力から抵抗をつないでGNDに落とせばゲイン2にできるので、比較的簡単にゲインを上げられます。

オレンジの線はOPアンプの出力、緑の線はOPアンプの入力をオシロのプローブで見たものです。次の波形はHの期間が10クロック、Lの期間が10クロックの波形です。

Scope_221_3

出力(オレンジ)の振幅は±1V出ているのですが、入力(緑)に対して出力の線の立ち上がり緩やかなのがわかります。

Hの期間とLの期間を1クロックにしてみます。

Scope_222

出力の振幅がかなり小さくなってしまいました。

125MHzサンプリングで駆動するLFSR信号(疑似乱数)を出してみると、

Scope_223

かなりビット間干渉が激しい模様。

 

アイパターンを描かせてみると、

Scope_224

入力は綺麗なのに、出力はちょっとスルーレートが足りない感じで、アイが潰れてしまっています。

データシートによれば特性は悪くないので、

Gain

やはりスルーレート不足なのかもしれません。

| | コメント (0)

2019.02.16

Cosmo-ZのADCの実力

ZYNQ搭載の高速ADCシステム「Cosmo-Z」で使っているADCのチップは、最高サンプリング速度は125MHzですが、真の実力はもっと上のところにあります。

あくまでもサンプリング速度が125MHzというだけであって、入力のスイッチが開いて実際にIC内部のコンデンサにサンプリングしている時間は1.5nsくらいなので、600MHzくらいまではいけるはずです。

下の図は24chに拡張したCosmo-Zです。実験機なのでいろいろと配線が出ていますが・・

Csz24_2

Cosmo-Zにはアンチエイリアシングフィルタが入っていますが、アンダーサンプリング用に回路を変更します。

Csz24_hs

こうして得られた周波数特性は、

Csz_freq

約150MHzで3dBダウン、1GHzくらいまでなら20dBダウンくらいで測れることを示唆する結果となりました。

試しに、1.9GHzの正弦波をキャプチャしたところ、ちゃんとそれらしく見えています。

Csz_freq2

BPFで62.5MHz(サンプリング周波数の半分)の帯域幅に絞ってあれば、0~1GHzくらいまでの任意の周波数の信号を、アンダーサンプリングを使って測定可能といえるでしょう。

| | コメント (0)

2019.02.10

Cosmo-Z MiniのDACを修理

FPGA+高速DACで任意波形を作るため、Cosmo-Z Miniの回路で実験していたところ、OPアンプやDACが次々と壊れるという不可解な現象が起きました。

そこで、今月初めに実装屋さんに基板と交換用部品を送って、DACとOPアンプを張り替えてもらったところ、ちゃんと動くようにはなったのですが、片側のチャネルのOPアンプが再び壊れてしまいました。

帰還抵抗を上げてゲインを稼ごうとするとOPアンプが壊れ、入力抵抗を下げるとDACが壊れる・・?

何かパターンが見えてきたかも!

 

生き残ったチャネルは無事に動いています。

Cszmini_self_dac_2

Cszmini_self_dac2_2

初段の差動アンプ(THS4520)でゲイン4を稼ぐのではなく、2にとどめておけば、DACの謎の歪も発生しないようです。そして、出力段のOPアンプ(THS4041)でゲイン2にすれば、±1Vの振幅が出せるはず!

| | コメント (0)

2019.02.06

ZynqberryでRasPiカメラ2.1は使えるか?

ZynqberryでRasPiカメラが使いたいというお客様からRasPiカメラ2.1をお借りしたので、実験してみました。

結果は、全く問題なくOKでした。

まず、boot.binを、CSI機能を有効にしたものに書き換える必要があります。

それから、ZynqberryのUbuntu Linux用に作成したcamctrlとrpicamというユーティリティをダウンロードして、適当なフォルダ(/home/share)に入れておき、

$ ./rpicam /dev/i2c-5 $ ./camctrl.elf stat $ ./camctrl.elf on $ fbgrab -d /dev/fb1 filename.png

で画像が取得できます。

下の画像は、RasPiカメラ+Zynqberryで撮った、RasPiカメラ+Zynqberry自身です。

Filename

カメラの焦点は30cmくらい必要なので、ピントはぼやけています。

| | コメント (0)

2019.02.05

Cosmo-Zの拡張ADCボードを製造

Cosmo-Zに増設する8chの高速ADCボードを製造しました。

Cszextadc

拡張ボードはお客様によって仕様が異なります。

ADCのサンプリング速度は80MHzでいいよという方も、125MHzが必要という方もいらっしゃるので、とりあえずはADCのチップを実装していないボードをたくさん作っておき、注文が入ったら実装屋さんにその基板と、ADCのチップを送って実装してもらうという方法で製造しています。

| | コメント (0)

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