IC真贋判定サービス「シン・IC」

半導体テスタとIC真贋判定サービスをつくっています

2023.05.03

IC真贋判定装置で様々なFPGA/CPLDを試す

IC真贋判定装置を開発しています。

今日は144ピンのデバイスを中心に動作確認を行います。

この真ん中のソケットにFPGAやCPLD、マイコンを挿して、周囲にある大量のスイッチで電源やGNDを与えられるようになっています。

Qfp144_20230504005701

まずはSpartan-6のTQ144ピンです。型番はXC6SLX9-2TQ144C。

Sp61

無事に認識されてバウンダリスキャンもできました。

Sp65

HSWAPENというピンを操作すると、I/Oピンがプルダウンになったりオープンになったりするのが切り替えが見えて面白いと言えます。

Sp62 Sp63

 

次はALTERA(INTEL)のMAX5。型番は5M570ZT144C5Nです。

Max51

このように電源を与えるとJTAGでも認識され、バウンダリスキャンで操作した端子の状態と、IC検査装置で測った端子の電圧は一致するようになりました。

Max51_20230504004101

 

次はIntelのCyclone4。

Cy43

Cyclone4のQFP144ピンパッケージは裏面にEパッドという145本目のパッドがあります。実は、このパッドは内部で他のGNDにつながっていないようなので、GNDに接続してやらなければなりません。そのため、ソケット基板を改良してラッピングワイヤで作ったバネでEパッドに接触させるようにしたら動きました。

Cy42

電圧はVCCIOだけではなく、VCC=1.2V、VCCAやVCCD_PLLで2.5Vなど様々な電圧が必要です。でも、当社のICテスタは任意の4種類の電圧を与えられるので問題ありません。

Cy43_20230504004301

大変苦労しましたが、これも問題なく認識してくれました。

Cy44

JTAGバウンダリスキャンで見た端子の状態と、ADCで測った端子の電圧が一致しています。

Cy45

 

最後はBGA256ピンのCyclone10です。これまでにMAX2、MAX5、Cyclone4などで練習してきた甲斐があってALTERAの電源接続にも慣れてきました。

Bga2561

ICが薄いのでソケットに少し工夫が必要でしたが、

Bga2563

このICも、JTAGで認識してくれて、

Cy101

JTAGバウンダリスキャンで端子を操作し、その値をADCで読み取るということができました。

Cy102

 

結果として、BGA256、QFP144、QFP100、BGA324の様々なICをソケットに装着して、電源を投入し、JTAGバウンダリスキャンでIDCODEを見たり端子を操作したりするということに成功しました。

もし、偽物のICであればJTAGのIDCODEが違っていたり、そもそもJTAGを認識しなかったり、電源に異常な電流が流れたりするのでわかります。

また、このIC検査装置ではバウンダリスキャンでICの端子を動かして、その結果の電圧をADCで測れるので、端子が活きているかどうかを調べることができます。

偽物ICなら一発でわかるというわけです。

 

流通在庫の偽物ICよ、かかってこい!

 

| | コメント (4)

2023.05.02

真贋判定装置でMAX2を試す

昨日は100ピンデバイスでいろいろ試したので、今日はQFP144ピンのデバイスを試します。

Qfp144_20230504005701

まずは、INTEL(ALTERA)のMAX2。

Max21

電源を設定してJTAGケーブルをつないでMITOUJTAGで自動認識・・

よっしゃー!JTAGで認識されたぞ。

そういえばMAX2とMAX5ってIDCODE同じなんだっけ?

Max22

MAX2も問題なく検査できることを確認できました。

JTAGバウンダリスキャンで端子を操作すると、計測された電圧が0V~3.3Vの間で変化するのが見えます。
Max23

また、オープンにしている端子は1.2Vくらいで浮いているのが見えます。

MAX2にはGタイプとノーマルタイプがあって、Gタイプはレギュレータ内蔵でないからVCCINTに1.8Vを加えなければならないけど、ノーマルタイプは2.5Vまたは3.3Vを加えることになっています。

この装置はどちらも対応可能です。

 

特電の倉庫に行ってみると、QFP144ピンの古いFPGAやCPLDがいくつかありました。

Qfp144ics

明日はこれらを攻めていきたいと思います。

 

| | コメント (0)

