« 2008年10月 | トップページ | 2008年12月 »

2008.11.30

MITOUJTAG Pro. 2.0.4リリースします

最近、MITOUJTAG Proを注文していただけることが増えてきました。

しかし、今のMITOUJTAG Pro(2.03a)は不可解な動作が多く、これではさすがにまずいと思い、この3日間徹夜してMITOUJTAG Proを改良しつづけました。

じつは9月に「子ウィンドウによってツールバーが変わる」という改良をおこなったのですが、この改良が大失敗でした。

作業内容(アクティブなMDI子ウィンドウ)によってツールバーが変われば便利かと思ったのですが、BorlandC++ Builder(いや、Windowsの仕様?)ではツールバーへのボタンの追加や削除がやたらと面倒で遅いのです。使うなと言っているとしか思えない機能でした。
しかも、この改良を行ったときから、Abstractエラーとかいう極めて不可解なエラーを発生するようになりました。

問題の原因は次のとおりでした。ツールバーのボタンを押すとOnClickイベント関数が実行されますが、この関数の中でアクティブなMDI子ウィンドウが変わることもあるので、ツールバーのボタンも変わってしまい、イベント関数がリターンするときに自分自身がいなくなっているので、大変なことになるのです。

諸悪の根源は、ツールバーが動的に変わるしくみだったので、それをやめました。かわりに、現在アクティブなウィンドウの内容や現在できる操作によって、ツールバーのアクティブなボタンが変わるようにしました。
これが大正解。もう、不可解なランタイムエラーは全く発生しなくなりました。

またついでに、現在できない操作(バウンダリスキャンのCLAMP命令をもっていないデバイスにCLAMP命令を発行するとか)や、してはいけない操作(ロジアナ実行中にケーブルを切断するなど)はできないようになったので、とても操作性がよくなりました。

Bscancpld
バウンダリスキャン画面で、CPLDを選択した状態

Logiana
ロジアナウィンドウがアクティブな状態

Ajfg
JTAGスクリプト編集画面

Windowsアプリケーションとしてはごくあたりまえのことなのですが、プログラムの規模が大きいので、ボタンを押す順番とか様々な可能性を考えていたら、丸2日くらいかかっていました。


また、タスクマネージャというものを作りました。
Task

これは何をするものかというと、JTAGではたとえば、
・JTAGバウンダリスキャン(端子の観察)を連続で行う
・JTAGロジアナでキャプチャする
・JTAGスクリプトを実行する
・SVFプレイヤーを実行する
・フラッシュROMへの書き込みを行う
・FPGAやCPLDへ書き込みを行う
などの操作は、互いに排他的であって、かつ、「実行」「停止」という概念があります。
つまり、FPGAに書き込みながらロジアナでキャプチャすることはできません。

そのため、各ウィンドウごとに「実行」や「停止ボタン」を作るのではなく、システムが今なんの作業をしているかを1箇所で管理できるようにしました。
ロジアナの画面をアクティブにして「実行ボタン」をおせばロジアナが開始するし、JTAGスクリプトの編集画面で「実行ボタン」を押せばスクリプトがコンパイルされて実行されます。各種機能の「停止」はどの画面からでもおこなえます。このちょっとしたしくみが実はすごく快適でした。ようやく自信が持てるようになってきました。

このほかにも10個くらい大きなバグをとったので、ようやく出荷です。
ただ今ご注文いただいているお客様には、MITOUJTAG Pro version 2.0.4をお届けします。

Mjpro204

どうぞよろしくお願いします。

| | コメント (0)

2008.11.27

トラ技78Kマイコンの各種アプリケーションを公開しました

下記のアプリケーションを公開しました。
・講演で使用したデモ用プログラムとソースコード
・JavaScriptからシリアルポートへアクセスするActiveXの使い方と、そのソースコード
・トラ技78KマイコンをAdvanced/W-ZERO3 [es](たぶん、Windows Mobileなら何でもOK)で使用するためのドライバ。ただし作りかけなので最後まで動かない。
・トラ技78KマイコンをUSB-JTAG化するパッチ
・DOS用USB-JTAG書き込みツール
など

場所は、「トラ技付録78K基板を使おう」のページです。

ソースコードのダウンロードにはET2008のCQ出版ブースでの講演の際にお伝えした「秘密のフレーズ」が必要です。ET2008での講演資料もあわせて公開しました。ET2008は1週間も昔の話ですので、秘密のフレーズが思い出せない方は是非とも上記資料をご覧下さい。

78kアプリケーション


| | コメント (2)

2008.11.26

PCI Experssの連載がはじまりました

Interface2009年1月号から、PCI Expressの連載「徹底解説 作ればわかるPCI Express」がはじまりました。
私が記事を書かせていただくことになりました。

If0901

全部で16回くらいの連載になると思います。「徹底解説 作ればわかる」なんて挑戦的な名前ですが、これはIPコアを自分で作ろうという企画だからです。

