« 2022年6月 | トップページ | 2022年8月 »

2022.07.31

半導体真贋判定装置の電源スイッチ

開発しようとしている半導体真贋判定装置では、すべての端子をVCCやGNDに接続することができるようにするのですが、全ピンをVCCやGNDに接続するためにMOS FETを使おうと考えています。

1000を超えるBGAの全ピンにVCCやGNDへのスイッチを付けるとなると相当な数になるのですが、まずはどのくらいの規模になるかを見積もってみました。

いま、入手可能なMOSFETでもっとも小さいのはおそらくTexas Instruments社のFemtoFETかと思われます。Digikeyで数種類を入手してみました。

1005サイズのMOSFETなのですが、

Pch1

うわっ!小っさ!

Pch2

こういうタイプのもあります。

Pch3

データシートによればこういうサイズになっているようです。

Fetsize

このFETをピン1つあたり4個付けて3種類のVCCと1つのGNDをON/OFFさせたとして、324ピンのFPGAならば1296個のFETと1296chのGPIOが必要になります。

GPIOといっても、FETを個別のON/OFFするだけなので信号の速度は不要です。だから、74HC595のシリアル・パラレル変換でよいのです。HC595タイプで最もパッケージの小さいものは何かと探してみると、74AHCT595BQというパッケージのものになります。

8bit出力なので1個のHC595で2つのピンをコントロールできることになります。

74AHCT595BQの高さが2.5mmで、配線領域やクリアランスを確保するとなると、下の図の配置くらいが限度となります。

256power2

これを横16列、縦32行並べて256bitのユニバーサル電源マトリックスをつくってみると、

256power

なんと、177mm×130mmくらいになりました。

基板も大きいし、これだけの数の極小部品を歩留まり100%で実装できる気はしません。

そのうえ、このFemtoFETはゲートからソースに向けて保護ダイオードが入っていて、ゲート電圧がソース電圧よりも高いとソースに逃がしてしまいます。だから、VCC1が1.0VであるようなICを検査しようとした場合、HC595の出力からVCC1へ流れていってVCC1の電圧が上昇することになります。

Fetgdi

結局、この回路はボツになりました。

 

| | コメント (0)

2022.07.30

新しいSpartan-7基板が出来上がった

特電Spartan-7基板の改版をすすめています。

新しい基板の実装が出来上がって届きました。

Sp7top_20220801140401

Sp7bot_20220801140401

今回の基板の主な改良点は、

  • USBのコネクタをMini-BからType-Cに変更した
  • CSIのコネクタの接続を直して、XILINXのMIPI CSI RXコアが使えるようにする
  • 入手できないTIのDDR3用電源ICを別の電源ICで置き換えた

です。

Sp7usb

来週、会社に行けるようになったら徐々にデバッグしていきたいと思います。

 

| | コメント (0)

2022.07.29

GOWINのJTAGの機能を調査

以前、TrenzElectronic社のTEC0117を使ってGOWINのJTAGを調査しようとしたときには、オンボードのUSB-JTAGを無効にすることができなくて半ばあきらめていたのですが、自宅療養で暇だしMITOUJTAGもMPSSEに対応したこともあって再チャレンジしてみました。

TEC0117にはGOWINのLittleBee 1NR9 FPGAが乗っています。GW1NR9とGW1N9の違いは内蔵メモリだそうで、内蔵SDRAMが入っているのがNR9です。

下の写真は私の持っているTEC0117のボードです。以前実験した時の名残のピンヘッダがいくつか立っていますが、今回はUSB-JTAGを使うのでこのピンヘッダは使いません。

Gowin_20220730182401

MITOUJTAGをひらいてケーブルを自動接続すると、MPSSEが認識されます。

Mpsse

デバイスの自動認識ボタンを押すとデバイスが見つかり、候補の一覧が表示されます。

TEC0117に乗っているFPGAの型番はGW1NR-9なのですが、NR_9系統を選ぶと正しくバウンダリスキャンされません。

Gowin2

ここでは、1N_9のほうを選びます。

Gowin3_20220730172301

どうやらGOWINが提供しているBSDLファイルでは1NR_9のほうがバウンダリスキャンセル長が長くなっているのですが、GW1N_9を選ぶとずれてしまうようです。中身はGW1NR_9もGW1N_9もどちらも同じなのではないかと思われます。(そういうのは、高解像度のX線CT検査機があるとわかりますね)

Gowin4

そういえばボードのLEDが光っていません。

内蔵フラッシュを消してしまったのかもと思い、Trenz社のTE0117のページから「工場出荷時に書き込まれていると言われているファイル」をダウンロードしてみると、中身はこれだけ。

Factory

このPicoSoC.fsというのが書き込まれているデータなのでしょう。開いてみると・・

0000010100101011
1111111111111111
1010010111000011
0000011000000000000000000000000000010001000000000101100000011011
0001000000000000000000000000000000000000000000000000000000000000
0101000100000000111111111111111111111111111111111111111111111111
00001011000000000000000000000000
1101001000000000111111111111111100000000111111111111000000000000
00010010000000000000000000000000
0111011100000000000010011001000
11110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

まさかの'1'と'0'のテキストファイル!

これを解読するのは大変そう・・

 

FTDI何とか.pngを開くと、FT_Progを使ってPort AをD2XXにしろと書かれています。

Ftdi_channel_a_d2xx

この設定をするとGOWIN EDAのProgrammerから書き込みができるそうです。

