« 2009年8月 | トップページ | 2009年10月 »

2009.09.29

Spartan-6でDDR2メモリを400MHzアクセス

DDRがらみでISE11.xの問題に悩まされていましたが、前回の記事で書いたテクニックを使ったところ、ODDR2の後ろにIOBUFを置いて、DDR2メモリ制御回路を論理合成することができるようになりました。
特電Spartan-6評価ボードで、DDR2メモリを400MHzアクセスすることに成功しました。
64Mバイトの領域を読み書きするのに要する時間は、わずか約0.17秒です。
DDR2 SDRAMやFPGA、そして電源が発熱するため、基板の温度は平均で50℃くらいになります。もっとも熱い場所で57℃くらいでした。誤動作するほどではありませんが、手で持ってみると暖かいです。

Sp6_ddr2mem

これでハードウェア上の懸案がすべて解決され、ようやく自信を持って出荷することができます。
Spartan-6ボードは、すでに何名かの方からご予約をいただいており、明日から出荷を開始する予定です。

特電Spartan-6評価ボードの紹介ページはこちらにご用意しました。

ソフト面(書き込みツールやIPコアなど)は、準備ができ次第、順次提供していきたいと思います。
よろしくお願いします。


| | コメント (2)

Spartan-6のODDRの問題(少し進展)

XILINXの方から電話があって、ISE11.3にバージョンアップしてみてください、とのことでした。
11.3のリリースノートには載っていないけど、対応されたとのことでした。
また、IOBUFのTがどうのこうのと言っていましたが、電話ではよくわからなかったので、実験してみました。

まず、次の図1のような構造を作ってみました。
IOBUFのIとTを両方ともODDR2の出力からつないだ場合は、論理合成でき、動作も正常でした。
Sp6oddr2_1

図1 論理合成でき、動作も正常だが、記述が面倒

しかし、IOBUFのTのためにわざわざODDR2を使うのは面倒なので、次の図2のようにT側の接続を省略してみたところ、mapでエラーが出て先に進むことができません。
なお図2の構造は、Spartan-3や、Virtex4,5では普通にできていたものです。
これができないと、ちょっと不便かもしれません。
Sp6oddr2_2

図2 面倒ではないが、ISE11.3では論理合成できない
ISE11.2では論理合成できるが正しく動作しない

また、試しに次の図3のような構造を作ってみたところ、mapは通ったものの実際のデバイスは正しく動作しませんでした。これは意味のある回路ではありませんが、やはり、ISE11.xにはまだ何か問題がありそうです。
Sp6oddr2_3

図3 論理合成できるが正しく動作しない


| | コメント (2)

2009.09.28

J-Writerの新規デバイス対応

MITOUJTAGやJ-Writerで、いくつかの新規デバイスの書き込みができるよう、対応をすすめています。

現在取り掛かっているのは、
・ALTERA Cyclong2
・ALTERA FLEX10K
・ALTERA ACEX
・XILINX Spartan-6
の4つのファミリです。古いものも新しいものも織り交ぜています。

FLEX10Kへの書き込み(約1.5秒)
Flex

Cyclone2への書き込み(EP2C8を約18秒)
Cyclone2Ep2c8

Spartan-6への書き込み(XC6SLX16を約33秒)
Sp6Xc6slx16

これらにはすべて対応できました。
早ければ月曜日中にでも、J-Writerの制御ソフトウェアをバージョンアップしたいと思います。

開発していて面白いと思ったのは、FLEX10K(EPF10K)とACEX(EP1K1)は、JTAGのIDCODEが同じということでした。
たとえば、EP1K10は0x110100DDで、EPF10K10は0x010100DDです。
つまり、JTAG的に見れば、バージョン番号以外が同じなのです。

どっちかがどっちかの高級品なのかとも思ったのですが、ALTERAの製品ラインナップには詳しくないので、その辺はよくわかりません。

次のバージョンアップでは、多くの方からご要望いただいておりました「実行時にカレントディレクトリを変更できる」機能も実装しました。

どうぞご期待ください。

その次は、ALTERAのEPC、Cyclone3、XILINXのCoolRunner(初代)、LatticeのMachXOなどを予定しています。

| | コメント (0)

2009.09.19

DDR2 SDRAMの動作確認

先日発見した問題により、Spartan-6ボードのDDR2 SDRAMの動作確認ができない状態が続いておりましたが、今日、バウンダリスキャンを使ってFPGAとDDR2 SDRAM間の結線を確認する方法が確立できました。