いままで雑誌の記事や代理店の開催するセミナーなどでPCI Expressが解説されたことは何度もありましたが、それらは市販のIPコアを如何にして自分のボードに乗せるかという話がメインでした。こういったセミナーでは、IPコア自体を作るための情報は得られませんでした。(代理店はIPコア屋さんのIPコアを売るのが目的ですから、セミナーでIPコアの作り方を説明するはずはありません。当然です。)

このInterfaceの連載を全部読むと、PCI ExpressのIPコアが自分で作れるようになるという、とっても気の長~い企画です。
どうか皆様、最後までお付き合いいただければ幸いです。

そして今日、第二回の原稿を書いています。〆切をとうに過ぎています。編集者さんゴメンなさい。

| | コメント (0)

2008.11.25

ET2008出展報告3日目

3日目はIPAブースでの講演がありました。
1日目は資料を60部刷っていったら完売だったので、75部刷ったところ、10部ほど余りました。なので、お客様はおそらく60人強だったと思います。

講演のコツは、自分がノリノリになって喋ることだと心得ました。
Et2008_3

また、今回のように会場が出入り自由の場合、途中からお聴きいただくお客様も多いので、プレゼンの随所に「この製品が解決する問題」や「前提条件」などを繰り返しいれるのも、大事なことだと思います。

3日間を振り返ってみて、ET2008に参加してみて、とてもよい経験ができました。
レセプションパーティやVIPルームの存在も今年初めて知りました。レセプションパーティは大事ですね。業界の要人たちと直接話ができます。本当に大事な情報はネットや紙の上にはなく、人の頭の中にある、とは私の師の言葉ですが、まさにそのとおりです。
レセプションパーティに出席したのは、某社の人をつかまえてパートナー提携やサードパーティの話を切り出したかったからなのですが、その会社の方は残念ながらいらっしゃっていなかったようでした。

もちろん、展示会場で非常に多くの方にMITOUJTAGを見ていただき、驚いてもらうことができたのはいうまでもありません。MITOUJTAGをすでに使っているというお客様が尋ねていらっしゃるのも、嬉しい限りです。

できることなら来年も出たいですね。
来年も出られるとしたら、2日目のETフェスタのときに、自ブースでお酒を振舞いたいです。電気系の展示会なので、もちろん「電氣ブラン」でしょう。


| | コメント (5)

ET2008出展報告2日目

ET2008疲れのため遅くなりましたが、出展報告です。

2日目はCQ出版様のブース内でのミニ講演がありました。
78K基板によるI/O制御入門という題目でした。

講演にいらしゃったお客様の数は去年よりは少なめだったと思います。最初はがらがらだったので焦りました。終盤にかけてだんだんお客様の数が増えてきたので安心してきました。

しかし、隣のブースでの講演のマイクの音が大きくて、私が喋るリズムが崩され、あまり上手に喋れませんでした。
思い起こせば、ある会社に営業に出かけたとき共同会議室みたいなところでプレゼンしたことがあって、すぐ隣で別の人がマイクを使って大きな声で喋っていたら、それが気になってしまって、自分が全然上手く喋れなかったということがありました。今後のことを考えると、隣で別の人が大きな音で喋っている状況でも、自分のペースを崩さずに喋ることができるような訓練をしたほうがよいなと思いました。

さて、講演の内容は、ActiveXを作ってJavaScriptから78Kマイコンを制御できるようにしたり、WindowsMobile端末からの使用方法、万能書き込み器、万能JTAGライタなど、我ながら入門ではない内容だったと思います。

78KやR8C、PICやAVRなど、様々なワンチップマイコンはみな書き込みアルゴリズムが異なりますが、各マイコンのアルゴリズムに対応した書き込みバイナリをネットからダウンロードして78KマイコンのRAM領域にオンデマンドで転送し、万能の書き込みアダプタが実現できたらいいな、ということです。
JTAGについては、万能のUSB-JTAGが可能かどうか、近日中に実験を開始します。

CQミニブースでの講演の途中、78Kマイコンを実際に動かすデモをしようとしたら、ノートPCのUSBポートが認識されなくなっていました。これには焦りました。
パソコンを再起動しようかと思いましたが、全アプリケーションを終了してUSBポートを挿し替えたら動いたので九死に一生を得ました。2つあるUSBポートのうちの片方が、突然認識されなくなってしまったようです。両方でなくてよかったです。

| | コメント (0)

2008.11.20

ET2008出展報告 1日目

ET2008の1日目
10時を少し回ったころようやく会場のセットアップを終え、当社ブースはこんな感じになりました。

Et2008_1

残念ながらこの日は、トラ技マイコンのUSB-JTAG化するデモは実演できませんでした。simさんごめんなさい。78K基板の入ったNECの箱を持っていた方がsimさんですね。
ノートPCにそのパッチを入れるのを忘れていました。
78K-USB-JTAGは、2日目のCQ出版ブースでの講演にむけて、今からセットアップします。
CQ出版ブースでの講演には間に合うと思います。