しかし、そのとおりに設定しても認識されません。このオンボードのUSB-JTAGはDigilent互換のものであるようですが、思い切って消してみるとGOWIN Programmerから認識されて書き込みもできるようになりました。

Gowin5

このツールでTEC0117のFactory Imageを内蔵ROMに書き込むと書き込めて起動するのですが、内蔵SRAMに書き込んでも起動しません。もしかするとRAMベースのFSファイルとROMベースのFSファイルで何か違うのかもしれませんし、ソフトCPUが入っているデザインはROMからしか起動できないのかもしれません。

 

適当なLチカのファイルを書いて、

Gowin6

ピン定義も適当に作り、GOWIN EDAから書き込んでみると、一発でうまくいきました。

Gowin7

ツールの作りはE社よりもGOWINのほうが優れています。

さて、自分のJTAGツールからFPGAに書き込めるようにしたいのですが、このFSファイルの扱い方がわからないとどうにもなりません。また、データシートどおりにJTAGを操作しているのですがSRAM Eraseさえ動いている感じがしないのです。

そこで、SVFファイルを作るためGW1N4というデバイスに変えて実験してみます。GOWINのEDAはGW1N4だけはSVFファイルを作ることができるからです。

FSファイルは以下のような感じでした。

こうしてGW1N4のSVFを作り、FSファイルを見比べてみます。

まず、FSファイル。先頭にコメントがありますね。Trenz社のFactory Imageのはこのコメントが削除されてしまっているようです。

Gowin8

FSファイルは先頭に凸凹した部分があって、その後ろに巨大な10ブロックが続きます。

このFSファイルをもとにSVFを作り、見比べたものがこちらです。ファイル先頭の凸凹している部分はSVFには含まれておらず、巨大ブロックの部分から書き込めばよいことがわかります。

Gowin11

FSファイルの巨大ブロックの1行1行の右端の部分は2296bit目から密度が変わっていて、アドレスか、チェックサムと思われるビット列が付け加えられていました。

Gowin10

この長方形の10ブロックの大きさは、データシートに載っているサイズと一致していました。

Gowin12

GW1NR9の場合のBitStreamの場合は先頭に4bitの1111が付きますが、おそらく1列の長さを8bitの倍数にするためではないかと思われます。

Gowin13

またSVFファイルを見ると、JTAGでコマンドを与えるたびに

 

RUNTEST 5 TCK;

というのを実行しています。

Gowin14

このRUNTEST 5 TCKを行ったらSRAM Eraseが動くようになったので、Update IRの後でSelect DR Scanに戻すのではなく、必ずRun-TEST Idleを通らなければならないのだと思われます。

このような感じで、GOWINの書き込み方はわかってきたのですが、FSファイルのBitStream部分だけを抜き出してJTAGで送ってみてもコンフィグは成功しませんでした。

今度会社に行ったらオシロスコープで波形を見ながら考えてみようと思います。

 

| | コメント (0)

2022.07.28

HOZANのUSB顕微鏡の商品体系

IC真贋判定装置開発の一環として、光学検査も導入したいと思っています。

光学検査といっても何をやるのか明確には定められないのですが、マーキングの不自然さやICの足の折れ曲がりなどを見ればよいのかなぁと漠然と考えています。

デジカメやスマホよりも良い写真を撮って残したいので、産業用のUSBカメラを購入することになるのですが、私はカメラ初心者なので用語とか全然わかりません。

基板実装用品のHOZANがUSBマイクロスコープのラインナップを出しているので、この中から選ぶことにしました。

https://www.hozan.co.jp/microscope/index.html

まず、カメラには解像度が300万画素と500万画素があり、インタフェースにはUSB出力のものとHDMI出力のものがあります。HDMI出力はモニタでその場で見るためのもので、今回は記録に残すのが目的なので「500万画素のUSB出力」のものを選びます。

つぎにレンズの選択なのですが、このレンズの選択がいろいろあって一番難しい。

Lens

私なりの理解では、

  • L-815・・倍率中 x13~92 スタンダード。偏光フィルタ取付可能
  • L-816・・倍率中 x28~185 スタンダード。偏光フィルタ取付可能
  • L-817・・倍率大 x39~275 スタンダード。偏光フィルタ取付可能
  • L-876・・倍率大 x46~275 高画質で明るい
  • L-873・・倍率最大 x76~635 とにかく拡大を求めるならこれ
  • L-870・・倍率中 x11~37 差動距離が可変。広い視野の撮影ができる
  • L-600-12・・単焦点レンズ 100mmより遠いところを撮影する
  • L-600-35・・単焦点レンズ 250mmより遠いところを撮影する
  • L-630・・単焦点レンズ。安価。
  • L-802・・エクステンションリングで倍率を変えられる単焦点レンズ

となります。

倍率は高ければよいというものではありません。例えば、公式サイトのサンプル画像を見てみると、スタンダードのL-817、倍率最大のL-873と、高画質のL-876を見比べてみると、L-817とL-876は倍率は同じですが、L-876のほうが明るく綺麗にくっきり見えています。

L-873は拡大率はさらに2倍ほどありますが、0.4×0.2mmの範囲を2592×1944pixelで撮影するので、1pixel=0.15umくらいとなります。1pixelが1ミクロン以下の世界を拡大しても、意味がある画像が撮れてるのかと考えると、そこまでの解像度はいらないかもしれませんね。

Lens2

