Altium Designerのプロジェクト

アルティウムのソフトウェアを使用して構築されたPCB設計プロジェクトに関するコンテンツをご覧ください。

Filter
見つかりました
Sort by
役割
ソフトウェア
コンテンツタイプ
フィルターをクリア
Pi.MX8_Chapter_V Pi.MX8 プロジェクト - ボードレイアウト パート3 1 min Altium Designer Projects PCB設計者 PCB設計者 PCB設計者 Pi.MX8オープンソースコンピュータモジュールプロジェクトの新しいインストールメントへようこそ!このシリーズでは、NXPのi.MX8Mプラスプロセッサを基にしたシステムオンモジュールの設計とテストについて詳しく説明します。 前回の アップデートでは、レイアウト準備を完了しました。これには、インピーダンスプロファイルの作成、ボード製造業者の仕様に従った設計ルールの追加、特別な設計ルールを適用すべきエリアの定義が含まれます。また、LPDDR4インターフェースのルーティングも完了しましたが、長さ調整は(今のところ)行っていません。 DRAMインターフェースの長さ調整を始める前に、Pi.MX8モジュール上の残りのインターフェースのルーティングを見ていきます。ボード上には、多くの高速および低速バスがあり、その中には多くのルーティングスペースを必要とする広い並列バスもあります。各インターフェースに十分なスペースを割り当てるために、まずモジュールの各ルーティング層について大まかなフロアプランを作成します。 ルーティング計画 ルーティングプランは、利用可能な信号層全体に高速および低速インターフェースをどのように分配するかを決定するのに役立ちます。あらかじめ大まかなガイドを設定することで、現在作業している層に十分なルーティング用の不動産が利用可能であることを確認できます。これにより、層の移行を最小限に抑え、ルーティングプロセス中に行う再作業の量を減らすことができます。 レイアウト計画を設定する方法はいくつかあり、主に利用可能なツールに依存します。私たちに必要なのは、既存の画像の上にスケッチを描くことができる基本的な描画ツールです。この例では、Inkscapeを使用します。 Inkscapeでは、背景画像を追加して、配置されたコンポーネントと未ルーティングのインターフェースをカラーのエアワイヤとして表示できます。このスクリーンショットでは、信号層でルーティングされるネットにのみ焦点を当てるため、電源ネットは非表示になっています。回路図では、各電源ネットにネットクラス指令を配置しており、レイアウトエディターで関連するネットクラスを有効にするか非表示にすることで、どのネットがプレーン層でルーティングされるかを簡単に識別できます。 実際のルーティングには、Inkscapeで線を追加して、対応するレイヤー上でルートしたいインターフェースを表します。これらの線の幅を調整して、インターフェースでルーティングされる信号の数を表現できます。線の色は、背景画像から選択して、どのインターフェースが表されているかを識別しやすくすることができます。 レイヤー間の移行にもすべてのレイヤーにスペースが割り当てられる必要があるため、各線の末端にブロックを追加してレイヤー移行を詳細にします。 Inkscapeでのレイアウト計画、背景画像としてAltium Designerのスクリーンショットを使用 上記のプロセスを各ルーティングレイヤーで繰り返した後、実際のルーティングプロセスを開始できます。 トップレイヤーのルーティング ルーティング戦略を確立したので、まずはトップレイヤーのインターフェースのルーティングから始めましょう。トップレイヤーのコンポーネントのファンアウトルーティングは既に完了しているため、残りのスペースをすべてシグナルルーティングに使用できます。残されたスペースは多くありませんが、内部シグナルレイヤーのルーティングを後で容易にするために、内部レイヤーのルーティングに干渉しない領域に戦略的にVIAを配置することで、まだ利用可能です。これは、あらかじめレイアウトを計画することのもう一つの利点であり、そうでなければこれらの領域はこの段階で定義されていません。 トップレイヤーのPiMX8モジュールのルーティング トップレイヤーにトレースを配置する際には、フィデューシャルやラベルなどの機能をトップレイヤーに追加するためのスペースが必要であることも考慮する必要があります。レーザーエッチングされたデータマトリックスコードは、均一なコントラストを提供するために、固体の銅領域またはトレースのない領域を必要とする場合があり、これらの領域はルーティングに使用できません。 内部シグナルレイヤーのルーティング ほとんどの接続は、レイヤースタックマネージャーで定義した2つの内部信号層に配置されます。まず、すべての高速同期インターフェースのルーティングから始めましょう。この場合、MIPI-CSI、MIPI-DSI、LVDSインターフェースなどが該当します。これらのインターフェースはすべて低電圧差動信号を使用し、専用のクロックラインと少なくとも2つのデータラインを持っています。各データラインの長さは、一定のタイミングマージン内でクロックラインに合わせる必要があるため、多くのルーティングスペースが必要です。複数の差動ペアの長さを合わせるには、かなりのスペースが必要になることがあります。なぜなら、インターフェース内の1つ以上のペアが、考慮しなければならない大きな遅延を引き起こす可能性が非常に高いからです。これらのインターフェースを最初にルーティングすることで、後で長さ調整のために十分なスペースが確保できるようになります。 これらの高速差動ペアの層間遷移の近くにリターンパスVIAを配置することも、信号の整合性を確保するために重要です。リターンパスVIAは複数の層にわたってスペースを取ることができるので、信号の遷移が配置されたらすぐにこれらのVIAを配置するべきです。 記事を読む
ATmega328Pの基本:Arduinoなしで始める方法 ATmega328Pの基本: Arduinoなしで始める方法 1 min Altium Designer Projects 電気技術者 電気技術者 電気技術者 Arduino Unoボードをかなりの期間使用してきましたが、多くの記事の例としても使用しています。古いUnoボードに使用されている元のチップであるATmega328Pを、完全に独立して動作させるにはどうすればよいか、いつも疑問に思っていました。Arduinoがそのブートローダー、使いやすいGUIソフトウェア、C++の抽象化を通じてアクセスしやすくしているので、なぜこの試みをしたいのか不思議に思うかもしれません。しかし、時には、他人が行ったことを評価するためには、自分でやってみることが重要です。このプロジェクトは、Arduinoの開発者がどれほど多くの作業を行い、そのフレンドリーな製品で世界を変えたかを本当に示してくれました。 この記事では、外部電源と Atmel-ICEプログラマのみを使用して、チップを完全に独立して起動する方法を説明します。オンボードのシリアルインターフェースを介してチップと通信する方法と、LEDを1つまたは2つ点滅させる方法をデモンストレーションします。 環境設定 ATmega328Pを設定する方法はいくつかあります。タイトルからもわかるように、意図的にカバーされていない方法の1つは、ATmega328PチップをArduino Unoに挿入してプログラミングし、その後ブレッドボードに移動させる方法です。フォーラムのフィードバックに基づき、一部の人々はArduinoのプロセスをスキップして、 MicrochipのAtmel-ICEなどのプログラマーを使用したより伝統的なアプローチを使用したいと考えています。Microchip(旧Atmel)マイクロプロセッサを始める最も簡単な方法は、 Microchip Studioをインストールすることです。この記事を書いている時点で、Microchip StudioスイートのフルバージョンはWindowsでのみサポートされています。CI(継続的インテグレーション)でビルド環境をすべて実行したいと考えているため、代替のアプローチを選択しました。 C言語に対する最も人気のあるコンパイラの1つにGNU Compiler Collection(GCC)があります。これは特定のプラットフォームとアーキテクチャをコンパイルしますが、AVR(ATmega)ファミリーのチップには対応していません。しかし、AVRおよび他のMicrochipファミリー用のコンパイラセットが 彼らのウェブサイトにホストされています。幸いなことに、親切な人々がこれらのコンパイラをDebianパッケージにまとめ、DebianやUbuntuで簡単にインストールできるようにしてくれました: $ apt-get install gcc-avr binutils-avr 記事を読む
オープンソースプロジェクトの概要:ラップトップとRaspberry Pi CM4モジュール オープンソースプロジェクト概要:ラップトップとRaspberry Pi CM4モジュール 1 min Podcasts このエピソードのAltium OnTrackポッドキャストでは、ホストのZach PetersonがOpen Visions TechnologyのLukas Henkelと座談し、オープンソースのノートパソコンとRaspberry Pi CM4モジュールの代替品となる2つの画期的なオープンソースプロジェクトを探求します。 オープンソースハードウェアの最新進歩を発見し、これらの革新的なプロジェクトがDIYコンピューティングの限界をどのように押し広げているかを学びましょう。 エピソードを聴く: エピソードを見る: エピソードのハイライト: ウェブカメラデザイン:ノートパソコン用のオープンソースウェブカメラを設計する際の課題と革新。 ノートパソコンデザインの課題:オープンソースノートパソコンの開発中に直面した主要な障害。 ノートパソコンプロジェクトから学んだ教訓:オープンソースノートパソコンプロジェクトに取り組む中で得た洞察と教訓。 この種のプロジェクトを始めるためのアドバイス:同様のプロジェクトを始めようとしている個人への推奨事項とガイダンス。 オープンソースRaspberry Piの概要とデモ:オープンソースプロジェクトでRaspberry Piを使用する概要とデモンストレーション。 さらに多くのリソース: 記事を読む
エンベデッドシステムのアーキテクチャ:製品に複数のPCBがある場合 組み込みシステムのアーキテクチャ:製品に複数のPCBがある場合 1 min Altium Designer Projects 電気技術者 電気技術者 電気技術者 組み込みシステムは、今日の技術主導の世界で至る所に存在します。インターネットに接続されたシェーバーであれ、複雑な自動車であれ、私たちが今日使用しているほとんどの電子デバイスの中心には組み込みデバイスがあります。1つまたは複数のマイクロプロセッサで構成される組み込みシステムは、複雑さをソフトウェアによって処理させることで、電子機器を簡素化することができます。組み込みデバイスが大きく複雑になるにつれて、プリント回路基板(PCB)も同様に大きく複雑になります。しばしばこれらのデバイスは複数の基板に成長し、当初意図されたよりも大きなアセンブリになることがあります。 この記事では、複数のPCBで構成される組み込みシステムのアーキテクチャのトレードオフと考慮事項について見ていきます。複数のPCBシステムに関連する利点、設計上の考慮事項、および課題について説明します。 なぜ複数のPCBを使用するのか? デバイスを単一のPCBに保つことが理想的な選択肢です(単純さとコストの両方のために)、しかし、設計目標を達成するためには、設計を2つ以上のPCBに分割する必要があることもあります。製品を複数の基板に分割したい理由のいくつかは以下の通りです: モジュラリティ: アセンブリを複数の基板に分けることで、必要に応じて製品の一部だけを交換できます。例えば、単一のPCBが故障した場合、システム全体に影響を与えることなく交換することができます。これは、正しく行われた場合、製造業者のコストと時間を削減することができます。 スペースの最適化: 複数の基板にコンポーネントを分割することで、デザイナーはよりコンパクトで効率的なレイアウトを実現できます。パッケージングのために高さが問題にならない場合の、非常に長く狭い単一の基板と比較して、いくつかの短く積み重ねられた基板を考えてみてください。 熱管理: 多くの熱を発生させるコンポーネントは、熱の放散を改善するために異なるPCBに分割することができます。アセンブリ全体にわたって熱を均等に分散することで、システムの信頼性を大幅に向上させることができます。 スケーラビリティ: 複数のPCBを使用して設計することで、単一の基板で交換可能なインクリメンタルな機能追加が可能になります。全体のコンピューティングシステムを交換することなく、アップグレードされたセンサーやカメラを考えてみてください。 これらの理由(およびその他)から、複数のPCBで構成されるアセンブリを設計することを考慮しますが、組み込みファームウェア側の課題も複雑さを持っています。 複数のPCBアセンブリのための組み込み設計の考慮事項 複数のPCBを使用する場合(該当する場合)のケースを確立した今、組み込みシステムをアーキテクチャする際の設計上の考慮事項を理解することが重要です。ハードウェアとソフトウェアの両方の観点から、単一の基板にすべてを載せるときにはあまり慎重に考慮しないニュアンスがあります。 最初に頭に浮かぶべき考慮事項は、ボード間通信です。各ボードはどのようにして互いに通信するのでしょうか?どのような処理能力(もしあれば)が各ボードに存在するのでしょうか?もしかすると、1枚のボードが脳の役割を果たし、他のボードがセンサーの役割を果たしているのかもしれませんね。I2C、SPI、UART、Ethernetなど、慎重に伝送プロトコルを選び出す際には、伝送線、信号の整合性、そして最も重要な、ボード間コネクタを通じた信号の伝送も考慮しなければなりません。設計者にとって最悪なこと(そして信じてください、私もそこにいました)は、システム全体を設計し、製造業者からPCBを受け取った後で、クロック信号を1つや2つ見落としていたことに気づくことです。また、ボード間コネクタのスペアピンを確保することを忘れがちで、ピン数を最大限に活用しようと試みます。これは最終的に私たちを苦しめることになります。 Altium Designerのマルチボードアセンブリ機能のように、多数の通信ラインをPCB間でルーティングする際には、マルチボードプロジェクトを念頭に置いて設計することが必須です。 また、特にマイクロプロセッサで電力バスを監視する場合、電力の分配方法についても考える必要があります。「脳」へのアクセスを容易にして、任意の壊滅的なイベントを監視できるようにしたいですが、スイッチング供給のノイズ、重負荷のための電力分配、そしてボード間コネクタのピンがその種の電力に耐えられるかどうかも考慮する必要があります。 最後に、組み込みシステムのソフトウェア自体とは直接関係ありませんが、機械設計も重要な役割を果たします。プッシュボタン、タッチスクリーン、およびその他のユーザーへの物理的インターフェースは、マイクロプロセッサに接続されており、考慮されなければなりません。配線はマイクロプロセッサが入力にアクセスできるようにルーティングできるでしょうか?ボード間を通過する際の高速デジタル出力の信号整合性を考慮しましたか?これらは、組み込みデバイスを設計する際に考えなければならないことです。 記事を読む
Generative AIを使用して組み込みコードを書き込み、実行する Generative AIを使用して組み込みコードを書き込み、実行する 1 min Altium Designer Projects ハードウェアと会話するカスタムGPTアクションの構築方法と AIラボアシスタントの構築で、Generative AIを使用してハードウェアを制御する方法を学びました。ChatGPT内でカスタムGPTアクションを利用することで、ChatGPTにラズベリーパイからLEDを点滅させるだけでなく、実験室の機器を制御しデータを取得する能力を与えることができました。これは、人工知能をラボアシスタントとして使用し、機器から取得したデータを処理することができることを意味します。この記事では、Generative AIによってコードを書くだけでなく、組み込みターゲット上で実行し、その過程でフィードバックを受け取ることによって、さらに一歩進んでいます。 背景 Generative AIを使用してコードを書くことは、組み込みシステムでさえ、新しいことではありません。既にコードを一から完全に書くか、提案するだけの多くのツールがあります。ChatGPT、Gemini、Claudeなどの最も人気のある大規模言語モデルは、すべてコードを書くのがかなり得意になっています(比較については、 Gemini vs. ChatGPT: どちらがより良いコードを書くかを参照してください)。私は1年以上前からChatGPTがコードを生成することについて書いてきました( ChatGPTを使用した自動テストを参照)し、それが今日の開発の唯一の方法であると説教してきました。本当の挑戦は、開発のループにAIを取り入れることです。 コード生成はある程度までしか役立ちませんが、Generative AIを使用する場合、それが機能することを検証し保証するには異なるアプローチが必要です。ChatGPTとのコードインタープリターは、ある程度、生成されたコードを実行し、それがあなたのために機能することを検証できるカプセル化されたPython環境を提供します。私はそれをさらに一歩進め、組み込みシステムで同じことを達成できるかどうかを見てみたいと思いました。OpenAIのChatGPTを使用するには2つのルートがあります。最も一般的なルートは、OpenAI APIを使用するクローズドループアプリケーションを作成することです。それはAPIを使用して大規模言語モデル(LLM)からコードをプロンプトして取得し、それをコンパイルし、Arduinoにロードし、生成されたコードの機能を検証するために追加のカスタムコードを使用します。私はGPTアクションを使用して、「コードペアリング体験」にすることで異なるアプローチを取ることにしました。その体験は次のようなものです: 図1: GPTアクションの例 例は単純かもしれません(つまり、オンボードLEDの点滅)が、上記のデモンストレーションで全てがまとまっています。私はカスタムGPTに明確な指示を与えることができ、期待通りに指示に従ってくれました。また、実際にデバイスにアップロードされ、LEDが1秒ごとに点滅することも確認できました。カスタムGPTを閉じたループシステムと比較して使用する良い点は、プロンプト内でかなり簡単に繰り返し作業ができることです: 図2: Arduinoスケッチの反復 記事を読む