15:30からIPAでの講演がありました。9月某所での講演の反省を踏まえて原稿をわかりやすくなるよう作り直しました。途中から参加する方もいらっしゃるので、同じ説明を何度か繰り返したりもします。
講演ではFPGAの評価ボードにMITOUJTAGをつないでデモし、バウンダリスキャンをしているFPGAの画像をプロジェクター映しました。多くの方がいらっしゃっていたようで盛況でした。60部ほど作った講演資料はあっという間になくなりました。
Et2008_2

家に帰ると、P板.comに発注したPCI Expressの基板が届いていました。
おおっ、どこかで見たことのあるパターンだ!設計したとおりに出来上がっている!
Pcieboard

細いパターンもこのとおり。ばっちりできています。
ビアをtent(ビアのランドとホールにもレジストを施し完全に覆ってしまうこと)にしたら、ビアの上にも多少はシルクが描けるようでした。
Pcieboard2

| | コメント (2)

2008.11.19

将来のJTAGアプリケーションを考えてみた

ようやく、ET2008の講演資料を書き終えました

今年はCQ出版様とIPA様の2箇所で講演をさせていただくことになりましたが、内容は全く別物のつもりで描いていました。しかし、原稿を書いていて、2つの講演の結論が同じところにたどり着きました。
これが、私が将来的にやりたいことだなと実感しました。

無数の小さなワンチップマイコンが、PHSを介してネットワークにつながります。
無数のワンチップマイコンがネットにつながる

そして、そのネットワークを経由して、ワンチップマイコンにJTAG信号を発生させ、ターゲットボードをバウンダリスキャンするのです。
インターネット経由でJTAGデバイスに書き込み

上の2枚の絵が、近い将来、特電が作るであろうJTAGアプリケーションの姿であるような気がします。

つまり、JTAGの難しい部分をクラウドの中のサーバ側に上げてしまって、JTAGインタフェースやクライアントPCの中のプログラムはごく簡単にする。そして、携帯電話やPHSなどのモバイル機器からMITOUJTAGのようなリアルタイム・視覚的バウンダリスキャンを実行できるようにするのです。

つまり、トラ技の付録78KUSBマイコンをUSB-JTAGに改造して、ローカルPCのUSBポートに挿せば、78KマイコンのI/OポートからJTAG信号がでてきて、ターゲットボード上のFPGAやCPLDに書き込みができるというものです。
もちろん、JTAG-ICEのようなアプリもWebにもっていくことを考えています。

このアプリケーションのなにが嬉しいかというと、
 ・ローカルPCにアプリケーションをインストールしなくて良い
 ・最新のデバイス書き込みアルゴリズムが、すぐ使える。アップデートしなくてよい。
 ・BSDLファイルを入手しなくてもバウンダリスキャンができる
 ・ターゲットボード(FPGAなどが乗ったハードウェア)が手元になくても、とりあえずバウンダリスキャンの雰囲気が味わえる
 ・組み込み分野以外の人でも、Webサイトをみるだけでバウンダリスキャンの雰囲気が味わえる
などなどです。
 ・バウンダリスキャン可視化の画面と、JTAGで物理的に操作されるハードウェアは別の場所にあってもよい。

すでに、こういった機能を実現するサーバは80%ほど出来ていて、まもなくJTAG書き込みサービスを最初に開始できる見込みです。このサービスは無償でも使えるようにします。

そして、今年の12月には下の図のような、MITOUJTAG/WebScanというサービスを開始しようと思っています。
Webブラウザ上で動く汎用バウンダリスキャンツール

上の画像をクリックすると、MITOUJTAG/WebScanのデモページへジャンプします。
まだ実際のハードウェアにはつながっていないので、画面に出てくる絵はすべてダミーなのですが、MITOUJTAGの雰囲気は味わえます。
ぜひとも遊んでみてください。

| | コメント (0)

2008.11.16

トラ技78KマイコンとAdesの接続

トラ技78KマイコンをWillcomのPHS「AdEs(Advanced W-ZERO3 es)」に接続することに成功しました。
ようやく、最初のパケットの送受信ができました。

78k_wm_1

78k_wm_2

WindowsCE(Mobileも含む)は、USBポートに何かが挿入されると、そのUSBデバイスのVIDとPIDを取得し、レジストリを検索してUSBデバイスドライバを探します。
候補となるデバイスドライバがみつかると、USBDeviceAttach関数が呼ばれます。
USBDeviceAttach関数はActivateDevice関数を呼んでデバイスドライバをシステムに登録する処理を行います。

CEのデバイスドライバはユーザモードで作ることができるので、ダイアログを出したり何でもやりたい放題です。ていうか、ただのDLLです。なので、最初のUSBDeviceAttachの中で、VendorRequestやBulkTransferを実行して、トラ技78Kマイコンと通信してみたというわけです。