顕微鏡レンズとしてはL-876がダントツに優秀なのですが、偏光フィルタが取り付けられるのはL-815/816/817の3種類なのです。ちょっと残念。(偏光フィルタを使うと、光の反射を抑えたりプラスチックにかかる応力などを見ることができますが、正直なところICの真贋判定検査に意味があるのかどうかはわかりません。ですが、反射を抑えて撮影できるというのは何かメリットがあるかもしれません。)

拡大して撮影する目的としては、ICのマーキングの粗さを見るというのが挙げられます。ICのマーキングはシルク印刷しているのではなくてレーザで焼いているそうなのですが、正規品は最新の機種だと25umくらいのスポットのレーザーで焼いている(らしい)です。

一方、偽物ICはレーザープリンタを改造して作っていると聞いたこともあるのですが、マーキングは汚いそうです。

1pixel=1umの分解能があれば十分ではないかと思うのですが、実際に偽物ICを解析してみないことにはなんともわかりません。

 

倍率とトレードオフになるのは視野です。高倍率のレンズほど視野が狭くなるのですが、顕微鏡レンズのL-816~L873だと、1cm四方以下の範囲しか撮ることができないので、ICのパッケージ全体を撮影することができません。

Shiya

そこで、L-870かL-600のようなレンズが必要になります。

L-870は任意の距離で焦点があってズームもできるというスグレモノですが最大40cmまで離して221×124mmの撮影ができます。L-600はズームができないためレンズ(+カメラ)自体を近づけたり遠ざけたりして目的の分解能と大きさの画像にしますが、単焦点レンズで画質が良いそうです。

これらのレンズを使えばICパッケージ全体はもちろん、実装した基板全体を取ることもできます。出来上がった基板の製品写真を撮るなどの目的にも使えそうですね。

 

USB顕微鏡を作るには、カメラ、照明、レンズ、ベースを買うことになるのですが、たいていのものはそれらを組み合わせた「キット」になっています。キットで買うと個別に買うより数万円お得です。

Lkit798

しかし、キットはあらゆる組み合わせを網羅しているみたいで100種類以上あるうえ、型番が通し番号で検索もできないので、自分が欲しい構成に近いキットを探すのはかなり大変です。

すべてのキットの型番と特徴を表にしようかと思いましたが、すぐに挫折しました。

Kit_20220730160301

最後にまとめると、一つのレンズを理解すると、残りのレンズの良さがわかってきて、結局全部のレンズが欲しくなります。

 

| | コメント (0)

2022.07.27

コロナになった(すでに軽快)

コロナ陽性になってしまいました。

23日(土)の夜にのどが痛いなーと思い、

24日(日)の昼に体温を測ったら37度超え。市販の抗原検査キットでは陰性。

25日(月)に東亜産業の宅配のPCR検査をして、

26日(火)に陽性(東亜産業は陽性陰性とは出ずにハイリスク、ローリスクと表現する)

27日(水)に軽快です。

医師の診察は、予約はおろか電話すらつながらないのですが、ネットで問診してくれる医師がいて、東亜産業でも良いとのこと。状況から陽性認定されました。

(東亜産業のは医師が判断していないため陽性とは判定できないのですが、PCR検査場の予約も取れないし、これだけ蔓延している中で症状もあって擬陽性ということは考えにくく測定しなおすメリットはないということ)

味やにおいを感じなくなったりということはなく、多少の咳はあるけれども、のどの痛みと頭痛がメインの風邪の症状でした。

最初はのどの痛みから始まって、痛いポイントがだんだん下のほうに下がってきたかと思ったら鼻の方に上がってきて、そこで軽快(コロナ用語的に)でした。

苦しかった期間はだいたい2.5日でした。

熱も平熱。寝すぎて頭もスッキリ元気。8月2日まで自宅療養期間なので、何をしよう。

宿泊療養の人が脱走したくなる気持ちよくわかります。

長いですね~

 

| | コメント (0)

2022.07.20

FPGAとCPLDのX線写真

ICの真贋判定サービスを始めるにあたって、X線検査も必要だと思い、X線検査装置のデモを見に東京駅前の某社へ伺いました。

そこで、卓上の3D X線CT装置でKintex-7 FPGAを撮影してもらいました。

Xc7k160t

BGAのボール、中に入っているダイ、コンデンサなどが見えています。

FPGAの真ん中で色が薄くなっている部分がダイと思われますが、うっすらと縦筋も見えています。

次に、CoolRunnerのXC2C256。

Xc2c256_20220730113501

これも、中央のダイから周辺に放射状に線が伸びていっているのが見えています。X印のものが何なのかと思っていたのですが、半導体のQFPパッケージって、金属のフレームの中心にダイを乗せて周辺のフレームにボンディングして、モールドした後で切り落として作っているんですね。

参考「新光電気工業 リードパッケージ(QFP/TSOP)用リードフレーム」

Leadframe
https://www.shinko.co.jp/product/package/leadframe/qfp-tsop.php

なので、X印の太い部分と放射状の部分はリードフレームで、中央で四角の上にある角丸の部分がチップ本体なのだと思います。ボンディングワイヤの一本一本は見えてはいません。

 

0.1mm分解能なのでこのくらいの解像度なのですが、半導体パッケージの中にダイらしいものが入っているかどうかを見るには十分であると言えます。

私がやりたいIC真贋判定方法はX線で判断するのではなく、全端子の電気的特性測定です。

