- ベストアンサー
CPLDはクロックを入れなくても使える?
ザイリンクス、アルテラ、ラティスなどのCPLDを使いたいと思っています。 一般的(?)にはCPLDにクロックを入れて、そのエッジで信号を取り込んで処理する同期回路設計をすると思います。 今回はCPLDで標準ロジックを複数入れるようなものを作ってみようと思っています。 例えば5入力ANDや、4bit-16bitデコーダのような感じのものです。 これらもクロックに同期して取り込んだ方が出力がきれいに安定するのはわかるのですが、あえてこれは良しとした場合、CPLDにはクロックを入れなくても動かすことはできるのでしょうか? ご存知の方がいらっしゃいましたらご教示お願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは 30年近くPLDに関わってきた(と言っても、たまに使ってきた)回路設計者です。 前述の「商売にならないはずから、多分使えるでしょう」という論理は全く理解できませんが、確かに使えます。 と言うよりは、そもそもそう言った用途からPLDは生まれてきました。 当初はエンコーダやデコーダ、マルチプレクサが主力で、FFだけを集積したものは共通クロックで良いなら標準ゲートのラッチICで充分でした。 今でも、コントローラとのI/Fで仕方なく少し組んでみたり、しょうーもなく大掛かりだがマイコンよりは使いやすい理由で、エンコーダやデコーダ、マルチプレクサに使うことはあります。 うまく組めば(出力にFFを付加すれば)、結果が確実にシュミレーション出来るからです。 マイコンではどんな簡単なプログラムでも実機デバッグが必要ですが、それが不要になります。 ゲート出力をPLDから出力すると、コンパイルした時の文法チェックでエラーが出ます。 非同期出力の場合はタイミング検証ができないので、エラーとしている様です。(ALTERAの場合) 現在のPLDは大規模集積が目的なので、検証がやっかいな非同期回路をメーカーは相手にしていません。 使われる場合は自分で確認して使ってね! というスタンスです。 特にマイコンとのI/Fの場合、内部は同期回路に近いのに、速度や機能の関係から生じた同期くずれのマイコンI/O信号出力を、PLDやFPGAに入力して処理する場合は、本当に難儀しますね。 一番肝心な入力部分が正確にシュミレーション出来ないからです。 そこから派生する全ての信号がエラーとなり、多数の文法エラーに本当のエラーが隠れてしまいます。 質問者様もお分かりのようですが、PLDやFPGAの内部ゲートは標準ゲートICとは異なり、非常に高速なのでそれを使ってAND、OR回路を組むと、ゲート配置位置や配線の影響で簡単にグリッチ等が発生します。 信号をフィードバックさせない限りは、いずれ落ち着きますが、注意を要します。
その他の回答 (1)
- ybnormal
- ベストアンサー率50% (220/437)
CPLDは使ったことありませんが(FPGAはよく使います)、クロックなしの回路も作れると考えるのが自然です。 全てピンがそうでなくても、一部のピンで出力を入力と同じサイクルに取り出したいというようなケースはよくあることですから、組合せ回路のみをCPLDやFPGAに載せて動作させることができないとなるとこんな不便なことはありませんし、そもそも設計の自由度を制限してしまいます。そのような大きな制限のあるプログラマブルデバイスをあえて選ぶ顧客はいませんから、XLNXもALTRもそれでは商売にならないと思いますよ。
お礼
早速の返信ありがとうございます。 普通に考えて出来ない事は確かに不便ですから、出来て当然...ですね。 ありがとうございました。
お礼
返信ありがとうございます。 記載はしませんでしたが、私が思っていることに見事にピシャリと合いました。 PAL/GALから中々抜けきらず、いよいよCPLDを本格的使うという状況です。その間に、どんどんCPLDも進化し、今はCPLDといいつつ内蔵EEPROMからロードするSRAMタイプになってしまっています。 とても参考になりました。おりがとうございます。