複雑プログラマブルロジックデバイス(CPLD)は、あなたの開発ツールに欠かせないハードウェアです。その名の通り、これらのチップをプログラムすることで、必要なロジック機能を実現できます。これは、旧式のチップの交換にも、様々な技術を学び試すための手段としても活用できます。CPLDを使って実際に試してみる以上に、優れた学習方法があるでしょうか?
はんだ付け不要のブレッドボードなど、さまざまなものに接続できるように CPLD モジュールを作成しましたが、失敗しました。はんだ付け不要のブレッドボードの利用可能なプラグイン スペースは 1.1 インチのようです。フットプリントを 1 インチ幅に作成したため、両側にワイヤの列のためのスペースがありません。あぁ。
しかし、少し話を戻して、私が何をしているのかをもう少し詳しく説明させてください。私は、キットとして組み立てることができ、自宅で簡単にハンダ付けでき、回路内でプログラムでき、3.3ボルトまたは5ボルトで動作するプログラマブルロジックを作成したいと考えています。
はんだ付けしやすいキットを実現するために、3.3Vと5Vバージョンがあり、電源電圧に関係なくプログラミングを維持できる古いCPLDコンポーネントを使用しました。ロジック自体は、Altera MaxシリーズのCPLD ICで、32個または64個のマクロセルを備えた回路基板に適した2つのバージョンがあります。マクロセルは、論理的な「用語」を使用してプログラムされ、プログラム可能な相互接続を介して他のマクロセルと相互接続される基本的な論理構成要素です。
回路図を見ると、内容はそれほど多くないことがわかります。基本的には、CPLD、インサーキットプログラミング回路、そしてCPLDロジックを駆動する発振器です。
この部品はEPM7032およびEPM7064と呼ばれ、44ピンのプラスチックリードチップキャリア(PLCC)を使用しています。リードの形状がJ字型であることから、Jリードと呼ばれることもあります。このパッケージは、スルーホールソケットに挿入することも、プリント基板に直接はんだ付けすることも可能です。
オンボード発振器を内蔵しているため、CPLDは外部クロックを必要とせずにステートフルな演算を実行し、高速カウンタを独自に生成できます。外部クロックが利用可能な場合は、モジュールの高速クロックを使用して、外部クロックの立ち上がりエッジまたは立ち下がりエッジごとにクロックイベントを生成し、CPLD/FPGAガイドラインに従うことができます。つまり、クロック入力を「非同期」で駆動するのではなく、内部グローバルクロックネットワークを使用する必要があります。この発振器の定格電源電圧は1.8~5.5ボルトです。
ビデオをご覧いただければ、発振器の「INH」ピンの扱い方に関する私の個人的な好みについて説明しているのがお分かりいただけると思います。簡単に言うと、仕様書が合法であることを確認した後、私はそのピンをフローティング状態にしておく傾向があります。
このような機能を扱う際に、私が頭に浮かんだ理由の一つは、入力ピンを電源レールに直接接続すること(可能であれば)を好まないという点でした。つまり、本来必要ではない場合でも、過渡現象時の電流を制限するために直列抵抗を使用することを好みます。
長年にわたり、大量生産においていくつかの問題を見てきました。時折、電源のオンオフなどによって、電源レールに直接接続されているピンの電圧がチップ自体の電圧よりも高くなることがあり、これは好ましくありません。最後に、ピンを抵抗器(電源またはグランド)を介して電源レールに接続すれば、後で気が変わってピンを使用することもできます。これは、未使用のドアに関する私の経験では特に当てはまります。これらのドアをフローティング状態や未接続のままにしておくべきではないことは、おそらくご存知でしょう。プルアップ抵抗器を使用することで、銅配線を切断することなく信号を接続し、ゲートを使用できます。
10ピンコネクタと数個の抵抗器でプログラミング回路を構成します。抵抗器がすべてプルアップ抵抗であれば抵抗ネットワークを使用するのですが、残念ながら1つは接地されています。
このような独立したCPLDをプログラムするには、専用のプログラマが必要です。私はいつも手元にいくつか持っているので、これは簡単に言えますが、持っていない場合でも、この分野に参入するのはそれほど難しくありません。承認済みの「Altera USB Blaster」は50ドルで販売されており、Digikeyなどで購入できます。私はeBayでクローンをいくつか入手しており、そのうちの1つはAltera、Xilinx、Latticeを同時にサポートするクローンです。インターネット上には、独自のクローンを作成するために使用できるプロジェクトとコードがあり、プログラマクローン作成プロジェクトのビデオ候補リストにそれを記載します。また、マザーボード、Arduino、PICなどをプログラムできるシールド設計も紹介します。
CPLDのコンパイルとプログラミングに必要なソフトウェアはAlteraから無償で入手できますが、この古い部品には旧バージョン9.1が必要です。幸いなことに、これは私が最も気に入っていた旧バージョンでした。直感的に操作できるタイミングアナライザが搭載されていましたが、後のバージョンでは削除されてしまいました。
PCBはシンプルな両面設計で、回路基板が収まる限り、接地や電源供給には銅を使用することが多いです。ただし、銅の流し込みがうまくいかず、問題や仕上がりの悪さにつながる場合もあるため、銅の流し込みはあくまでもツールであり、適切に管理する必要があります。
今日では、多くの(ほとんどと言ってもいい)CADソフトウェアパッケージには最終製品の3Dビューが含まれていますが、画像の精度は部品を表すために使用される3Dモデルの精度に依存します。ここでは、44ピンソケット、プログラミングコネクタ、および発振器の3Dモデルを選択した箇所を示します。私がよく使用する3Dパッケージをいくつか紹介します。
多くの企業は自社部品の3Dモデルも保有している。モレックスは、この分野で優れた実績を上げている企業のほんの一例に過ぎない。
私が犯したミスは、美観などの機能には影響せず、主な問題でもありません。つまり、単一のブレッドボードには適していないということです。
設計を誰かと共有するかもしれないと思った途端、CPLDの回路図シンボルと、全体のフットプリントである40ピンコネクタのピン配置にすぐに不満を感じました。40ピンの2列コネクタのシンボルを入手し、1インチのフットプリントに調整しましたが、ピン番号は1、2、3、4…ではなく、DIPパッケージのように側面に1、3、5、7…と番号が振られており、まるでリボンケーブルコネクタのようです。そのため、モジュールへの接続方法やトラブルシューティングを判断する上で、直感的に理解しにくいフットプリントとなっています。
同様に、CPLDのピン割り当ても少し分かりにくく、私は境界スキャン記述言語(BSDL)に依存する一連のユーティリティを使用してシンボルを作成しました。ほとんどの主要ベンダーは、メインストリームコンポーネント用のBSDLファイルを提供しており、これを使用すると、シンボルとパッケージを(半)自動的に作成できます。他の自動化ツールと同様に、これはあくまでツールとして捉え、最適な結果を得るためにはさらに調整が必要になる場合があります。このケースでは、ピンをアルファベット順にリストアップさせましたが、これはボード上のピンを追跡する際にはほぼランダムです。その日は非常に不安だったとしか言えません。
こうした近道には、いつか必ず代償が伴うものです。このモジュールを改造する際には、部品自体に合ったピン配置を決定し、それに基づいて設計します。そうすることで、回路図の記号を一目見るだけで、オシロスコープのプローブをどこに配置すればよいかが簡単にわかるようになります。
回路基板を使用する際には、主に見た目や利便性を向上させるための改良点がいくつかあります。ピン1のインジケータは多くのパッケージでより一般的になるべきであり、オシロスコープのグランドやVOMリードを接続するためのシンプルなグランドポイントを私は常に好んでいます。そのため、電源とグランドを基板下部のピンにクランプするのではなく、基板に直接供給できるように、2ピンコネクタを追加することも検討しています。
回路基板を改造する前に、物理的および外観上の問題がないことを確認したい。電源を入れて発振器が正常に動作していることを確認した後、プログラマーを接続した。3.3Vバージョンはプログラミングソフトウェアよりも新しいにもかかわらず、CPLDを検出して「不明」デバイスとして表示した。
次に、Quartusでカウンタを作成し、ピン番号を割り当てました。コンパイルとダウンロードが高速で、オシロスコープでカウンタの動作を確認できたことから、設計が実現可能であることが確認できました。
Verilogで記述された簡単なテスト回路は非常にシンプルです。コードは以下のとおりです。回路図とVerilogテスト回路をQuartus IIプロジェクト(バージョン9.1以降が必要)として含むZIPファイルをダウンロードできます。
前述したように、設計を共有したり、さまざまなトラブルシューティングを行う際に必要な詳細にもっと注意を払うために、回路基板の2回目の改訂を行います。下部コネクタの幅を0.9インチ以下に設定する必要があるため、標準的な「ワイド」DIPパッケージである0.6インチに設定し続けることができます。これを行うと、下部のピンがCPLDソケットのフットプリントから突き出ることになります。当時手作業で組み立てられていたため、生産状況ではこれを行いませんが、目標の1つはんだ付けキットを作成することでした。手作業によるはんだ付けの妥協点は、発振器がSMD表面実装ハウジングに収まっている必要があることです。スルーホールバージョンは非常に大きく、通常は私が望む電圧範囲をサポートしません。
これらのモジュールを使って、完全な簡易コンピュータを構築することは可能でしょうか?メモリを追加する必要があると思うのですが。
笑…そうですね、どの種類のコンピューターかによります。ただし、「本物の」マイクロコントローラー/マイクロコンピューターはモジュールの「ピンボンディング」の影響を受けるため、モジュールから十分な用語を取得して役に立つことをすることはできません。
私は64バイトのサイズで完全なNTSCカメラのタイミングおよびモードコントローラを作成しました。そのため、プロセッサは必要ありません。
『Nand to Tetris』という書籍で使用されている構造化VerilogとHDLは、ほぼ同じです。
スルーホール部品とは? 0805の溶接は簡単です! 今こそ、すべてのDIY愛好家がこのスキルを習得する時です。
上部のソケットを下部からハンダ付けされたピンと重ね合わせると、「6 センター (40 ピン チップをシミュレート) または対角線など」を使用できます。これは、下部のリードをハンダ付けするための厳密に手動のハンダ付けコンポーネントになります。上部のソケットは足の後ろにあります。
しかし、初心者が下からハンダ付けするのは難しいです。ブレッドボードのPCBにヘッダーをハンダ付けする場合(eBayで入手できる安価なSMDアダプタボードはプロトタイプ作成に使用できます)、ヘッダーをブレッドボードに挿入し、その上にPCBを載せると簡単にハンダ付けできます。ブレッドボードには非常に適しています。下からハンダ付けする必要がある場合は、さらに難しくなります。
CPLDが中央にある場合(配線が容易になる可能性がある)、重ならないように斜めに設置でき、4列あり、またはCPLDを片側に配置できます。
はんだ付けする前にコネクタをブレッドボードに差し込むというアドバイス、ありがとうございます。私のブレッドボードは少し不安定なので助かりました。
片側にDIP形式のブレッドボードピン、もう片側にチップソケットの「ドングル」タイプを取り付けるのはどうでしょうか?チップはブレッドボードの端に引っ掛けることができます。配線はタイトになりますが。
|####### ******************** |. はい、XilinxやLatticeが無料版を提供しているように、私もAlteraの「無料」版を使うことにしました。Al Williams氏と連絡を取り、すべてのオープンサポートが何に対応しているのか、そしてデバイスシリーズ固有の属性も含める必要があることを理解する必要があります。とはいえ、無料版でもかなり多くのことを成し遂げました。
はい、CPLDがピンと重なっていることを示しているのだと思います。正しく理解していれば、これはリビジョン2のように見えるかもしれません。量産を設計する際、私は「手はんだ付け」の工程にいつも抵抗があります。なぜなら、ピンが重なってしまうからです(実際には、非部品側のはんだ付けピンです)。 )すでに手はんだ付けされた部品ですが、これは小さなキットであり、量産向けの設計ではありません。この歳になるとなかなかなくせない習慣があるだけです。 
CPLDと受動部品を搭載したT字型回路基板で、T字型部分が広いものは、ブレッドボードの端に取り付けると非常に便利だと思います。Adafruit RasPi T-Cobbler(http://www.adafruit.com/products/2028)のようなものです。これならブレッドボードのほとんどの領域を有効活用できます。
残念ながら、この製品の生産中止は、XR2206やICL8038をベースにした他のすべての関数発生器と同様に、サイドプロジェクトでの使用を著しく制限することになるでしょう。
面白いアイデアですね。この2つのチップは気に入りました。CPLDは時代遅れではなく、3.3Vでより安価に入手できる方法なのです。
あなたの「ナンセンス」についてですが…ブレッドボードに載せるために新しいレイアウトを作ったわけではないですよね。まずブレッドボードに配線を通し、それからCPLDを配線に通せばいいんです。もしくは、電源とグランドのストリップを片方から外せるなら、ブレッドボードを2枚使えばいいでしょう。
AltiumとEagleについて。KiCadは検討されましたか?AltiumよりもEagleを好むという制約はなく、デフォルトでは接続されていないすべてのピンに対してDRCエラーを生成します。ピンを開放したい場合は、明示的に指示する必要があります(入力ピンのみで出力ピンは対象外かもしれませんが、まだ検証されていません)。もう一つの優れた点は、非常に習得しやすいことです。たった半日で習得でき、優れた入門マニュアルのおかげですぐに使い始めることができました。
私はスルーホールよりも(部品サイズの大きい)SMDの方が好きです。使いやすいからです。基板をいちいち回転させる必要がありません。(ミラーリングのせいで、いくつか愚かなミスを犯してしまいました…)。抵抗のリードを切断する必要もありません。設計を共有する場合、複数のパッケージを基板上または単一の部品上に便利に配置できます。SMD抵抗のスルーホール。(レイアウトは少し複雑になりますが)。
私はPDF形式の「KiCad 入門ガイド」を使用しました。私が使用した旧バージョンは29ページで、最新バージョンは52ページです。他のチュートリアル(ビデオリンクを含む)でも見つけることができます:http://kicad-pcb.org/help/tutorials/
HackadayとThe Amp Hourの[Chris Gemmell]がKicadに関するシリーズ記事を作成したことは知っています。http://kicad-pcb.org/help/tutorials/
KiCadが役に立つかもしれません。Rev 2でどうなるか見てみます。ご提案ありがとうございます。未接続の入力はDRC(ERC)にとって良いことであり、コネクタやその他ソフト接続またはIOを維持するものに関しては、ほとんどのCAD切断メッセージは通常回避できます。
簡単なテストを実行し、コネクタを空のテーブルに配置して、注釈とDRCを実行しました。すると、各ピンでDRCエラーが発生しました。しかし、接続されていないことがわかっているピンをマークするのは非常に簡単です。
パッシブに設定しました。検索する必要があります(コンポーネントの編集 -> ライブラリ エディタで編集)。ライブラリ エディタは別のウィンドウでコンポーネントを開いて読み込み、コンポーネントの任意の部分を確認または変更できます。変更されたコンポーネントは、回路図に保存または更新できます。これにより、コンポーネントの変更が非常に簡単になります。ライブラリについてはあまり気にしません。たとえば、cpld を使用する場合は、ピンに意味のある名前を割り当てたいです。さらに重要なのは、独自のコンポーネントを設計するための優れたインターフェースがあることです。
KiCadのERCでは、「未接続」ピンは「パッシブピン」とは異なる種類のピンであり、すべての「未接続」ピンはエラーを生成します。ERCの動作は、ツール→電気ルールチェッカー→オプションで簡単に設定できます。
投稿日時:2021年11月18日