X線は電気的検査を行うべきかどうかを判断するための補助的な予備試験なのです。

 

| | コメント (0)

2022.07.19

新しいデザインのMITOUJTAGサイト

現代風のサイトを作るにはトップページに動画が必要なのですが、すぐに動画を作れといわれても難しいので、11年前にアルバイトのK君かU君が作ってくれたフラッシュのムービーを貼り付けることにしました。

しかし、フラッシュは現在のWebブラウザでは再生できないし、swf→mp4コンバータを使ってもうまく変換できないので、古いFlashPlayerをインターネットアーカイブでダウンロードして再生し、それをWindows Game何とかという画面キャプチャで動画にして、ゆっくりムービーメーカーで速度を調整して動画ファイルを作りました。

Newsite

やっぱり、この動画が構成的に最高の出来なんだよね・・

さすがに11年前で解像度的に荒いのと出ているデバイスが古いので、新たに撮りなおすことになると思いますが、動画の構成は変えずに行こうと思います。

情報がどこにあるかわからないという指摘はそのとおりなので、プルダウンのメニューを用意しました。

Menu Menu2

今日はお問い合わせフォーム、サポートメニュー、MITOUJTAGとはのメニューを作りました。全部で54ページあります。

明日は、メニューのスマホ対応と、サイト検索を作ることにします。

 

| | コメント (0)

2022.07.18

MITOUJTAGのWebサイトがひどいことになっている

ふとMITOUJTAGのWebサイトを見てみると、あまりにもひどい現状であることに気が付きました。

Mjsite1 Mjsite2

本当にひどい。

何がどこにあるのかわからない。

私なら3秒で閉じるレベルです。

 

よくこれで売れていたなと思います。たしかにこのサイトに移行してから売り上げは減ってるし・・

 

うちの子供に見せると大笑いされて

  • ページを開いたときにすぐに開くのはダメ。軽すぎる(つまり、ローディング〇〇%というのが出て動画が出るようじゃないと重みとありがたみがないということらしい)
  • マジカルミライと電通のホームページを見習え
  • 会社のサイトと製品のサイトは分けなきゃだめ
  • パワーポイントのスライドをホームページに貼り付けてマニュアルにするのはダメ
  • 物を売るっていうレベルではない

と、現代風のダメ出しをいっぱいくれました。

たしかに、マジカルミライとか電通のホームページって綺麗だし、スクロールしていくと表示されるものが次々と登場したり動きがあっていいですね。

それに、PCで開くのではなくスマホで見ていて、広大な画面を横方向にスクロールさせながら見ていたので大変そうでした。

いろいろな意味で特電のホームページ、MITOUJTAGのホームページを全面的に直さなければならない時期に来ているのだと思います。

 

| | コメント (0)

2022.07.15

DACの出力波形を綺麗にする

CORDICで作った正弦波をDACから出してみると、頂点のところで少しヒゲが見えます。

Dac1_20220716114101

使用しているDACはAD9717というもので、125MHzの速度×2倍速(DDR)で14bitのデータをパラレルに与えるというものです。

そのため、データとクロックの位相を90°ずらして与えなければならない微妙なものなのですが、オシロでみてみると若干マージンが少ないかなと思えるタイミングでした。

Dac2_20220716114101

そのため、多くのビットが同時に遷移する場合にヒゲが出るのではないかと思い、IチャネルとQチャネルで同じ値を出すようにしてみました。

そうしたら、なんと、

Cordic11

-90dB達成です。周波数によっては-92dBくらいまで行きました。

うーん、こんなんでいいのでしょうか。悩みます。

 

 

| | コメント (0)

2022.07.14

CORDIC法でSINとCOSを生成

Cosmo-ZのDACから正弦波を出すため、CORDIC法のIPコアを使って正弦波づくりに再チャレンジしています。

過去にCORDICコアを使ったことは何回かありました。

過去の自分の記事を参考にします。

XILINXのCORDICコアで、位相と出力を16bitにします。

Cordic

入力の位相はScaled Radiansにします。そうすると符号1bit+整数部2bit+小数点以下13bitになります。Scaled Radiansでは-1~+1が-π~+πに相当するので0xe000~0x1fffまでスキャンすれば[-π,π)の範囲をスキャンできることになります。

出力は16bitにしていますが、SINとCOSで32bit幅で出てきます。なお、AXI Streamは8bit単位なので、位相を18bitにするとバス幅は24bitになります。ほしい精度が14bitなので入力のビット幅をそんなに増やしても意味はないので、16bit入力16bit出力くらいでちょうどよいのではないかと思われます。

こうやって作った正弦波なのですがシミュレーションしてみると、SINとCOSの最大値最小値のところですこしギザギザしているような感じがします。

例えば下の波形は、CORDIC法が出すSINの値に着目したものです。0x3fff(0.999に相当)と0x4000(1.000に相当)をいったりきたりしています。

Cordic3

別のインプリメンテーションでは下1bitは正しく変化していないように見えます。

Cordic4

CORDICは下2bitくらいはブレがあるように見えるので、2~3bit多めに生成して切り捨てるくらいにしたほうがよさそうな感じです。

下の波形はCORDIC法の出力結果に0xffffを乗算して下位ビットを切り捨てて0x8000を足したものです。つまり0x0000~0xffffの正弦波を作っているのですが、最大値の部分(黄色のトリガ)も含め最下位ビット[0]は正しく変化していないように見えます。

