Pluto-Stepを今のFPGAで。。

かなり前の記事「LinuxCNCにて、Pluto_Pを動かしてみる。」にて紹介したPluto-P FPGA Boardを使用したパラレルポートのEPP接続にて動くLinuxCNCの外部パルスジェネレーター、入出力ソフトウエア Pluto-Stepを、入手しやすいAlteraMAXⅡにて作動できるようにしました。

Pluto-P自体に使われているACEX1K自体がFPGAとしては古い部類の物なので結構高価なのと、入手が難しそうなので、国内でも比較的入手がしやすいCPLDのMAX2を使用したMaxⅡPluto-Stepを作りました。


作った、といえども、Pluto-Step自体CPLD等の回路記述言語、VerilogHDLは公開されているので、実際の所、ソースコードを触ったのは1箇所だけ。

通常の素のFPGAとPluto-Pのハードウエア的な異差を埋めただけです。


Pluto-Step自体は、パラレルポートのEPP接続にて8bit双方向のデータ通信によってデータを送り、外部FPGAに作ったパルスジェネレーターにて、Step/Dir信号を生成、出力。


また、通常のパラレルポートを使ってリミットスイッチ等々に使われる1bitの入出力の数も、パラレルポート使用時よりも増えます。


また、外部パルスジェネレーターとなるので、出力出来るStepパルスの最大周波数が312.5kHzとなり、パラレルポートから取り出せる周波数を軽く超えます。


ただ、ステッパモータードライバ自体が入力可能な周波数上限もあるので、ただ闇雲に高ければOKとゆうわけではありません。。


更に、パラレルポートドライバが使用する25μS単位で更新されるbase threadを使用しないで、1ms単位で更新されるservo thread上でPluto-Stepは実行されるので、LinuxCNC使用の大きな敷居となるLatencyTestにそんなにシビアではなくなるのでは?と思います。


ただ、気になるジッタはの影響はサーボスレッドにも出てくるので直接出力されるパルスにも影響は出ます。

これは、同じようにパラレルポートを使用するMach3も同様で、OS自体の(Windows)割り込み処理をどうやっているのか解りませんが、。。



また、このPluto-Stepと同じ作者が公開(LinuxCNC公式ならば、インストール時に既にPCの中に入ってる)しているPluto-Sarvoとゆう物もあります。

こちらは、DCモーター等をエンコーダーでフィードバック制御できるようにPWMジェネレーターと、高速エンコーダー入力が可能です。

エンコーダー入力自体、CPLDを使用してるので、CPLDの駆動速度40MHzがそのまま入力のサンプリングレートとなります。

こちらはまだ作動確認をしておりませんが、作動すると思われます。



Max2PlutoBoard.jpg

画像はMax2Pluto-Step。
使用を前提に基板化しました。
MaxⅡの部分はOptimizeさんのMaxⅡminiを使用し画像の背面に取り付けてあります。
配線等を取り付ける基板はこの上部にジャンパピンを取り付けて引き出せます。
パラレルポートの仕様が明確ではない為、MaxⅡの入力上限の電圧を超えた信号を入力しても良いようにしてあります。
出力はMaxⅡの電源電圧と同じ3.3V。
5V入出力が必要な場合には、入出力の端子台等を取り付けるサブ基盤上に入力、出力トレラント機能のあるバッファICを使用します。

まだ、詳細なテキスト等を書いてないのでとりあえず、ですが、改変したVerilogHDLから回路図、CPLDへの書き込み等詳細なテキストを書く予定です。



テスト基板として、作成したMax2Pluto-Stepです。

ステッピングモータードライバ、サーボアンプ用のStep/Dir信号が4軸分と1bitの入力が16、出力が14あります。


また、MaxⅤを使用したMaxⅤPluto-Stepも作成してみました。



こちらもMaxⅡと同様の入出力で、同じように動きます。



更にこちらは以前の記事、FPGA基板を買ってみる。で紹介したFPGACycloneⅤを使用したボードBEMICROCVを使用したCyclone5Pluto-Step。

Pluto-StepはFPGAやCPLDのハードウエア上の特殊な機能を使用してないので、このように、ロジックエレメンツの容量さえ足りていれば同じVerilogHDLによって同じような回路が生成されて使用することができます。
この辺りがMCUとCPLD/FPGAとの差で、FPGA/CPLD固有のハードウエアを使用してない場合に限り、HDLとゆう回路記述を使いまわすことが可能です(全てではないと思います、が。)

動画中にCycloneⅤを使用してますが使用してるロジックエレメンツは数%なので、とても勿体無い使い方かも知れません。
ただ、Alteraの開発環境QualtasⅡではHDL記述等を階層化、トップモジュールを回路図とすると、入出力ブロックとして扱えるので、PWMジェネレーター等を出力線に繋ぎ、FPGAからの出力直にPWM出力とすることとか、色々な事ができると思います。。


ロジック回路ということでMCUを使用するよりも、理解しやすかったのと、このような事がしたかったのでCPLD・FPGAを触ってます。
Mach3のUSB/Ehernet接続で使用するSmoothStepper自体も、Xilinx社製のFPGAを使用してますし、LinuxCNC用であれば、PCI/PCI-E用のインターフェースであるMesaBoardの高速入出力ボードなどもFPGAを使用してます。

対人間のインターフェース部分とかはMCUを使用したほうが圧倒的に使いやすいのですが、単にロジック回路を実装するにはCPLD/FPGAの方が簡単に思います。

また、複数回路を並列的に同時に作動させることができるので、容量があれば、、

たとえば、、このようなPluto-Stepを動かしながら、Step信号をCPLD/FPGA内で分岐させて、エッジ検出のワンショットパルス回路を繫いで出力すると、カレントダウン生成用の信号を作ることができますし、エンコーダー入力自体を内部で分岐させて、カウンタでカウントし、MCUへ出力すると、PC内部のエンコーダー数値との比較用のエンコーダ表示器が作れます。

もちろん並列的に作動するので、Pluto-Stepの作動を邪魔することはありません。




FPGA/CPLDの記事は検索をかけるとかなりの量のページにヒットします。
日本語の資料も数多いのですが、海外の資料も更に多くあります。


回路図入力等々であれば、開発環境の使い方さえわかってしまえばさほど難しいものではありません。
ほとんどテキストを書かずに、回路記述が出来てしまう場合もあります。


試してみては??







スポンサーサイト

テーマ : 自作・改造
ジャンル : コンピュータ

コメントの投稿

非公開コメント

ライセンス
アクセスカウンター
プロフィール

あきらひとし。

Author:あきらひとし。
木工用CNCルーターフレームと、ステッピングモータードライバを作ってみました。
たぶん記事は一般的な人には殆ど必要のない事ばかりなの、かも。

モーターは回るだけでも楽しい。制御(速度、トルク、位置)できるともっと楽しい!

メールフォーム

名前:
メール:
件名:
本文:

リンク
最新記事
カテゴリ
スポンサードリンク
スポンサードリンク 
スポンサードリンク
オンラインカウンター
現在の閲覧者数:
検索フォーム
RSSリンクの表示
最新トラックバック
最新コメント
月別アーカイブ