まず、バウンダリスキャンで、こんな感じの波形を出します。
Ddr2_test_bscan

① A0~A13までの14本のアドレス線とBA0,BA1のうち、1つのビットに'1'を立てます。これが、Rowアドレスとなります。そして、RAS=0にしてバンクと行をアクティブにします。
② 次にアドレス線を0にしてCAS=0、WEN=0にします。そのRowアドレスで指定された行の、カラムアドレス=0の番地に、8ワードの乱数を書き込んでいきます。
③ こうして、17種類の異なるRowアドレスの番地に異なる乱数を書きます。
④ そして、今度はそれを読み出します。

こうして、書き込んだデータと読み出したデータが一致すれば、データバスとアドレスバス、BA0,1、RAS,CASなどの制御線、それからDQS、CLKなどのクロックなどの結線が正しくつながっていることがわかるというものです。
アドレスバスに1を1ビットづつ立てていくのがミソです。

結果の表示はこんな感じでした。


---------------------------------------------------
Advanced JTAG Function Generator Version 0.9
(C)Copyright 2007-2008 特殊電子回路株式会社
---------------------------------------------------
サーバのセットアップ成功
MITOUJTAGサーバからパラメータを受け取りました
-------スクリプト実行開始-------
Write data
00000000:82 E6 42 88 CD BB 0F A4
00000400:96 2C DE F3 5F 3C 50 24
00000800:61 BF D7 EF D1 16 A1 EE
00001000:75 2C CB BB 68 B1 C3 4B
00002000:29 96 FE 8B EB C9 DC 39
00004000:18 32 D8 04 27 EE F4 E7
00008000:9F CB 64 C3 6C 04 7A 3B
00010000:62 3E D1 D5 0F C2 BD 4E
00020000:C6 FD F3 3E E9 35 75 ED
00040000:76 8D C1 74 D4 3C 3A 18
00080000:E0 0A D6 E3 33 0C 0A 84
00100000:B7 A0 F3 69 69 AB C5 1B
00200000:70 12 79 D9 5F 77 B3 78
00400000:C7 35 F1 7A 01 9E FA 6E
00800000:3A 74 86 87 BF A6 2A 80
01000000:8B 4C 87 AF 0E E4 B4 68
02000000:40 CF E8 95 E6 07 6C 93
Read data
02000000:40 CF E8 95 E6 07 6C 93
01000000:8B 4C 87 AF 0E E4 B4 68
00800000:3A 74 86 87 BF A6 2A 80
00400000:C7 35 F1 7A 01 9E FA 6E
00200000:70 12 79 D9 5F 77 B3 78
00100000:B7 A0 F3 69 69 AB C5 1B
00080000:E0 0A D6 E3 33 0C 0A 84
00040000:76 8D C1 74 D4 3C 3A 18
00020000:C6 FD F3 3E E9 35 75 ED
00010000:62 3E D1 D5 0F C2 BD 4E
00008000:9F CB 64 C3 6C 04 7A 3B
00004000:18 32 D8 04 27 EE F4 E7
00002000:29 96 FE 8B EB C9 DC 39
00001000:75 2C CB BB 68 B1 C3 4B
00000800:61 BF D7 EF D1 16 A1 EE
00000400:96 2C DE F3 5F 3C 50 24
00000000:82 E6 42 88 CD BB 0F A4

2009/09/19 22:16:57 クライアントが終了しました
2009/09/19 22:16:57 AJFG Server:Connection closed.

このような感じで、書き込んだデータと読み出したデータが一致すれば、OKというわけです。

Embedded SmartJTAG経由なので、一連の操作に18秒もかかっています。この間、SDRAMのリフレッシュは停止しているはずですが、データは消えずに残っています。意外と丈夫なようです。

何はともあれ結線の確認ができたので、本日、Spartan-6ボードの量産にGoを出しました。

あとは、ISEがバージョンアップ(11.4か11.5)されたら、DDR2 SDRAMのコントローラが完全に動くようになるでしょう。

| | コメント (0)

2009.09.17

Spartan6かISE11.2のバグ?