Cordic2

というわけで、CORDICで16bitで生成した値を0xffffと乗算して、上14bitだけ切り取ることで、0x0000~0x3fffの綺麗な正弦波が作れました。

Cordic5

Cordic6

下2bitはやはり使えません。2bitくらい多めの精度のCORDICコアを生成して切り捨てるくらいの覚悟で作りましょう。

この正弦波をDACから出してオシロで測ってみました。綺麗なつるつるの正弦波に見えますが・・

Cordic7

オーディオアナライザを使って測ってみるとTHDは-81dBとのこと。

Cordic8

惜しい。

FFTしてみると確かに高調波が-80dBくらいで見えています。

Cordic9

使っているDACのSFDRは10MHzで-84dBcだし、初段の差動アンプは-115dBc、集団のアンプも-89dBcクラスなので、もうすこしいけるはず!

Cordic10

 

| | コメント (0)

2022.07.13

DAC8基板が動いたけど・・

なんということでしょう!!

昨日作った美しい基板が、一日でこんな姿になってしまいました。

Np1120bcoli

早速電源を入れてみたら、安定化電源がブーンって言って大電流が流れるんです。

どうもMSD1583というコイルがショートしているっぽいなと思って、この大きなコイルを外してみると、別にショートしていない。

原因はこのコイルのピン配置でした。

 

DC-DCの回路図はこんな感じ。

Msd1583_20220714000601

このMSD1583というコイルのピン配置はこんな感じ。

Msd1583_2

Coilcraftさん、酷いなー。1と3が同じ側で、2と4が同じ側なのか。なんでこんな変態な構造にするのだ。このコイルのピン配置が原因で、2つのコイルを通じて5VからGNDにショートする流れが出来上がってしまって、冒頭の写真にあるようなジャンパ線を伸ばしてコイルと基板のパターンをつなぐことになったのです。

 

コイルの配線を直したら±7.5V出るようになったのですが、なんだか電流が多いんですよね。そんで、電流帰還OPアンプの-入力にオシロのプローブを当てると減る。たぶん発振しているんでしょうね。ただ、200MHzのオシロをつないでも発振が見えるわけではないので、より高い周波数での発振なのかもしれません。

OPアンプが発振するときってV-入力に変なコンデンサが付いていないかを疑うのですが、今回使ったTHS3491の8ピンタイプって裏面がベタGNDのパッドだから、OUTピンからV-入力まで真下を通るわけにはいかなくて、どうしても距離が出てしまいます。このOPアンプを発振させないで動かすことができるのでしょうか。甚だ疑問です。

 

さて、FPGAからADCを動かして波形を見ていると、突然、安定化電源の3Aの電流リミットがかかって止まってしまう。調べてみるとDC-DCがショートしている。ただし、ショートしているのは大きなコイルの±7.5V電源ではなくて、小電力の±5VのDC-DCのようでした。

調べてみると、2個あるLPD4012というコイルの1番ピンと4番ピンがショートしているっぽいのです。

そういうわけで、-5Vであるべきところに電源入力の+5Vが来ていました。((((;゚Д゚))))

Lpd4012

さらにダイオードD5のVfが低下している。

おまけに5V→2.5Vを作るLDOがショートモードで壊れている。

・・・なんだか、この回路って次から次へと電源部品がショートモードで壊れていきます。

どこが発端なのかわかりませんが、ぽぽぽぽーんと壊れていったのでしょう。

 

ここは安全策にかじを切って、THS3491をやめて急遽THS4041を使うことにしました。電圧帰還OPアンプなので使い慣れているし、電流も少ないし、過去にも使ったことがあります。それから巨大コイル(MSD1583)を使ったDC-DCはやめて、LPD4012のDC-DCの出力から±7.5Vのラインにももらってくることにします。THS3491を使わないので大電流も高い電圧もいりません。

冒険をやめて確実に動くところを責めることにします。

  

壊れた部品を全部取り替えて、ようやくDACが動くようになりました。

FPGAでカウントアップする値を出し、のこぎり波を出してみます。

Scope_106

終段のOPアンプのゲインを-10倍にしているので、±5Vの電源にぶつかってクリップしてしまっていますが波形が出るようになりました。

 

今日わかった修正&反省個所は

  • 電源5VとGNDを2ピンのコネクタに出して、外部から独立して供給できるようにするべきだった
  • 電源5Vとコイルとの間を切り離せるように0Ω抵抗かジャンパを入れるべきだった
  • GNDのテストポイントを何か所か設けるべきだった
  • ジャンパには説明のシルク(+7.5Vとか-7.5Vとか)を入れるべきだった
  • MSD1583コイルのピン配置を間違えた
  • MSD1583コイルからの磁界ノイズがめっちゃ大きい
  • THS3491が発振しているようだ
  • AD9717のIOCLKとDCLKを裏面からオシロで触れるようにパッドを設けるべきだった
  • 回路の電源入力の部分に47uFとか100uFの大きなコンデンサがほしかった(オシロで触ったりGNDを取るための場所がわかるので)
  • DACの出力がOPアンプで反転している

です。

 

| | コメント (0)

2022.07.12

DAC8基板の手実装

木曜日に出図した基板が出来上がってきました。

左から、ADC基板、DAC基板、Spartan-7基板と面付されています。

Np1120bpcb

今日は真ん中のDAC基板を手半田して、即行で動作確認したいと思います。

