マイコンに搭載されているDMAって何?:Q&Aで学ぶマイコン講座(86)(2/4 ページ)
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、中級者の方からよく質問される「マイコンに搭載されているDMAって何?」についてです。
この記事では、STマイクロエレクトロニクス(以下、ST)の汎用32ビットマイコン「STM32G0シリーズ」*1)に搭載されているDMAを例に、その仕組みと使用例を紹介します。
DMAコントローラーはバスに接続されるため、バスアーキテクチャの概要を理解しておく必要があります。そのため、まずはマイコン全体のバスアーキテクチャについて解説し、続いてDMAコントローラーを搭載したマイコン構成例、DMAコントローラーの構成、DMA転送の使用方法について解説します。
*1)STM32G0シリーズ
マイコンで使用されるバスアーキテクチャ
Armコア搭載マイコンでは、AMBA2.0仕様に準拠したバスが使用されることが多く、AMBA2.0仕様には以下のバス仕様が規定されています。
- Advanced High-performance Bus(AHB):高性能、高クロック周波数のシステムモジュール用バス
- Advanced System Bus(ASB):高性能システムモジュール用バス。AHB の高性能機能が必要ない場合に適した代替システムバス
- Advanced Peripheral Bus(APB):低消費電力ペリフェラル向けバス。消費電力を最小限に抑え、インタフェースの複雑さを軽減するよう最適化されています
バス上のコンポーネント
前述のAHBを例に、バス上のコンポーネントについて説明します。
AHB上には、下記のコンポーネントが存在します。
AHBマスター
AHBマスターは、バスマスターです。バスマスターは、アドレスと制御情報を出力し、読み取り/書き込み操作を開始できます。一度にバスをアクティブに使用できるのは1つのバスマスターだけです。バスを使用する際、バスマスターは後述するAHBアービタにバスの使用権を要求し、使用権を取得できたバスマスターのみがバスにアクセスできます。
AHBスレーブ
AHBスレーブはバススレーブです。バススレーブは、指定されたアドレス空間範囲内の読み取り/書き込み操作に応答します。バススレーブはバスマスターにデータ転送の成功、失敗、待機を応答します。
AHBアービター
AHBアービターは、バスアービターです。バスアービターは、一度に1つのバスマスターだけがバスにアクセスされることを保証します。複数のバスマスターからバスの使用権の要求があった場合、ラウンドロビン方式や、固定優先度方式に従ってそれぞれのバスマスターに順番に使用権を与え、バス使用時に競合が発生しないようにします。AHBには、バスアービターが1つだけ含まれています。
AHBデコーダー
AHBデコーダーは、バスデコーダーです。バスデコーダーは、各転送のアドレスをデコードするために使用されます。また、アドレスに対応するスレーブに選択信号を与えます。AHBでは単一の集中デコーダーが使用されます。
Copyright © ITmedia, Inc. All Rights Reserved.