2019.02.27
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もテストパターンを出して、オシロで念入りにチェックし、オープンやショートがないことを確かめました。
無事に出荷できてよかったです。
さらに、⑤のCosmo-Z Miniが動かなかった原因は、間違ったジャンパーをつないでアナログフロントエンドのOPアンプがシャットダウンしているからで、事なきを得ました。
⑥のCosmo-Zが動かなかった原因は、FPGAのUCFファイルにPULLUP属性をつけるのを忘れていて、入力信号がバタバタしていたからでした。
②のCosmo-K DVIが動かない原因のひとつは、少なくとも4枚の基板はデータバスの同じところがショートしていて、基板屋さんによればフライングチェッカーで検出可能な箇所とのこと。実装での問題があったか、FPGA自体に問題があったか。
③の壊れたCosmo-Zも、基板のパターンの問題ではなくFPGAの内部でのショートだったようで、実装屋さんにFPGAの貼り換えをお願いしたところです。
回路が動かないとき、原因不明で機械が壊れるときには、ぜひ、厄除けをしてみてください。
◆追記
②のCosmo-K DVIの歩留まりが悪いことについて。基板製造業者から下請けの実装業者に出していて、その下請けから孫請けの実装業者に出していて、X線検査をしていなかったとのこと。
うーむ。
2019.02.24
MITOUJTAGでDDR2/3メモリのテスト
MITOUJTAG Proには、C言語を使ってバウンダリスキャンの動作を記述する機能があります。この機能をつかって、DDR2メモリやDDR3メモリを操作してみました。
使ったボードは、特電Artix-7評価ボードと、Spartan-6評価ボード。
まず、MITOUJTAG Proを起動したら、論理合成のときに使ったピン定義ファイル(XDCファイルや、UCFファイル)を記述します。
そして、ピン定義ファイルというファイルを自動生成します。これは、何番目のJTAGデバイスのどのピンに、どんな名前の信号がつながっているかを記述したシンプルなファイルです。
それから、DDR2やDDR3メモリを操作するサンプルが用意されているので、それを見てピン定義ファイルに記述した「信号名」をC++のクラスのメンバ変数に代入していきます。
・・・
プログラムのコア部分はこんな感じです。
プログラムが書き終わったら実行してみます。
このような表示が出て、正常にメモリテストが終わったことが示されます。
このテストでは何をしていたかというのを波形で表示してみると、まず、DDR3メモリのデータバスの1本1本をHにして読み書きし、全データピンの結線を調べています。
次に、同様にデータバスの1本1本をLにして全データピンの決戦を調べます。
次にアドレスバスの1本1本をHにして、アドレスピンが切れていないか、ショートしていないかなどを調べます。
バウンダリスキャンは大変遅いので、1回のテストに秒単位の時間がかかります。
SDRAMはリフレッシュが停止するとデータは消えるとされていて、検査時間はリフレッシュ時間よりもはるかに長いのですが、数秒程度ならば消えないようです。
そのため、MITOUJTAGのバウンダリスキャンを使ってDDR2/3メモリのテストができるのです。
2019.02.23
MITOUJTAG BASIC 3.41とMITOUJTAG Light 3.41をリリース
MITOUJTAG BASIC 3.41とMITOUJTAG Light 3.41をリリースしました。
MITOUJTAG BASIC 3.4から3.41への更新点は、
- Digilentのユーティリティがインストールされていない状態でも、起動時にエラーが出ないようにした
- ALTERA MAX10のBSDLデータベースを更新
- インストーラから、Pocket JTAG Cableのデバイスドライバをインストールできるようにした
です。
MITOUJTAG Lightは3.2から3.41への更新となります。更新点は、
- XILINX UltraScale+のバウンダリスキャンに対応
- UltraScale+への書き込みにも対応
- Digilent製のオンボードUSB-JTAGに対応
です。
Digilent製のUSB-JTAGを認識できるので、例えば、PYNQにつなげば、
このように全ピンの状態をスキャンして表示することができます。
PYNQは7シリーズなので、内蔵の温度センサや電圧センサの値を表示することもできます。
XILINXに強いJTAGツールという感じになってきています。
MITOUJTAG BASCI 3.41とLight 3.41は、下記の「お客様サイト」からダウンロードすることができます。
https://www.tokudenkairo.co.jp/login2/download.php
お買い上げいただいた際のシリアル番号を登録すれば、サポート期間内であればダウンロードURLが表示されるようになっています。
快適なFPGAを送るためにも、ぜひともMITOUJTAGをご利用ください。
2019.02.19
特電Artix-7ボードの製造
特電Artix-7ボードのための部品がDigikeyから届きました。
届いた部品を社内の部品管理データベースに登録します。
DigikeyのInvoiceのPDFからデータベースに取り込んでくれるPHPのプログラムを開発したので、この作業はとても楽です。
地道な作業です。
そしたら、これを部品番号(リファレンス)順に並べたクリアファイルに入れます。
こうしておくと、部品を部品表の順番に並べることができるので、チェックがしやすくなります。
部品が全部揃ったのを確認したら、通い箱に入れて実装屋さんに送ります。
さらに省力化するために、在庫部品の数と必要数量からDigikeyに自動注文するPHPを作りたいですね。ラベルシールも手で貼るのではなく、バーコードか何かを見て自動的にその場で印刷できるようになったらいいのに。
出来上がりは2月26日ごろ。
今回のロットは、製造数は多くないので、またすぐに在庫切れになってしまうかもしれません。
ご注文はお早めに。
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の矩形波になります。
次はDACの振幅を制限して、H=2,L=2でトグルさせた場合。(出力周波数としては31.25MHz)
次はH=1,L=1でトグルさせた場合。(出力周波数としては62.5MHz)
LFSRの信号を出してみると、そんなに悪くないという印象です。
やはり、非反転増幅回路のゲインを減らしたのが大きく効いているようで、容量を減らしたことも少し効果がありそうです。
高速ディジタル信号はDACから満足に出せましたが、歪の少ないアナログ信号についても今まで同様に出すことができました。
下の図は、±0.5V振幅の正弦波を出して、それをCosmo-Z Mini自身で受けてFFTしてスペクトラムを表示したものです。
2次高調波、3次高調波の歪率が-80dB程度であることがわかります。
最終的なスペックは、
- 高精度アナログ信号は±0.5Vpp (DACを歪の少ない小電流モードにする)
- 高速信号は±0.5Vpp (DACを歪の少ない小電流モードにし、振幅を制限することで帯域確保)
- 低速なディジタル信号は±1.0Vpp (DACを歪の大きい大電流モードにする)
こうしてようやく、高速、低速、低歪の信号を自由に出すことができるFPGA+DACができました。
箱に納めて、完成です。
2019.02.17
DACの出力OPアンプをTHS4011に交換してみる
久しぶりに夜中に会社に来たので、Cosmo-Z Miniの高速DAC出力回路の出力段OPアンプである「THS4041」を「THS4011」に取り換えてみました。
THS4041は160MHz帯域の高速OPアンプで、容量負荷に対して安定しているとされています。
THS4011は同じ形状の290MHz帯域の高速OPアンプです。
まず、現状の回路です。
2CHのDACの出力回路なのですが、下側の出力段を実験中に壊してしまったままになっていました。
U6と書かれた正方形のICがTHS4520という高速差動アンプ(600MHz帯域)その右にあるU14がTHS4041です。
このU6が何らかの原因で壊れてしまって、取り換える時間もなかったので、いままで実験ができなかったというわけです。
さて、まずはアルミホイルとカプトンテープで養生し、
ヒートガンを使って温めて剥がします。
はい、綺麗に外れました。
そして、ここに新しいTHS4520とTHS4011をはんだ付けします。
さて、できました。
これで2つのアンプの特性を比較してみましょう。
今回、THS4011のアンプはゲイン2の非反転増幅器にしています。非反転増幅器は-入力から抵抗をつないでGNDに落とせばゲイン2にできるので、比較的簡単にゲインを上げられます。
オレンジの線はOPアンプの出力、緑の線はOPアンプの入力をオシロのプローブで見たものです。次の波形はHの期間が10クロック、Lの期間が10クロックの波形です。
出力(オレンジ)の振幅は±1V出ているのですが、入力(緑)に対して出力の線の立ち上がり緩やかなのがわかります。
Hの期間とLの期間を1クロックにしてみます。
出力の振幅がかなり小さくなってしまいました。
125MHzサンプリングで駆動するLFSR信号(疑似乱数)を出してみると、
かなりビット間干渉が激しい模様。
アイパターンを描かせてみると、
入力は綺麗なのに、出力はちょっとスルーレートが足りない感じで、アイが潰れてしまっています。
データシートによれば特性は悪くないので、
やはりスルーレート不足なのかもしれません。
2019.02.16
Cosmo-ZのADCの実力
ZYNQ搭載の高速ADCシステム「Cosmo-Z」で使っているADCのチップは、最高サンプリング速度は125MHzですが、真の実力はもっと上のところにあります。
あくまでもサンプリング速度が125MHzというだけであって、入力のスイッチが開いて実際にIC内部のコンデンサにサンプリングしている時間は1.5nsくらいなので、600MHzくらいまではいけるはずです。
下の図は24chに拡張したCosmo-Zです。実験機なのでいろいろと配線が出ていますが・・
Cosmo-Zにはアンチエイリアシングフィルタが入っていますが、アンダーサンプリング用に回路を変更します。
こうして得られた周波数特性は、
約150MHzで3dBダウン、1GHzくらいまでなら20dBダウンくらいで測れることを示唆する結果となりました。
試しに、1.9GHzの正弦波をキャプチャしたところ、ちゃんとそれらしく見えています。
BPFで62.5MHz(サンプリング周波数の半分)の帯域幅に絞ってあれば、0~1GHzくらいまでの任意の周波数の信号を、アンダーサンプリングを使って測定可能といえるでしょう。
2019.02.10
Cosmo-Z MiniのDACを修理
FPGA+高速DACで任意波形を作るため、Cosmo-Z Miniの回路で実験していたところ、OPアンプやDACが次々と壊れるという不可解な現象が起きました。
そこで、今月初めに実装屋さんに基板と交換用部品を送って、DACとOPアンプを張り替えてもらったところ、ちゃんと動くようにはなったのですが、片側のチャネルのOPアンプが再び壊れてしまいました。
帰還抵抗を上げてゲインを稼ごうとするとOPアンプが壊れ、入力抵抗を下げるとDACが壊れる・・?
何かパターンが見えてきたかも!
生き残ったチャネルは無事に動いています。
初段の差動アンプ(THS4520)でゲイン4を稼ぐのではなく、2にとどめておけば、DACの謎の歪も発生しないようです。そして、出力段のOPアンプ(THS4041)でゲイン2にすれば、±1Vの振幅が出せるはず!
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自身です。
カメラの焦点は30cmくらい必要なので、ピントはぼやけています。
最近のコメント