CPLD&FPGAにプログラム書き込み

いよいよPCの前でプログラムしている段階は終わり、実際にハードウェアにプログラムを書き込む段階になった。

まずはCPUモジュールのCPLD2個にプログラムを書き込んでみようということで、(・Θ・)巣でXilinx純正のPlatform Cable USBでWR-X CPU moduleと接続する。

ここでiMPACTでバウンダリースキャンしてみるが、なぜかCPLDが1個しか表示されない。CPLD2個をシリアルで接続しているので2個表示されるハズだが、どうなっているのだろうか?

CPLD1個の経験はあるが、2個接続の経験はなかったので、何がいけないのかが分からない。

そもそもiMPACTは2個つけても1個しか表示されず、自分で手動で追加するものなのか?それとも何かがおかしいのか?

とりあえず書き込んでみようとするが、こんどはidcodeが違うため書き込み失敗とか出てくる。

ん〜!?なんだ〜!?
もしかして2個接続の回路を間違えたか!?

などと思い、Xilinxのデータシートを読み返してみるが、接続自体は間違えていないようだ。

ん〜、何がおかしいのか全く分からない。

原因を調べ始めてもう数時間経ち、書き込み成功したら寝ようと思っていたのに既に外は明るくなり始めている。

こりゃもう分からん。明日秋月で2個CPLDを買ってきて2個接続回路を作ってみてそれで試しに書き込みしてみて、それでどういう動作になるのか見てみるしかない、と諦めかけたそのときだった。

テスターで回路図どおりちゃんと基板ができてるか調べていると・・・!?

ん!?なんだ!?変なところがショートしてるぞ!!!

ちょっと待て!これはっ!!!

実は、回路図は見た目上合っているのだが、見た目とは違い、交差している線が接続されてしまっていたのであった!!!

これは基板CADであるEAGLEの問題で、たま〜にこういうことがおきる。

基本的に2つの線が交差しているときには、それがくっついているときは●が表示され、そうではなく単に表示上交差していてショートしていないときには●が表示されないのだが、たまにこれがおかしくなるときがある。

事実、●が表示されていないのに、同一ラインを強調表示させたら●があるとして線がショートしていることがわかった・・・

この部分は一度何かで間違えて●をつけてしまい、おーいかんいかんとか思って、線を一度全部消して引きなおしたのに、なぜかそのままショート扱いになってしまっていたようだった。

全く、EAGLEはこれだから困る。

つまり、EAGLEで作った基板のパターンのミスである。
だがこれは気づかないミスだ。表示上はいくら見ても間違えていないのに、実際にはショートしているという、EAGLEのバグによるミスだからどうしようもない。

結局、基板のパターンを2つ切断し、ワイヤーで直接修正を加えて本来の回路にしたところ、何事も無かったかのようにあっさりCPLDが2個表示され、普通にプログラム終了した。

はぁ〜、こんなことで・・・といいつつ、既に完全に朝。
寝たのは朝9時。
まぁこれは仕方がない。

そして15時頃起きて、今度はサーボ基板の部品で足りなかったものを買いに秋葉原へ。

千石で売っていると思っていたものが売っておらず、マルツを見たら売ってたので、マルツで買った。

それを付けて、今度はサーボ基板のSpartan 3 FPGAにデータを書き込んでみる。


WR-X ServoのSpratan 3 FPGAにXilinx Platform Cable USBを接続しているところ

こちらはあっさり書き込みOK。

しかし、電源の入れ方によってはこのFPGAが猛烈に熱を持って動作がおかしくなることがあることが分かった。

これは、電圧を0Vから上げていくように電源を入れると問題ないのだが、いきなり接続してチャタリングが起こったりすると、どうやらおかしくなるらしい。

実はSpartan 3 FPGAは電源の入れる順序まで決まっていて、非常に扱いづらいものなのであった。

1.2V、2.5V、3.3Vの3電源を必要とし、1.2V電源が他の電源が入るよりも数十ns前にONにしなければいけない、などという非常に面倒な基準がある。

多分電源ON時のチャタリング等でこれが満たされないと、内部で3.3VラインがGNDにショートする回路が作られるらしく、知らずにSpartan 3を触ってヤケドしそうになった。

あのまま電源を入れてたら、Spartan 3から煙が出ていたことだろう・・・

というか、大丈夫なのかね。

一応プログラミングはできていて、Flash ROMから自動でプログラムを読み込んで起動してはいるが、もしかしたら他の部分が壊れたかもしれんw

それにしてもやだね最近のICは。

どんどん低電圧化して、さらに電源の印加順序まで決まっていたりして、使いにくくて仕方が無い。

次は今まで代替74HCxxで実験をしてきた回路をSpratan 3 FPGAを使った簡易回路で最終的な抵抗値などの定数を決める段階に入ることにする。

あとはオシロスコープ等がないと次の作業に移れないのだが、研究室でオシロスコープを買って欲しいと言ってみたところ、思ったより苦しい感じだったので、Tektronixは諦めて秋月の激安3万6千円アナログオシロで我慢するか、と思っているつちのこであった。

You can skip to the end and leave a response. Pinging is currently not allowed.

Leave a Reply

Powered by WordPress | Designed by: Free MMO | Thanks to Social Games, Game Music Soundtracks and MMORPG Wallpapers