2023.05.01

QFP100ピンのICをICテスタにかけてみた

FPGAやCPLDの真贋判定に特化したICテスタを開発しています。

昨日はBGA324で成功したので、今日はQFP100ピンをやります。

BGAのほうが難易度は高そうなのですが、あえてQFPからやって経験を積みます。

今日のデバイスはXILINXのCoolRunner2。XC2C64VQG100Cです。

Xc2c1

装置全景のようすです。

Xc2c2

注意深く電源電圧を設定して・・

Xc2c3

JTAGで認識しました!!

Xc2c4

バウンダリスキャンもOKです。

Xc2c6

VCCIOとVCCINTの電圧は別々に設定できるので、VCCIOの電圧を少しずつ上げてみていったところ、内蔵プルアップ抵抗と装置全体の持つプルダウン抵抗でせめぎあって1V前後の電圧になるのが見えます。

 Xc2c5

このくらいの電圧だとバウンダリスキャンしたときにHとLの丁度境目になるのでちらちらして見えます。

また、バウンダリスキャンで1ピンずつH/Lトグルしていったときの様子を動画にしました。

このような感じで動いているのが見えます。

 

このようにCPLDでは成功したのですが、手元にあるルネサスマイコンRX63Nの100ピンではだめでした。どうやらRX63Nの100ピンはJTAGのバウンダリスキャン機能がディゼーブルにされているのでIDCODEすら見ることができません。それでもICEの何からしいステータスは見えているので、JTAG自体は反応しているようでした。

 

 

| | コメント (0)

2023.04.30

FPGA真贋判定装置でバウンダリスキャンに成功!

IC真贋判定装置のGUIソフトもつくり、動作テストも佳境に入ってきました。

下の写真のように、BGA324のソケットを装着して1本1本に、細いワイヤーを挿して電圧を注入していきます。

Bscan5

すると、制御ソフトの画面上で配線を挿したBGAのピンの場所の電圧が高く表示されます。

Bscan6

この画面を見ながら1本1本のピンが正しい場所につながっているかを調べていくと首が疲れるので、Windowsのソフトに電圧がかかったピンの番号を読み上げてもらうことにしました。

 

こうして、全部のピンが正しくつながっていることを確認したら、ICを挿さずに電源を入れてみてBGAの各ピンに正し電圧が出ているかを何度も何度も念入りに確認します。

Bscan9

 

そして問題がないことが確かめられたら、いよいよFPGAの実機を装着して実験です。

Bscan3

いざ、電源をON!

Bscan4

使用したICは、Spartan-7のXC7S50のCSG324Cです。安全のためVCCIO=1.8Vとしています。

電源電流が90mAくらい増えたけれども、特にショートしているような感じはありません。イイ感じです。

 

そして、JTAGの配線をつないで自動検出してみると、

Bscan7

見事に認識されました!!!

バウンダリスキャンもできました。

Bscan8

バウンダリスキャンのEXTESTモードにして端子を動かすと、

Bscan2

対応するピンの電圧がVCCIOの電圧になりました。(ここではVCCIO=2.5Vにしています)

Bscan1   

大成功です。

これで、どんなICでもBGA324ピンであれば、任意の端子に電源やGNDを与えてJTAGバウンダリスキャンができます。

 

 

| | コメント (3)

2023.04.29

IC真贋判定装置の電源回路が動くようになったのでナイトライダーしてみた

IC真贋判定装置をアルミとアクリルのケースに収めました。

04291

GUIのデバッグアプリを作り、デバッグ用のLEDボードの形が表示されるようにしました。

04292

そして、ナイトライダー機能を作って、動かしてみました。

 

| | コメント (0)

2023.04.25

360chのAD変換器のGUIアプリを開発中

IC真贋判定装置には360chのAD変換器が乗っているのですが、

04252

各端子の電圧が一目でわかるようにするためのGUIアプリを開発しています。

04251

毎秒50回程度、全ピンの電圧を測って画面に表示することができるようになりました。

電圧を測るだけではなく、GUIでポチポチしながら好きなピンからいろいろな電圧を出力できるようにもしました。

 

 

 

| | コメント (0)

2023.04.23

アナログスイッチを切り替えて360チャネルのAD変換器を作った