とりあえず、AdEsと78Kマイコンがつながることがわかりました。
あとはCreateFileやReadFile、WriteFileなどの関数を作ればそれなりにデバイスドライバらしくなりそうです。
ETには間に合わないかもしれません。
今回のデバイスドライバを作成するにあたって参考になった資料とWebページを挙げておきます。

(1) Interface 2007年7月号 Windows Embedded CE用USBモデムドライバの製作(前編)
と、上記のプログラム(コードギア株式会社のWebサイト内)。
WindowsCE用のUSBデバイスドライバのしくみについて解説されています。
とても参考になるソースコードも公開されています。

(2) ゾロさんの「進め!モゥ~ばいるコンピューター」内の「USB Device Driver」。
WindowsCE用のUSBデバイスドライバがPnPで認識されてシステムに組み込まれる過程の解説が秀逸です。とても参考になるソースコードも公開されています。

(3) ブログ「なんでも作っちゃう、かも。」におけるトランジスタ技術8月号USBマイコン基板を試す(2)。の記事。
トラ技BIOSの起動時のパケットを解析されています。

(4) bird.dip.jpさんのブログにおけるトラ技付録 78K0 マイコン (2) の記事。
同じく、トラ技BIOSの起動時のパケットを解析されていて、Perlで動くサンプルコードもあります。

貴重な情報を公開していただいた皆様に感謝いたします。
なお、トラ技78KマイコンのOpenするためのVendorRequestは、0x03,0x01のコマンドだけでよいようです。
それ以外のDTRとかはやらなくても通信できるようでした。

このドライバがまともに動くようになったら、公開予定です。

| | コメント (0)

2008.11.14

ET2008に出展します

特殊電子回路は、来週、パシフィコ横浜にて開催されるET2008に出展します。


当社ブースの場所は、
ホールNo.E-27
情報処理推進機構殿ブースの中にあります。

以下の内容での展示を予定しております。

・FPGAを論理合成せずに動かす新製品 「MITOUJTAG Pro」のデモ展示
・MITOUJTAG体験版CD-ROM配布
・その他

講演は、2種類、計3回を予定しています。
どちらも実機デモをふんだんに交えて楽しい内容にしたいと思っています。

・11/19(水)15:30-15:50 IPAブース (ホールNo.E-27)
 「JTAGってどうつかう!?~常識破りの組込みデバッグ方法~」

・ 11/20(木) 13:00-13:30 CQ出版ブース (ホールNo.E-45)
 付属78K/USBマイコン基板によるI/O制御(応用編)
~ JavaScript・携帯電話/PHSによる78K基板操作から汎用USB-JTAGアダプタの製作まで~

・11/21(金)12:30-15:50 IPAブース (ホールNo.E-27)
 「JTAGってどうつかう!?~常識破りの組込みデバッグ方法~」


CQ出版殿での講演では、トラ技78Kマイコンの応用例についてデモします。
 (1) WebブラウザからJavaScriptを使って操作する方法
 (2) 携帯電話(WillcomのPHSですが)やPDAから操作する方法
 (3) 78Kマイコンを使ってもう1台の78Kマイコンをプログラミングする方法
 (4) 78Kマイコン基板をUSB-JTAG化する方法
のデモを行います。

Webブラウザから78Kを操作するためJavaScriptとActiveXを作りました。Webブラウザから78Kマイコンを操作するのはとても快適です。是非とも実際にごらんください。もちろん、ActiveXはソースコード込みで公開して、誰でも自由に利用できるようにします。

また、PHSから操作するためにはWindowsMobileのデバイスドライバを作ります。これは講演に間に合うかどうか微妙です。

また、トラ技78Kマイコンで作ったUSB-JTAGアダプタを操作するソフトウェアは、MITOUJTAG体験版で扱えますが、もっと軽い、フリーソフトのJTAGアプリケーションも作ろうとしています。

各種デモで使用したプログラムはフリーソフトとして公開予定です。ソースコードのダウンロードURLは講演の中でお知らせします。

CQ出版殿ブースでの講演の予稿は、組み込みねっとで公開してもらいました。どうぞご覧ください。
予稿PDFへのリンク

講演自以外は私なひたふは概ね自ブースにおりますので、いつでもお気軽にお越しください。
多くの皆様のご来場をお待ちしております。

| | コメント (2)

2008.11.13

トラ技78KマイコンでUSB-JTAGを作る

トラ技78Kマイコン基板を使って、誰もが無料で使えるようなUSB-JTAG環境を作ろうと思っています。
78K USB-JTAGでのMAX2 書き込み風景

7月ごろにはじめた78KマイコンのUSB-JTAG化プロジェクトですが、昨日の夜から徹底デバッグしてようやくまともに動くようになりました。