先日の「Spartan-6のバウンダリスキャンの問題」はXILINXに投げたら、かなり丁寧に対応してくれました。今、本国のほうで対応されているそうです。
ただ、最初はこの現象を説明して問題を理解してもらうのはなかなか大変でした。「同様の問題は報告されていません」、などと言われたこともありました。それもそのはず、バウンダリスキャンをFPGAのデバッグに役立てようとツールを作っている人なんて極めて稀でしょう。

そして、今夜、特電Spartan-6ボードのDDR2メモリをデバッグしようとしていたら、またまた見つけてしまいました。

今度の問題は簡単にいうと、「ODDR2の後ろにIOBUFTをつないだ場合うまくいかない」という問題です。
例えば、ODDR2を使ってH→L→H→L→H→L→・・と、トグルする信号を作り、それをトライステート付きバッファで出力しようとすると、出てきません。
つまり、DDR2メモリのアクセス回路をつくろうとした場合、DQS信号が出力できないのです!

しかも面白いことに、IOBUFTのIにつないだ信号が、どうやら実際のデバイスではTにつながってしまうようで、出力信号がH/Lするかわりに入出力方向が切り替わるのが確認できてしまいました。
JTAGバウンダリスキャンを使わなければ、この問題になかなか気が付かなかったと思います。

もちろん、普通のロジック出力をIOBUFTで双方向信号として出力した場合は、問題なく動きます。だから普通は気づきません。
あくまでも、ODDR2の出力を双方向にしたいような場合に、問題が発生するようです。

これも、WebCaseに投げてみました。結果が楽しみです。

本当はそろそろ特電Spartan-6評価ボードの量産にGoをかけたかったのですが、DDR2メモリの検証ができないので、まだ量産Goが出せず、出荷の日程に影響しそうです。なにぶん、最新のデバイスなのでいろいろな問題が発生しています。
ただ、問題はシリコンや基板の問題ではないので、ハードウェアの作り直しにはならないと思われるのが救いです。ご期待いただいている皆様にはお待たせしてしまい、大変申し訳ございません。

| | コメント (0)

2009.09.16

FPGAカンファレンス2009ご来場ありがとうございました

FPGAカンファレンス2009東京会場へのご来場、誠に有難うございました。
おかげさまで、大盛況でした。

当社ブースはこのような感じで、Spartan-6の評価ボードを動かすというデモを行っておりました。
Fpgac2009_1

おそらく、日本で動いている唯一のSpartan-6という、嬉しいお褒めの言葉をいただきました。

セミナーの会場も人がいっぱいでした。前日の夜に1日で作ったパワーポイントなので、わかりにくくて申し訳なかったなと思います。
Fpgac2009_2

さて、ひょんなことから、明日のXILINX Developer Conferenceでも、当社のSpartan-6評価ボードを出展させていただくことができるようになったようです。今回のFPGAカンファレンスに残念ながらご来場いただけなかった方は、ぜひ、明日のXDPカンファレンスをお楽しみに。

| | コメント (0)

2009.09.14

FPGAカンファレンスのノベルティ

明日、9月15日(火)はFPGAカンファレンス2009東京です。
今年も秋葉原UDXで展示会が行われます。
当社も出展します。

今年はノベルティをいろいろ用意いたしました。
まずカドケシ。たくさん持っていきます。
カドケシ


それから、何かと話題の「JTAG小冊子」。非売品です。
FPGAカンファレンス(東京)にお越しいただいたお客様の中から50名様に差し上げます。
今回は(も?)先着順ではございませんので、あまりお急ぎにならず、ゆっくりお越しください。

そして、1名様に、「特電オリジナルSpartan-6評価ボード」を。
FPGAカンファレンスの最後に行われる抽選会の景品にしてみたいと思います。
展示していたものをそのまま景品にしてよいか、事務局さんに相談してみます。
だめと言われたら、この話は無かったことになります。

と思いましたが、やはり、FPGAボードを抽選会の景品にするのはやめておきます。
その理由は、まだできたばかりでマニュアルが整備されておらず、もらっても使いようがないこと。
それから、LatticeユーザやALTERAユーザもいる中で、XILINXのボードだけを配ることの違和感です。
期待させてしまった方には申し訳ございません。

それでは、明日、会場にてお待ちしております。
なお、ご入場には事前登録が必要ですので、お早めにご登録ください。

| | コメント (0)

2009.09.13

Spartan-6とDDR2メモリの動作、即、確認

寝て起きて、それから作業の再開です。
DDR2メモリの動作がわずか1時間で確認できました。

