« 2014年11月 | トップページ | 2015年1月 »

2014.12.31

2014年を振り返ってみて・・

今年も最後の日になりました。こんな歳の瀬まで私は回路の設計(受託案件)をしています。詳細は言えませんがすごいセンサーを使うもので、約64Gbpsの速度で送られてくるデータを2個のKintexで受信してDDR3-DIMMメモリに蓄え、USB3.0で読み出すというものです。なんで大晦日まで仕事をしているのでしょうね。

さて、2014年を振り返ってみます。

今年の最初に立てた目標は、どれだけ実現できたでしょうか・・・

  • 特電のホームページ更新して現代風にする・・・達成!
  • 人(スタッフ)を増やす・・・達成!
  • 自社のIPコア(PCIe、SATA、USB3)をAXIに対応させる・・・一部達成!
  • 汎用のFPGA評価ボードはもう作らない・・・その方向で堪えた
  • JTAGをより多くの人に使ってもらえるような新製品を作る・・???

ということで、60点くらいでした。

念願の、スタッフを増やすことと、特電のホームページリニューアルができたので、よかったではないかと思います。

Noukai2014

今年は本当に優秀な人材に恵まれてよかったです。若い人たちがいっぱい来てくれて、事務所もいつも賑やかで、いままでの自営業生活の中で一番楽しかった1年間だったと思います。頼んだ仕事をちゃんとやってくれる人ばかりで、当たり前のことなんですけど、とても助かりました。

ホームページのリニューアルは、Before Afterを比べてみれば一目瞭然です。

Webrenew

静的なHTMLファイルを動的に作り出す「TKCMS2」というコンテンツ・マネージメント・システムを作り、スタッフなら誰でも好きなようにページを追加したり書き換えたりできるようにしたので、私自らがホームページを書かなくても、誰かが書いてくれるようになりました。

また、BootStrap3を使っているので、見た目もそれなりに綺麗です。

製品や会社の方針的なところを振り返ってみると、昨年までは評価ボードを作る会社、ということに尽力をしてきましたが、今年からは計測システムを作るという方向に舵を切り始めたと思います。また、MITOUJTAGの基板検査機能や、セミナーの開催など、新しい方向へのスタートもできたと思います。

しかし、計測システムやMITOUJTAGの基板検査機能はまだまだ発展途上なので、来年こそは軌道に乗せたいと思います。

FPGAで計測して、それをLinuxでファイル化して、FTPで転送する・・そういうのがやりたかったのですが、力及ばずでした。

では、具体的に何をやっていたかを振り返ってみます。

●1月
・学生アルバイト1人(週2くらい)というところから再スタート。
・ホームページを何とかしようと、WordPressを試してみる。使えないことがわかる。
・18bit AD変換器の開発
・RXマイコンで動くCMSIS-DAPの開発。RX-CMSIS-DAPのリリース。

Rxcmsis_page_2

●2月
・18bit AD変換器の開発
・トラ技ARMライタ発売
・受託案件でADC+13chモータドライバ基板の製造

●3月
・新しいスタッフが入った!
・Artix-7の拡張ベースボードを作る
・18bit AD変換器(改)の性能評価

Np1067a_1
・ZYNQ搭載ADCボードの設計開始

●4月
・ZYNQ搭載ADCボードの設計
・18bit AD変換器の製造
・AXI-USB3.0コアの開発。AXI-USB3.0カメラなどを作る。
・新しいスタッフがまたまた入った!

Zynq_adc15Artix7axi_2

●5月
・XILINX Platform Cable USBやDigilent HS-USBの使い方を解析
・また新しいスタッフが入った!FPGAのデキル人。
・RXduinoを商標出願。これがかなり波紋を呼んだらしい。
・FreeRXduinoをリリース
・特電お客様サイトのオープン
Login_dlsite

●6月
・月刊特電4号発行
・Webサイトを大リニューアル
Gettoku_4

●7月
・MITOUJTAGの基板検査機能の開発スタート
・18bit AD変換器でINL悪化の原因を究明
・ZYNQ搭載ADCボードの設計を再開
Np1068_all
・18bit AD変換器の発売開始

●8月
・18bit A/D変換器のテストを繰り返し・・
・Cosmo-Zの動作テスト
Zynq_iserdes

●9月
・MITOUJTAGにネットリスト読み込み機能
・Cosmo-Zの動作テスト
・スタッフが2人増えた。総勢8人になる。
・月刊特電5号発行
Gettoku5

●10月
・MITOUJTAGでインターコネクトテストに成功
・18bit 20ch A/Dボード「AD360」の設計
・ZYNQ+ギガビットイーサの動作成功
Ad360_top2Ad360_20ch

●11月
・月刊特電6号発行
・Cosmo-Zで放射線の検出が可能になる
・ET2014出展

Gettoku6_smallTokuden_et2014_2

Cosmozpmt3

●12月
・第1回MITOUJTAG活用セミナー
・FlashAirでWiFi-JTAGができるか?の実験
・MITOUJTAG基板検査機能のブラッシュアップ
・MITOUJTAG 2.6リリース
・基板年賀状作成

Seminar01_am

思い起こせば、ずーーーーーーっとA/D変換していました!

良いお年を!

| | コメント (0)

2014.12.26

基板年賀状が出来上がった&納会

本日、基板年賀状が出来上がってきました。

Nenga2015_1_2

早速宛名を貼って、出す準備をしました。

また、仕事納めの納会をしました。

Noukai2014

今年は人もいっぱい増えて、楽しい1年でした。

いままで特電生活の中で一番楽しい1年だったと思います。