デバッグ途中で原因不明のブルースクリーンに悩まされたりして大変でした。理由はまだ完全には分からないのですが、この78Kマイコンの仮想シリアルポートでバイナリのデータを大量に送受信(特に受信)していると、突然画面が青くなります。また、青くならなくてもたまにデータが壊れます。この稀に発生する現象がUSB-JTAGでは致命的なので、結局、仮想シリアルポート上でのバイナリデータ送受信をやめてASCII文字だけにしたところ、格段に安定するようになりました。

現在、
・ALTERA CPLD MAX2 (EPM240とEPM2210)
・XILINX コンフィグROM XCF04S
・XILINX FPGA XC3S700AN
に書き込みができることを確認しています。おそらく、ALTEARとXILINXのほとんどのデバイスで大丈夫でしょう。
付録基板のP13,P14,P15,P16の端子からJTAG信号が出てくるので、外付け部品も一切要りません。
トラ技78Kマイコン基板で作る汎用USB-JTAG

しかし、書き込み速度は遅いです。なぜなら、この78Kマイコンのデータ転送速度が5kバイト/s程度しかないからです。78Kマイコンの中のUSBファームウェアを改善しないとこれ以上の速度は出ません。これが改善されれば4倍くらいに早くなると思います。

書き込み時間は、実測値で、
・XC3S700ANとMAX2(EPM240)の書き込みには120秒程度、
・XCF04Sの書き込みには480秒程度。(ベリファイ込み)
でした。
書き込み速度は多少遅いですが、2分や4分待てるというならば作ってみる価値はあるかもしれません。
DOS版JTAG書き込みソフト

もちろん、バウンダリスキャンもできます。XC3S700ANクラスのFPGAでは、バウンダリスキャンは毎秒11回程度しかできませんが、FPGA動作しているか否かはすぐにわかります。
Windows版バウンダリスキャンソフト

現在、この78K-USB-JTAGを操作するための専用のソフトを新しく作っています。まだどうなるかわかりませんが、FPGAやCPLDへの書き込みに関しては、誰もが無償で使えるような環境を整えたいと思っています。
この78K-USB-JTAGの詳細や、ソフトウェアの入手方法ついては、来週行われる展示会「ET2008」のCQ出版ブースでの講演で発表いたします。

『ET2008(パシフィコ横浜)
 日時  11/20(木) 13:00-13:30 CQ出版ブース
 題名 「付属78K/USBマイコン基板によるI/O制御(応用編)」
~ JavaScript・携帯電話/PHSによる78K基板操作から汎用USB-JTAGアダプタの製作まで~』

どうぞ11月20日木曜日は、ET2008 CQ出版ブースの講演へお越しください。
よろしくお願いします。

P.S. ET2008の特殊電子回路のブースでは、MITOUJTAG体験版と、この78K-USB-JTAGをMITOUJTAG体験版で使えるようにするためのツール、上記画面に示したDOS版JTAG書き込みツールなどの配布も予定しています。

| | コメント (2)

2008.11.11

ガーバの出力形式の選択

昨日の基板データをP板に送ったら「クリアランス0.127mmが守れていないので作れません」となりました。

PROTEL99SEで作図しているときには、デザインルールでクリアランス0.127mmを指定しているし、DRCでエラーが発生していなかったのでそんなことはないはずなのですが、向こうが受け取ったデータではそうなっていたのですから仕方ありません。
守れていない箇所を図示していただいて修正し、再送信したのですが、それでもまだ数箇所残っている状態。

どうやら、ガーバデータを出力する際の形式の問題のような気がしてきました。
PROTELなど、CADの中では配線の座標を物凄い桁の小数点の精度で保持しています。
例えば、84.06346mm(3309.585mil)といった具合です。

しかし、ガーバに出力する際には、小数点以下何桁目かで打ち切られてしまいます。
P板には再度mm系の4:4桁で出力したのですが、それでも駄目。かえってエラーが増えたといわれました。
また、「0.126は守れているんですけど・・」とのことでした。

ためしに、下の図のような0.127mm間隔で走る2本のパターンをガーバに出力し、
Dist
ガーバとして再度読み込んで、そのパターンの間隔を測ってみると、出力形式によって以下のような差が現れました。
inch系2:3桁(分解能1mil) → 0.12445mm ×
inch系2:4桁(分解能0.1mil) → 0.12729mm ○
inch系2:5桁(分解能0.01mil) → 0.12702mm ○
mm系4:2桁(分解能0.01mm) → 0.12456mm ×
mm系4:3桁(分解能0.001mm) → 0.12668mm ×
mm系4:4桁(分解能0.0001mm) → 0.12704mm ○

という結果でした。
どうやら、作図しているときでは0.127mm(5mil)でも、ガーバにする段階で丸めなければならないので、誤差が生じてしまうようです。