全部のCHを実装すると時間がかかるのでとりあえずは2CHのみ行います。

Np1120atop

Np1120bbot 

・・・

もくもくと作業

・・・

6時間くらいかかったでしょうか。

無事にはんだ付けが終わりました。

Np1120btop2

Np1120bbot2 

今回、2CHだけはんだ付けしたのは、THS3491というOPアンプの実力を見るためと、Sepic Cuk型DC-DCがちゃんと動作するかを確かめるためです。

Np1120btop3

もし、実装屋さんに出して火入れしてダメだったとなると手戻りが大きいからです。

THS3491とDC-DC自作という不安要素の大きいところだけでも先に手半田して調べておきたいわけです。

Np1120btop4

この基板では主なICは全部裏面に配置してあります。

これはCosmo-Zの拡張基板で本体の下に来るので、裏面のほうがオシロで触りやすいからです。

下の写真のでかいコイルはCoilCraft社のものだけど、CoilCraftのコイルは性能は良いのに端子が全部裏面だからはんだ付けにめっちゃ苦労します。

Np1120bbot4

Np1120bot3

無事にはんだ付けできたので、明日は火入れを行うことにしましょう。

 

| | コメント (0)

2022.07.09

Trion T20に書き込みができた!

MITOUJTAGからTrion T20への書き込みができました!

原因はやはり、BitStreamの流し込みのところで分割してしまっていたことでした。

これまで、分割しないでSHIFT_DRステートのまま送り出すプログラムも試してはいたのですが、ビットリバースを忘れていたり、私が作ったMPSSEのラッパのバグでSHIFT_DRステートのままデータを送出するのが連続すると間に00000000をはさんでしまうなどがあって、失敗していました。

このバグを修正したら、見事に書き込みに成功しました。苦節1年?

 

書き込みしていて気が付いたこととして、CRESET_Nを操作しないとFPGAのコンフィグデータは消えないので、書き込みの前にはCRESET_NとSS_Nを手動で操作する(リセットボタンを押すなど)必要があるということです。JTAGだけでは100%コントロールできないのが、ちょっと面倒ですね。

つまらない動画を作ってみたので、ご興味のある方は見てみてください。

| | コメント (0)

2022.07.08

Efinity TrionへのJTAG書き込みに再チャレンジ

MITOUJTAGでEfinity TrionへのJTAG書き込みに再チャレンジしています。

これまでもT120には書き込めるたですが、なぜかT20には書き込みできません。T20に書き込みをしようとすると、NSTATUSのランプが消えて書き込みエラーとなってしまいます。

T20_1

TrionはBSDLに異常があったりしていろいろおかしかったのですが、いままでわかっていることを整理します。

  • メーカーが提供しているT120用のBSDLファイルのdisvalの値が逆。バウンダリスキャンで入力ピンと出力ピンが逆になってしまう
  • T20では書き込み時にCRESET_NとSS_Nの操作が必要。CRESET_Nが立ち上がるときのSS_Nの値を見て、HだったらSPIコンフィグが起動してしまう。そのためSS_NをLにしてSPIコンフィグを止める必要がある。
  • TESTピンは常にHにしておく

ということでした。

アプリケーションノートを読み返していて、あることに気が付きました。

T20_jtag_seq

T20ではデータを送信している間にPAUSE_DRやIDLEステートに入れてはいけないのです。

SVFファイルで表現すると、下の図のように3000とか適当なサイズで分割してはいけません。これはEfinity Programmerで出力したSVFファイルですが3000bitで区切っているので、これをPlayしても書き込みはできません。

Ngsvf

ENDDR SHIFT_DRにしておけばいいのかもしれません。

ようやく原因がつかめてきました。

T120では適当なサイズで分割しても良いのですが、T20ではだめなようです。

 

| | コメント (0)

2022.07.07

ADCとDAC基板を出図。ついでにSpartan-7も

数日前から設計していた拡張DAC基板と拡張ADC基板を出図しました。

Np1069bnp1116a

現時点で注文が入っているのはADCが2台とDACが2台。

基板設計に何か間違いがあるといけないので、少ない量で試作して、問題なければたくさん作ります。

Spartan-7基板は5月8日に改版したパターンなのですが、最近は6層基板を作る機会がなく、ようやく一緒に乗せて製造することになりました。

アナログ回路とデジタル回路の基板ではデフォルトのGNDネットがGNDかAGNDで違ったりするので、面付するときには極めて注意深くやらなければなりません。

 

 

| | コメント (0)

2022.07.06

両電源が出せるSepic Cuk型のDC-DCを作る

アナログ回路を作っているとどうしても±5Vとかが必要になります。これまでは市販のDC-DCモジュールであるRKZ-0505Dを使っていたのですが、電流が200mAまでしか取れません。

そこそこ大きな電流が取り出せる両電源のDC-DCというのはそんなに多くはないので、自分で作ることにしました。

アナログデバイセス社のADP1612~ADP1614というスイッチング電源コントローラを使うと、Sepic-Cuk型という回路で両電源の昇圧DC-DCを簡単に作ることができます。

https://www.analog.com/jp/products/adp1612.html#product-tools

このページにリンクが張られているExcelファイルを開いて必要な電圧と電流を入力するだけで、ADP161xを使った回路の抵抗やコンデンサ、コイルの型番などが記された回路図が表示されます。

Sepiccuk_20220707175901

