CPLD/FPGAの初歩的なプログラム方法。


http://www.pyroelectro.com/edu/より。

VHDL vs Verliog vs Schematic




CPLD/FPGAの最も初歩的であるプログラムの仕方について、良い動画が有ったので貼り付けてみます。

この動画、回路図入力と、VerilogHDL,VHDLでの回路記述入力を端的に解説してます。
3つの記述方法が有りますが、作動は全て同じです。


使われているCPLDはAlteraのMAX3000とゆう古めの物ですが、MAXⅡや、最新のMAX10でも操作方法は同じです。

記述→合成→ピン配置→合成→書き込み です。

作る回路の規模が大きくなると、期待している作動をするかとゆう検証とゆう作業が入ります。



動画中はALTERAのCPLDを使用してるので、開発ソフトもALTERAのQualtasⅡですね。

基本的にXilinxのISEでも手順は同じ様なもので、ツールのお作法が少しづつ違います。



今どきの規模が大きいFPGAなどを使う場合、CPUコア等を載せて、、、とゆうふうに使用するようですが、私が使用する回路なんかは、単純な作動の物が多いので回路図入力で事足りてしまいます。


同じ回路を複数載せても並列的に作動するので、ステッパのカレントダウン信号を生成するような回路や、Stepパルスの幅を広げる回路とか、3軸4軸分を1つのCPLDに乗せても、MCUを使用した場合のように、処理に依る信号の遅延は出づらい、、、はず。。



また、以前の記事のようなエンコーダーのカウンタみたいな回路とかも、単純なロジック回路なので、高速に読み取る事ができます。

複雑な信号を出すような回路を作っておき、MCUやLinuxCNCとかの信号でトリガを引き、作動させる。とゆうような使い方もできると思います。




初歩的な使い方であれば、案外難しく無いのでは??と思います。

私自身あまり賢くはないので、そんなに難しい事はしていません。




MCUをプログラムするよりもロジックの回路図での入力の方が、実際の作動の理解がしやすくどちらかとゆうと好きです。



また、動画にあるように、ALTERAのQualtasⅡには、ロジックICの74シリーズのプリミティブ(回路ブロック)も多数あるので、ロジックICのWikiや、データシートを見ながら回路図記述をすることも有ります。

ただ、74シリーズのプリミティブを使用しての記述だけでは、ICの使わない機能までもCPLD上の回路にしてしまうので、全てが全て、回路図記述で事足りる、とは思ってません。
ゆくゆくはVerilogHDLやVHDLで記述をせねばならぬ、とは思ってます。




Xilinxとどちらが良いかは判断つきかねますが、ALTERAのQualtasⅡの方が74シリーズのプリミティブが多い気がします。
また、Latticeは使ったことがないので、、、、。。




最近ではSynthesijerとゆう、Javaから回路記述へ変換するような物も公開されてるようですので、より使いやすく、、、なるのでは?
プログラミングが苦手な私には到底手がでるもの、ではありませんが^^;

Synthesijer を使ったJavaによるFPGA開発のはじめ方




追記。
トランジスタ技術2013 5月号に、AlteraのFPGA/CPLDがプログラム出来るArduinoを使用したUSB-Blasterクローン?の作例が載ってました。。

スポンサーサイト

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

XilinxのXC9536XLへの書き込み。

秋月電子で取り扱っているXilinxのCPLD XC9536XL、同じ秋月電子で取り扱っているJTAG-HS2ケーブルで書き込めませんでした。新しいHS3ケーブルも、XC9500XLシリーズをサポート外としてるので多分書き込みは出来ないのではないかと思います。

私は各所で公開されているパラレルポートを使用した書き込み器を作成し、使用してます。



私自身試してないので確実?かは解りませんが、どうも、ArduinoやBeagleBoneBlackからでもxilinx製のCPLDやFPGAに書き込み出来るようです。

個人的な覚書として、、。。。


GitHubより。
JTAGWhisperer

http://www.element14.com/community/welcomeより。

BBB - FPGA / CPLD Programmer for the BeagleBone Black

また、FTDIのUSBシリアルを使った書き込み方法もネット上にはあるようです。

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

BeagleBoneBlackについて、チョット書いてみる。

日本語のWeb上では、記事が少なめなBeagleBone。。

海外のサイトを覗いてみるとかなりの記事がUPされてるご様子。

それもそのはず、BeagleBoneBlackに使用されているMCU、AM3358にはPRU-ICSSとゆう、The Programmable Real-Time Unit Subsystem and Industrial Communication SubSystemが有り、その中に、PRU(Programmable Real-Time Units)とゆうプログラム可能なユニットが2つ、プロセッサコアとは独立した形で存在してます。

このPRU、独立したユニットなので、プロセッサコアが他の処理をしている最中も、別の事ができます。
制約はありますが、同時に3つの仕事をこなすことが出来パルスジェネレーターとして、このPRUを利用できれば、まさにNC用途用として、他MCUに比べ適しているのでは??と思います。