このSpartan-6ボードにはDDR2 SDRAMが乗っています。
Sp6_ddr2

基板を起こしたら、すぐにでも確認したいことは、「FPGAとの結線が正しく行われていて、電源なども大丈夫かどうか」、です。ただ、そういう確認を、まじめにVHDLを書いてロジックを組んで検証していたのでは、いくら時間があっても足りません。

そこで、バウンダリスキャンでDDR2 SDRAMの端子のみを操作することで、DDR2 SDRAMを動作させてみました。
MITOUJTAG Proには、そういったスクリプトが入っているので、ライブラリを呼び出すだけで簡単に確認ができます。
Sp6_ddr2

64ビットの乱数データを書き込んで、それを読み出し、一致しているのが確認できました。
各種制御線と、データ線は大丈夫でしょう。

SDRAMは一般的に、リフレッシュをしないとデータが消えるといわれていますが、実際には数秒程度は大丈夫です。

とても遅くアクセスすると、3秒ほどで先頭のデータが化けるのが確認できます。
Sp6_ddr2_slow

というわけで、論理合成してロジックを組んだわけではありませんが、DDR2 SDRAMとFPGA間の結線が正しくできていて、ちゃんと動作していることが確認できました。
これだけで、かなり安心です。


| | コメント (0)

EZ-USB FX2とSpartan-6

開発中のSpartan-6ボードで、EZ-USB FX2を通じたデータ転送ができるようになりました。
Sp6_usb20if

といっても、Spartan-3用に作成したデザインをSpartan-6にもってきただけなのですが、ばっちり動きました。

ISEは意外と賢く、ソースファイル中でSpartan-3用のプリミティブを指定したら自動的にSpartan-6用のに置き換わるみたいです。ただし、DCMの中のJF_FACTORYとかいうアトリビュートだけは消してやらねばなりません。
それ以外の注意点はとくになく、動いたという感じです。

そして、サンプルとして、FPGAで307200バイトの乱数列を作って、それをUSB経由でパソコンに取り込みました。
このデータをVGA画像(640×480)として画面に表示すると、砂嵐のように見えます。
Usbtest

このようにVGA画像サイズのデータの取り込みというケースを想定して、USBの実効転送速度を測った結果は、
・IN方向 39MBytes/sec (312Mbit/sec)
・OUT方向 29MBytes/sec (232Mbit/sec)
でした。

ここにも書いたとおり、USB2,0 HighSpeedモードの実効速度は、
32.768Mbps/sec×N(整数)という単純な式で表されます。

この式は、「125μ秒周期のマイクロフレームの中に、何個のバルク転送パケット(512バイト)を詰め込むことができるか」という単純な計算です。N=9以上になるとパソコンのUSBチップの応答性に激しく左右されます。

今回使用したパソコンの場合、IN方向のNは9~10で、OUT方向のNは7でした。
実用的なデータで測って40MByte/sと30MBytes/sということで、まずまずの性能といえるのではないかと思います。

ところで、このデザインでは、USBのIN用とOUT用にそれぞれFIFOのバッファを入れているのですが、ISE11.2でSynthesizeが終了したときのレポートで、ブロックRAMの使用率が2個/96個と出ます。
Sp6_bram_96

いや、でもSpartan-6にはそんなにたくさんのBlockRAMはありません。
データシートには18kbのが32個と書かれています。このブロックRAMは2分割して9k×2として使うこともできますが、どう数えても96個もないです。謎です。

論理合成時間からBitファイルの生成までにかかった時間は、Core2の2.4GHzのマシンで1分弱でした。
ISE11.2はそんなに重くありません。
リソースの利用率はまだ1%とスカスカです。Spartan-6は、かなりいろいろ入る感じがします。
Usbtest_summary

さて、明日はDDR2 SDRAMの検証に入りましょう。

| | コメント (0)

2009.09.11

Spartan-6ボードの実装完了!即動作確認

Spartan-6ボードの実装が仕上がりました。

Sp6board

さっそく、面付けされた基板を分離して、電源を投入してみました。
この瞬間が一番、ドキドキしますね。

おもむろにJTAGをつないで、バウンダリスキャン!
おお、見える、見える!

Sp6_bscan

EXTESTで、A9番ピン、C9番ピンを突っついてみるとLEDが光ります。
ああよかった。これで一安心です。デバイスは生きていました。

Sp6_board_bscan