そこで、PROTELがそもそも何桁の精度で数値を保持しているか試して見ました。
たとえば、PROTELでパターンを描いて、その幅を0.212415mmにすると四捨五入して0.21242mmに丸められますが、0.212405mmは切り捨てられて0.2124mmになってしまいます。しかし、単位をmilに切り換えて同様のことをやってみると、mil系では小数点下4桁目をただしく四捨五入しているようでした。
つまり、PROTELは内部はmil系で、小数点以下3桁で計算しているのでしょう。

それならmil系で出力してやれば、とも思ったのですが、ガーバに出力可能なのはmil系でも小数点以下2桁なので、どうしても誤算は生じてしまうはずです。とりあえず出力形式を変更して再度チャレンジしてみますが、結局はP板から指摘された違反箇所を地道に直していくしかないでしょう。

今回の失敗の原因は、0.127mmのルールだからといって余裕を持たずに作ったことにあります。ガーバで出力する際には適当な桁で丸められてしまうので、すこし余裕を持たなければなりません。

教訓
「クリアランスが0.127mmルールならば、作図する際には0.128mm以上で作図しなければならない。」


| | コメント (3)

2008.11.10

PCI Expressの基板を出図

今日、この基板の設計が終わり、P板に出図しました。

Np1025_1
順調にいっても来週月曜日の出荷なので、ちょっとET2008には間に合わなさそうです。
今回はP板の4層設計ルールの限界に挑んでみたので、順調に製造が進むことを願うのみです。

部品面のパターンはこのような感じです。
Np1025_2

一番苦労したのは内層VCCのレイアウトでした。(↓の図)
DDR2メモリは1.8V、PHYは1.5V、汎用IOは3.3V、SSTL1.8のVref0.9V、そのほかSpartan3Eのコア電源1.2VとAUX電源2.5Vも必要です。ただし、2.5Vと0.9Vはほとんど電流が流れません。
これら5種類の電源を1層に押し込んだため、内層のVCCプレーンがぶちぶちです。
Np1025_3

多層基板では、内層とつながないビアの周りにはクリアランスが必要です。P板の場合は0.5mmあるいは0.4mm以上必要なので、1mm間隔でビアを並べるとこの内層クリアランスによって内層が分断されてしまいます。

また、内層をつなぐビアは、内層サーマルというもの(↓の図のようなパターン)でつなぐのですが、
  ■
■○■
  ■
これがまた厄介です。内層サーマルは銅箔のある部分を減らして熱の逃げを防ぐものだそうですが、つながるはずのパターンまで切れてしまうのです。
細かい基板では、この内層クリアランスやサーマルパターンがかなり邪魔をします。
おそらく、0.5mmという値は多層基板を張り合わせる際のずれを許容するためなのでしょう。


結局、この基板の設計に100時間以上を費やしてしまいました。とほほ・・
でも、一度自分でBGAの基板設計をやってみるのは悪いことではないと思います。
全部基板屋さんに設計をお願いしていると、BGAの配線の勘所のようなものが身につきません。
今回、自分で苦労してパターンを考えたことで、よりよいFPGAのピン配置や部品の配置などが体得できました。
なので、よい経験でした。

今回痛感したことは
・Spartan3E 256ピンBGAの基板設計は、4層でもできるが、かなりきつい
・4層基板では信号層に部品が載るので、配線領域は意外と少ない。
・4層で苦労するならば6層にしたほうがずっと良い
・しかし、6層でも
(1) 部品面
(2) GND
(3) 信号面
(4) VCC1 or 信号層
(5) VCC2 or GND
(6) 半田面
 という層構成になるのであまり楽ではない。8層にしないと本格的に楽にはならなそう。

ということです。

さて、気を取り直してET2008への出展物の準備をはじめるとしましょう。

| | コメント (0)

2008.11.05

マイクロストリップラインの作り方

P板での基板試作では、普通の「基板製造サービス」と「特性インピーダンス基板製造サービス」があります。
この普通の製造サービスで、PCI Express用のマイクロストリップラインを作る方法を考えています。

10cm×10cmくらいのサイズの4層基板を製造した場合、通常の試作では¥68,008ですが、特性インピーダンス差動指定をすると¥195,174になってしまいます。何が違うのかというと特性インピーダンスを保証してくれるか否かだそうなのですが、できれば安くて早いほうで試作したいものです。

そこで、マイクロストリップラインの作り方を調べみました。

まず、PCI Expressの差動信号は、GNDに対する特性インピーダンスは60Ω±15%、差動インピーダンスは100Ω±20%です。
差動マイクロストリップラインのインピーダンスを計算するには、まずシングルエンドの特性インピーダンスZ0を計算します。Z0は、導体厚みやライン幅、プレプリグの厚み、比誘電率から求まります。
マイクロストリップラインの作り方(シングルエンド)

次に、Z0と、差動線路間の間隙とプリプレグの厚みから差動インピーダンスZdiffを求めます。
マイクロストリップラインの作り方(差動)