オードブルの量を間違えて余ってしまったのがちょっと心残り。

・・

・・・

さて、特電の事務所は今日で締めですが、私自身はまだまだ年内無休で働きます。これから地獄の年末特別開発スケジュールが進行します。

  • 某受託開発回路の設計
  • MITOUJTAG Proの基板検査機能の更新
  • Artix-7&CMOSカメラボードのアプリケーション開発
  • AD18ボードのSpartan-6対応
  • Cosmo-ZのLinux対応
  • Cosmo-Zの拡張基板設計
  • MITOUJTAGのVivado対応とロジアナ波形のエクスポート機能の開発
  • MITOUJTAGセミナー用基板の開発

さて、お正月休みが足りるでしょうか!?

今年のロスタイムは始まったばかりです。

よいお年を!

| | コメント (0)

2014.12.25

ひさびさにCosmo-Zを動かしてみた

ひさびさにCosmo-Zを動かして、光電子増倍管からの信号を取ってみました。

Csz1225

ADCの電流を測ったり、周波数特性を測るるためにいろいろ改造していたので、まともに動くように戻すのに苦労しましたが、何とかプラスチックシンチレータ+フォトマルからの波形が取れるようになりました。

Csz1225_1

パルス高さのヒストグラムを取ってみると、

Csz1225_2

こんな感じで2つのピークが見えていますが、何のピークなのかはわかりません。

来年は低ノイズの電源を用意して、より確かな計測ができるようにしていきたいと思います。

| | コメント (0)

2014.12.21

MITOUJTAG Lightを期間限定・数量限定で発売します

特殊電子回路では、JTAGを使った快適なデバッグ環境をハイレベルな個人の方にも体験していただきたいと思い、冬休み・お正月期間にMITOUJTAG Lightを提供することにしました。

従来は百万円以上もしていた(※他社製品)バウンダリスキャンを、ひとりひとりのMakerやエンジニアに使っていただき、個性的で優れた作品が日本から世界に発信されていくことを願って、このツールを提供させていただきます。海外製の百万円以上するJTAGバウンダリスキャンツールにもできなかったこと、できなかった快適さが、あなたのデスクトップで動きます。

ただし、この価格でずっとやっていくのは難しいので、期間限定・数量限定とさせていただきます。具体的には、平成26年12月24日から平成27年1月15日までの期間限定で、30個という数量限定で提供させていただきます。何卒ご了承くださいませ。品切れの場合はご容赦ください。

詳しくは、こちらのページ

http://www.tokudenkairo.co.jp/jtag/lightv.html

をご覧ください。

| | コメント (0)

2014.12.19

MITOUJTAG BASIC 2.6をリリースしました

12月18日、MITOUJTAG BASIC 2.60をリリースしました。本日、バージョンアップご依頼のお客様に最初の出荷を行いました。

MITOUJTAG BASIC 2.5から、2.6への大きな違いは、

  • XILINXケーブル接続機能 (標準で対応。使用制限なし)
  • XILINX 7 シリーズ対応
  • ネットリスト読み込み機能
  • シンプル基板検査機能の搭載

の4つです。

また、デバイスデータベースも更新されているので、最新のデバイスにすばやく対応できます。

では、その機能の概要を順番に見ていきましょう。

XILINX Platform Cable USB対応

MITOUJTAGがXILINXのPlatform Cable USBに正式に対応しました。パッチなどをあてずに、すぐに使うことができます。

MITOUJTAGなら、ALTERAのFPGAをXILINXケーブルで接続して、スキャンしたり書き込んだりすることもできてしまいます。

Mjbas260_xa2

写真 Platform USB Cable2でCyclone3に接続

ALTERAのFPGAも、XILINXのケーブルで料理できます。

Mjbas260_xa1

図 Platform Cable USBでCyclone3をスキャンしている様子

XILINX7シリーズ書き込み対応

Artix-7、Kintex-7、ZYNQへの書き込みができるようになりました。パッチなどを適用しなくても、デフォルトで対応しています。

Mjbas260_xil7

図 XILINX ZYNQ XC7Z030に書き込みをしている様子

ネットリスト読み込み機能

Orcad,PowerPCB,KiCAD,Telesis,図研CCFなどを読み込めるようになりました。読み込んだネットリストを見ながらバウンダリスキャンすることもできるので、ちょっと便利かもしれません。

Mj_netlist_6

図 ネットリストを読み込み、バウンダリスキャン結果を表示

シンプル基板接続検査機能

そして、最後のビッグな機能は、基板検査機能です。

バウンダリスキャンを用いて、基板上の信号ブリッジや、電源/GNDへのショートを簡単に発見できます。本来はMITOUJTAG Proの機能でしたが、お試しとして、MITOUJTAG BASICをインストール後1か月間使用できるようにしました。

1か月経過後はアンインストールして再インストールをすれば、くぁwせdrfgtyふじこlp;@:

Mjbas260_spc

図 基板の接続検査を行っている様子

このように便利な機能が盛りだくさんのMITOUJTAG BASICですが、今回からCD-ROMだけではなく、ダウンロードできるようにしました。

もちろん、お買い上げいただくとCD-ROMをお送りしているのですが、最近のパソコンにはCD-ROMドライブがないことがよくあります。そこで、CD-ROMの中身を、ユーザ様の利便性を考えて、お客様サイトからダウンロードできるようにしました。

ネットに使えない環境ではCD-ROMから、ネットがつながるならお客様サイトから、と使い分けることができます。

MITOUJTAG BASICのダウンロードはこちらのURLからできます。

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

では、快適なバウンダリスキャンライフをお楽しみください!

