June 03, 2007

CPLDへの書き込み

 なんかCPLD(Complex Programmable Logic Device)がやりたくなりました。
 CPLDは秋葉原の千石で安いものは300円から手に入ります。
 ところが、CPLDの書き込みにはパソコンのパラレルポートが必要なんですね。私はメインPCがノートなので、もちろんパラレルポートなんざついてません。USB→パラレル変換ケーブルは、国内では売ってるのを見つけるほうが難しく、海外に発注すると1〜2万円かかるという代物。(4日追記:秋月に980円で売ってます)ちょっとお手軽にCPLDに手を出すというのには、ここがネックになっていたわけです。

 そこで、【USBで始められるCPLD開発】ということで、パラレルポートを持たない人でもCPLDをお手軽に始められる方法を見つけてきました。

 使用するのは、こちら。オプティマイズさんで販売している、『MINI EZ-USB』です。部品が実装されていないものは3000円で購入できます。『MINI EZ-USB』はAN2131SC版とAN2135SC版がありますが、今回使用するのはAN2131SC版です。AN2135SC版ではできませんので注意してください。抵抗等は表面実装ですが、CPLDの配線はチップなんかよりもっと集中力を要するので、ここでビビってはいけません。
 ターゲットとなるCPLDはこちら『XC9572XL 10PC44C』です。千石で購入できます。お手軽ということで、PC44パッケージを選択しました。PC44なら、DIP変換ソケットが安く購入できます。

 MINI EZ-USBを組み立てたら、CPLDの書き込み基板を作りましょう。配線は以下の通りです。このMINI EZ-USBは、CPLD書き込み基板だけではなく色々な用途に活用できるので、CPLD書き込み基板に直接ハンダするよりも、ソケットを使って取り外しできるようにすることを推奨します。

 CPLD(XC9572XL PC44) | MINI EZ-USB
    TCK(17番ピン)  →   B3
    TDI(15番ピン)  →   B2
    TDO(30番ピン)  →   B4
    TMS(16番ピン)  →   B5
    GND(10,23,31)  →   A13,B13

 CPLDに3.3Vの電源を供給するのを忘れないようにしてくださいね。


 どうですか?できましたか?
 それではCPLDに書き込む回路を制作しましょう。開発にはxilinxのISE WebPackを使います。もちろん無料です。普通にインストールすると、2GByteもHDDを占有します。注意してください。
 ISEでプロジェクトを作成するとき、最初にターゲットデバイスを聞かれます。そのときに、[XC9500XL CPLDs] [XC9572XL] はその通りですが、Packageの項目を[VQ64]にしてください。ここがミソです。私たちが購入したのはPC44パッケージですが、ここはVQ64パッケージということにしといてください。
 回路の制作は、回路図でもVHDLでも好きにしてください。
 さて、回路を制作して一度目のImplementも完了したら(Synthesizeの項目の警告は、とりあえず無視してもよさそうです)、2点目のミソ。
 ピンのFittingを行うのですが、このとき目的とするPC44パッケージと同列にあるVQ64パッケージのピンを設定してください
03da1d38.JPG
 図を見てもらって、例えば、「PC44のP1に設定したいときは、VQ64の列を見て、P8と設定する」ということです。かなりトリッキーです。図のXC9572XLのデータシートはこちらからダウンロードできます。
 この設定は、ISEのProcessesウィンドウの[User Constraints]→[Edit Constrains (Text)]でやると混乱しなくてよいでしょう。例えば、以下のように記述します。

#PACE: Start of PACE I/O Pin Assignments
NET "CLK" LOC = "P15" ; --つまりP5
NET "LED_A" LOC = "P19" ; --P8
NET "LED_B" LOC = "P20" ; --P9
NET "LED_C" LOC = "P22" ; --P11
NET "LED_D" LOC = "P24" ; --P12
NET "LED_E" LOC = "P25" ; --P13
NET "LED_F" LOC = "P27" ; --P14
NET "LED_G" LOC = "P33" ; --P18

 Fittingの後に、もう一度Implementをするのを忘れないようにしてくださいね。


 さて!書き込みましょうか。
 おっとその前に、EZ-USBのドライバをPCに入れないといけません。このぺージの一番下からダウンロードできます。ついでに、その下の「EZ-USB ツール」のほうもこれから使うので、ダウンロードしておきましょうか。
 いかがですか?夢の格安CPLDライフはもう少しです!
 ドライバの設定が終わって、ツールのダウンロード・解凍が終わったら、もう書き込みができます。EZ-USBを書き込み基板に接続して、USBをつないだら書き込み基板の電源をON。コマンドプロンプトから、EZ-USBツールのフォルダで「robo_cpldwr 作成したjedファイル名」と入力すれば、書き込みが始まります。(事前にrobo_cpldwr.exeとISEで作成したjedファイルを同じフォルダにおいておくほうがいいですね。)割りと早いです。Successと出れば、書き込み成功です。お疲れさまでした。


 この記事で書いたCPLDへの書き込み方法は、XC9572にしか適用できません。まぁ、CPLDのお勉強程度にはちょうどいいかも。安いし。

次の日の日記もごらんください。

 「robo_cpldwr.exe」は、もともとオプティマイズさんで販売している別の製品のCPLDに回路を書き込むときに使うのですが、それを転用させてもらいました。オプティマイズさん、EZ-SERVOなど魅力的で格安な製品にはいつもお世話になっています。でも、「robo_cpldwr.exe」がXC9572XLにしか使用できないのは分かるのですが、パッケージまでVQ64固定にしますか・・・。そこのところのjedファイルチェックは甘くして欲しかった。。というか、メールとかすれば「robo_cpldwr.exe」のソースコードとかもらえるんだろうか?それなら、他のデバイスにも書き込みできるようにいじっちゃうんだけど。

 パッケージが違っても、中のデータ構造は同じです。だからこんなことができるわけで。xilinxの中の人だって、パッケージが違うだけで内部構造を変更したりなんかしたくないだろうしねー。

k_yon at 00:56│Comments(1)clip!ロボットとか 

この記事へのコメント

1. Posted by yoneken   June 03, 2007 01:20
XC9500系は端子の特性で「シュミットトリガ」を選べません。そのためスイッチの処理がめんどいです。VHDLで無駄に長い記述をするか、CPLDのほかにバッファICを置く必要があるかも(CPLDで十分基板面積取ってるのに!!)。シュミットトリガがないってだけで、他のデバイスを選ぶ理由になります。

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
現状報告
 KiCad解説本の重版が決定しました!ありがとうございます♪.(2016/12/10)

自己紹介
yoneken
logo
 ロボットの研究・開発をしています。

続きを読む

連絡先は
ad

Syndicate this site
 2012年からKiCad日本語版バイナリのメンテナもしています.
来てくれた人たち
  • 今日:
  • 昨日:
  • 累計:

ショップリンク
嬉しいコメント
記事について
 このブログ記事の著作権は全てyonekenに属します。
 転載や個別記事へのリンクはご自由にどうぞ。連絡は必要ありません。
 記事の内容は無保証です。古い記事の内容は当時と状況が変わっている場合があります。
 内容に関する質問はコメント欄でもらえると、他の人にも役立ちます。
記事検索
月別
リア友リンク