実はこのボード、USB-JTAGがオンボードで搭載されています。
この仕組みをEmbedded SmartJTAGといいます。

なので、USBケーブル1本で、JTAGにもアプリケーション用の通信にもなるのです。

Sp6_embsmaj

再びバウンダリスキャン!
クリッククリックしてA9番、C9番ピン操作してLEDを光らせます。

Sp6_bscan2

このままSpartan-6の書き込みだってできてしまいます。
今、ノートパソコンのUSBから電源をもらって、電車の中でバウンダリスキャンを楽しみながら、このブログを書いています。

| | コメント (0)

2009.09.10

多層基板はショートしないのか?

4層基板を作ってみて不安になることは、内層が他の層とショートしないかどうかということです。
結論をいうと大丈夫なのですが、多層基板をバームクーヘンのようなものと考えてしまうと、心配で心配で夜も眠れなくなります。(実際に、出図した日の夜は何度も目が覚めた)

4層基板の内層は、普通は基板の外側にむき出しにはなっていません。基板の端から適度なクリアランスを設けているためです。

Tasou_1_2

しかし、もし間違ってクリアランスがなかったら、内層がはみ出ないでしょうか?
Tasou_2

鋭利なもので傷をつけたら、内層が曲がってしまって別の層とショートしてしまわないでしょうか?
Tasou_3

例えば、Vカットの刃が内層の上を通ったり、水をしみこませたりしたら・・

というわけで、実験してみました。
まず、ヤスリで4層基板の端を削ります。
少し削ったところで、内層が露出しました。
内層から外側の部分はぴったりとくっついていて、空間があるわけではなさそうでした。

4layer

写真で見てわかるとおり、2つの内層が輝いて見えます。たしかに、こういう状態で金属片か何かをもってきてガチャガチャやれば、確かにショートしました。内層がむき出しになっているのは多少はヤバイでしょう。でも、自発的にショートすることはなさそうです。

次に、ドリルで穴を開けてみました。
Drill

ドリルが貫通する際に、一瞬、ショートしましたが、それはドリルの刃が金属だっただからです。
ただし、ドリルのようなもので削ると内層がバリとなってめくれます。そのバリがショートすることはありますので、切断面は綺麗にしておかなければなりません。

最後に、ワイヤストリッパで挟んでみました。
Wstrip

挟んで傷がついた瞬間、ショートしますが、それは刃が金属だからです。ワイヤストリッパを外せばすぐにショートしなくなります。

結論として、内層はとても薄く、プリプレグやコア材それよりもずっと厚いということでした。そして絶縁体は十分に硬く、銅は脆いということでした。
絶縁体は柔らかくないので、傷が付いても凹んでショートることはありません。また、銅箔は十分に薄く、層と層の間は十分に広いので、伸びてショートすることもありません。ショートする前に銅箔が切れます。
どうやらバームクーヘンとはだいぶん違うことがわかりました。

くだらない実験ですが、実際にやってみるとかなり安心できました。

| | コメント (7)

2009.09.09

Spartan-6 FPGA基板の製造完了

今日、基板が出来上がったとのことで、品川にある倉庫のようなところに引き取りにいってきました。
そして、その足で実装屋さんに基板を持っていきました。

5枚面付けしています。金フラッシュ仕上げです。
Sp6_board_x5_omote
Sp6_board_x5_ura

今回、実装をお願いした基板屋さんは「BGA」や「特急」というキーワードで検索にひっかかった業者さんで、比較的リーズナブルな値段で引き受けてくれたところでした。

基板が出来上がるまではやはり不安なもので、「あの部分のピン間隔が狭かったかな・・」とか「メタルマスクの開口が・・」とかいろいろ考えてしまいます。
そういうわけで、基板を受け取ってから実装屋さんに渡すまでの移動の途中、つまり電車の中ですが、出来上がったばかりのパターン図と実際の基板パターンを見比べたり、挙句の果ては基板にテスターをあてて導通チェックしたりしていました。
今回の実装屋さんはJR南武線の沿線にあるのですが、南武線でこういうことをやるのは大変危険です。周囲の視線がとても気になりました。

○ツのベースボードにもぴったりと乗りました。
Mfpga_base_sp6

金曜日か土曜日には実装が上がってくるはずです。本当に動くかどうか、まだ不安と緊張の毎日は続きます。


| | コメント (0)

Spartan-6のバウンダリスキャンの問題を発見!