よくお問い合わせをいただくのは、「昔MITOUJTAGを買ったけど、しばらく更新していないからライセンスが切れているかもしれない」というものです。

大丈夫です!

ライセンスが切れていても、失効している期間があっても、構いません。

MITOUJTAGの延長サポートをご購入いただければ、最新のCD-ROMが届き、今から1年間のサポート(ダウンロードや技術的な問合せ)を受けることができます。

しばらく更新していないという方は、ぜひ、この機会に更新してください。

詳しくはこちらのページ http://www.tokudenkairo.co.jp/jtag/license.html をご覧下さい。

◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

最後までお読みいただき、ありがとうございます。

この2014年末に、MITOUJTAG BASICをお買い上げいただいた方や、Light版からバージョンパプしていただいた方、それから、延長サポートをご購入してくださった方、など、特電製品をお買い上げいただいた方に、感謝の気持ちをこめて「基板年賀状」を送らせていただくことにしました。

Nenga2015_8pix_2

(2015年になっていないのでモザイクをかけています)

基板年賀状は、プリント基板で作られた年賀状で、抵抗やコンデンサなどをはんだ付けすると、羊の目のLEDがチカチカするというものです。

今年は「強そうな羊」ということで、大変力強く、かつ、精緻なデザインに仕上がっています。

新年会のジョークグッズとして最適です。

基板年賀状を送らせていただくのは、12月に何か商品をお買い上げいただいた方の先着とさせていただきます。数に限りがございますので、どうかお早目にご注文ください。

| | コメント (0)

2014.12.18

基板年賀状、今年も作ります。

2015年の元旦に向けて、年賀状を作っています。

今回の年賀状は、「強そうな羊」です。

イメージは↓の図のような感じなのですが、2015年になるまでは、モザイクをかけておきます。

Nenga2015_2

全部で66枚作ります。知人・友人や、特にお世話になった方、それから12月に商品をご購入いただいた方にこの年賀状をお送りしようと思います。

実は、この年賀状、点描画なのです。

Tenbyouga

はたして直径8milの細かいシルクが出るかどうか!?

一応、1点だけのシルクもちゃんと出ることは過去に確認済みです。

どんな基板が出来上がってくるか、お楽しみに!

12月に商品をご購入いただいた方にお送りできる分は、だいたい50枚くらいになると思います。万が一、足りなくばった場合は先着とさせていただきます。

| | コメント (0)

2014.12.17

ハードウェア製品の在庫が僅少

特電のハードウェア製品の在庫がどれも少なくなってきました。

かなり危機的な状況です。

売れすぎて無くなったのではなく、11月末から生産がストップしてしまっているのです。

実は、いつも実装をお願いしていた実装屋さんが、12月が非常に立て込んでいるようで、新規の注文を受け付けてもらえない状態になってしまっていました。急遽いろいろな実装会社さんをあたってみたのですが、どこも12月はいっぱいみたいで、緊急で実装してくれるところは見つかりません。

それでも、Artix-7ボードと究極のRX62Nボードは、兼ねてから付き合いのあった別の会社※さんにお願いすることにしましたが、今年中に出来上がってくるかどうか微妙なラインです。

※以前から、受託開発品などBGAだらけで高密度な、難易度の高い基板をお願いしていところなので、技術力はピカイチ。

Artix-7ボードの在庫は、現在、

  • TKDN-ART-1 ・・・ 1個
  • TKDN-ART-2 ・・・ 2個
  • TKDN-ART-3 ・・・ 1個

しかありません。

0

Spartan-6ボードやその他の商品も、

  • TKDN-SP6-16 ・・・ 2個
  • TKDN-SP6-45 ・・・ 4個
  • FX3ボード ・・・ 3個
  • 18bit A/D変換ボード ・・・ 2個

しか残っていません。

MITOUJTAGの付属品である「Pocket JTAG Cable」は、実装をスタートしているのですが、中で使う2×7pinのボックスコネクタ(XILINXの14pinフラットケーブルを接続するコネクタ)をDigikeyで注文したところ、実装屋さんから「違うものが入っていた」と連絡がありました。なんと、LANコネクタが1個だけ入っていたようです。

Digikey_mistake


Digikeyのラベルは14pinコネクタになっているので、Digikeyの中の人が間違えたのでしょう。このタイミングでのミスは痛い!

というわけで、全体的にハードウェア製品が不足しています。

最近では円安進行のおかげで、部品の仕入れ価格も以前の3割増しに上がっています。また、今回から実装をお願いしている実装屋さんは単価が高いので、今後の製品の価格も上げざるを得なくなってきています。

したがって、来年からは一部の製品の価格を改定(つまり高くなる)させていただくことになるかもしれません。

何卒お早目にご注文をいただければ幸いです。

ご注文はオンラインショップでお待ちしております。

品切れの場合は何卒ご容赦ください。

| | コメント (0)

2014.12.15

MITOUJTAGで電源やGNDへのショートは発見できるか?

MITOUJTAGのシンプル基板検査機能を使って、信号線が電源やGNDにショートしているかを検出できかどうか、実験してみました。

犠牲になったのは、ALTERAのFPGAが乗ったDE0というボード。

De0

Cyclone3のEP3C16F484が乗っていて、バウンダリスキャンしてみると、こんな風にみえます。

De0_1

マニュアルを見れば、GPIOの端子がFPGAのどの端子につながっているかわかります。そこで、AB16とAA16、AA13とGND、U13と3.3Vをショートさせてみようと思います。

De0_2

念のため、ショートさせる前の状態で基板検査機能を実行してみると・・

De0_4