まずは右下の5V入力±5V出力のDC-DCをADP1613で置き換えます。この回路は↑のExcelシートで計算したものではなく、過去に作った回路をそのままコピペしています。

Dcdcadp1613

 

次に±7.5Vの電源を作ります。5V振幅で50Ωの負荷をドライブするとなると100mA必要なので、最大で±800mAの電流を取り出す必要があります。ただし、そんな電流を取り出すと熱すぎるので普段は1V振幅までに抑えておくことにします。最大で±500mAくらい出せればよいでしょう。

ADP161xの末尾の数字が大きくなるほど大きな電流を取り出せるようになります。

ADP1612は1.4Aまで、ADP1613は2Aまで。ADP1614はなんと4Aもの出力電流が出せます。ただし、実際に使える電流はコイルによって制限されるので、大きな電流を取り出すにはそれなりに大きなコイルを使う必要があります。

アナデバはCoilCraft社のコイルがお気に入りのようです。

Msd1583

Excelのシートで計算すると、MSD1583を使うリストが出てきましたが、CoilCraftはなかなか入手が難しいんですよね。

最近ではMouserで買えるようになったのですが、少し前まではCoilCraftに連絡して折り返し電話とかメールとかが来て用途を知らせないと買えませんでした。

 

±7.5V 500mA取り出せるようにするにはコイルもダイオードも大きいものを使うことになりますが、DC-DCの空いたスペースに収まりました。

Dac8top

 

Dac8bot

大きな発熱が予想されるので風を当てられるように発熱系部品は裏面に乗せています。

| | コメント (0)

2022.07.05

DAC8基板の改版を始めます

過去にDAC8基板というのを作ったのですが、いよいよ改版を行います。

スペックは、125MHz 14bit 8ch。いままでは出力段にTHS4041を使っていたので、周波数特性を優先すると±0.5Vくらいの振幅しか出せませんでしたが、今回はTHS3491を使うことで最大±5Vで40MHzの波形を作れることを目指します。(電波になって飛んでいきそう)

また、DAC+OPアンプの後にLCフィルタを入れて、システムで使っている125MHzのクロックが出力に乗らないようにしたり高調波を抑制することにします。

THS4520+THS4041があった部分を削除した領域に、新しい部品を乗せようと思います。

Dac81

真ん中にある青い四角に丸が空いているのがTHS3491です。左側の抵抗みたいな部品がたくさんあるのは、7次チェビシェフフィルタ・ノッチ付きです。

Dac82

最初に1CHだけ丁寧に配線したら、あとはコピペで8CHを作り上げます。

Dac83

なんと、電源を含めて4層で収まってしまったのですが、一緒に作ろうと思っているADC基板が6層なので、もう2層を電源として使うことにします、

 

右のほうにDC-DCモジュールが4個も並んでいるのがかっこ悪いですね。。

THS3491は最低動作電圧が±7.5Vなので、市販のDC-DCが扱いにくい電圧となります。±12Vにすると損失が大きいし、±5Vでは足りません。また、±12Vのモジュールは80mAくらいしか取り出せません。

大電流が取り出せて±8V程度の電源となると、自分で作るしかありませんね。

| | コメント (0)

2022.07.04

ADCが密集した基板でGNDを分離してみる

Cosmo-Zのクロストークを減らしたいので基板を改版することを考えていますが、Cosmo-Zの改版にはいろいろとコストがかかりすぎるので、まずはCosmo-ZのADC拡張ボードを使って実験を行うことにします。

Cosmo-Zの拡張ボードも、Cosmo-Zの本体も、アナログ部分の基板パターンは同じなのです。

まず、現在の基板のGNDパターンはこんな感じです。

Gndcurrent

GNDはベタパターンで広くとっているのですが、このパターンだとあるCHのリターン電流が隣のCHの下を流れていってクロストークが起きるのかもしれません。

そこで、GNDをCHごとに分離します。ADC前のコンデンサの設置点を赤丸で記します。このコンデンサを外すとクロストークが減るので、ここに流れる電流がいままでは隣と干渉していた可能性があります。

Gndnew

それから、VCCプレーンの使わない部分はGNDの強化に使用にしていたのですが、もしかすると、この面を通じてクロストークが起きていたのかもしれません。この面のGNDは電源側へと戻るパターンはないので、左右方向には電流が流れないはずです。

Vcccurrent

 

そこで、この面のGNDも分離することにしました。

Vccnew

それから、特にクロストークの大きいCH5とCH6の保護ダイオードのパターンは次のようになっていました。

Ch56

CH6のダイオードを通ってきた電流はCH5の下を通らなければならないし、CH5の電流はCH6の影響を受けるわけです。これが干渉を引き起こしていたのかもしれません。

そういうわけなので分離しました。

Ch56separate

これで、CH5とCH6の保護ダイオードを通った電流は別々の経路でベタGNDの大海原に還るはずです。

 

| | コメント (0)

2022.07.03

保護ダイオードとADCのひずみ率

歪率の改善に重要なコンデンサを外してしまって大丈夫なのか不安であるため、歪率も測ってみることにしました。

100kHzを入れて、100kHz,200kHz,300kHz・・のレベルを測ります。

下のグラフは少しわかりにくいのですが、CH5に-7dBの信号を入れて、CH5と他のCHにどれくらいの高調波が出てくるかをプロットしたものです。最初はCosmo-Zの生の回路です。

Hizumi