Spartan-6の問題を発見したようなので、XILINXのWebCaseというのに投稿してみました。
あまりにもマイナーな問題なので、おそらく世界中の誰よりも早く発見したのではないかと思います。

----------------------------------
使用したFPGA:XC6SLX16 2C-ES
使用したボード:SP601評価ボード

■問題の概要:
XC6SLX16 ESでバウンダリスキャンのSAMPLEインストラクションを実行したとき、入力として設計したI/O端子のコントロールセルにキャプチャされる値が常に0になってしまい、出力端子のようにふるまう。

例えば、以下のような記述で作成した入力端子(test_in)は、デバイスのコンフィギュレーション後、バウンダリスキャンでは出力端子として認識されてしまう。

test_in : in STD_LOGIC;
・・・
led_out <= test_in;
・・・

このように設計した端子は、コントロールセルには'1'(出力禁止をあらわす)がキャプチャされるのが正常な動作だが、Spartan-6ではなぜか'0'(出力許可)がキャプチャされてしまう。

ただし、実際のデバイスは入力ピンとして動作しているので、バウンダリスキャンを行わなければ問題には気が付かない。
なお、この問題は、ISE11.2とSpartan-6の組み合わせのみで発生する。ISE11.2とSpartan3Eとの組み合わせでは発生しない。

■暫定的な回避方法:
バウンダリスキャンで入力として認識させたいデバイスの端子は、入出力端子として設定し、なおかつ入出力方向を切り替えられるようにインプリメントしなければならない。

test_in : inout STD_LOGIC;
・・・
test_in <= 'Z' when (tristate_test = '1') else '0';
led_out <= test_in;
・・・

このようにすることで、当該I/O端子のコントロールセルに正しい値がキャプチャされるようになるが、記述として不自然である。Spartan-3Eや3AN、Virtex5以前のデバイスでは発生していないので、Spartan-6のMAPあるいはBITGENの時点でなんらかの問題があると考えられる。
----------------------------------

超マイナーな不具合ですが、うちにとっては重大な問題です。

わかりやすく図にします。

あるデザインで、F6,F5,D4,D5番端子は入力端子ですが、入力ピンとして宣言したり、
入出力として宣言していても
gpio <= "ZZZZ";
のように設計すると、バウンダリスキャンでは出力端子として認識されています。
ISE11.2は「どうせ入力しかしない端子」と判断するようです。
Always_output

しかし、この端子を
gpio <= "ZZZZ" when (tristate_condition = '1') else "0000";
のように記述して、入出力を切り替わる可能性がある端子として設計すると、
Input_ok
ちゃんと、入力端子として認識されます。

たぶん、ISE11.2のMAPの後半かBitgenの問題だと思います。シリコンの問題でないことを祈ります。
XILINXは対応してくれるでしょうか。

英語で書いてフォーラムにも投稿しようかと思いましたが、英訳が大変なので保留しておきます。

| | コメント (0)

2009.09.07

MITOUJTAGの商標登録

MITOUJTAG(ミトウジェイタグ)を商標登録しました。今日、登録証が届きました。

なぜいまさら登録したのかというと、今年の春ごろ、ある会社が"未踏JTAGケーブル"なる名称で、プリンタポート接続のJTAGケーブルを未踏JTAGケーブルという名前で販売していました。
「当社の製品と誤解されるからやめてください」とクレームしたら、 今度は"未踏JTAG対応ケーブル"という名称で販売しはじめたのです。
ああこれはわかってやっているな、ということで商標を登録することにしたのです。

| | コメント (6)

2009.09.06

SP601の注意点とバウンダリスキャンによる動作確認

SP601のJTAGが動くようになったので、いろいろ遊んでみました。
その中で気が付いた点をいくつか挙げます。

★箱の中に入っていたXILINX印のUSBメモリには、デザインファイルが入っているとのことですが、そんなものは入っていませんでした!
★しかも、サンプルアプリケーションのソースファイルは、まだXILINXのWebサイトからもダウンロードできません。サイトにあるのは、BitStreamとかMCSとかです。気長に待ちましょう。
★USB UARTは、各種の診断アプリで使います。
★SW2のジャンパを「下下」にしておくと、BPIフラッシュから起動し、診断アプリが走ります。
★SW2のジャンパを「上下」にしておくと、SPIフラッシュから起動し、診断アプリが走ります。
サンプルの診断アプリ