このように、AA13、AA16、AB16、U13の各端子はプルアップと表示され、どこにも接続されている箇所はありません。

では、基板をショートさせてみましょう。

De0_3_3

ショートさせてから基板検査を走らせてみると・・

De0_5

AA16とAB16の相互ショートと、AA13のGNDへの短絡、U13の3.3Vへの短絡が検出されました。

MITOUJTAGの簡易接続検査機能は、信号線どうしのショートだけではなく、電源やGNDへの短絡もわかるので、結構便利かもしれません!

さて、ここでお知らせです。

この接続検査機能は、MITOUJTAG Proだけの機能でしたが、

なんと、この冬、2014年12月末に発売するMITOUJTAG Light版にも搭載予定です。

ただし、MITOUJTAG Lightは、非営利目的の個人利用専用です。

本来はPro版だけに乗せるはずの機能を個人向けの廉価版に乗せるわけですから、ずーっと販売していくわけにはいきません。

今回発売するMITOUJTAG Light 2.7のみの限定機能で、しかも、期間限定かつ数量限定とさせていただきます。何卒ご了承くださいませ。MITOUJTAG Lightをご注文いただいた先着数名の方のみ、この新しい機能をお使いいただけます。数量限定ですので、どうかお見逃しのないようお願いします。

MITOUJTAG Lightの情報は当ブログで少しずつ公開していきます。

| | コメント (0)

2014.12.12

MITOUJTAGの簡易接続検査機能

MITOUJTAG Proには、簡易接続検査機能という、とーっても手軽な基板検査機能があります。

ネットリストとか細かい設定といった事前準備なしでいきなり検査しても、いろいろわかります。詳しい使い方は下記のページに書いたのですが、

http://www.tokudenkairo.co.jp/jtag/tutorial/tutorial1-12.html

とりあえず、どんなものかサワリだけ紹介します。

ここに、Spartan-6評価ボードがあります。

Spcb_16

よく見ると、右下の39と40と書かれたピンヘッダがはんだでブリッジしています。

こんなときに「簡易検査機能」を使うと・・

Spcb_17

このように、表示されます。

HDR_B_BP<34>という信号がHDR_B_BP<35>につながっていて、HDR_B_BP<35>がHDR_B_BP<34>につながっているのですから、ショートしているというわけです。

インターコネクトテストとは違い、FPGAが基板上に1個だけ、あるいはCPUが1個だけ、という基板でも、ショートしているのを発見できます。

目視やテスター、オシロではなかなか発見できないショートも、このツールを使えば3分以内に見つけられるのでなかなか便利ですよ。

ぜひお試しあれ!

| | コメント (0)

2014.12.11

FlashAirでWi-Fi JTAGができた!

昨日、セミナーを開催している間に、特電のスタッフが事務所でFlashAirをつかったWi-Fi JTAGの実験をしてくれました。

前回の記事では、Wi-Fi JTAGがなんとか動いているかどうかといった感じだったのですが、実際のデバイスとキャプチャしたIDCODEが違うという問題が起きていました。その原因は、使っていたボードに2つのJTAGデバイスが乗っていたためでした。

Fa_jtag_1

電気的な問題や、ソフト的な問題が起きていたわけではなかったようでひと安心。FlashAirのGPIOを直接JTAGデバイスにつないでもとりあえず動作はするのですが、安心のため、バッファを入れることにしました。

Flashair_jtag

相変わらず遅いですね~。緑がTMS、青がTDO、橙がTCKです。1bitの操作で0.2秒くらいかかっています。自動的にデータを送った時は、大体1回のHTTP GETの送受信に220~230ms掛かっています。

そのスタッフが、このFlashAirの操作をJavaScriptを使ってサクッと自動化してくれました。とても優秀なスタッフに恵まれて私は幸せです。

Chrome_jtag

このように、FlashAirのWi-Fi経由でJTAGのIDCODEを調べるスクリプトがブラウザの中で動いています。

-----------------------------------------------------------------
 JTAGを操作して、Device IDを読み込むデモです。
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x12"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x16"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x17"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x16"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x17"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x16"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x17"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x16"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x17"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x16"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x17"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x16"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x12"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x13"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x12"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x16"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x17"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x16"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x12"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x13"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x12"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x13"}
{"STATUS":"OK","CTRL":"0x0d","DATA":"0x12"}
FlashAirに書き込む平均待ち時間は :  228.91304347826087 [ms]でした。(N =  23  )
[1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1]
-----------------------------------------------------------------

ちゃんと、0xF5046093と見えています。これはXILINXのコンフィグROM、XCF04SのIDCODEですね。

わずか2日でここまでできるとは・・

次回は、複数のデバイスの認識に対応させたり、特電のWebサイト中にIDCODE→デバイス名の候補を調べるAPIを作ったりして遊んでみることにします。

| | コメント (0)

2014.12.10

第1回 MITOUJTAG実践セミナーを開催しました

本日、MITOUJTAG実践セミナーを開催しました。

はじめての試みだったので、うまくいくかどうか不安でありました。

いろいろな方からお申込みをいただいたのはよかったのですが、MITOUJTAGをすでにお持ちのお客様も、そうでない方もいらっしゃいました。基板検査を知りたいという方も、基本的な操作方法を知りたいという方も、いらっしゃいました。

その中でどんな内容のセミナーにするかを考えた結果、このような10種類のボードを用意し、それぞれのボードでのできることや「課題」をまとめて、一人10分くらいでいろいろなボードに触ってもらうという形式にしました。

Seminar01_boards

