埋め込み
この記事では、Verilogモジュールの基本構造を学び、Verilog「wire」データ型とそのベクトル形式の使用例を見て、VHDLとVerilogのいくつかの違いについて簡単に触れます。 この記事では、Verilogモジュールの基本構造を学び、Verilog「wire」データ型とそのベクトル形式の使用例を見て、VHDLとVerilogのいくつかの違いについて簡単に触れます。 VerilogとVHDLはデジタル回路を記述するために一般的に使用される2つの言語です。AACにはVHDLの基本概念について議論する一連の技術記事があります。この記事はVerilogに関するシリーズの出発点として機能しま
Verilogで組み合わせロジックをモデル化する方法を解説。真理値表実装のための条件演算子と、簡潔な設計を可能にする強力な「always」ブロックをカバーします。 このガイドでは、Verilogで組み合わせ回路を記述する主要技術を歩いていきます。まずassignキーワードを用いた継続的代入構文を再訪し、次に条件演算子(?:)を多重化器ロジックを簡潔に表現する手段として導入します。最後に、alwaysブロックがさらに明確な手続き的記述を提供することを示します。 以前、継続的代入のためのassignキーワードを扱いました。これらのステートメントは常にアクティブで、回路のゲートレベル記述を得られま
AntmicroのRenodeのようなオープンソース機能シミュレータが、ハードウェア・ソフトウェア共設計においていかに不可欠になるかを実証します。 組み込みシステムは急速に進化し、次世代SoCは複雑さを増しています。Semico Researchによると、この複雑さが設計サイクルの長期化とコスト増大を招いています。新機能、より強固なセキュリティ、より高いパフォーマンスへの顧客要求に応えるため、メーカーは「全スタック」共設計、すなわちハードウェア、ファームウェア、OS、ツールチェーンを同時並行で進化させることを採用しなければなりません。しかし、堅牢なシミュレーションツールなしでは共設計は停滞し、
構造体は効率的な組み込みCプログラミングの基石です。本記事では実践的な応用、宣言構文、データアライメントがメモリ使用量に与える影響を探ります。構造体メンバを戦略的に並べ替えることで、データオブジェクトのフットプリントを削減できることが多々あり、これはリソース制約環境で極めて重要な考慮事項です。 本記事では組み込みCにおける構造体の簡潔かつ包括的な概要を提供します。実世界での応用、正しい宣言方法、構造体サイズに影響するデータアライメントの微妙なルールをカバーします。 構造体 同じ型の複数の変数が論理的な関係を持つ場合、配列は便利なグループ化手段です。例えば、音声入力をデジタル化するADCから直近
電気エンジニアが日常業務でPythonを活用できる領域 Pythonの汎用性は、初期研究から最終生産テストまで、電気エンジニアにとって不可欠なツールとなっています。以下では、Pythonがワークフローを効率化し、手作業を削減し、データ駆動型意思決定を強化する最もインパクトのある領域を探ります。 エンジニアリングの万能ナイフ 電気エンジニアは幅広い責任を担います:ファームウェア開発、ハードウェアデバッグ、プロトタイプテスト、品質管理、大量のデータ収集。VHDLやC/C++などのドメイン特化言語がニッチなタスクで優れている一方、Pythonの汎用性はエンジニアの時間の大半を占める隙間を埋めます。
組み込みC言語における共用体の理解 組み込みシステムにおいて、共用体は異なるデータ型を同じメモリ位置に格納できる強力なデータ構造です。この記事では共用体の基礎を解説し、実践的な例を示し、メモリ制約と帯域幅に敏感なアプリケーションでなぜ定番ツールなのかを説明します。 組み込みCにおける構造体と共用体の違い 以前、構造体について説明しました:異種の変数を単一のエンティティにグループ化する方法です。C言語では、共用体も異なる型をグループ化する補完的な構成要素ですが、重要な違いは各メンバが同じメモリアドレスを共有することです。 導入例 共用体の宣言は構造体とほぼ同じで、structをunionに置き換
C言語の共用体を用いた効率的なデータパッキングとアンパッキング 共用体は、同じバイト列を異なるデータ型として再解釈する強力でメモリ効率の良い手段を提供します。もともとは相互排他的な変数間でメモリを共有するために意図されましたが、現代のCプログラマはデータのパッキング、アンパッキング、型パンニング(type punning)に頻繁に利用します。特にシリアルプロトコルやローレベル通信を扱う際に重宝されます。 共用体がメモリを共有する仕組み 共用体のすべてのメンバは同じメモリ領域を共有します。最大のメンバが共用体のサイズを決定し、すべてのメンバは同じアドレスから始まります。 union { uint
外部テキストファイルを使用してC言語配列を初期化する方法を学ぶ このガイドでは、別のテキストファイルに格納されたデータでCプログラムの配列を初期化する方法を説明します。値はソースコードに埋め込まれず、コンパイル時に読み込まれます。一次元および多次元配列をカバーし、配列をRAMまたは不揮発性メモリのどちらに配置するかを制御する方法、および初期化のために複数のデータファイルから選択する方法を示します。 例は32ビットARMマイクロコントローラを対象とし、GCCでコンパイルされます。すべてのスニペットは標準Cを使用し、このコンパイラで動作します。 配列初期化の基本 C言語で配列を宣言する際、中括弧内
パーセプトロン入門 ― ニューラルネットワーク分類の基礎 この記事は、Pythonを用いて複雑な分類タスク向けにニューラルネットワークを設計・訓練・評価する方法を解説する包括的なシリーズの第一弾です。焦点は、広く使われているニューラルネットワーク・アーキテクチャである多層パーセプトロン(MLP)に置かれます。 パーセプトロン・シリーズ全記事はこちら: ニューラルネットワークを用いた分類の実行方法:パーセプトロンとは? シンプルなパーセプトロン・ニューラルネットワークの例を用いたデータ分類の方法 基本パーセプトロン・ニューラルネットワークの訓練方法 シンプルなニューラルネットワーク訓練の理解
パーセプトロン理解:データ分類実践例 本記事はパーセプトロンニューラルネットワーク解明シリーズ一環。ゼロから始めるも特定トピック再訪も、以下関連記事が包括的ロードマップ提供。 ニューラルネットワークを用いた分類の実行方法:パーセプトロンとは? シンプルなパーセプトロンニューラルネットワーク例を用いたデータ分類方法 基本パーセプトロンニューラルネットワーク訓練方法 シンプルなニューラルネットワーク訓練理解 ニューラルネットワーク訓練理論入門 ニューラルネットワーク学習率理解 多層パーセプトロンによる高度機械学習 シグモイド活性化関数:多層パーセプトロンにおける活性化 多層パーセプトロンニューラ
Pythonで基本パーセプトロンニューラルネットワーク訓練 単層パーセプトロン重みを自動学習する完全コメント付きPython実装をウォークスルー。コードはコピペ即実行可能、独自データへ適応容易。 AACパーセプトロンシリーズ探索 更深い文脈や先進トピックジャンプ用、他記事参照: ニューラルネットワークを用いた分類の実行方法:パーセプトロンとは? シンプルなパーセプトロンニューラルネットワーク例を用いたデータ分類方法 基本パーセプトロンニューラルネットワークの訓練方法 シンプルなニューラルネットワーク訓練の理解 ニューラルネットワーク訓練理論入門 ニューラルネットワークにおける学習率の理解 多
IEC 60730 Class B規格が機械・電気設計の両面で家電の機能安全をどう確保するかを解説し、メーカーの要件適合を支援するコントローラを紹介 現代の家電は日常業務を効率化し、ユーザーが安心して家事を行えるようにします。正常動作時には価値を提供しますが、故障時には火災リスクなど、生命と財産を脅かす重大なリスクをもたらす可能性があります。 国際電気標準会議(IEC)は、安全性を家電設計の根幹に組み込むためIEC 60730 Class B規格を導入しました。Underwriters Laboratories(UL)もこの規格を承認し、その信頼性を強化。レンジ、クックトップ、洗濯機、乾燥機、
時系列データのフィルタリングにおける最も一般的な手法を探求し、LPC55S69のPowerQuadデュアルバイコードIIRエンジンが如何にDSPタスクを加速するかを検証 時間経過とともに収集されたデータを扱う際、最初のステップはしばしばデジタルフィルタの適用です。さまざまなフィルタリング戦略を理解することは、信号品質を向上させるだけでなく、CPUを他の重要なタスクに解放します—組み込みマイクロコントローラにとって必須の考慮事項です。 本記事では、最も広く使用される時間領域フィルタリング手法を網羅し、LPC55S69 MCUのPowerQuadユニットにおけるデュアルバイコードIIRエンジンを深
JTAGがARMコアデバイスにどう統合されているかを解明:Arm Debug Interface(ADI)とSerial Wire Debug(SWD)プロトコルに焦点を当てる このシリーズの前回記事では、IEEE 1149.1標準、Test Access Port(TAP)コントローラ、TAPステートマシンを探求しました。また、一般的なJTAGピンアウト、コネクタ、市場で入手可能なデバッグプローブの配列もレビューしました。 ここではARMエコシステムに焦点を移し、いかにARMコアプロセッサがADIとその2線式SWDバリアントを通じてJTAGを実装しているかを詳述します。 ARMとは ARMは
LPC55S69 PowerQuadエンジンを活用した効率的FFT計算 NXP LPC55S69マイクロコントローラは、高性能信号処理向けに設計されています。そのPowerQuadコプロセッサは、バイコードフィルタとトランスフォームエンジンという2つの専用エンジンを内蔵。バイコードが時間領域フィルタリングを担当する一方、トランスフォームエンジンはCPUの関与を最小限に抑えて高速フーリエ変換(FFT)を実行し、Cortex-M33コアを他のタスクに解放します。 離散フーリエ変換の理解 時間領域で取得した信号は、周波数領域で解釈するのが最適なことが多々あります。離散フーリエ変換(DFT)は、サンプ
FPGA上で有限状態マシン(FSM)を実装する際のバイナリ、グレイ、ワンホットエンコーディングを詳細比較。合成ツールがこれらをどう評価・変換するかを理解することは、最適なパフォーマンスと電力効率を達成するために不可欠です。 有限状態マシンはデジタル設計に遍在します。合成ツールはRTLを定期的に分析してFSMを検出し、タイミング、面積、電力目標を達成するためにステートエンコーディングを書き換えることがあります。手動でステートコードを割り当てても、ツールが最適化戦略に基づいて異なる値—時には異なるビット幅で—を置き換える可能性があります。 VerilogでのFSM構築の復習には、拙記事『Veril
FPGA設計に最適なエンコーディングを選択する方法を、3つの実験を通じて解説 FPGAロジック設計時、合成ツールが通常エンコーディングを選択しますが、一般的にその判断を信頼するのがベストです。しかし、バイナリ、グレイ、ワンホット表現のニュアンスを理解しておくと、コンパイラがいつどのエンコーディングを好むかを予測できます。 本記事では、Conwayのライフゲームをテストベンチとして用いた実践実験を通じ、大規模な有限状態マシン(FSM)アレイに各エンコーディングを適用した際に生じるトレードオフをハイライトします。 このシリーズでは、VerilogでのFSM構築、初期状態とメモリがエンコーディングに
MOSトランジスタの基礎を再確認し、そのようなトランジスタで発生しうるリーク電流をより深く理解するための視点を提供します。 MOSトランジスタは、集積回路内のパッケージ密度を最大化するためにスケールダウンが進んでいます。これにより酸化膜厚が減少し、ひいてはMOSデバイスの閾値電圧が低下しました。閾値電圧が低くなると、リーク電流が顕著になり、電力損失に寄与します。これが、MOSトランジスタにおけるさまざまなリーク電流の種類を知ることが極めて重要である理由です。 さまざまなリーク電流成分を理解しようとする前に、まずMOSトランジスタの核心概念を再確認しましょう。これにより、トピックへのより良い洞察
リーク電流は、デバイスが低閾値電圧にスケーリングされるにつれて、電力損失に大きく寄与する可能性があります。ここでは、最新MOSトランジスタにおける6つの最も一般的なリーク経路を検証します。 短チャネルMOSFETでは、以下のリーク機構が支配的です: 逆バイアスp-n接合リーク サブスレッショルドリーク ドレイン誘起バリア低下(DIBL) 閾値電圧ロールオフ 温度依存性 ゲート酸化膜トンネリング(直接およびFowler-Nordheim) ホットキャリア注入(ゲート酸化膜へ) ゲート誘起ドレイン低下(GIDL) パンチスルーリーク 基本的なMOSFET動作に精通していれば、各機構のニュ
バッテリーマネジメントシステムの不可欠な役割と、安全かつ効率的な電源設計を可能にする基盤コンポーネントを探る 今日の高性能リチウムイオン電池は最大265 Wh/kgのエネルギー密度を実現しますが、過負荷時には危険をはらみます。バッテリーマネジメントシステム(BMS)は、これらのセルを安全な限界内で動作させ、熱暴走を防ぎ、寿命を延ばすセーフガードです。 本記事では、BMSアーキテクチャの基本原則を解説し、典型的なシステムを構成するコアパーツを検証します。 基本的なBMS構成 図1は、主要な故障から保護するためのBMSの一般的な構成ブロックを示しています。 図1. 典型的なBMSブロック図 この
埋め込み