★サンプルの画像処理アプリケーションは、SP601とパソコンをEthernetでつないで動かします。画像処理アプリケーションを動かすときにはUSB UARTは使いません。
★サンプルの画像処理アプリケーションを動かすには、WinPCapというアプリケーションをインストールする必要があります。

★J12にはTCK、TMS、TDI、TDOと書かれたジャンパがありますが、これはJTAGではなくSPIです。
これはJTAGのコネクタではない!紛らわしい!
★その下にあるJ15のジャンパにはMISOとかMOSIと書かれていますが、これはCMP_MISOとかCMP_MOSIといって、Spartan-6で新たに追加されたピンにつながっています。ただし、Spartan-6のデータシートによればでは、CMP_CSはVCCにつながなければならない(MUST)ので、結局のところ、これらの信号は現時点では使うことはできないと思われます。そもそも、CMP_***のSPIインタフェースが何をするものなのか、データシートを見た限りではわかりませんでした。将来のバージョンで使えるようになるのかもしれません。

★Spartan-6からは、モードピンがM0とM1のみになりました。
★SW2を「OFF OFF」にすると、M1=0、M0=0となって、BPIコンフィギュレーションモードになります。DONEがあがるまでに要した時間は234msでした。モードピン、INITピン、DONEピン、その他、いろいろなピンがJTAGで見えています。
BPIモードによるコンフィギュレーション

★SW2を「ON OFF」にすると、M1=0、M0=1となって、SPIコンフィギュレーションモードになります。DONEがあがるまでに要した時間は約1.8sでした。BPIの約8倍かかっています。
SPIモードによるコンフィギュレーション

★DDR2 SDRAMの診断を行うサンプルアプリケーションを動かしてみたときの波形です。数分間、延々とこんなことをやっています。
DDRメモリ診断アプリ

| | コメント (0)

XILINXのSpartan-6評価ボード「SP601」にJTAGコネクタを追加

XILINXのSpartan-6評価ボード「SP601」には、JTAGのコネクタが出ていません。
そのため、外付けのJTAGケーブルをつなげるには、基板の改造が必要になります。

以下、やりかたを書きます。
① USB-JTAGと書かれたUSBコネクタのGND端子を使って、6ピンのピンヘッダを半田付けします。ここがGNDとなります。
② R191の右側の端子から3.3Vをもらってきます。

Sp601_add_jtag1

③ 基板を裏返して、R53からTCKを、R54からTMSを、R55からTDIをもらってきます。TDOはJ4の1番ピンからもらいます。
Sp601_add_jtag2

オンボードのUSB-JTAGケーブル(Embedded Platform USB?)とFPGA間のJTAG信号をジャンパで引き出すことができました。おそらく、このオンボードのUSB-JTAGケーブルはUSBを刺さないとDisableなので、これでいいのでしょう。心配なら、R53,54,55をはずしたほうがいいでしょう。

これで、JTAGバウンダリスキャンができるようになります。A4,C4,C14,E13番ピンを操作すると、LEDがコントロールできるのが確認できました。
Sp601_bscan


| | コメント (0)

2009.09.05

SP601が届いた

8月末に注文したSP601が届きました。

外箱には、誰これ?って感じの人物の写真が。いかにも○くばの研究所とかにいそうな。

Package_2

箱の中にはXILINX印のUSBメモリが。この中にはデザインファイルが入っているそうです。
Usbmemory

また、各国対応のACアダプタもありました。
Acadapt_2

肝心のボードはこんな感じです。LANが出ているほかは、LCDとかVGAとかはありません。非常にシンプルなつくりです。
Board_2

FPGAの裏は、意外とコンデンサが少なめです。こんなんでいいのかというくらい少ないです。そういうことが参考になります。マニュアルによれば、LAN経由で、画像処理とかのアプリケーションをいろいろ動かすようです。だんだんマイコンっぽくなってきました。

Bga_ura

基板はつるつるしていて、部品面にも半田面にもパターンがほとんど出ていません。多層基板で内部に隠しているような感じです。
(P.S. 後で調べたら、なんと16層基板! ほとんどの配線は内層を使っているので、部品面も半田面もつるつるです)

基板の真ん中にはTDIとかTCKとか書いたコネクタがあって、JTAGコネクタかと思ったのですが、MITOUJTAGをつないでも認識されませんでした。
それもそのはず。TCKとか書いているのに、SPIのコネクタでした。どうやら、このボードは外付けのJTAGケーブルを使用できるようにはなっていません。外付けのJTAGケーブルを使うには、基板を改造する必要があります。それは今夜行います。