ARMのi.MXというSoCのボードでは、バウンダリスキャンを行うまえに見えないデバイスを追加しなければならない手順があったり、ALTERAのDE0ではフラッシュROMに書き込むためにはFPGAを未コンフィグしなければならない、ルネサスのSH7750RはIDCODEは持っているが自動認識できない・・など、そういうイレギュラーなケースも多くあります。

基板検査が目的の方にはBLANCAというボードをお渡しして、いろいろなところにジャンパをはめてもらって接続検査をしてみてもらいました。

午前の部は6名の方がいらっしゃいました。

Seminar01_am

午後の部は3名でした。

Seminar01_pm

いただいたご感想としては、

  • ロジアナの電源ONトリガが便利
  • 基板チェックの方法が試せた
  • いろいろと聞けて良かった
  • 基板のテストは、大変便利そうで、使いやすい
  • MITOUJTAGの今まで知らなかった使い方を学べた
  • とてもよかったです。今後も期待しています。
  • ボードごとに課題が用意されていてよかった
  • テスト基板の数が多かった。どういうところがうまくいかないのか分かった。
  • 実践的だったのが良かった。

などなど、好評な意見を数多くいただきました。

また、MITOUJTAGの改善点として、

  • Vivado(を介したXILINXケーブル接続)に対応してほしい
  • 基板検査で全信号をスキャンするのではなく、動かしていけない信号をSkipできるにしてほしい
  • 画面の拡大方法などわからないことがあった。ホームページに書いておいていただけると良い
  • (JTAGロジアナ画面で)方向キーで信号の複数選択ができなかったので改善してほしい
  • JTAGロジアナで波形をエクスポートできるようにしてほしい
  • JTAGロジアナで見たい波形だけフィルタしたい

などのご意見をいただきました。

セミナーのやり方については、

  • 一番聞きたかった内容(C言語制御)がなかった
  • 社長以外のスタッフも技術的な質問に対応できるようにしてほしい
  • 説明と実機確認が同時なかったので、実際の操作するときにとまどった。
  • 課題を解くための必要な説明がなかった。MITOUJTAGを使っていないとわからない内容と思います

など、たくさんの改善点もいただきました。

特に、C言語でバウンダリスキャン制御する方法については、ほとんど触れることができなかったので、それ専用に特化したセミナーを別途開催したほうがいいかもしれません。

全体的に思い返してみると、午前中はいろいろあたふたしてしまいましたが、午後はうまくできたと思います。

アンケートを見てみると、午後の部の方は全員「とても満足」と答えてくれていましたが、午前はちょっと満足度が低かったようです。

人数は、6名だと多くて質問が出たときにじっくりと対応できないという感じでした。3~4名くらいがちょうど良いと思いました。

次のセミナーからは午前MAX 4名、午後MAX 4名で、合計8名で募集するか、

  • 実践バウンダリスキャンセミナー(無料)
  • 基板検査&不良解析セミナー(有料 5000円くらい)
  • C言語で検査手順を作るためのセミナー(無料)

にわけて実施しようかなと思います。

| | コメント (7)

2014.12.08

MITOUJTAGでインターコネクトテストができるようになった

ついに、MITOUJTAGにインターコネクトテストの機能を追加できました。

今回も検証に使っているボードはBLANCAです。

Blanca_ic

MITOUJTAGの画面では3つのICが見えています。

Blanca_ic_1

ネットリストを読み込みます。

Blanca_ic_2

基板ファンクションテストツールを起動し、インターコネクトテストのモジュールを追加します。

Blanca_ic_3

すると、ネットリストから接続されている信号を抽出して、検査手順が自動的に生成されます。

Extest 2 U1 XC3S1500-FG456
Check _CFG_NCS_U1 2:AA3 U1 SYS_RST_PIN 1:58 U7 CFG0_NCS 
Check _L_NBE[0] 2:AA16 U1 L_NBE<0> 3:T4 U2 L_NBE<0> 
Check _L_NBE[1] 2:V17 U1 L_NBE<1> 3:D3 U2 L_NBE<1> 
Check _L_NBE[2] 2:AA19 U1 L_NBE<2> 3:E3 U2 L_NBE<2> 
Check _L_NBE[3] 2:W17 U1 L_NBE<3> 3:L5 U2 L_NBE<3> 
Check _L_NCS[0] 2:V14 U1 L_NCS<0> 3:M3 U2 L_NCS<0> 
Check _L_NCS[1] 2:AB16 U1 L_NCS<1> 3:N3 U2 L_NCS<1> 
Check _L_NCS[2] 2:W14 U1 L_NCS<2> 3:V1 U2 L_NCS<2> 
Check _L_NCS[3] 2:U14 U1 L_NCS<3> 3:V2 U2 L_NCS<3> 
Check _L_NCS[4] 2:AA13 U1 L_NCS<4> 3:T2 U2 L_NCS<4> 
Check _L_NCS[5] 2:U11 U1 L_NCS<5> 3:T1 U2 L_NCS<5> 
Check _L_NCS[6] 2:Y13 U1 L_NCS<6> 3:N2 U2 L_NCS<6> 
Check _L_NCS[7] 2:V5 U1 L_NCS<7> 3:M2 U2 L_NCS<7> 
Check _L_NINT[0] 2:W7 U1 IOP_NINT<0> 3:V3 U2 IOP_NINT<0> 
Check _L_NINT[1] 2:V7 U1 IOP_NINT<1> 3:V5 U2 IOP_NINT<1> 
Check _L_NINT[2] 2:U7 U1 IOP_NINT<2> 3:U2 U2 IOP_NINT<2> 
Check _L_NINT[3] 2:Y10 U1 IOP_NINT<3> 3:U4 U2 IOP_NINT<3> 
Check _L_NRD 2:U13 U1 L_NRD 3:U11 U2 L_NRD 
Check _L_NWAIT 2:V13 U1 L_NWAIT 3:U7 U2 L_NWAIT 
Check _L_NWR 2:W13 U1 L_NWR 3:U10 U2 L_NWR 
Check _PCI_NDEVSEL 2:B11 U1 PCI_NDEVSEL 3:C18 U2 PCI_NDEVSEL 
Check _PCI_NFRAME 2:C12 U1 PCI_NFRAME 3:A11 U2 PCI_NFRAME 
Check _PCI_NINTA 2:B13 U1 PCI_NINTA 3:A12 U2 PCI_NINTA 
Check _PCI_NINTB 2:A13 U1 PCI_NINTB 3:A13 U2 PCI_NINTB 
Check _PCI_NINTC 2:C18 U1 PCI_NINTC 3:E12 U2 PCI_NINTC 
Check _PCI_NINTD 2:D18 U1 PCI_NINTD 3:C13 U2 PCI_NINTD
・・・
Check ROM_A[6] 1:120 U7 ROM_A<6> 2:A4 U1 ROM_A<6> 
Check ROM_A[7] 1:119 U7 ROM_A<7> 2:B4 U1 ROM_A<7> 
Check ROM_A[8] 1:118 U7 ROM_A<8> 2:A9 U1 ROM_A<8> 
Check ROM_A[9] 1:117 U7 ROM_A<9> 2:B9 U1 ROM_A<9> 
End