最初にZ0を求めて、次にZdiffを求めます。
一見すると式は複雑ですが、Excelの表計算を使えば簡単にできます。

P板の「製造基準書」によれば、4層基板のプリプレグは0.2mm、内層の銅箔は35μm、外側の銅箔は18μm+銅メッキ18μm、プリプレグの比誘電率は不明でした。

プリプレグの比誘電率を仮に4.2とすれば、W=0.254mm(10mil)のときちょうどZ0=59.2Ωとなります。また、差動配線間の間隙も0.254mm(10mil)にすれば差動インピーダンスもZdiff=102Ωとなり、PCI Expressの差動配線が作れることになります。
ちなみに、デザインウェーブマガジンなどいくつかの文献によると、プリプレグの厚さ110μm、パターン幅,間隙=0.13mm,0.18mmというルールがよく紹介されています。
それに比べると、P板のプリプレグは少々厚いようです。

さて、今回はP板の通常の試作製造サービスを利用するので、特性インピーダンスは保証されません。
安い「通常の試作サービス」での製造誤差が特性インピーダンスにどのような影響を与えるかを考えてみることにします。

まず比誘電率。これがわからないことには何も計算できません。
「特性インピーダンス基板」の仕様書では、4層の場合のプリプレグ厚は0.22mmとなっていて、配線幅0.27mmの時に60Ωになると書かれています。このことから逆算すると、比誘電率は4.2あたりということになります。

比誘電率以外のパラメータを固定して、比誘電率を4~4.5まで変化させてみると、特性インピーダンスは±2Ω程度変わります。つまり、比誘電率を4.2と考えておけば、多少の誤差があっても特性インピーダンスへの影響は少ないということです。
プリプレグの比誘電率の影響

次に、ラインの幅。ラインの幅はパターン設計で最も左右できる部分です。
ライン幅の影響
横軸がライン幅[mm]で、縦軸がインピーダンスです。
0.254mmのときに60Ωになり、線が細るとインピーダンスが上昇します。
もし、CADで0.254mmで描いた線がエッチングで細くなって0.20mmになったとすると、インピーダンスは68Ω程度にまで上昇してしまいます。

その次は導体の厚さ。
P板の4層では銅箔の厚さは18μmとのことですが、この上に18μmのメッキが施されるとのことです。
最終的に何μmになるのかはわかりませんが、式の中の(0.8W+t)の項からもわかるように、パターンのライン幅のほうが導体の厚さより10倍太いので、導体の厚さの影響はライン幅の10分の1しかないことが推測できます。
導体の厚さの影響
計算してみると、18μmと36μmでは2~3Ωしか変わりません。

プリプレグの厚さの誤差は、インピーダンスに与える影響は非常に大きいのですが、P板の製造基準書に0.20mmと書かれているのでこの値を信じることにしましょう。
プリプレグの厚さの影響

最後に、間隙と差動インピーダンスです。
間隙が狭くなると差動インピーダンスは減少します。
パターン間隙と差動インピーダンス
しかし、差動配線はプリント基板の同じ面のごく近い場所に作るので精度は出るはずです。

まとめると、εr=4.2、h=0.20、t=36μmと仮定すればW=0.254mmのときにZ0=60Ωになります。間隙S=0.254mmで差動インピーダンスも100Ωになります。
εrとtの誤差の影響はあまり大きくありません。

心配なのはラインの太さで、導体が細るとインピーダンスは上昇します。逆に言えば、ラインの太ささえしっかり作れれば、その他のパラメータが特性インピーダンスに与える影響は少なそうです。それに、10milもある太い配線を製造ミスすることなんて考えにくいです。

結論を言うと、W/S=0.254mm/0.254mmのルールでいけばよさそうです。設計値と実測値で特性インピーダンスが大きく変わることも実際にはよくあるようなので、あまり細かく考えても仕方がないようです。

マイクロストリップラインの計算と、各パラメータの誤差の影響を調べるためのExcelのファイルを置いておきます。
「microstrip.xls」をダウンロード
どうぞご活用ください。

| | コメント (4)

2008.11.03

BGA基板設計のコツがわかってきた

今日もPCI Expressの評価ボードの基板を設計しています。
すごく時間がかかります。

こんなに大変ならば、4層で無理せず、6層か8層基板にして業者さんにお願いしてしまったほうがよかったかもしれないのですが、動くかどうか売れるかどうかが全く未知数なので、リスクを回避するため自分の時間を使って設計をしています。
設計をはじめたのはいいのですが、ここまででもう30時間近くやっているかもしれません。

これまでBGAを使った基板を自分で作るときには基板屋さんに任せっきりだったので、BGAの基板を自分でやるのは初めてだったのですが、だんだんコツがつかめてきました。ようやくFPGAとDDR2、FPGAとPHYチップ間の一番難しい箇所が終わりました。あとは簡単な部分のみです。