| | コメント (0)

FPGAカンファレンスに出展します

9月15日(火)に開催されるFPGAカンファレンス2009 東京会場に出展します。

MITOUJTAG、PCI Expressボード、そして間に合えばSpartan-6ボードを展示し、デモします。
出展者セミナーは以下の内容を予定しています。

----------------------------------------------------------
「特電オリジナルSpartan-6評価ボードで実演する、
 JTAGを利用した常識破りの『高確率デバッグ』」

9月15日(火) 13:15~13:30

 当社はオリジナルのSpartan-6評価ボードを設計したが、FPGAカンファレンスに間に合わせるためには、基板の実装仕上がり後、わずか2日間で動作検証しなければならない。このような極短期間のうちにDDR2 SDRAMまで含めた動作検証を行うには、従来のようにシミュレータや埋め込み式のロジアナIPコアに頼っていては決して間に合わない。JTAGを使って、論理合成を行わずにFPGAを動かすことが、成功への秘訣である。

本セミナでは、あなたの知らない常識破りなデバッグ方法を実演します。
----------------------------------------------------------

当社の展示内容について、詳しくはこちらをご覧ください。

また、開発中のSpartan-6評価ボードの紹介ページを作りました。現在進行形です。

こちらもよろしくお願いします。

| | コメント (0)

2009.09.04

マルツベースボードとのJTAGの共存方法

eightさんの質問の件の解決方法がわかりました。

マルツのベースボードを使いつつ、上にのるFPGA基板に直接JTAG信号を注入するには、マルツベースボードのジャンパJ6をカットしてください。
Mfpgabase

これで、ベースボード上の出力バッファがディゼーブルになり、上に乗せたFPGA基板上のJTAG信号が自由に使えるようになります。

なお、J5の1-2番ピンのジャンパをはずしても、出力バッファの電源が絶たれるので、同様にJTAG信号が開放されます。ただし、安全性は未確認です。J6のカットがおすすめです。

| | コメント (2)

2009.09.02

Spartan-6基板、出図完了!

ようやく出図が完了しました。

捨て板と認識マークをつけ、5面付けで作りました。
Sp6brd_0902_3

製造は9日に仕上がりとのこと。
ミスがないことを祈ります。

| | コメント (1)

上下を50milずつ縮めた

というわけで、上下のピンヘッダを50milずつ中心に寄せました。
配線も引きなおし、DRCも通りました。

Sp6brd_0902_2

| | コメント (0)

Spartan-6ボード設計完了と思いきや・・

徹夜3日目

ようやくすべてのパターンが引き終わり、シルクの調整も済みました。
Sp6brd_0902


完成かと思いきや、パターンを紙に印刷して、DWMの某付録基板と照らしてあわせてみると、ピンヘッダの間隔が100mil広いことが判明。
基板の外形作成とピンヘッダの配置、大きな部品配置はアルバイトにやらせたのですが、そこで間違っていたもよう。さあどうしよう。今から縮めるか。

| | コメント (2)

2009.09.01

Spartan-6ボードの進捗

とりあえず、下側のピンヘッダへ信号線を出すところまでできました。

Sp6brd0901

ほかには、コンフィギュレーション用のSPI ROMや、コンフィグ関係の信号線の引き出し、罠のような特殊機能ピンの配線を終えました。コンフィギュレーション関連の信号や特殊機能ピンはBank2(設計中のボードの図では下辺)に集中していますが、電源を含めると、かなり配線が厳しいです。
おそらく4層基板では唯一の解ではないかという引き回しとなりました。
DDR2よりもEZ-USB FX2よりも、この部分が一番苦労しました。

ところで、この基板を見てわかる方もいらっしゃるかもしれませんが、実は、ピンヘッダの電源ピンの配置や信号線の配置は、某誌のSpartan3EやLatticeXP2付録基板のピン配置に合わせています。そのため、某○ツのベースボードにそのまま搭載できるはずです。

P.S.
16時30分ごろ

とりあえず、全部品が乗り、パターンが引けました。
あと微調整とシルクと・・・。明日の出図に間に合うだろうか。
Sp6brd_0901_2

| | コメント (3)

« 2009年8月 | トップページ | 2009年10月 »