そして、スタートボタンを押しますと・・

Blanca_ic_4

接続検査ができました!

1つ1つの配線がつながっているかどうかを、この手順に従って検査してくれます。

-------2014/12/08 21:43:59 スクリプト実行開始-------
2番目のデバイス(U1:XC3S1500-FG456)から信号を出力します。
信号'_CFG_NCS_U1'の接続を検査します。
  デバイス'U1' ピン名'SYS_RST_PIN' ピン番号'2:AA3' => 初期値:プルアップ
   => U7:CFG0_NCS(1:58) への接続 STA=b 正常
信号'_L_NBE[0]'の接続を検査します。
  デバイス'U1' ピン名'L_NBE<0>' ピン番号'2:AA16' => 初期値:プルアップ
   => U2:L_NBE<0>(3:T4) への接続 STA=b 正常
信号'_L_NBE[1]'の接続を検査します。
  デバイス'U1' ピン名'L_NBE<1>' ピン番号'2:V17' => 初期値:プルアップ
   => U2:L_NBE<1>(3:D3) への接続 STA=b 正常
信号'_L_NBE[2]'の接続を検査します。
  デバイス'U1' ピン名'L_NBE<2>' ピン番号'2:AA19' => 初期値:プルアップ
   => U2:L_NBE<2>(3:E3) への接続 STA=b 正常
信号'_L_NBE[3]'の接続を検査します。
  デバイス'U1' ピン名'L_NBE<3>' ピン番号'2:W17' => 初期値:プルアップ
   => U2:L_NBE<3>(3:L5) への接続 STA=b 正常
信号'_L_NCS[0]'の接続を検査します。
  デバイス'U1' ピン名'L_NCS<0>' ピン番号'2:V14' => 初期値:プルアップ
   => U2:L_NCS<0>(3:M3) への接続 STA=b 正常
信号'_L_NCS[1]'の接続を検査します。
  デバイス'U1' ピン名'L_NCS<1>' ピン番号'2:AB16' => 初期値:プルアップ
   => U2:L_NCS<1>(3:N3) への接続 STA=b 正常
信号'_L_NCS[2]'の接続を検査します。
  デバイス'U1' ピン名'L_NCS<2>' ピン番号'2:W14' => 初期値:プルアップ
   => U2:L_NCS<2>(3:V1) への接続 STA=b 正常
信号'_L_NCS[3]'の接続を検査します。
  デバイス'U1' ピン名'L_NCS<3>' ピン番号'2:U14' => 初期値:プルアップ
   => U2:L_NCS<3>(3:V2) への接続 STA=b 正常
信号'_L_NCS[4]'の接続を検査します。
  デバイス'U1' ピン名'L_NCS<4>' ピン番号'2:AA13' => 初期値:プルアップ
   => U2:L_NCS<4>(3:T2) への接続 STA=b 正常
信号'_L_NCS[5]'の接続を検査します。
  デバイス'U1' ピン名'L_NCS<5>' ピン番号'2:U11' => 初期値:プルアップ
   => U2:L_NCS<5>(3:T1) への接続 STA=b 正常
信号'_L_NCS[6]'の接続を検査します。
  デバイス'U1' ピン名'L_NCS<6>' ピン番号'2:Y13' => 初期値:プルアップ
   => U2:L_NCS<6>(3:N2) への接続 STA=b 正常
信号'_L_NCS[7]'の接続を検査します。
  デバイス'U1' ピン名'L_NCS<7>' ピン番号'2:V5' => 初期値:プルアップ
   => U2:L_NCS<7>(3:M2) への接続 STA=b 正常
信号'_L_NINT[0]'の接続を検査します。
  デバイス'U1' ピン名'IOP_NINT<0>' ピン番号'2:W7' => 初期値:プルアップ
   => U2:IOP_NINT<0>(3:V3) への接続 STA=b 正常
信号'_L_NINT[1]'の接続を検査します。
  デバイス'U1' ピン名'IOP_NINT<1>' ピン番号'2:V7' => 初期値:プルアップ
   => U2:IOP_NINT<1>(3:V5) への接続 STA=b 正常