360個のアナログスイッチを切り替えて360入力チャネルのAD変換器ができました。

入力チャネルの切り替えでAD変換値がどう変化するかを見てみます。

まずは、Lレベルの信号を計測していた端子からHレベルの信号を計測していた端子に切り替わるときのようすです。結構すぐに切り替わります。

04231

 

次はGNDレベルに接続されている端子に切り替えた場合です。これも速やかに切り替わります。

04233

 

最後は弱プルダウンされている端子に切り替わったときです。なんと、70μ秒くらいの時間がかかってゆっくり変化あしていきます。

04232

 

つまるところ、アナログスイッチを切り替えて超多チャネルのAD変換器を作る場合、切り替えのたびにそれなりの時間を待たなければなりません。

 

| | コメント (0)

2023.04.22

90個のピンの電源電圧を測れるようになった

ADコンバータが動くようになったので、変換した値をAXIで読めるレジスタに出して、ソフトで読んでみました。

読める、読めるぞ!

Adc_measure2

これだとわかりにくいので、精度を1桁にして表示してみました。

ついでに、ナイトライダーのようにシフトさせながら電圧を表示してみました。

Adc_measure

LEDの動きにあわせて、電圧の高い部分が移動していくのが見えます。

 

 

| | コメント (0)

2023.04.21

喋る半導体検査プログラムを作りたい

BGAの端子を1本1本検査する際に、ピンにプローブを当てながらオシロを見たり、テスターを見たりするのは効率が悪いので、プログラムに喋らせることができないかと考えています。

音声合成はVisual C#(というか.NET)にもともとあるようで、簡単に使えることがわかりました。

やりかたはすごく簡単でした。

まず、

using System.Speech.Synthesis;

をします。

このままだとSystem.Speech.Synthesisが見つからないというエラーが出るので、System.Speechの参照の追加を行います。

ソリューションエクスプローラで、参照→参照の追加→アセンブリを行い、System.Speechを追加します。

Refspeech2

ソリューションエクスプローラにSystem.Speechが出てくればOKです。

Refspeech

C#のプログラムは、

SpeechSynthesizer speech;
speech = new SpeechSynthesizer();
speech.SetOutputToDefaultAudioDevice();
speech.Speak("A1 3.2ボルト");
speech.Speak("A2 0.03ボルト");
speech.Speak("A3 3.2ボルト");

とします。

これでSpeak関数の中身で書いたとおりに喋ってくれます。

どんな声が使えるかというと、speech.GetInstalledVoiceで調べられるのですが、戻りの型がよくわからいので、

Object var = speech.GetInstalledVoice();

とやってデバッガでウォッチしていみます。

調べてみると、

Microsoft Zira Desktop

Microsoft Haruka Desktop

という2つの音声がインストールされているようです。

話者は

speech.SelectVoice("Microsoft Haruka Desktop");

または

speech.SelectVoice("Microsoft Zira Desktop");

で切り替えられます。

デフォルトはHarukaのようです。萌え系的な要素はまったくありません。

Harukaは数字などを日本語で読み上げてくれますがZiraは英語で読むようです。

ちょっとぎこちないですが、無料でVisual Studioの機能だけで使えるので、超おすすめです。

 

| | コメント (0)

2023.04.18

任意のピンから電源出力

4つの電源(1.8V 2.2V 2.5V 3.3V)を、好きな場所からONすることに成功。これでようやくLEDをじわっと光らせながらのナイトライダー(死語)ができる。

LEDの光が滲んでグラデーションしているのでも、カメラのシャッター時間の関係でグラデーションしているのでもなく、隣のLEDを本当に弱く光らせています。

Arbpower

プログラムはこんな感じで、任意の場所に1~4の数字を書き込めば、その場所にVCC1,VCC2,VCC3,VCC4が供給されるようになっています。

Code

GNDも含めると90×8=2880個の電源スイッチがあるのですが、長いシフトレジスタを作ってSPIで制御しています。1つのSPIのチェーンは980bitくらいあって、そのSPIのビット列の1つ1つが電源やGNDのスイッチにつながっています。

SPIの速度は最初は1MHzでやっていましたが、10MHzでも通ることがわかりました。

10MHzで通るなら100μ秒で切り替えられます。

| | コメント (0)

より以前の記事一覧