・BGAの基板設計では、各端子の中央に配線を引き出すためのビアを配置しますが、このビアは目的の端子の外側になるように配置します。
・BGAの端子を全部使おうとしてはいけません。使いにくい場所もあります。
・4層基板では256ピンBGAを全部活用するのは難しいです。あきらめましょう。
・P板なら、最小の製造ルールに設定すればBGAの基板は作れます。最小に設定しなければ作れません。
・P板の製造ルールでは、BGAのグリッドに置いたビアの、内層のクリアランスがGNDを分断します。適度に隙間を開けて風通しをよくしなければなりません。
・できるだけ基板の表面から配線を引き出すようにします。裏は大切な配線スペースです。

現在の基板の状況(横90mm 縦64mm)
Pcie_board2

Pcie_board1

仕様
・PCI Express ×1
・PCI Express Externalケーブルも使用可能
・DDR2 SDRAM 256MBytesを搭載
・PCI ExpressのPHYは、TIのXIO1100を使用
・FPGAはSpartan3E
・LEDを8個、プッシュスイッチ4個、DIPスイッチ4bit
・外部拡張コネクタ(2.54mmピッチ)にI/O信号を28本
・FPGAのコンフィグはSPI ROM

ET2008に間に合えば展示したいと思います。

| | コメント (0)

2008.11.01

JavaScriptでシリアルポートへアクセス!

トラ技の78kマイコン基板を使うアプリケーションを、Webアプリケーションで作れないかと考えていました。Internet Explorerの中でボタンを押すと、ローカルマシンのUSBポートにつながったトラ技78Kマイコンを通じて、組み込み機器を操作できるようにしたいというものです。

Web78k_1

調べたところ、ActiveXを使えば可能ということがわかってきました。
ActiveXとは何ぞやということを調べていたら、要するにDLLみたいなもので、ローカルPC上で何でもできるライブラリであることがわかりました。普通のDLLの上にもう1層ラッパを被せて、変数の型やアクセスの方法を統一するというようなものだ、となんとなく理解しました。拡張子はDLLではなくて、OCXです。

JavaScriptからは、ActiveXで作られた関数を呼び出すことができますが、そのActiveXがネット上からダウンロードされて動くか、ローカルのハードディスクにあるものを動かすか、ということで大きな違いがあります。

インターネット上からダウンロードされて動くActiveXには、署名が必要です。
一方、ローカルにあるActiveXが動くには署名は必要ありません。署名はいりませんが、「安全」マークをする必要があります。安全マークは簡単にできます。

Web78k_2

InternetExplorerで「見るだけで」自動的にダウンロードができて実行できてしまうのが理想ですが、これをやるには信頼できる証明書を作らなければなりません。Windows2000はごまかせたのですが、どうやら、WindowsXPでは自分で自分を認証する「オレオレ証明書」ではだめなようでした。
ちゃんとした証明書を取るには、年間5~10万円くらいの費用と、会社の登記謄本が必要です。なので、軽い遊びで作るには面倒すぎます。個人や零細企業がActiveXを作ってアプリケーションを配布するには、ローカルにインストールしてもらうのがベストと思われます。

「見ただけで」インストールということはできませんが、OCXをダウンロードしてローカルにインストールしてもらえさえすれば、任意のコードがWebブラウザ上から動かせてしまうのですから、すさまじいものです。

作ったActiveXとJavaScriptのサンプルは下記のURLにアップロードしました。
http://www.tokudenkairo.co.jp/web78k/

上のページを開いたら、「インストール」のリンクをクリックして、web78k.lzhをダウンロードして解凍してください。その後、解凍されたフォルダの中にあるinstall.batを起動してください。
そして再びweb78k/index.htmlに戻るとActiveXが動くようになっています。

Web78k

ActiveXが動作すると、そのパソコンに接続されているシリアルポートを調べます。
そして一覧を表示します。
トラ技78Kマイコンがつながったシリアルポートを選択して、Openを押してください。
Enum

ポートがオープンすると、送信と受信のテキストボックスが白く変わるので、送信と書かれたテキストBOXにコマンドを入れてEnterキーを押します。すると、シリアルポートから送信されます。
受信した文字列は下のテキストボックスに表示されます。

各種メソッドの使い方は上記のWebページを開いて、ソースを見ればすぐにわかると思います。
上記WebページのJavaScriptはローカルに保存しても動きますし、他のページに持っていっても動きます。現時点では安全性は保障できませんが、自由にお使いください。
このツールはフリーソフトとして公開します。

このActiveXを使えば、78KマイコンをJavaScriptから制御できるようになるので、GUIでのコントロールなどいろいろな応用ができそうです。さらにAJAXと連携させれば面白いことができるでしょう。

このシリアルポートにアクセスするActiveXの詳しい作り方や、ソースコード、応用事例などは、ET2008のCQ出版ブースの講演で発表したいと思います。ご期待ください。

| | コメント (0)

« 2008年10月 | トップページ | 2008年12月 »