信号'_L_NINT[2]'の接続を検査します。
  デバイス'U1' ピン名'IOP_NINT<2>' ピン番号'2:U7' => 初期値:プルアップ
   => U2:IOP_NINT<2>(3:U2) への接続 STA=b 正常
信号'_L_NINT[3]'の接続を検査します。
・・・
・・・
  デバイス'U7' ピン名'ROM_A<8>' ピン番号'1:118' => 初期値:プルアップ
   => U1:ROM_A<8>(2:A9) への接続 STA=b 正常
信号'ROM_A[9]'の接続を検査します。
  デバイス'U7' ピン名'ROM_A<9>' ピン番号'1:117' => 初期値:プルアップ
   => U1:ROM_A<9>(2:B9) への接続 STA=b 正常
385個の配線を検査し、0個の異常を発見しました
-------2014/12/08 21:44:06 スクリプト終了-------

この検査では、あるソース信号をH→Z→L→Zと変化させ、目的の端子がどのように変化するかを見ています。そして、

  • 目的の端子に正しく接続されているか?
  • オープンか、ショートか、もしくは抵抗でプルアップか、プルダウンされているか?

を検査対象のすべての端子に対して検査していきます。

現時点ではこの検査手順も、検査結果の表示もテキストですが、ゆくゆくはGUI化していきたいと思います。

| | コメント (0)

2014.12.05

MITOUJTAGがVivadoの制約ファイルxdcを読み込めるようになった

XILINXの論理合成ツールVidadoでは、ピン定義などの制約がUCFではなく、xdcというファイルに変わりました。今までのMITOUJTAGでは制約ファイルのUCFや、成果物ファイルのPADは読み込めたのですが、Vivadoの制約「XDC」には対応していませんでした。

そんなある日、昨日ですが、Vidadoで使っていらっしゃるお客様がVivadoのピン定義が読み込めないという問合せがあったので、本日、すぐに対応しました。

検証用にVivadoのツールの中に入っているサンプルデザインを使いました。

このサンプルデザインは、FPGAの型番はxc7k70tfbg676のようでした。MITOUJTAGを起動して、デバイスを追加します。

Mj_vivado_1

壮観な風景ですね。

そして、このKintexの上にマウスを合わせ右クリックし、「ピン定義ファイルの登録」を実行します。

Mj_vivado_5

そして、Vivadoの論理合成で指定したxdcファイルを選択します。

Mj_vivado_4

XDCファイルはこんな感じのファイルで、

Mj_vivado_2

どうやら、

set_property PACKAGE_PIN ピン番号 [get_ports 信号名]

という書式でピンの定義が並んでいるようです。

ちゃんと読み込めたかどうかは、ロジアナモードにして確認します。

Mj_vivado_3

このとおり、XDCの中にあるピン定義が読み込まれています。

MIOUJTAGはVivadoの制約ファイルを読み込めるようになりました。

こちらのURLからダウンロードしていただけます。

https://www.tokudenkairo.co.jp/login2/getfile.php?target=MJVIVADO_PATCH

今回の対応はお客様からのご要望を反映したものです。MITOUJTAGについてご意見ご要望などあればぜひぜひお寄せください。

| | コメント (0)

2014.12.04

MITOUJTAGに基板接続検査機能を開発中

MITOUJTAGに基板接続検査機能を開発しています。

基板の接続検査に便利なのは、BLANCAという評価ボードです。

Mj_intercon_blanca

このボードは、3つのCPLDとFPGAがバスでがっちり結ばれているので、接続検査のテストには最適なのです。

Blanca_connect

まず、MITOUJTAGで認識すると・・

Mj_ictest_1

このように3つのICが見えます。

そして、ネットリストを読み込みます。

Mj_ictest_2

そしたら、基板検査ツールを立ち上げ、デバイスの割り当てという作業を行います。

この作業は、U1のXC3S1500がJTAGの2番目、U2のXC3S400がJTAGの3番目、U7のCPLDがJTAGの1番目のデバイスであることをツールに知らせるものです。

Mj_ictest_3

そして、検査モジュールの「インターコネクトテスト」を読み込むと・・

Mj_ictest_4

検査すべき手順を自動的に生成してくれました。

これは、ネットリストを読んで、JTAGデバイス同士がつながっているところを探して列挙したものです。JTAGデバイス同士であっても、入力専用ピンからは出力しないようになっていますし、GNDにつながっているような端子は動かさないようにしています。

そして、実行ボタンを押すと・・

この手順に沿ってバウンダリスキャンを実行してくれるというわけです。

Mj_ictest_5

今日のところはまだ実際のバウンダリスキャンを実行するところまではできていませんが、あと1日くらいでできるでしょう。

① デバイスを自動認識する
② ネットリストを読み込む
③ ネットリスト上のICと、JTAGチェーン上のデバイスを結びつける
④ インターコネクト・アルゴリズムを選ぶ
⑤ 実行ボタンを押す

という簡単な手順で接続検査ができるようになるまで、あと少しです!

| | コメント (0)

2014.12.03

FlashAirのGPIOモードでJTAGを操作する

最近、FlashAirというWiFi対応SDカードから、GPIOが出せるとかなんとかいうことで、人気のようです。そこで、特電は特電らしく、FlashAirをWiFi-JTAG化できないかと思い、試してみることにしました。

つまり、FlashAirを単体で、無線LAN経由のJTAGアダプタにしてしまおうというわけです。

FlashAirのチュートリアルはこちらにあります。

https://flashair-developers.com/ja/documents/tutorials/arduino/1/