CH5自身の100kHzでの値は-7.24dB、200kHzでは-103dB、300kHzでは-98.55dBといった具合です。この場合CH5のひずみ率は-90dB以下と言えます。

このようにして基本派に対する2倍高調波のひずみ率を評価しますと、

CH1 -96dB
CH2 -90dB
CH3 -98dB
CH4 -91dB
CH5 -96dB
CH6 -92dB
CH7 -95dB
CH8 -91dB

でした。

どのチャネルも概ね90dB以下なので良しと言えます。

昨日のように保護ダイオードとコンデンサを外すと、

CH1 -96dB → -96dB
CH2 -90dB → -94dB
CH3 -98dB → -121dB
CH4 -91dB → -92dB
CH5 -96dB → -93dB
CH6 -92dB → -92dB
CH7 -95dB → -96dB
CH8 -91dB → -96dB

と、ほぼ変わらない結果が得られました。1つだけ-121dBという結果が得られているのは、もともとノイズフロアのレベルの微弱な信号を見ているから、たまたま低くなっただけです。

保護ダイオードのせいでひずみ率が悪化しているということはありませんでした。取っても性能が良くなるわけではありません。

コンデンサ2個でGNDに落としていたのを線間1個にしてもひずみ率の性能は変わらないと言えます。

これで、新しい回路の設計指針が出来ました。

つまり、

  • 保護ダイオードのGNDに流れる電流がチャネル間で干渉しないようにリターンの道を分けること
  • 対GNDのコンデンサには電流が流れるのでチャネル間で干渉しないようにリターンの道を分けること

というわけです。

| | コメント (0)

2022.07.02

ADCを密集させたときのクロストーク(2)

保護ダイオード以外に信号が漏れてクロストークしている個所を探したところ、実はOPアンプ~ADCの間にある抵抗とコンデンサでした。

Capleak

こんな何の変哲もない回路ですが、ここがクロストークの温床になっていたのです。

 

使っているADCは差動のADCなので、完全差動アンプの出力を抵抗に通した後、コンデンサでGNDに落として差動線間にもコンデンサを通して、ADCの入力につないでいます。

上の回路図にある33pFのコンデンサはLPFを作りたいからではなく、ADC内部にあるスイッチトキャパシタに十分な電荷を供給するために置いたものです。このコンデンサがないと、ひずみ率が悪化します。

1000pFのコンデンサはカットオフ周波数を低下させるため、通常は実装していません。

 

詳しい話は省きますが、ADCの前にはコンデンサが必要なのです。対GNDで入れるべきか、対線間でいれるべきなのかは何とも言えません。ただし、対GNDで入れると、OPアンプの出力電流がRCを通ってGNDに流れて、それが他のチャネルへ干渉を起こします。それがクロストークの原因でした。

そこで対GNDの2個のコンデンサを外して線間のC226の場所に付けてみたところ、CH3とCH4の間のクロストークも見事に消えてくれました!!

Ch34nodnoc_20220704184602

CH3が-7.1dBのとき、CH4は-98dB。クロストーク90dB以下をぎりぎりで確保することができました。

| | コメント (0)

2022.07.01

ADCを密集させたときのクロストーク

Cosmo-ZではADCが狭い領域に密集しているので、ある程度のクロストークが出てしまいます。

Board_20220704181301

今日はこのクロストークを徹底的に減らす工夫をしました。

クロストークはCH2に100kHzの信号を入れてCH1に漏れてくるのを測るのですが、多くの場合、CH1とCH2ではほとんどクロストークはないのですが、

Nocross

CH5とCH6では多いという傾向がありました。

Crosstalk

この傾向はボードを何枚作っても同じなので、個体差ではなく、おそらく回路上の問題なのだと思われます。

CH1~CH2間はおよそ-90dB以下ですが、CH5~CH6間は-80dB程度あります。-80dBということは10000分の1ですから、14bitのADCを使えば1LSBか2LSBくらい揺れるということになります。

次の図はCH1に100kHzの正弦波を入れて、それが他のCHでどのくらいの大きさで漏れているかをFFTで調べて、100kHzの付近だけ取り出したものです。

Ch1_20220704182101

CH1のピークは約-7.1dBですが、その時、CH2とCH6で-100dBでほぼノイズフロアレベルとなっています。これがクロストークなのかノイズなのかは区別できません。CH1から他CHへのクロストークはほとんどないと言えます。

CH5に100kHzを入れた場合を見て見ると、CH6への漏れが-80dBくらいあって、CH2にも有意に漏れていると考えられます。それ以外のCHは漏れていないと言えるでしょう。

Ch5

さて、ここで謎が一つ。CH5とCH2は隣り合っていないのにどうして漏れるのかということです。

答えは過電圧保護用のダイオードにありました。Cosmo-Zでは過電圧保護用にRF用のダイオードを入れているのですが、ダイオードはVf未満でもわずかな順方向電流が流れます。その流れた順方向電流がGNDに集まるのですが、CH5とCH6は接近していて同じ島にあるからCH5とCH6の間の干渉は大きくなるのです。

Hogod

そういうわけで、過電圧保護ダイオードを外してみたところ、CH5-CH6間のクロストークは有意に減りました。

Ch5nod

これで万々歳かと思ったのですが、CH3とCH4の間にはまだクロストークがあるようでした。

Ch34

保護ダイオード以外にも漏れている個所があるので、それを探してつぶしていかなければなりません。

| | コメント (0)

« 2022年6月 | トップページ | 2022年8月 »