よく見てみると、TIのAM335xシリーズは産業用コントローラーとしての使用を前提に設計されているようで、各種通信プロトコルに対応できるようです。

PRUを利用したプロジェクトへのリンクはTIのWikiにPRU Projectsとして纏められており、多種多様な用途があるようです。
このあたり、余り日本語のWeb上では紹介されていませんね。。



さてさて、BeagleBoneBlack向けには、Machinekitとゆうマシン制御アプリケーションのためのプラットフォームが提供されており、それを利用してLinuxCNCが動いてます。


さてさて、以前の記事「BeagleBoneBlackLinuxCNCをインストールする記事。。」内のリンクにてBeagleBoneBlackにLinuxCNCをインストールするmultipleろぼっとさんの記事にリンクさせて頂いてますし、私自身「さて、BeagleBoneBlackとLinuxCNCで3Dプリンタは出来るのか?!」とゆう記事に貼った動画にて、BeagleBone上でLinuxCNCを作動させステッパモーターを回してみているわけですが、やはり、とゆうか、他MCUを使用したNCコントローラーに比べ、GUIを使用した操作の方が作動が解りやすく使いやすかったのは事実で、ただ、難点をいえばマウスの入力に対する反応が微妙に鈍く感じたのは致し方ない所、、、なのでしょう。。

ただ、Windowsマシン自体にリモートデスクトップを置くので、コントロールするPCにはLinuxをインストールせずに済むのは大きなメリットだと思います。
また、コントロールするPCとBeagleBoneBlackの接続はUSBケーブルとLANケーブルのみ。

ノートPCでの使用も、問題なく、、だと思われます。

下手すると、パラレルポート増設用のPCカード+α程度で購入出来るBeagleBoneBlack、、、。。


動画上のように、ステッパを制御するだけなら、BeagleBoneBlackに特に特別なハードウエアの追加は必要ではありません。
ただ、ステッパのドライバ自体の信号入力が5V系な場合、BeagleBoneBlack側の信号出力が3.3V系なので、TTL入力可能なバッファIC、例えば東芝の74VHC541とかを5V駆動させてレベル変換する必要はあります。
これと同じでリミットスイッチ入力も、フォトインタラプタや、磁気式のセンサを5Vで使用してる場合では、3,3Vへのレベル変換が必要です。

動画上では、単にレベル変換バッファを使用してモータードライバに5Vで信号を送ってます。


また、温度入力も、BeagleBoneBlack自体のADコンバータを利用しているだけなので、外部のADコンバータは使用してません。


ボード自体の供給が不安定なのか、秋月電子でも取り扱いが有ったり無かったりしますが、最近は在庫があるようです。

結構用途は広いボードなので、単にNCの制御用としてだけでなく、色々と遊んでみるのも良いと思います。


TIのPRUのリンクはかなり興味深いプロジェクトへのリンクが沢山あるので、見きれません。。

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

FlashAir Doujinshi (FlashAirの同人誌)のWeb上での公開

メーカーフェア東京の時に配布されていたFlashAir Doujinshi (FlashAirの同人誌)がWeb上でPDFとして公開となりました。

FlashAir™ Developers
FlashAir Doujinshi (FlashAirの同人誌)




メーカー公式?なのかどうかは解りませんが、家電メーカーの製品を使って、電子工作?に、、、ってのを紹介する小冊子ってのは、かなり珍しいのでは??

FlashAir自体でSPI通信も出来るのですが、SPI通信について端的に纏められていてとても良かったです。


このブログの趣旨とは全然関係ありませんが、面白い試みなので、紹介させていただきました。。

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

直交エンコーダーについてふと思う。。

よく、直交エンコーダーの説明に2逓倍、4逓倍とあります。



エンコーダーの出力をCPLDで読み取り、MCUにパルスで送るとゆう回路を書いていて思ったのですが、2逓倍は2つの相をEXORすればそのままのDutyにて正に逓倍されるのですが、4逓倍は、2逓倍された信号と、反転した信号の立ち上がりエッジをワンショットタイマにて、パルスを生成して作成したのですが、出力されるパルスのDuty比が変わってしまうので、正確には4逓倍、、ではないんじゃないか、、と。。

Duty比が変わっても、周波数は4倍なので、逓倍と呼べるのでしょうか??

識者の方々、お教えくださると有り難いです。。


Web上を見ていても正確な4逓倍へのパルスの加工方法は見当たらなかったので。。

直交エンコーダーの出力は2相分で2bitの出力、状態としては、4状態を表してます。
もし、Dutyを含め正確に4逓倍することができるのであれば、、、8逓倍、16逓倍と、4状態以上の分解能が可能、、、、ですね。。


ともあれ、CPLDを使ってわざわざ4倍パルスを作り出して、MCUに送らなくても、、とは思うのですが、MCUでエンコーダーインターフェースを内蔵しているものを扱う自信がないので^^;。。

プログラムさえ書くことができるのであれば、エンコーダーインターフェースのついたMCUを使うのがてっとりばやいと思います。

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

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

あきらひとし。

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

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

メールフォーム

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

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