知りたい点は2つです。

  • JTAG化したときに、どのくらいの速さが出るのか?
  • 1bitごとに1パケット送るのか?バルク転送みたいなものが存在しないか?

早速、FlashAirを入手し、ピッチ変換基板と万能機版で治具を作りますした。そして、適当な評価ボード(ここではXILINXのSpartan-3A評価ボード)のJTAG端子に、FlashAirのGPIOとなった各端子を接続します。

Fa_jtag_1

GPIO機能を使うためには、IFMODE=1かつ「ホスト側からの初期化がない」場合だそうです。その時、CMDとD1~4がGPIOになるようです。よって、端子の割り当ては、

SDカード端子名  ビット  JTAG機能割当てピン
CMD/SDI         0x01    TCK
D0/SDO          0x02    TDO
D1              0x04    TMS
D2              0x08    -
D3/CS           0x10    TDI

としました。

IFMODEに関しては、/SD_WLAN/CONFIGというファイルに書き込んで設定します。

FlashAirのCONFIGファイルはこんな感じです。

[Vendor]

CIPATH=/DCIM/100__TSB/FA000001.JPG
APPMODE=6
APPNETWORKKEY=********
VERSION=F19BAW3AW2.00.03
CID=●●●●●●●●●●●●●●●●●
PRODUCT=FlashAir
VENDOR=TOSHIBA
BRGSSID=●●●●●●●●●●●
BRGNETWORKKEY=******************
IFMODE=1
MASTERCODE=●●●●●●●●●●
LOCK=1
APPSSID=flashair_●●●●●●●●●●
FORMATSETMODE=1

固有情報やSSIDなどは●で隠していますのでご了承ください。

転送速度ですが、

「Maker Faire Tokyo 2014:メイカーは「リレカチ」がお好き (2/2) - MONOist(モノイスト) 」http://monoist.atmarkit.co.jp/mn/articles/1412/01/news068_2.html
を見ると、約1.8bpsと書いてある。遅いですね…

FlashAirのファームウェアの更新に期待します。簡単なプログラムが使えるようになるか、バルク転送のようなものができるといいのですが・・

FlashAirのGPIOにアクセスするには、HTTPのGETやPOSTでデータを送るようです。つまり、

http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x05

のようにしてアクセスすると、0x05に対応した値にGPIOが変化するというわけです。

Fa_jtag_2

気が遠くなりそうな話ですね・・

ちょっと気になった点は、FlashAirのI/Oの出力駆動能力があまり高くないかもしれないということです。

実際にSDカードの端子5つに100Ωを介して赤色LED(Vf≒2V)を接続したところ、GPIO出力が3.28V→2.8Vまで電圧降下した。8mA程度までしか流せないのかもしれません。

さて、いよいよJTAGの信号を出してみることにします。

まずはターゲットICのIDCODEを調べましょう。

JTAGのIDCODEを調べるためには、

  • TMS='1'にしたあとTCKを5cycle、のちTMS='0'
  • TMS='0'でTCKを1cycle
  • TMS='1'にしたあと、TCKを1cycle
  • TMS='0'にしたあと、TCKを2cycle
  • 以後、TMS='0'のままTCKをたくさん与える
    TCKの立ち下がりで、TDOに1bitずつ、LSBからIDCODEから出力される。

実際に、URLを全部手打ちでGPIOを操作し、受信してみました。

command.cgiに、?op=190&CTRL=0x1f&DATA=0x05 のように引数を付けるとGPIOからその値が出力され、ブラウザの画面にGPIOを読んだ値が表示されます。

いわゆるJSON形式なのでしょう、

 {"STATUS":"OK","CTRL":"0x1f","DATA":"0x1f"}

のように表示されます。

FlashAirに対し、ベタに何度も何度もアクセスします。

URLに投げたGETリクエストは、以下のようなもの
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x00	// clear

http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x04	// TMS up

// TMS = 1, 5cycle
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x05	// TCK raise
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x04	// TCK fall
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x05
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x04
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x05
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x04
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x05
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x04
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x05
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x04	

http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x00	// clear

// TMS = 0, 1cycle
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x01	// TCK raise 
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x00	// TCK fall

// TMS = 1, 1cycle
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x04	// TMS up
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x05	// TCK raise
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x04	// TCK fall
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x00	// clear

// TMS = 0, 1cycle
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x01	// TCK raise 
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x00	// TCK fall

// TMS = 0, 1cycle
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x01	// TCK raise 
http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x00	// TCK fall

// now we can read TDI @ 32cycles...
http://flashair/command.cgi?op=190&CTRL=0x0D&DATA=0x01	// TCK raise 
http://flashair/command.cgi?op=190&CTRL=0x0D&DATA=0x00	// TCK fall
// read TDI

http://flashair/command.cgi?op=190&CTRL=0x0D&DATA=0x01	// TCK raise 
http://flashair/command.cgi?op=190&CTRL=0x0D&DATA=0x00	// TCK fall
// read TDI
※以下、上の0x01、0x00を繰り返し、[7..0]中の[1](TDI)を読み出す。

すると、

LSB(最初に受信した方)		MSB
1100100100000110001000001010111110010
3   9   0   6   8   0   5   F   B   0

正解のIDは22628093ですから、

MSB							 LSB
00100010011000101000000010010011
2   2   6   2   8   0   9   3

こうなるはずです。近いような値だけど、微妙に違っているので、やはりFlashAirの出すJTAG信号はFPGAが正常に認識できていないようです。その原因としてTCKの波形の鈍りが疑わしいので、次回はバッファを入れて試してみることにします。

| | コメント (0)

« 2014年11月 | トップページ | 2015年1月 »