Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com)...

60
cv_54016-1.1 © 2012 Altera Corporation. All rights reserved. ALTERA, ARRIA, CYCLONE, HARDCOPY, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos are trademarks of Altera Corporation and registered in the U.S. Patent and Trademark Office and in other countries. All other words and logos identified as trademarks or service marks are the property of their respective holders as described at www.altera.com/common/legal.html . Altera warrants performance of its semiconductor products to current specifications in accordance with Altera's standard warranty, but reserves the right to make changes to any products and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly agreed to in writing by Altera. Altera customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services. Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Subscribe ISO 9001:2008 Registered 16. DMA コントローラ 祭昨ノ埼朔腰雌実詩質寺竺止紫支質斯旨至痔θHPSχ削零擦参崎哉傘私使鴫屍詞質磁 示式質仔屍止旨質思執詞竺実鹿θDMACχ燦シ軛裁擦際甑 DMA 思執詞竺実鹿朔腰磁示 式鯖時式児史鹿識採皿索斯旨至痔不昨罪昨直昨磁示式質竺師実斯辞執昨戻埼視実祉 燦¹=際傘冴薩削砺ぁ細参擦際甑 DMA 思執詞竺実鹿朔腰ARM ® Corelink™ DMA ControllerθDMA-330χ昨使執旨祉執旨埼際甑 f ARM DMA-330 思執詞竺実鹿削肴哉崎ゆ裁采朔腰ARM 司史字支使詞 (infocenter.arm.com) 栽晒評腆療1作 Co reLi nk DMA Cont role r DMA-330 Revis i on: r1p 1 Te c hni ca l Refe re nce Ma nual 燦理軏裁崎采坂細哉甑 DMA コントローラの機能 HPS 朔腰爾使屍竺寺竺止紫支質蒔誌紫詞θMPUχ支字斯旨至痔栽晒祭昨転黻燦士児 竺実詩裁腰磁示式質爾紫寺詩質時式児史鹿識碕磁示式戻昨視実祉¹=燦幣X際傘 1 肴昨 DMAC 燦蛬盗裁擦際甑 DMAC 朔磁示式質肢実質磁示式腰磁示式質肢実質 時式児史 鹿識腰採皿索時式児史鹿識質肢実質磁示式匙昨¹=燦支治実詞裁崎哉擦際甑 DMAC 支実似旨ギ鍔昨細擦菜擦作鴫持識昨冴薩昨 8 肴昨プX糸而資識燦支治実詞裁擦際甑 参朔腰時式児史鹿識質雌実詩司史仔質児竺実質思執詞竺実識昨冴薩昨鏘彳 31 時式 児史鹿識質雌執詩斯史使屍質使執祉児史実旨燦蛬盗裁擦際甑 DMA 思執詞竺実鹿削朔和痛幣X字竺紫屍歳零擦参崎哉傘冴薩腰DMA ¹=燦奉皀際傘 寺竺市鹿痔質思実詩燦幣X際傘祭碕歳埼済擦際甑 擦冴腰和痛姿而紫斯自削斯旨至痔質 磁示式栽晒寺竺市鹿痔質思実詩燦児史紫糸際傘冴薩削 AMBA ® θARM Advanced Microcontroller Bus Architecture χ AXI™θAdvanced eXtensible Interfaceχ爾旨祉質使執 祉児史実旨質蒔誌紫詞歳零擦参崎哉擦際甑AXI 爾旨祉質使執祉児史実旨雑輪┦削 DMA 視実祉¹=燦曚⊕際傘冴薩削砺ぁ細参擦際甑 DMA 和痛昨曚⊕嗣執施執朔腰和痛 姿而紫斯自栽晒寺竺市鹿痔質思実詩燦曚⊕裁腰罪参財参昨和痛姿自実燦跳裁崎腰 式実詩擦冴朔鹿使詞 AXI 和痛燦旨師施自実識裁擦際甑 擦冴腰DMA ¹=嘆削腰ジ札箆 裁擦冴朔鹿使詞質視実祉燦駟㊄際傘冴薩削砺ぁ際傘爾識糸 FIFOθMFIFOχ視実祉質 飼紫児仕燦不p裁崎哉擦際甑 November 2012 cv_54012-1.2

Transcript of Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com)...

Page 1: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

cv_54016-1.1

© 2012 Altera Corporation. All rights reserved. ALTERA, ARRIare trademarks of Altera Corporation and registered in the U.Strademarks or service marks are the property of their respectivsemiconductor products to current specifications in accordanceservices at any time without notice. Altera assumes no responsdescribed herein except as expressly agreed to in writing by Alon any published information and before placing orders for pr

Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテ2012 年 11 月

November 2012cv_54012-1.2

16. DMA コントローラ

この章では、ハード・プロセッサ・システム(HPS)に含まれているダイレクト・メ

モリ・アクセス・コントローラ(DMAC)を説明します。 DMA コントローラは、メモ

リやペリフェラルおよびシステム内のその他のメモリ・ロケーションの間でデータ

を転送するために使用されます。 DMA コントローラは、ARM® Corelink™ DMA Controller(DMA-330)のインスタンスです。

f ARM の DMA-330 コントローラについて詳しくは、ARM ウェブサイト

(infocenter.arm.com) から入手可能な CoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。

DMA コントローラの機能HPS は、マイクロプロセッサ・ユニット(MPU)サブシステムからこの作業をオフ

ロードし、メモリ・マップド・ペリフェラルとメモリ間のデータ転送を処理する 1つの DMAC を提供します。 DMAC はメモリ・ツー・ メモリ、メモリ・ツー・ ペリフェ

ラル、およびペリフェラル・ツー・ メモリへの転送をサポートしています。 DMAC は

サービス要件のさまざまなレベルのための 8 つの論理チャネルをサポートします。 それは、ペリフェラル・ハードウェア・フロー・コントロールのための 大 31 ペリ

フェラル・ハンドシェイク・インタフェースを提供します。

DMA コントローラには命令処理ブロックが含まれているため、DMA 転送を制御する

プログラム・コードを処理することができます。 また、命令キャッシュにシステム・

メモリからプログラム・コードをフェッチするために AMBA®(ARM Advanced Microcontroller Bus Architecture ) の AXI™(Advanced eXtensible Interface)マスタ・イン

タフェース・ユニットが含まれています。AXI マスタ・インタフェースも同様に

DMA データ転送を実行するために使用されます。 DMA 命令の実行エンジンは、命令

キャッシュからプログラム・コードを実行し、それぞれの命令キューを介して、

リードまたはライト AXI 命令をスケジュールします。 また、DMA 転送中に、読み出

しまたはライト・データを格納するために使用するマルチ FIFO(MFIFO)データ・

バッファを内蔵しています。

A, CYCLONE, HARDCOPY, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos . Patent and Trademark Office and in other countries. All other words and logos identified as e holders as described at www.altera.com/common/legal.html. Altera warrants performance of its with Altera's standard warranty, but reserves the right to make changes to any products and ibility or liability arising out of the application or use of any information, product, or service tera. Altera customers are advised to obtain the latest version of device specifications before relying oducts or services.

クニカル・リファレンス・マニュアル

Subscribe

ISO 9001:2008 Registered

Page 2: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–2 第 16章 : DMA コントローラDMA コントローラの機能

DMAC は、MPU のサブシステムへのイベントの効率的な通信をイネーブルするため

に 11 の割り込み出力を提供します。 ペリフェラル要求インタフェースは、プロセッ

サからの介入なしに、メモリ・ツー・ペリフェラルやペリフェラル・ツー・メモリ

への転送が発生することをイネーブルする DMA 対応ペリフェラルの接続をサポート

しています。 HPS が ARM DMA のペリフェラル・インタフェース・プロトコルに準拠

していないいくつかのペリフェラル機器をサポートしているので、アダプタはこれ

らのペリフェラルが DMAC と動作できるようにするために追加されます。 次のペリ

フェラル・インタフェース・プロトコルがサポートされています。

■ Synopsys プロトコル

■ Serial peripheral interface (SPI)

■ Universal asynchronous receiver/transmitter (UART)

■ Inter-integrated circuit (I2C)

■ FPGA

■ ARM プロトコル

■ Quad SPI flash controller

■ System trace macrocell (STM™)

■ Bosch プロトコル

■ Controller area network (CAN)

デュアル・スレーブ・インタフェースは、DMA コントローラの動作を保護状態と非

保護状態に分割することイネーブルします。 保護トランザクションだけが保護インタ

フェースに確実にアクセスできるため、ネットワーク・インタコネクトをコンフィ

ギュレーションする必要があります。スレーブ・インタフェースは、ステータス・

レジスタをアクセスすることができます。また、直接 DMA コントローラの命令を実

行することもできます。

DMAC は以下の特長を備えています。

■ DMA の動作を指定するための柔軟な方法を提供する小さな命令セットです。 この

アーキテクチャでは、LLI(Linked-List Item)ベースの DMA コントローラの固定能

力よりも高い柔軟性を提供します。

■ 複数の転送タイプをサポートしています。

■ Memory-to-memory

■ Memory-to-peripheral

■ Peripheral-to-memory

■ Scatter-gather

■ 大 8 個の DMA チャネルまでサポートしています。

■ 大 8つの未処理の AXI読み出しトランザクションおよび 8 つの未処理の AXI ライ

ト・トランザクションまでサポートしています。

■ ソフトウェアは16未解決の読み出しと16未処理の書き込み命令までスケジュール

することがイネーブルされています。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 3: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–3DMA コントローラのブロック図とシステム統合

■ MPU のサブシステムに 11 の割り込みラインをサポートしています。

■ DMA スレッド・停止の場合は 1

■ イベントの場合は 8

■ MFIFO バッファ ECC の場合は 2

■ 31 ペリフェラル要求インタフェースをサポートしています。

■ FPGA の場合は 4

■ FPGA または CAN の場合は 4 シェア

■ I2C の場合は 8

■ SPI の場合は 8

■ クワッド SPI の場合は 2

■ System Trace Macrocell の場合は 1

■ UART の場合は 4

DMA コントローラのブロック図とシステム統合図 16–1 には、 DMAC のブロック図、および他の HPS システムに組み込まれる方法を

示します。

図16‒1. DMA コントローラの接続

DMA Controller

MFIFO512x64

Write Instruction Queue

Read Instruction Queue

Instruction Execution EngineInstruction Cache

AX

I-64

Mas

ter I

nter

face

Interrupt Control

CSRs

SecureSlave Interface

Non-SecureSlave Interface

Reset Initialization

Interface

MPU SubsystemGeneric Interrupt

Controller

System Manager

UART / SPI / I2CPeripheral Interfaces

STM / Quad SPI Peripheral Interfaces

CAN Peripheral Interfaces

Clock Crossing

Synopsis Adapter and

Clock Crossing

Bosch Adapter and

Clock Crossing

Peripheral Request Interface [30:0]

Level 4 Main Bus

Leve

l 3 In

terc

onne

ct

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 4: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–4 第 16章 : DMA コントローラDMAコントローラの機能説明

DMA コントローラは、コントローラ・ロジックだけでなく、すべてのインタフェー

スで使用されている l4_main_clkクロックによって駆動されています。 DMA コント

ローラは、64 ビットの AXI マスタ・インタフェースを持つレベル 3(L3)のメイン・

スイッチにアクセスします。

DMA コントローラは、以下のスレーブ・インタフェースを提供しています。

■ 無保護のスレーブ・インタフェース

■ 保護スレーブ・インタフェース

DMA コントローラの機能を制御するレジスタをアクセスするために、これらのス

レーブ・インタフェースを使用することができます。 DMA コントローラは、1 インタ

フェースが Secure 状態で動作し、もう一つは Non-secure 状態で動作している

TrustZone® セキュア・テクノロジーを実装しています。

DMA コントローラの機能説明この項では、DMAC の主要なインタフェースとコンポーネント、および動作方法につ

いて説明します。

概要DMAC は DMA 転送を制御するプログラム・コードを処理することが可能になり、命

令処理ブロックが含まれています。 プログラム・コードは、DMAC がその AXI マス

タ・インタフェースを使用してアクセスされるシステム・メモリの領域に格納され

ています。 内部キャッシュに一時的に DMAC 命令を格納します。

DMAC は、DMA 動作のシングル同時スレッドをサポートすることができる各チャネ

ルが 8 個の DMA チャネルでコンフィギュレーションされています。 さらに、シング

ル DMA マネージャ・スレッドが存在し、DMA チャネル・スレッドを初期化するため

に使用することができます。 DMAC は 1 クロック・サイクルあたり 1 命令まで実行し

ます。 それは定期的に各アクティブ・スレッドを実行するため、DMA マネージャ・

スレッド、その後 DMA チャネル・スレッドを処理することにより、交互に実行しま

す。 実行するには、次のアクティブな DMA チャネル・スレッドを選択するとき、そ

れはラウンド・ロビン方式を使用しています。

DMAC は 1 ~ 6 のバイトで構成される可変長の命令を使用します。 それは各 DMAチャネルに独立したプログラム・カウンタ(PC)レジスタを提供しています。 スレッ

ドがアドレスから命令を要求すると、キャッシュが検索を実行します。 キャッシュ・

ヒットが発生した場合、キャッシュは直ちに命令を提供しています。 それ以外の場

合、DMAC はキャッシュ・ライン・フィルを実行するための AXI マスタ・インタ

フェースを使用しながら、スレッドが停止されます。 命令がキャッシュ・ラインの終

わりにまたがる場合、DMAC は命令をフェッチするために複数のキャッシュ・アクセ

スを実行します。

1 キャッシュ・ライン・フィルが進行中である場合、DMAC はキャッシュにアクセスす

る他のスレッドをイネーブルしますが、別のキャッシュ・ミスが発生した場合、

初のライン・フィルが完了するまで、パイプラインをストールさせます。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 5: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–5DMA コントローラの機能説明

DMA チャネル・スレッドがロードまたはストア命令を実行すると、DMAC は関連

リードまたはライト・キューに命令を追加します。 DMAC は AXI の命令を発行する前

に、命令ストレージ・バッファとして、これらのキューを使用しています。また、

DMAC は DMA 転送中に読み出されるデータまたは書き込まれるデータを格納するた

めに使用する MFIFO データ・バッファが含まれています。

DMAC は外部マイクロプロセッサへのイベントの効率的な通信をイネーブルするため

に複数の割り込み出力を提供します。 ペリフェラル要求インタフェースは、マイクロ

プロセッサからの介入なしに、メモリ・ツー・ペリフェラルおよびペリフェラル・

ツー・メモリの DMA 転送が発生するようにイネーブルするには、DMA 対応ペリフェ

ラルの接続をサポートしています。

デュアル・スレーブ・インタフェースは、Secure 状態と Non-secure 状態に分割する

DMAC の動作をイネーブルします。 スレーブ・インタフェースを使用すると、ステー

タス・レジスタにアクセスして、DMAC 内の命令を直接実行することができます。

動作状態図 16–2 に、DMA マネージャ・スレッドと DMA チャネル・スレッドのためのオペ

レーティング状態間の遷移を示します。

DMAC は、スレッドごとに独立したステート・マシンを提供しています。

図16‒2. スレッドの動作状態

Executing

Cache

miss

Updating

PC

Waiting

for event

At barrier

Waiting for peripheral

CompletingFaulting

completing

Faulting Stopped

C

C

CC

C

C

C

C

M

Killing

C

C

C

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 6: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–6 第 16章 : DMA コントローラDMAコントローラの機能説明

1 図 16–2 で 、DMAC が以下のことを許可します。

■ 唯一の DMA チャネル・スレッドは図 16–2 での灰色に示す状態を使用すること

ができます。

■ レター・デザイネータなしの円弧は DMA マネージャと DMA チャネル・スレッ

ドの状態遷移を示し、それ以外の使用は、次のように制限されています。

■ C—DMA チャネル・スレッドのみ。

■ M—DMA マネージャ・スレッドのみ。

■ 点線内の状態は、Faulting completing、Faulting、または Killing に遷移することが

できます。

リセットから DMAC の終了後、Stopped 状態にすべての DMA チャネル・スレッドを

設定し、DMA マネージャ・スレッドは Stopped 状態に移行します。

以下の項はステートについて説明しています。

■ 16–6 ページの「Stopped」

■ 16–6 ページの「Executing」

■ 16–7 ページの「Cache miss」

■ 16–7 ページの「Updating PC」

■ 16–7 ページの「Waiting For Event」

■ 16–7 ページの「At Barrier」

■ 16–8 ページの「Waiting For Peripheral」

■ 16–8 ページの「Faulting Completing」

■ 16–8 ページの「Faulting」

■ 16–8 ページの「Killing」

■ 16–8 ページの「Completing」

Stoppedスレッドは無効な PC を持っており、それが命令をフェッチされていません。 スレッ

ドの種類に応じて、次のいずれかの方法で Executing 状態に移行するためにスレッド

を引き起こす可能性があります。

■ DMA マネージャ・スレッド — スレーブ・インタフェースを介して DMAGO 命令を発

行します。

■ DMA チャネル・スレッド — 停止状態にDMA チャネル・スレッドの DMAGO を実行す

るために DMA マネージャ・スレッドをプログラムします。

Executingスレッドが有効な PC を持っているため、DMAC は調停するときにスレッドが含まれ

ています。 スレッドは、以下の条件で次のいずれかの状態に変更することができま

す。

■ Stopped—DMA マネージャ・スレッドが DMAENDを実行する場合。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 7: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–7DMA コントローラの機能説明

■ Cache miss— 命令キャッシュが DMA マネージャ・スレッドまたは DMA チャネル・

スレッドのどちらかのために次の命令が含まれていない場合。

■ Updating PC—DMAC がキャッシュ内の次のアクセスのアドレスを計算するとき。

■ Waiting for event— スレッドが DMAWFEを実行する場合。

■ At barrier—DMA チャネル・スレッドが次のいずれかの場合。

■ DMARMB、DMAWMB、または DMAFLUSHPを実行する場合。

■ アップデートがアラインメントに影響を与えるコントロール・レジスタを更

新するとき( 16–27 ページの「DMA サイクル中の DMA チャネル・コントロー

ル・レジスタの更新」)。

■ Waiting for peripheral—DMA チャネルスレッドが DMAWFPを実行する場合。

■ Killing—DMA チャネル・スレッドが DMAKILLを実行する場合。

■ Faulting completing—DMA チャネル・スレッドのいずれかの場合。

■ スレッドが未定義または無効な命令を実行する場合

■ AXI エラーが命令フェッチまたはデータ転送中に発生する場合

■ Faulting—DMA マネージャ・スレッドが次のいずれかの場合。

■ スレッドが未定義または無効な命令を実行する場合

■ AXI エラーが命令フェッチに発生する場合

ウォッチドッグ・タイムアウト中断が発生したときの DMA チャネル・スレッド

の場合。

■ Completing—DMA チャネル・スレッドが DMAENDを実行する場合。

Cache missスレッドが停止され、DMAC はキャッシュ・ライン・フィルを実行しています。 キャッシュ・フィルを終了すると、スレッドは Executing 状態に戻ります。

Updating PCDMAC は、キャッシュ内の次のアクセスのアドレスを計算しています。 PC を計算し

た後、スレッドは Executing 状態に戻ります。

Waiting For Eventスレッドが停止され、DMAC が対応するイベント番号を使用して DMASEVを実行する

ことを待っています。 対応するイベントが発生した後、スレッドは Executing 状態に

戻ります。

At BarrierDMA チャネル・スレッドが停止され、DMAC は AXI 上のトランザクションが完了す

るまでを待っています。 AXI トランザクションが完了した後、スレッドは Executing 状

態に戻ります。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 8: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–8 第 16章 : DMA コントローラDMAコントローラの機能説明

Waiting For PeripheralDMA チャネル・スレッドが停止され、DMAC は、要求されたデータを提供するため

に、ペリフェラルを待っています。 ペリフェラルがデータを提供した後、スレッドは

Executing 状態に戻ります。

Faulting CompletingDMA チャネル・スレッドは未処理のロードまたはストアのトランザクションが完了

していることをシグナルさせるために AXI マスタ・インタフェースを待っています。 トランザクションが完了した後、スレッドは Faulting 状態に移行します。

Faultingスレッドが無期限に停止されています。 スレッドの DMAKILLを実行するために DMACを指示する DBGCMDレジスタを使用すると、スレッドは Stopped 状態に移行します。

KillingDMA チャネル・スレッドは、未処理のロードまたはストアのトランザクションが完

了していることを知らせるために AXI マスタ・インタフェースを待っています。 トラ

ンザクションが完了した後、スレッドは Stopped 状態に移行します。

CompletingDMA チャネル・スレッドは、未処理のロードまたはストアのトランザクションが完

了していることを知らせるために AXI マスタ・インタフェースを待っています。 トラ

ンザクションが完了した後、スレッドは Stopped 状態に移行します。

DMAC の初期化リセットが終了した後、DMAC は、その動作状態を初期化するいくつかのメモリ・

マップされたコントロール信号を提供します。 DMAC のリセットが終了したら、それ

が自動的にコードの実行を開始しないように設定されています。 3 メモリ・マップさ

れたコントロール信号は、システム・マネージャによって制御されます。

f 詳細は、「Cyclone® V デバイス・ハンドブック Volume 3」の「 System Manager」の章を

参照してください。

DMAマネージャのセキュリティの状態を設定する方法boot_manager_ns 信号が DMA マネージャのセキュリティの状態を設定するための唯

一の方法です。

DMAC がリセットから終了すると、boot_manager_ns信号の状態を読み出し、DMA マ

ネージャのセキュリティを設定します 。

1 設定すると、dma_rst_n信号上の状態遷移が DMAC をリセットするまで、各 irq[x]の

セキュリティ状態は一定のままです。

DMA マネージャのセキュリティの状態は、DMAC の動作をどのように影響するにつ

いて詳しくは、16–21 ページの「Secure 状態での DMA マネージャ・スレッド」およ

び 16–22 ページの「Non-Secure 状態の DMA マネージャ・スレッド」を参照してくだ

さい。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 9: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–9DMA コントローラの機能説明

割り込み出力のセキュリティの状態を設定する方法DMAC は、各 irq[x]を割り当てるようにセキュリティ状態に boot_irq_ns[7:0]信

号を提供しています 。

boot_irq_ns[7:0]信号は、システム・マネージャに接続されています。 リセットか

ら DMA を取り出す前に、割り込みビットが安全であるかを制御するために、システ

ム・マネージャを介して boot_irq_ns[7:0]信号をプログラムする必要があります。

1 DMAC は、リセットから復帰した後これらのビットをサンプルして、次のリセットま

でそれらを無視します。

設定すると、dma_rst_n信号上の状態遷移が DMAC をリセットするまで、各 irq[x]のセキュリティ状態は一定のままです。

irq[x]信号のセキュリティ状態は、DMACがDMAWFEとDMASEV命令を実行する方法にど

のように影響するかについての説明は、16–21 ページの「セキュリティの使用」を参

照してください。

ペリフェラル要求インタフェースのセキュリティの状態を設定する方法DMAC は、セキュリティ状態に各ペリフェラル要求インタフェースを割り当てるよう

に boot_periph_ns[31:0]信号を提供します。

boot_periph_ns[31:0]信号は、システム・マネージャに接続されています。 リセッ

トから DMA を取り出す前に、ペリフェラル機器インタフェースが安全であるかを制

御するために、システム・マネージャを介して boot_periph_ns[31:0]信号をプログ

ラムする必要があります。

1 DMAC は、リセットから復帰した後これらのビットをサンプルして、次のリセットま

でそれらを無視します。設定すると、dma_rst_n信号上の状態遷移が DMAC をリセッ

トするまで、各ペリフェラルの要求インタフェースのセキュリティ状態は一定のま

まです。

ペリフェラル要求インタフェースのセキュリティ状態は、DMA チャネル・スレッド

が DMAWFP、DMALDP、DMASTP、または DMAFLUSHP命令を実行する方法に影響するかに

ついての説明は、16–21 ページの「セキュリティの使用」を参照してください。

スレーブ・インタフェースを使用した場合スレーブ・インタフェースは、レベル 4(L4)メインバスに DMAC を接続し、レジス

タにアクセスするためにマイクロプロセッサをイネーブルしてください。 これらのレ

ジスタを使用すると、マイクロプロセッサは、以下を実行できます。

■ DMA マネージャ・スレッドのステータスにアクセスします。

■ DMA チャネル・スレッドの状態を与えます。

■ 割り込みをイネーブルまたはクリアします。

■ イベントをイネーブルします。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 10: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–10 第 16章 : DMA コントローラDMAコントローラの機能説明

■ 次のデバッグ・レジスタをプログラムすることにより、実行する DMAC の命令を

発行して下さい。

■ DBGCMDレジスタ

■ DBGINST0レジスタ

■ DBGINST1レジスタ

スレーブ・インタフェースを使用してDMAC への命令の発行DMAC が動作している場合、次の限定された命令のサブセットのみ発行することがで

きます。

■ DMAGO— 指定した DMA チャネルを使用して DMA トランザクションを開始します。

■ DMASEV— 指定したイベント番号を使用して、イベントの発生、または割り込みを

通知します。

■ DMAKILL— スレッドを終了します。

boot_manager_ns信号が DMAC が動作するように初期化されたセキュリティの状態に

応じて、適切なスレーブ・インタフェースを使用していることを確認する必要があ

ります。 たとえば、DMAC がセキュア状態にある場合、安全なスレーブ・インタ

フェースを使用して命令を発行する必要があります。それ以外の場合、DMAC は命令

を無視します。 DMAC は Non-secure 状態にあるときに、DMA チャネルを起動または再

起動するためのセキュアまたは非セキュアのスレーブ・インタフェースを使用する

ことができます。

1 デバッグ命令レジスタまたは DBGCMDレジスタを使用して命令を発行する前に、デ

バッグがアイドルであることを確認し、DBGSTATUSレジスタを読み出す必要がありま

す。それ以外の場合、DMAC は指示を無視します。

命令を処理する前に、DMAC は、スレーブ・インタフェースからの指示を受信する

と、いくつかのクロック・サイクルを受信することができます。たとえば、パイプ

ラインが別の命令を処理する場合です。

1 DMAGOを発行する前に、DMAGOが指定するアドレスから開始して、システム・メモリ

に実行する DMAC のに適したプログラムが含まれていることを確認する必要があり

ます。

デバッグ命令を備えた DMAGOレジスタの使用この例では、デバッグ命令レジスタを使用して DMA チャネル・スレッドを開始する

ために必要な手順を示しています。

1. DMA チャネル用のプログラムを作成します。

2. システム・メモリの領域にプログラムを格納します。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 11: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–11DMA コントローラの機能説明

3. 以下のように DMAGO命令をプログラムするために、DMAC のスレーブ・インタ

フェースのいずれかを使用します。

a. デバッグがアイドルのとき(dbgstatusビットが 0 である場合)を保証する

ために DBGSTATUSレジスタをポーリングしてください。

b. レジスタ DBGINST0に書き込み、次のように入力します。

■ DMAGOのための命令バイト 0 エンコーディング。

■ DMAGOのための命令バイト 1 エンコーディング。

■ 0 にスレッド・ビットをデバッグします。これは、DMA マネージャ・ス

レッドを選択します。

c. DMAGO命令バイト [5:2] のデータで DBGINST1レジスタへのライト 。b ステップ

で、システム・メモリに書き込まれるプログラムの 初の命令のアドレスに

これらの 4 バイトを設定する必要があります 。

4. デバッグ命令レジスタは DBGCMDレジスタにゼロを書き込むによって含まれてい

る命令を実行するように DMAC を指示します。 DMAC は DMA チャネル・スレッド

を開始して 1 に dbgstatusビットを設定します。 DMAC は命令の実行を完了した

後、それが 0 に dbgstatusビットをクリアします。

ペリフェラル要求インタフェース図 16–3 には、ペリフェラル要求インタフェースはペリフェラル要求バスで構成さ

れ、DMAC は接頭辞を使用するバスを認めることを示しています。

■ dr— ペリフェラル要求バス。

■ da—DMAC 確認バス。

ペリフェラル信号は、要求バスに次を示します。

■ 単一の転送を要求します。

■ バースト転送を要求します。

■ フラッシュ要求を確認します。

DMA 転送シーケンスの 後の要求を発行すると、ペリフェラルは DMAC を信号しま

す。

DMAC は、確認バスで次を信号することができます。

■ 要求された単一の転送を完了したときに信号します。

図16‒3. ペリフェラル要求インタフェース上の要求バスと確認バス

DMACPeripheral

drvaliddrtype[1:0]

drlast

daready

davaliddatype[1:0]

drready Peripheral

request

interface

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 12: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–12 第 16章 : DMA コントローラDMAコントローラの機能説明

■ 要求されたバースト転送を完了したときに信号します。

■ フラッシュ要求を発行します。

DMAC は DMA のチャネルのいずれかにペリフェラル要求インタフェースを割り当て

ることができます。 DMA チャネル・スレッドが DMAWFPを実行するときに 、ペリフェ

ラル [4:0] フィールドにプログラムされた値は、その DMA チャネルに関連付けられ

ているペリフェラルを指定します。 詳細は、16–45 ページの「DMAWFP」を参照して

ください。

DMAC は 31 ペリフェラル要求ハンドシェイクをサポートしています。 各要求のハン

ドシェイクが 4 の未処理の要求を受信して、特定のペリフェラル・デバイス ID が割

り当てられます。 表 16–1 は、ペリフェラル・デバイス ID の割り当てを示していま

す。

要求インタフェース番号の 4 ~ 7 は、FPGA ファブリックに実装される CAN コント

ローラとソフト・ロジック間で多重化されています。 CAN コントローラと FPGA のイ

ンタフェース間のスイッチングは、システム・マネージャによって制御されます。

f 要求インタフェース番号 4 ~ 7 を制御する方法について詳しくは、「Cyclone V デバイス・ハンドブック Volume 3」の「System Manager」の章を参照してください。

表16‒1. ペリフェラル要求インタフェースのマッピング

ペリフェラル要求インタフェース ID

プロトコル ペリフェラル要求インタフェース ID

プロトコル

FPGA 0 0 Synopsys SPI Master 0 TX 16 Synopsys

FPGA 1 1 Synopsys SPI Master 0 RX 17 Synopsys

FPGA 2 2 Synopsys SPI Slave 0 TX 18 Synopsys

FPGA 3 3 Synopsys SPI Slave 0 RX 19 Synopsys

FPGA 4 / CAN 0 インタフェース 1

4 Synopsys / Bosch SPI Master 1 TX 20 Synopsys

FPGA 5 / CAN 0 インタフェース 2

5 Synopsys / Bosch SPI Master 1 RX 21 Synopsys

FPGA 6 / CAN 1 インタフェース 1

6 Synopsys / Bosch SPI Slave 1 TX 22 Synopsys

FPGA 7 / CAN 1 インタフェース 2

7 Synopsys / Bosch SPI Slave 1 RX 23 Synopsys

I2C 0 TX 8 Synopsys Quad SPI Flash TX 24 ARM

I2C 0 RX 9 Synopsys Quad SPI Flash RX 25 ARM

I2C 1 TX 10 Synopsys STM 26 ARM

I2C 1 RX 11 Synopsys 予約済み 27 ̶I2C 2 TX (EMAC) 12 Synopsys UART 0 TX 28 Synopsys

I2C 2 RX (EMAC) 13 Synopsys UART 0 RX 29 Synopsys

I2C 3 TX (EMAC) 14 Synopsys UART 1 TX 30 Synopsys

I2C 3 RX (EMAC) 15 Synopsys UART 1 RX 31 Synopsys

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 13: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–13DMA コントローラの機能説明

要求受容能力DMAC は、各ペリフェラル要求インタフェースに 1 つのアクティブ要求を受信するこ

とができます。 アクティブな要求は、DMAC が要求された AXI データ転送を開始して

いない場合に発生します。

ペリフェラル・レングスの管理ペリフェラル要求インタフェースは、DMAC が含むデータ転送の量を意識することな

く、DMA サイクルに含まれるデータの量を制御するためにペリフェラルをイネーブ

ルします。 ペリフェラルには、次のいずれかの方法で DMA サイクルを制御します。

■ シングル転送を選択します。

■ バースト転送を選択します。

■ 現在のシリーズの 後の要求を開始したときに DMAC を通知します。

DMAC が DMAWFPペリフェラル命令を実行する場合、スレッドの実行を停止し、要求

を送信するまでのペリフェラルを待っています。 ペリフェラルが要求を送信すると、

DMAC は以下の信号の状態に応じて要求フラグの状態を設定します。

■ drtype_<x>[1:0]—DMAC は request_typeフラグの状態を設定します。

■ drtype_<x>[1:0]=b00—request_type<x> = シングル

■ drtype_<x>[1:0]=b01—request_type<x> = バースト

■ drlast_<x>—DMAC は request_lastフラグの状態を設定します。

■ drlast_<x>=0—request_last<x> = 0

■ drlast_<x>=1—request_last<x> = 1

1 DMAC は DMAWFP シングルまたは DMAWFPバースト命令を実行した場合、DMAC は以下を

設定します。

■ request_type<x> は、シングルまたはバーストにそれぞれフラグします。

■ request_last<x>は、0 にフラグします。

DMALPFEは、nfビットが 0 に設定されているために、関連付けられた DMALPEND命令を

強制するアセンブラ・ディレクティブです。 これによって、ループ終了のために、

ループ・カウンタを使用しないプログラム・ループが作成されます。

request_lastフラグが 1 に設定すると、DMAC は、ループを終了します。

DMAC は条件付きで request_typeと request_lastフラグの状態に応じて、次の手

順を実行します。

■ DMALD、DMAST、DMALPEND

これらの命令がオプションの B|S サフィックスを使用する場合、 request_typeフラグが一致しないと、DMAC は DMANOP を実行します。

■ DMALDP<B|S>、DMASTP<B|S>

request_type<x>フラグが B|S と一致しない場合、DMAC は DMANOPを実行します。

■ DMALPEND

nfビットが 0のとき、DMAC は request_lastフラグが設定されている場合、DMANOPを実行します。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 14: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–14 第 16章 : DMA コントローラDMAコントローラの機能説明

DMAC がバースト要求を受信したときに、DMAC がバースト転送を発行するために必

要な場合、DMALDB、DMALDPB、DMASTB および DMASTPB命令を使用します。 CCRnレジス

タでの値は DMAC が転送するデータの量を制御します 。

DMAC がシングル要求を受信したときに、DMAC はシングル転送を発行するために必

要な場合、DMALDS、DMALDPS、DMASTS および DMASTPS 命令を使用します。 DMAC は、

CCRnレジスタに src_burst_len と dst_burst_len フィールドの値を無視して、arlen[3:0]または awlen[3:0]バスを 0x0 に設定します。

DMACレングスの管理DMAC が転送するデータの総量を制御する場合には DMA レングス管理と言います。 ペリフェラルは、DMAC がペリフェラルに(またはペリフェラルから)のデータを転

送する必要があるとき、DMAC を通知するためにペリフェラル要求インタフェースを

使用します。 DMA チャネル・スレッドは、DMAC はペリフェラルの要求に応答する方

法を制御します。

次の制約は、DMAC レングスの管理に適用されます。

■ ペリフェラルからのすべてのシングル要求のデータの総量は、そのペリフェラル

のバースト要求に対するデータの量よりも小さくなければなりません。

1 CCRn レジスタは 1 つのバースト要求およびシングル要求のために転送され

るデータ量を制御します。転送チャネル n の進行しているときに CCRn レジスタを更新しないことを推奨します 。

■ ペリフェラルがバースト要求を送信すると、DMAC によってバーストの要求が完

了したと認められるまで、ペリフェラルはシングル要求を送信しないことです。

ペリフェラル要求インタフェースは任意の要求タイプを受信するまでプログラム・

スレッドが実行を停止する必要がある場合、DMAWFPのシングル命令を使用します。 要求 FIFO バッファの先頭のエントリが以下の要求タイプの場合:

■ シングル —DMAC は、FIFO バッファからエントリをポップし、プログラムの実行を

継続します。

■ バースト —DMAC は、FIFO バッファ内のエントリを残し、プログラムの実行を継続

します。

1 バースト要求エントリは、DMACがDMAWFPバースト命令またはDMAFLUSHP命

令を実行するまで要求 FIFO バッファに残っています。

ペリフェラル要求インタフェースはバースト要求を受信するまでプログラム・ス

レッドが実行を停止する必要がある場合、DMAWFPバースト命令を使用します。 要求

FIFO バッファの先頭のエントリは、以下の要求タイプの場合:

■ シングル —DMAC は、FIFO バッファおよびプログラムの実行からエントリを除去し

ます。

■ バースト—DMACは FIFOバッファからエントリをポップし、プログラムの実行を継

続します。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 15: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–15DMA コントローラの機能説明

AXI のリード転送を完了するとき、DMAC はペリフェラルに確認応答を送信する必要

がある場合、DMALDP命令を使用します。 同様に、AXI のライト転送を完了すると、

DMAC はペリフェラルに確認応答を送信するために必要とするとき、DMASTP命令を

使用します。 DMAC はペリフェラル <x> への転送の確認応答を通知するために認める

バスを使用します。

1 rvalidと rlast信号が High の場合、DMAC はリード・トランザクションのための確認

応答を送信し、そして bvalid信号が High の場合ライト・トランザクションを送信

します。ライト・データから 終デスティネーションへ転送が進行する時、DMAC はペリフェラルに確認応答を送信する場合があります。

ペリフェラル要求インタフェースの要求 FIFO バッファをリセットするために

DMAFLUSHP命令を使用します。 DMAC は DMAFLUSHP実行された後、ペリフェラルにはフ

ラッシュ要求を確認するまで、ペリフェラルの要求を無視します。 これは、DMAC お

よびペリフェラルがお互いに同期させることができます。

制限DMA ペリフェラル要求インタフェースに接続されたペリフェラルは、次のプロトコ

ルのいずれかを使用します。

■ ARM

■ Synopsys

■ Bosch

ARM のプロトコルを使用するペリフェラルの場合、DMA とペリフェラルの間で唯一

のロジックは、クロック・クロッシング・ロジックです。 他のプロトコルの場合、ク

ロック・クロッシング・ロジックおよびプロトコル・アダプテーション・ロジック

は、DMA とペリフェラル間に位置しています。 次の項では、Synopsys または Boschのプロトコルを使用してペリフェラルのためのハンドシェイク・ペリフェラル・イ

ンタフェースの限界を説明します。

バーストのみ要求CAN コントローラによって使用される Bosch プロトコルは、バースト要求のみサ

ポートします。 結果として、いつでも CAN コントローラがペリフェラル・バースト

要求を発行するときに、DMA コントローラは、バーストおよびシングルの要求を受

信します。

フラッシュ・サポートなしBosch または Synopsys ペリフェラル要求プロトコルを使用するペリフェラルには、

フラッシュ・コマンドがサポートされません。Bosch または Synopsys プロトコルを

サポートしているすべてのペリフェラル・インタフェースにフラッシュを発行する

と、ペリフェラルに到達する前にドロップされます。

確認なしタイプBosch ペリフェラル要求インタフェース・プロトコルの場合、使用可能なアクノリッ

ジはありません。 結果としてどちらの CAN コントローラに確認を発行することは、

ペリフェラルに到達する前にドロップされます。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 16: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–16 第 16章 : DMA コントローラDMAコントローラの機能説明

Synopsys ペリフェラル要求インタフェース・プロトコルの場合、使用可能なタイプ

の認識はありません。 結果として、Synopsys プロトコルを使用しているペリフェラ

ルは、バーストとシングル転送に区別することはできません。

イベントと割り込みの使用DMAC は 8 イベントおよび割り込みをサポートすることができます。 INTENレジスタ

は、各イベント割り込みリソースがどちらかのイベントまたは割り込みであるかど

うかを制御するために使用されます。

DMAC は DMASEV命令を実行すると、指定したイベントの割り込みリソースを変更し

ます。 INTENレジスタは以下のように機能させるには、イベント割り込みリソースを

設定します。

■ Event—DMAC は指定されたイベント割り込みリソースのイベントを生成します。 DMAC は、同じイベント割り込みリソースの DMAWFE命令を実行すると、イベン

トがクリアされます。

■ Interrupt—DMAC は <event_num> が指定されたイベント・リソースの数のとき、

irq<event_num>信号を High に設定します。割り込みをクリアするには、INTCLRレジスタに書き込む必要があります。

DMAチャネルを再起動するイベントの使用イベントを生成するために、INTENレジスタをプログラミングする際、1 つまたは複

数の DMA チャネルを再起動するために DMASEおよび DMAWFE命令を使用できます。

DMAC が DMASEV 前に DMAWFE を実行するシングル DMA チャネルを再起動するには:

1. 初の DMA チャネルは DMAWFE実行し、そしてイベントが発生するまで待ちなが

ら停止します。

2. 他の DMA チャネルは、同じイベント番号を使用して DMASEVを実行します 。 これ

は、イベント、 初の DMA チャネルの再起動が発生します。 DMAC は、DMASEVを

実行した後の 1 クロック・サイクルにイベントをクリアします。

同じイベントを待機する複数のチャネルをプログラムすることができます。 たとえ

ば、4 つの DMA チャネルがイベント 2 のためのすべての実行された DMAWFEを持って

いる場合、そして別の DMA チャネルは、イベント 2 の DMASEVを実行したときに 、その 4 つの DMA チャネルは、すべて同時に再起動します。 DMAC は、DMASEVを実行

した後の 1 クロック・サイクルにイベントをクリアします。

DMAC が DMAWFE 前に DMASEV を実行するDMAC が DMASEV実行された場合、別のチャネルが DMAWFE実行する前に、DMAC は

DMAWFE実行されるまで、イベントは保留状態を維持します。DMAC が DMAWFEを実行す

る場合、それは、1 の aclkクロック・サイクルの実行を停止させて、イベントをク

リアした後チャネルのスレッドの実行を継続します。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 17: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–17DMA コントローラの機能説明

例えば、DMAC が DMASEV を実行し、そして他のスレッドが DMAWFE 6を実行しな

かった場合、イベントは保留状態を維持します。 DMAC がチャネル 4 の DMAWFE 6命令を実行した後、次に、チャネル 3 DMAWFE 6命令を実行した場合:

1. 1 aclkクロック用のチャネル 4 スレッドの DMAC の実行を停止します。

2. DMAC はイベント 6 をクリアします。

3. DMAC はチャネル 4 スレッドの実行を再開します。

4. それはイベント 6 の次の発生を待っている間、チャネル 3 スレッドの DMAC の実

行を停止し、スレッドが停止します。

MPU サブシステムの割り込みDMAC は、MPU のサブシステムへのアクティブ High のレベル・センシティブの割り

込みとして使用するために irq[x]の信号を提供します。 DMAC が DMASEVを実行した

後、割り込みを生成するために INTENレジスタをプログラムするときに、対応する

irq[x]信号が High に設定されます。

MPU のサブシステムは、INTCLRレジスタに書き込むことによって、割り込みをクリ

アすることができます。

1 DMAWFEを実行すると、割り込みをクリアしていません。

DMAC は DMALDまたは DMAST命令を完了した時にマイクロプロセッサに通知するた

めの DMASEV命令を使用している場合、DMASEV前にメモリ・バリア命令を挿入するこ

とを推奨します。 それ以外の場合、AXI の転送が完了する前に、DMAC は割り込みを

通知することがあります。例 16–1 を参照してください。

停止この項では以下について説明します。

■ 停止のタイプ

■ 停止のソース

■ ウォッチドッグ停止

■ 停止の処理

停止のタイプ停止が発生した場合、DMAC の正確な状態で DMAC が停止ハンドラを提供することに

応じて、正確または不正確のいずれかに分類することができます。 停止が以下の場

合:

例16‒1. メモリ・バリア命令DMALDDMAST# Issue a write memory barrier# Wait for the AXI write transfer to complete before the DMAC# can send an interruptDMAWMB# The DMAC sends the interruptDMASEV

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 18: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–18 第 16章 : DMA コントローラDMAコントローラの機能説明

■ Precise DMAC は中止を作成した命令のアドレスを使用してPCレジスタを更新しま

す。

■ Imprecise PCレジスタは停止が発生しない命令のアドレスが含まれる場合がありま

す。

停止のソースDMAC は以下の条件下で正確な停止を通知します。

■ Non-secure 状態の DMA チャネルのスレッドには、CCRnレジスタをプログラムしよ

うとして、セキュア AXI トランザクションを生成します。

■ Non-secure 状態の DMA チャネルのスレッドがセキュアとして設定されているイベ

ントの DMAWFEまたは DMASEVを実行します 。 boot_irq_ns メモリ・マップのコン

トロール信号は、イベントのためにセキュリティ状態を初期化します。

1 各イベントについて、INTENレジスタは DMAC が割り込みとしてイベントま

たは信号を生成することをコントロールします。

■ DMA チャネル・スレッドは DMASTを実行しようとしますが、DMAC は 終的にスト

アを実行したときに、MFIFO バッファは、ストアを完成させるには不十分なデー

タが含まれていることが計算されます。

■ Non-secure 状態の DMA チャネルのスレッドがセキュアとして設定されているペリ

フェラルの要求インタフェース用は DMAWFP、DMALDP、DMASTP、または DMAFLUSHPを実行します 。boot_periph_nsは 、メモリ・マップのコントロール信号は、ペ

リフェラル要求インタフェースのセキュリティの状態を初期化します。

■ Non-secure 状態での DMA マネージャ・スレッドは、安全の DMA チャネル・スレッ

ドを開始しようとする DMAGOを実行します 。

■ DMAC は命令フェッチが実行されるとき AXI マスタ・インタフェース上のエラー応

答を受信します。

■ スレッドが未定義命令を実行します。

■ スレッドは、DMAC の設定に無効であるオペランドを持つ命令を実行します。

1 DMAC は正確な停止を通知する場合、停止をトリガする命令は実行されません。 その

代わりに、DMAC は DMANOP. を実行します 。

DMAC は以下の条件で不正確な停止を通知します。

■ データのロードを実行するとき DMACは AXIマスタ・インタフェース上で ERROR応

答を受信します。

■ データ・ストアを実行するとき DMAC は AXI マスタ・インタフェース上で ERROR 応

答を受信します。

■ DMA チャネル・スレッドは DMALDまたは DMAST実行し、MFIFO バッファが必要な

データ量を保持するには小さすぎます。

■ DMA チャネル・スレッドは DMAST実行されますが、スレッドが十分 DMALD命令を実

行していません。

■ DMA チャネル・スレッドは、リソースの飢餓でロック・アップし、これは内部の

ウォッチドッグ・タイマがタイムアウトになります。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 19: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–19DMA コントローラの機能説明

ウォッチドッグ停止1 つ以上の DMA チャネル・プログラムが実行されている場合、DMAC がロックアッ

プすることができ、MFIFO バッファは DMA プログラムのストレージ要件を満たすた

めには小さすぎます。

DMAC は DMA 転送を完了できない状態で維持することを防ぐためのロジックが含ま

れています。

DMAC は次のすべての条件が発生したときにロック・アップ検出します。

■ ロードキューが空です。

■ ストアキューが空です。

■ 実行中のすべてのチャネルは、MFIFO バッファに十分な空き領域がないか、また

は別のチャネルにロード・ロックを所有しているため、DMALD 命令を実行する

ことが防止されています。

DMAC はロックアップを検出したときに割り込みを通知し、貢献チャネルを中止する

こともできます。 DMAC の動作は、WDレジスタの wd_irq_onlyビットの状態に依存し

ます。

この場合:

■ wd_irq_only=0—DMAC は貢献 DMA チャネルのすべてを停止して、irq_abort信号

が High に設定します。

■ wd_irq_only=1—DMAC は irq_abort信号が High に設定します。

詳細は、16–28 ページの「DMA チャネル間のリソースの共有」を参照してください。

停止の処理DMAC のアーキテクチャは停止から回復するようにデザインされていません。した

がって、停止が発生したときにスレッドを終了するには、マイクロプロセッサなど

の外部エージェントを使用する必要があります。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 20: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–20 第 16章 : DMA コントローラDMAコントローラの機能説明

図 16–4 には、停止が発生した後、DMA チャネルおよび DMA マネージャ・スレッド

の動作状態を示します。

停止が発生した後、DMAC の動作は、スレッド・タイプによって異なります。

■ DMA チャネル・スレッド — スレッドは直ちに Faulting の完了状態に移行します。こ

の状態では、DMAC は:

■ irq_abort信号を High に設定します。

■ DMA チャネルための命令の実行を停止します。

■ 停止が正確なであることを提供する停止された命令のアドレスを含むように

DMA チャネルにキャッシュ・エントリをすべて無効にし、CPCn レジスタを更

新します。

■ リード・キューおよびライト・キューに残っている手順のために AXI アクセス

を生成していません。

■ 完了するには、現在アクティブな AXI トランザクションを許可します。

図16‒4. 停止のプロセス

DMA channel thread DMA manager thread

Executing

program thread

Has an abort

occurred?

Yes

No

Active

AXI transactions

complete?

No

DMAKILLexecuted?

Yes

No

Executing

program thread

Has an abort

occurred?No

Thread moves to the

Faulting completing state

Thread moves to the

Faulting state

Thread moves to the

Stopped state

Yes

Yes

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 21: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–21DMA コントローラの機能説明

1 完全な DMA チャネルのトランザクションの後、スレッドは Faulting状態に移

行します。

■ DMA マネージャ・スレッド — スレッドはすぐに Faulting 状態に移行して、DMAC は

irq_abort信号が High に設定されます。

外部エージェントは、irq_abort信号のアサーションに応答することができます。

■ DMAマネージャが Faultingかどうかを決定するFSRDレジスタのステータスを読

み込みます。 Faulting 状態で、FSRDレジスタは、停止の原因を提供しています。

■ DMA チャネルがエラー発生しているかどうかを決定するための FSRCレジスタ

のステータスを読み込みます。 Faulting 状態で、FSRCレジスタは、停止の原因

を提供しています。

Stopped 状態に移行する Faulting 状態でのレッドをイネーブルするには、外部エー

ジェントが必要です。

■ DMAKILL命令のエンコーディングを使用してDBGINST0レジスタをプログラムし

ます。

■ DBGCMDレジスタに書き込みます。

1 停止されたスレッドがセキュアで保護されている場合、これらを更新する

ために安全なスレーブ・インタフェースを使用する必要があります。

Faulting 状態のスレッドが DMAKILL実行された後、Stopped 状態に移行します。

セキュリティの使用リセットから DMAC を終了するとき、コンフィギュレーション信号の状態のセキュ

リティを設定しています。

■ DMAマネージャ・スレッド —DSRレジスタの DNSビットはDMAマネージャ・スレッ

ドのセキュリティ状態を返します。

■ イベントと割り込み —CR3レジスタの INSビットは、イベント割り込みリソースの

セキュリティ状態を返します。

■ ペリフェラル要求インタフェース —CR4レジスタの PNSビットは、これらのインタ

フェースのセキュリティ状態を返します。

さらに、各 DMA チャネル・スレッドは、チャネルが Stopped 状態でない場合に有効

するダイナミック・ノン・セキュア・ビットの CNSが含まれています。

Secure 状態での DMAマネージャ・スレッドDNSビットが 0 である場合、DMA マネージャ・スレッドが Secure 状態で動作し、安全な

命令フェッチのみ実行します。Secure 状態における DMA マネージャ・スレッドがプ

ロセスするときに、

■ DMAGO—DMAC はそのチャネルの CNS ビットに書き込むことで、DMA チャネル・ス

レッドのセキュリティ状態を設定するためには、nsビットの状態を使用していま

す。

■ DMAWFE—DMAC はイベントが発生するまでスレッドの実行を停止します。イベン

トが発生すると、無関係に対応 INSビットのセキュリティ状態に DMAC はスレッ

ドの実行を継続します。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 22: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–22 第 16章 : DMA コントローラDMAコントローラの機能説明

■ DMASEV—DMACは無関係に対応INSビットのセキュリティ状態の INT_EVENT_RISレ

ジスタの対応するビットを設定します。

Non-Secure 状態のDMAマネージャ・スレッドDNSビットが 1 の場合、DMA マネージャ・スレッドは、Non-secure 状態で動作し、非セ

キュア命令フェッチのみ実行します。非セキュア状態における DMA マネージャ・ス

レッドをプロセスする場合、

■ DMAGO—DMAC は、DMA チャネル・スレッドを開始した場合を制御するために、nsビットの状態を使用しています。

■ ns = 0—DMAC は DMA チャネル・スレッドを起動していません。その代わりに、

DMAC は、

■ NOPを実行します。

■ FSRDレジスタを設定します。

■ FTRDレジスタの dmago_err ビットを設定します。

■ Faulting 状態に DMA マネージャを移動します。

■ ns = 1—DMAC は Non-secure 状態での DMA チャネル・スレッドを開始して、CNSビットが非セキュアであるためのプログラムします。

■ DMAWFE—DMAC は、イベントを待つ場合に制御するために、CR3レジスタでの対応

する INSビットのステータスを使用しています。もし、

■ INS = 0— イベントは、Secure 状態です。 DMAC は、

■ NOPを実行します。

■ FSRDレジスタを設定します。

■ FTRDレジスタの mgr_evnt_errビットを設定します。

■ Faulting 状態に DMA マネージャを移動します。

■ INS = 1— イベントは、Non-secure 状態です。 DMAC はスレッドの実行を停止し

て、イベントが発生するまで待ちます。

■ DMASEV—DMAC は、イベント割り込みを作成した場合制御するために、CR3レジス

タで対応する INSビットのステータスを使用しています。もし、

■ INS = 0— イベント割り込みリソースが Secure 状態になっています。 DMAC は、

■ NOPを実行します。

■ FSRDレジスタを設定します。

■ FTRDレジスタの mgr_evnt_errビットを設定します。

■ Faulting 状態に DMA マネージャを移動します。

■ INS = 1—イベント割り込みリソースがNon-secure状態になっています。 DMACはイベント割り込みを作成します。

セキュア状態のDMAチャネル・スレッドCNSビットが 0の場合、DMA チャネル・スレッドが Secure 状態で動作するようにプログ

ラムされ、安全な命令フェッチのみ実行します。

Secure 状態の DMA チャネル・スレッドが以下の命令を処理するとき:

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 23: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–23DMA コントローラの機能説明

■ DMAWFE—DMAC は、イベントが発生するまでスレッドの実行を停止します。 イベン

トが発生すると、CR3での対応する INSビットのセキュリティ状態に関係なく

DMAC はスレッドの実行を継続します。

■ DMASEV—CR3での対応する INSビットのセキュリティ状態に関係なく DMAC はス

レッドの実行を継続します。

■ DMAWFP— ペリフェラルは DMA 要求を信号するまではスレッドの実行を停止しま

す。これが発生すると、CR4レジスタでの対応する PNSビットのセキュリティ状

態に関係なく DMAC は、スレッドの実行を継続します。

■ DMALDP および DMASTP—DMACは、データ転送がCR4レジスタでの対応するPNSビッ

トのセキュリティ状態に関係なく、データ送信が完了したことを通信するペリ

フェラルにメッセージを送信します。

■ DMAFLUSHP—DMAC は、ペリフェラルの状態をクリアし、CR4レジスタでの対応す

る PNSビットのセキュリティ状態に関係なく、そのレベルのステータスを再送信

するためにペリフェラルにメッセージを送信します。

DMA チャネル・スレッドが Secure 状態である場合、DMAC は安全かつ非セキュア

AXI アクセスを実行することができます。

Non-Secure 非セキュア状態の DMAチャネル・スレッドCNSビットが 1 のとき、DMA チャネル・スレッドは、Non-secure 状態で動作するように

プログラムされ、非セキュア命令フェッチのみ実行します。

Non-secure 状態の DMA チャネル・スレッドは、次の命令を処理します。

■ DMAWFE—DMAC は、イベントを待つ場合に制御するために、CR3レジスタでの対応

する INSビットのステータスを使用しています。もし、

■ INS = 0— イベントは、Secure 状態になっています。DMAC は、

■ NOPを実行します。

■ DMA チャネル数に対応する FSRC レジスタに適切なビットを設定します。

■ FTRnレジスタの ch_evnt_errを設定します。

■ Faulting 状態に DMA マネージャを移動します。

■ INS = 1— イベントは、Non-secure 状態になっています。 DMAC は、スレッドの実

行を停止して、イベントが発生するまで待ちます。

■ DMASEV—DMAC は、イベントを作成した場合制御するために、CR3レジスタでの対

応する INSビットのステータスを使用します。もし、

■ INS = 0—DMAC: イベント割り込みリソースがセキュアな状態になっています。 DMAC は、

■ NOPを実行します。

■ DMA チャネル数に対応する FSRC レジスタに適切なビットを設定します。

■ FTRnレジスタの ch_evnt_errを設定します。

■ Faulting 状態に DMA マネージャを移動します。

■ INS = 1—イベント割り込みリソースがNon-secure状態になっています。 DMACはイベント割り込みを作成します。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 24: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–24 第 16章 : DMA コントローラDMAコントローラの機能説明

■ DMAWFP—DMAC は、要求を通知するペリフェラルを待つ場合に制御するために、

CR4レジスタでの対応する PNSビットのステータスを使用します。もし、

■ PNS = 0— ペリフェラルは、Secure 状態になっています。 DMAC は、

■ NOPを実行します。

■ DMA チャネル数に対応する FSRC レジスタに適切なビットを設定します。

■ FTRnレジスタの ch_periph_errを設定します。

■ Faulting 状態に DMA マネージャを移動します。

■ PNS = 1—ペリフェラルは、Non-secure 状態になっています。 DMAC はスレッドの

実行を停止して、要求を通知するまでペリフェラルを待ちます。

■ DMALDP および DMASTP—DMAC は、要求を通知するペリフェラルを待つ場合に制御

するために、CR4レジスタでの対応する PNSビットのステータスを使用します。

もし、

■ PNS = 0— ペリフェラルは、Secure 状態になっています。 DMAC は、

■ NOPを実行します。

■ DMA チャネル数に対応する FSRC レジスタに適切なビットを設定します。

■ FTRnレジスタの ch_periph_errビットを設定します。

■ Faulting 状態に DMA マネージャを移動します。

■ PNS = 1— ペリフェラルは、Non-secure 状態になっています。DMAC は、データ

転送が完了したときに通信するペリフェラルへのメッセージを送信します。

■ DMAFLUSHP—DMAC は、ペリフェラルへのフラッシュ要求を送信した場合に制御す

る CR4レジスタでの対応する PNSビットのステータスを使用します。もし、

■ PNS = 0— ペリフェラルは、Secure 状態になっています。 DMAC は、

■ NOPを実行します。

■ DMA チャネル数に対応する FSRC レジスタに適切なビットを設定します。

■ FTRnレジスタの ch_periph_errビットを設定します。

■ Faulting の完了状態に DMA マネージャを移動します。

■ PNS = 1— ペリフェラルは、Non-secure 状態になっています。 DMAC は、ペリフェ

ラルの状態をクリアし、そのレベルのステータスを再送信するためにペリ

フェラルにメッセージを送信します。

DMA チャネル・スレッドは、Non-secure 状態にあり、DMAMOV CCR命令は、セキュア

AXI トランザクションを実行するようにチャネルをプログラムしようとする場合、

DMAC は、

1. DMANOPを実行します。

2. DMA チャネル番号に対応 FSRC レジスタに適切なビットを設定します。

3. FTRnレジスタの ch_rdwr_errビットを設定します。

4. Faulting の完了状態に DMA チャネル・スレッドを移動します。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 25: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–25DMA コントローラの機能説明

使用方法の制約と制限この項では、使用方法の制約と制限について説明します。

DMAチャネル・アービトレーションDMAC はアクティブな DMA チャネルにサービスを提供するラウンド・ロビン方式を

使用しています。 DMAC は DMA マネージャにサービスを提供し続けていることを確

保するためには、常に前に次の DMA チャネルにサービスを提供する DMA マネー

ジャにサービスを提供しています。

それは DMAC のアービトレーション・プロセスを変更することはできません。

DMAチャネルの優先順位付けDMAC は等しい優先度を持つすべてのアクティブな DMA チャネルに応答します。 それは他の DMA チャネルを介して DMA チャネルの優先順位を上げることは不可能で

す。

命令キャッシュのレイテンシキャッシュ・ミスが発生した場合、要求をサービスするためのレイテンシは、DMAコードを含むメモリのリード・レイテンシに主に依存しています。 DMAC が追加する

レイテンシは 小限に抑えられます。

AXI データ転送サイズDMAC は、 大 64 ビット幅のデータ・アクセスのみ実行することができます。 src_burst_size または dst_burst_sizeフィールドを大きくするようにプログラムす

る場合、DMAC は正確アボートを通知します。 詳細は、16–18 ページの「停止のソー

ス」を参照してください。

AXI バースト・クロッシング 4 KB の境界AXI 仕様では、AXI バーストが 4 KB のアドレス境界を越えることできません。シング

ル・バーストに 4 KB アドレス境界を横断させるバースト・スタート・アドレス、サ

イズおよびレングスの合成を持った DMAC をプログラムする場合、DMAC は、指定さ

れたと等しい結合した長さの 1 ペアのバーストを生成します。この動作は、DMACチャネル・スレッド・プログラムに対して透過的です。これにより、DMAC は AXIリード・バーストの適切なペアで生成することにより、シングル DMALD命令に応答

することができます。

AXI バースト・タイプデータ・アクセスのために固定アドレスまたはインクリメント・アドレス・バース

トのタイプを生成するために DMAC をプログラムすることができます。 これは、デー

タ・アクセスのためのラッピング・アドレス・バースト、または命令フェッチのに

生成しません。

AXI ライト・アドレスDMAC は、8 つの傑出したライト・アドレスを発行することができます。 DMAC は、

そのライト・トランザクションを満たすために必要なデータ・バイトの全てに読み

出すまでライト・アドレスを発行しません。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 26: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–26 第 16章 : DMA コントローラDMAコントローラの機能説明

インタリーブAXI ライト・データDMAC はインタリーブされるライト・データを生成しません。 すべてのライト・デー

タは次のライト・トランザクションのためにビートする前に、1 のライト・トランザ

クションのすべてのライト・データ・ビートが出力されます。

プログラミングの制限事項次の項では、DMAC をプログラミングする際に適用される制限事項について説明しま

す。

修正されましたアラインメントされていないバーストDMAC は、固定のアラインメントされていないバーストをサポートしていません。 以下の条件をプログラムした場合、DMAC はプログラミング・エラーとしてこれを扱い

ます。

■ アラインメントされていないリード

■ CCRnレジスタの src_incフィールドは 0 である。

■ SARn レジスタは src_burst_sizeフィールドに含まれるデータのサイズにアラ

インメントされていないアドレスが含まれている。

■ アラインメントされていないライト

■ CCRnレジスタの dst_incフィールドは 0 である。

■ DARnレジスタは dst_burst_sizeフィールドに含まれるデータのサイズにアラ

インメントされていないアドレスが含まれている。

エンディアン・スワップのサイズ制限CCRnレジスタに endian_swap_sizeフィールドをプログラムする場合 、エンディア

ン・スワップを実行する DMA チャネルをイネーブルするために、DMALDまたは

DMAST命令を実行する前に、endian_swap_sizeフィールドが指定するサイズにアライ

ンメントするアドレスを含むために対応する SARnレジスタおよび対応する DARnレ

ジスタを設定する必要があります。

1 endian_swap_size、SARn、または DARnのいずれかを更新する場合( たとえば、

DMAADDH命令を使用する)、SARn および DARn レジスタは endian_swap_size フィール

ドが追加の DMALDまたは DMAST 命令を実行する前に指定されているサイズにアライ

ンメントされたアドレスが含まれていることを確認する必要があります。

CCRn レジスタでの src_inc フィールドを固定アドレスを使用するようにプログラム

する場合、 endian_swap_sizeフィールドが指定されている値以上でバースト・サイ

ズに src_burst_sizeフィールドをプログラムする必要があります。固定のデスティ

ネーション・アドレスを選択する dst_incフィールドをプログラムした場合、

endian_swap_sizeフィールドが指定されている値以上でバースト・サイズを選択す

る dst_burst_sizeフィールドをプログラムする必要があります。

CCRn レジスタでの dst_incフィールドをインクリメント・アドレスを使用するよう

にプログラムする場合、 dst_burst_len回の dst_burst_sizeは endian_swap_sizeの倍数になるように CCRn レジスタをプログラムする必要があります。 例えば、

endian_swap_size = 2、32 ビット、そしてバイトごとに dst_burst_size = 1、2 の場

合、2、4、6、...、16 転送の dst_burst_len = 1、3、5、...、15 をプログラムする

ことができます。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 27: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–27DMA コントローラの機能説明

DMAサイクル中の DMAチャネル・コントロール・レジスタの更新DMALDと DMAST命令のシーケンスを実行する DMAC する前に、CCRn レジスタ、SARn レジスタ、および DARn レジスタにプログラム する値は、 ソース・アドレスからデス

ティネーション・アドレスにデータを転送するとき、DMAC が実行するデータ・バイ

ト・レーン操作をコントロールします。

DMA サイクル中にこれらのレジスタを更新することができますが、特定のレジス

タ・フィールドを変更した場合、DMAC は、データを放棄する可能性があります。 以下の項では、データ転送に悪影響を及ぼす可能性があるレジスタ・フィールドが記

載されています。

デスティネーション・アドレスに影響を与える更新DMA サイクルの経由で DARnレジスタまたは CCRn レジスタを更新するために

DMAMOV命令を使用する場合、 デスティネーション・データ・ストリームの不連

続が発生する可能性があります。

次のいずれかを変更した場合に不連続が発生します。

■ endian_swap_sizeフィールド

■ dst_inc ビット

■ dst_inc = 0 の場合の dst_burst_sizeフィールド(すなわち、固定アドレス・バー

スト)

■ デスティネーション・バイト・レーン・アラインメントを変更する DARnレジス

タ。バス幅は 64 ビットですので、 DARn レジスタでビット [2:0] を変更するしま

す。

デスティネーション・データ・ストリーム内の不連続が発生した場合、DMAC は、

1. DMA チャネル・スレッドの実行を停止します。

2. チャネルに対するすべての未解決のリードおよびライト動作を完了します。 すな

わち、DMAC が DMARMBと DMAWMBを実行したかのようです。

3. チャネルに対する未解決の MFIFO バッファ・データを放棄します。

4. DMA チャネル・スレッドの実行を再開します。

ソース・アドレスに影響する更新DMA サイクルの経由で SARnレジスタまたは CCRn レジスタを更新するために DMAMOV命令を使用する場合、 ソース・データ・ストリームの不連続が発生する可能性があり

ます。

次のいずれかを変更した場合に不連続が発生します。

■ src_incビット。

■ src_burst_size フィールド。

■ ソース・バイト・レーン・アラインメントを変更する SARnレジスタ。バス幅は 64ビットですので、 SARn レジスタでビット [2:0] を変更するします。

ソース・データ・ストリーム内の不連続性が発生すると、DMAC は、

1. DMA チャネル・スレッドの実行を停止します。

2. チャネルごとにすべての未解決の読み取り操作を完了します。すなわち、DMACが DMARMBを実行したのようです。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 28: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–28 第 16章 : DMA コントローラDMAコントローラの機能説明

3. DMA チャネルのスレッドの実行を再開します。 データは MFIFO バッファから放棄

されていません。

DMAチャネル間のリソースの共有DMA チャネル・プログラムは MFIFO バッファ・データ・ストレージ・リソースを共

有しています。 同時に 512(MFIFO バッファのサイズ)を超えるリソース要件と DMAチャネルプ・ログラムを実行しているのセットを開始してはいけません。この制限

を超えた場合、DMAC はロック・アップされ、ウォッチドッグ・アボートを生成する

可能性があります。16–19 ページの「ウォッチドッグ停止」を参照してください。

DMAC では、共有 MFIFO バッファ・リソースが正しく使用されるように、ロード・

ロックと呼ばれるメカニズムが含まれています。 ロード・ロックは、一つのチャネル

が所有するか、または未使用です。 ロード・ロックを所有しているチャネルは、正常

に DMALD命令を実行することができます。 ロード・ロックを所有していないチャネル

は、ロード・ロックの所有権を取得するまで DMALD命令で一時停止します。

次の場合、チャネルは、ロード・ロックの所有権を主張します。

■ DMALDまたは DMALDP 命令を実行する場合。

■ 他のロード・ロックを所有するチャネルがない場合。

以下のいずれかが発生すると、チャネルは、 ロード・ロックの所有権を解放します。

■ それは DMAST、DMASTP、または DMASTZを実行する場合。

■ それは、バリアに到達する場合(つまり、DMARMB または DMAWMBを実行する場合)。

■ 待機する場合(つまり、DMAWFPまたは DMAWFEを実行する場合)。

■ 正常終了する場合(つまり、DMAENDを実行する場合)。

■ DMAKILLを含むいかなるの理由で中止される場合。

DMA チャネル・プログラムの MFIFO バッファ・リソースの使用率は、MFIFO バッ

ファ・エントリで測定され、プログラムの進行に上昇を落下します。 DMA チャネル・

プログラムの MFIFO バッファ・リソース要件は、 ロード・ロック・メカニズムによっ

て影響を受ける静的要件および 動的な条件を用いて説明します。

静的な要件は、そのチャネルが次のいずれかを実行する前にチャネルが現在使用し

ている MFIFO バッファ・エントリの 大数であると定義されています。

■ WFP または WFE 命令を実行する。

■ ロード・ロックの所有権を主張する。

動的要件はチャネル・プログラムが使用する静的要件および MFIFO バッファ・エン

トリの 大数との差であると定義されています。

合計 MFIFO バッファ要件を計算するには、すべての静的な要件の合計に 大ダイナ

ミック要件を追加してください。

DMAC ロック・アップを回避するために、チャネル・プログラムのセットの合計

MFIFO バッファ要件は、MFIFO バッファの深さに等しいか、または 512 未満でなけれ

ばなりません。

詳細は、16–48 ページの「MFIFO バッファの使用法の概要」を参照してください。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 29: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–29DMA コントローラのプログラミング・モデル

DMA コントローラのプログラミング・モデル以下の項では、DMA エンジンの DMA レジスタについて説明します。

命令構文規則次の表記は、アセンブラ構文プロトタイプ・ラインと彼らのサブフィールドで使用

されます。

■ < >

< and > で囲まれる任意の項目は必須です。 項目の説明、およびその命令にエン

コードされる方法の記述は、後続のテキストによって供給されています。

■ [ ]

[ and ] で囲まれる任意の項目はオプションです。項目の説明、および その有無が

命令でエンコードされている方法については、後続のテキストによって供給され

ています。

■ Spaces

ングル・スペースは別々の項目に明確にするために使用されます。スペースはア

センブラ構文で義務付けられた場合、二つ以上の連続したスペースは使用されま

す。

命令セットの概要DMAC の命令は、

■ 一意の名前空間を提供するために、DMA 接頭辞を使用します。

■ 可変データ・ペイロードの 0、8、16、または 32 ビットを使用する 8 ビットのオペ

コードがあります。

■ 一貫しているサフィックスを使用します。

表 16–2 に、コントロール信号の概要を示します。

表16‒2. 命令セットの概要 ( その1 )

ニーモニック 命令 DMA マネージャの使用

DMA チャネルの使用 説明

DMAADDH Add Halfword なし あり 16–30 ページの「DMAADDH」を参照。

DMAADNH Add Negative Halfword なし あり 16–31 ページの「DMAADNH」を参照。

DMAEND End あり あり 16–32 ページの「DMAEND」を参照。

DMAFLUSHP Flush and Notify Peripheral なし あり16–32 ページの「DMAFLUSHP」を参

照。

DMAGO Go あり なし 16–33 ページの「DMAGO」を参照。

DMAKILL Kill あり あり 16–34 ページの「DMAKILL」を参照。

DMALD Load なし あり16–35 ページの「DMALD[S | B]」を参

照。

DMALDP Load and Notify Peripheral なし あり16–36 ページの「DMALDP<S | B>」を

参照。

DMALP Loop なし あり 16–37 ページの「DMALP」を参照。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 30: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–30 第 16章 : DMA コントローラDMA コントローラのプログラミング・モデル

説明書次の項では、DMAC が実行できる命令を説明します。

DMAADDHAdd Halfword は DMA チャネル・スレッドに SARnレジスタまたは DARnレジスタに即

値の 16 ビットを加算し ます。 これは、2D DMA 動作をサポートする DMAC を可能に

します。

1 DMAC は、32 ビットの加算を使用して、アドレスに追加する前に、即時の符号なし 16ビット値はゼロに拡張されます。 DMAC はアドレスが 0xFFFFFFFF から 0x00000000 に

ラップするキャリー・ビットを放棄します。

図 16–5 には、命令のエンコーディングを示しています。は、命令のエンコーディン

グを示しています。

DMALPEND Loop End なし あり16–37 ページの「DMALPEND[S | B]」

を参照。

DMALPFE Loop Forever なし あり 16–39 ページの「DMALPFE」を参照。

DMAMOV Move なし あり 16–39 ページの「DMAMOV」を参照。

DMANOP No Operation あり あり 16–40 ページの「DMANOP」を参照。

DMARMB Read Memory Barrier なし あり 16–41 ページの「DMARMB」を参照。

DMASEV Send Event あり あり 16–41 ページの「DMASEV」を参照。

DMAST Store なし あり16–42 ページの「DMAST[S | B]」を参

照。

DMASTP Store and Notify Peripheral なし あり16–43 ページの「DMASTP<S | B>」を

参照。

DMASTZ Store Zero なし あり 16–44 ページの「DMASTZ」を参照。

DMAWFE Wait For Event あり あり 16–44 ページの「DMAWFE」を参照。

DMAWFP Wait For Peripheral なし あり 16–45 ページの「DMAWFP」を参照。

DMAWMB Write Memory Barrier なし あり 16–46 ページの「DMAWMB」を参照。

表16‒2. 命令セットの概要 ( その2 )

ニーモニック 命令 DMA マネージャの使用

DMA チャネルの使用 説明

図16‒5. DMAADDHエンコーディング

0

7 6 5 4 3 2 1 0

0 1 0 1 0 1 ra

15 8 7

imm[7:0]

23 16

imm[15:8]

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 31: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–31DMA コントローラのプログラミング・モデル

アセンブラの構文DMAADDH <address_register>?<16-bit immediate>

この場合、

<address_register> 使用するアドレス・レジスタを選択します。それは、以下のい

ずれかでなければなりません。

SAR SARn レジスタであり、ra を 0 に設定します。

DAR DARn レジスタであり、ra を 1 に設定します。

<16-bit immediate> <address_register> に追加する即値です。

動作DMA チャネル・スレッドにのみ、この命令を使用することができます。DMA チャネ

ル・スレッドにのみ、この命令を使用することができます。

DMAADNHAdd Negative Halfword は、DMA チャネル・スレッドに SARnレジスタまたは DARnレジ

スタへの即時負の 16 ビット値を追加 します。 これは、2D DMA 動作をサポートする

DMAC をイネーブルするか、または自然にインクリメント・アドレスに異なる順序に

メモリの領域のリードまたはライトをイネーブルします。

1 即時の符号なし 16 ビット値は、32 ビットに 1 拡張されます。DMAC はアドレスが

0xFFFFFFFF から 0x00000000 にラップするキャリー・ビットを放棄します。

図 16–6 には、命令のエンコーディングを示しています。

アセンブラの構文DMAADNH <address_register>?<16-bit immediate>

この場合、

<address_register> 使用するアドレス・レジスタを選択します。それは、以下のい

ずれかでなければなりません。

SAR SARn レジスタであり、ra を 0 に設定します。

DAR DARn レジスタであり、ra を 1 に設定します。

<16-bit immediate> <address_register> に追加する即値です。

1 16 ビット即値は、命令エンコーディングで表す番号として指定する必要があります。 たとえば、DMAADNH DARの場合、0xFFF0 は、効果的に DARから 16 を減算して、値

0xFFFFFFF0 が Destination Address レジスタの現在の値に添加させます。

図16‒6. DMAADNH エンコーディング

0

7 6 5 4 3 2 1 0

0 1 0 1 1 1 ra

15 8 7

imm[7:0]

23 16

imm[15:8]

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 32: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–32 第 16章 : DMA コントローラDMA コントローラのプログラミング・モデル

動作DMA チャネル・スレッドにのみ、この命令を使用することができます。DMA チャネ

ル・スレッドにのみ、この命令を使用することができます。

DMAENDDMA シーケンスが完了したことの DMAC へのエンド信号です。 すべての DMA 転送

は、DMA チャネルの完了した後、DMAC は Stopped 状態へのチャネルを移動します。 また、MFIFO バッファからのデータをフラッシュして、スレッドのすべてのキャッ

シュ・エントリを無効にします。

図 16–7 には、命令のエンコーディングを示しています。

アセンブラの構文DMAEND

動作DMA マネージャ・スレッドおよび DMA チャネル・スレッドで命令を使用することが

できます。

DMAFLUSHPFlush Peripheral は、ペリフェラルの内容を説明する DMAC の状態をクリアして、その

レベル・ステータスを再送信するためにペリフェラルにメッセージを送信します。

図 16–8 には、命令のエンコーディングを示しています。

アセンブラの構文DMAFLUSHP <peripheral>

この場合、

<peripheral> 5-ビットの即値 0-31

動作DMA チャネル・スレッドにのみ、この命令を使用することができます。

図16‒7. DMAEND エンコーディング

図16‒8. DMAFLUSHP エンコーディング

0

7 6 5 4 3 2 1 0

0 0 0 0 0 0 0

1

7 6 5 4 3 2 1 0

0 0 1 1 0 1 0

15 11 10 9 8 7

periph[4:0] 0 00

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 33: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–33DMA コントローラのプログラミング・モデル

DMAGODMA マネージャ・スレッドおよび DMA チャネル・スレッドで命令を使用することが

できます。

1. プログラム・カウンタに 32 ビットの即値を移動します。

2. そのセキュリティ状態を設定します

3. Executing 状態に更新します。

1 DMAマネージャがDMAGOを実行するときにDMAチャネルがStopped状態になっていない

場合、DMAC は DMAGOを実行しません。その代わりに、DMANOPを実行します。

図 16–9 には、命令のエンコーディングを示しています。

アセンブラの構文DMAGO <channel_number>?<32-bit_immediate> [?ns]

この場合、

<channel_number> DMA チャネルを選択します。これは、以下のいずれかである必要

があります。

C0 DMA チャネル 0

C1 DMA チャネル 1

C2 DMA チャネル 2

C3 DMA チャネル 3

C4 DMA チャネル 4

C5 DMA チャネル 5

C6 DMA チャネル 6

C7 DMA チャネル 7

1 DMAC のコンフィギュレーションに使用できないチャネル番号を提供する

場合、DMA マネージャ・スレッドが停止されます。これは、下記のうちの

1 つであるに違いありません。

<32-bit_immediate> 選択した<channel_number>のためのCPCnレジスタに書き込まれ

る即値です 。

図16‒9. DMAGOエンコーディング

0

7 6 5 4 3 2 1 0

1 0 1 0 0 0 ns

15 14 13 12 11 10 8 7

cn[2:0]0 000 0

1647

imm[31:0]

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 34: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–34 第 16章 : DMA コントローラDMA コントローラのプログラミング・モデル

[ns]

■ nsが存在するれている場合、DMA チャネルは Non-secure 状態で動作します。

■ それ以外の場合、命令の実行は、DMA マネージャのセキュリティ状態に依存

します。

DMA manager is in the Secure state—DMA チャネルは Secure 状態で動作します。

DMA manager is in the Non-secure state—DMAC が が停止されます。

動作DMA マネージャ・スレッドにのみこの命令を使用することができます。

DMAKILLKill はすぐにスレッドの実行を終了する DMAC に指示します。 スレッドのタイプに応

じて、DMAC は次の手順を実行します。

DMA マネージャ・スレッド

1. DMA マネージャのためのすべてのキャッシュ・エントリを無効にします。

2. DMA マネージャは、Stopped 状態に移行します。

DMA Channel Thread チャネル・スレッド

1. Killing 状態に DMA チャネルを移動します。

2. DMA チャネル番号と同じ ID を使用して、AXI トランザクションが完了するまで待

ちます。

3. DMA チャネルのすべてのキャッシュ・エントリを無効にします。

4. DMA チャネルの MFIFO バッファ内のすべてのエントリを削除します。

5. DMA チャネルのリード・バッファ・キューおよびライト・バッファ・キュー内の

すべてのエントリを削除します。

6. Stopped 状態への DMA チャネルを移動します。

図 16–10 には、命令のエンコーディングを示しています。

アセンブラの構文DMAKILL

動作DMA マネージャ・スレッドおよび DMA チャネル・スレッドで命令を使用することが

できます。

1 DMAチャネル・プログラムでDMAKILL命令を使用することはできません。 DMAKILL命令

を発行するには、DBGINST0レジスタを使用しています。

図16‒10. DMAKILL エンコーディング

1

7 6 5 4 3 2 1 0

0 0 0 0 0 0 0

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 35: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–35DMA コントローラのプログラミング・モデル

DMALD[S | B]ソース・アドレス・レジスタとチャネル・コントロール・レジスタが指定された AXIトランザクションを使用して、ロードは DMA のロードを実行するための DMAC を指

示します。 それは対応するチャネル番号と MFIFO バッファやタグにリード・データを

配置します。 DMALDは無条件命令ですが、DMALDSと DMALDBは request_typeフラグ

の状態を条件としています。 チャネル・コントロール・レジスタの src_incビットを

インクリメントに設定されている場合、DMALD[S|B]を実行した後、DMAC はソース・

アドレス・レジスタを更新します。

1 それはDMAWFP命令を実行したときにDMACはrequest_typeの値を設定します。16–45ページの「DMAWFP」を参照してください。

図 16–11 には、命令のエンコーディングを示しています。

アセンブラの構文DMALD[S|B]

この場合、

[S] S が存在する場合、アセンブラは、bsを 0 に設定し、そして xを 1 に設定します。 命令は request_typeフラグの状態を条件となります。

■ request_type = シングル

DMAC は DMALD命令を実行し、それがアーレン [3:0] AXI 読み出しトランザクショ

ンの長さが 1 = 0x0 になるように設定します。 DMAC はチャネル・コントロール・

レジスタ内の src_burst_lenフィールドの値を無視します。

■ request_type = バースト

DMAC は DMANOP命令を実行します。DMAC は、次の命令へのチャンネル PC をイ

ンクリメントします。状態変更は発生しません。

[B] B が存在する場合、アセンブラは、bsおよび xを 1 に設定します。 命令は

request_typeフラグの状態を条件となります。

■ request_type = シングル

DMAC は DMANOP命令を実行します。DMAC は、次の命令へのチャンネル PC をイ

ンクリメントします。状態変更は発生しません。

■ request_type = バースト

DMAC は、DMALDを実行します。

S または B オペランドを指定しない場合、アセンブラは bsおよび xを 0 に設定し、

DMAC は常に DMA のロードを実行します。

図16‒11. DMALD[S|B] エンコーディング

x

7 6 5 4 3 2 1 0

0 0 0 0 0 1 bs

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 36: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–36 第 16章 : DMA コントローラDMA コントローラのプログラミング・モデル

動作DMA チャネル・スレッドにのみ、この命令を使用することができます。 S または B オ

ペランドを指定した場合、命令の実行は、命令とマッチングする request_typeの状

態に条件とします。

DMALDP<S | B>ソース・アドレス・レジスタとチャネル・コントロール・レジスタが指定する AXIトランザクションを使用して、Load and notify Peripheral は DMA ロードを実行するた

めに DMAC に指示しています。 リードデータは FIFO バッファに配置し、対応する

チャネル番号でタグします。 後のデータ項目を受信した後、データ転送が完了し

たことをペリフェラル送信します。チャネル・コントロール・レジスタの src_incビットをインクリメントに設定されている場合、DMALDP<S|B>を実行した後、DMACはソース・アドレス・レジスタを更新します 。

図 16–12 には、命令のエンコーディングを示しています。

アセンブラの構文DMALDP<S|B> <peripheral>

この場合、

<S> S が存在する場合、アセンブラは 、bs を 0 に設定します。 命令は request_typeフラグの状態を条件となります。

■ request_type = シングル

DMAC は DMALDP命令を実行し、 AXI リード・トランザクションの長さが 1 になる

ように arlen[3:0]=0x0 を設定します。 DMAC はチャネル・コントロール・レジス

タ内の src_burst_lenフィールドの値を無視します。

■ request_type = バースト

DMAC は DMANOPを実行します。

<B> B が存在する場合、アセンブラは bsを 1 に設定します。 命令は request_typeフラ

グの状態を条件となります。

■ request_type = シングル

DMAC は DMANOPを実行します。

■ request_type = バースト

DMAC は、バースト DMA 転送を使用してロードを実行します。

<peripheral> 5-ビットの即値 の 0-31

1 DMAC は、DMAWFP命令を実行したときに request_typeフラグの値を設定します。 16–45 ページの「DMAWFP」を参照してください。

図16‒12. DMALDP<S|B> エンコーディング

1

7 6 5 4 3 2 1 0

0 0 1 0 0 1 bs

15 11 10 9 8 7

periph[4:0] 0 00

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 37: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–37DMA コントローラのプログラミング・モデル

動作DMA チャネル・スレッドにのみ、この命令を使用することができます。命令の実行

は、命令と一致する request_typeフラグの状態上で条件付きです。

DMALPループは、指定したループ・カウンタ・レジスタに 8 ビットの値をロードする DMACに指示します。

この命令は、命令の項の開始を示し、DMALPEND命令を使用して項の終わりを設定し

ます。16–37 ページの「DMALPEND[S | B]」を参照してください。 DMAC は、ループ・

カウンタ・レジスタの値がゼロになるまで DMALPと DMALPEND間に挿入する一連の命

令を繰り返します。

1 DMACは DMALPの次命令のPCの値を保存します。 DMACがDMALPENDを実行した後、ルー

プ・カウンタ・レジスタがゼロでない後、ループの 初の命令を実行することをイ

ネーブルします。

図 16–13 には、命令のエンコーディングを示しています。

アセンブラの構文DMALP <loop_iterations>

この場合、

<loop_iterations>

実行するループの数を指定します(1 から 256 の範囲)。

■ アセンブラは、ループ・カウンタ・レジスタを決定し、次のいずれかを使用

します。

■ lcを 0 に設定し、DMAC はループ・カウンタ 0 レジスタに値

loop_iterations マイナス 1 を書き込みます。

■ lcを 1 に設定し、DMAC はループ・カウンタ 1 レジスタに値

loop_iterations マイナス 1 を書き込みます。

動作DMA チャネル・スレッドにのみ、この命令を使用することができます。

DMALPEND[S | B]Loop End は、プログラム・ループ内の 後の命令を示していますが、DMAC は DMALPまたは DMALPFEがループを開始するかどうかに依存します。 ループが以下で開始する

場合、

図16‒13. DMALP エンコーディング

0

7 6 5 4 3 2 1 0

0 0 1 0 0 0 lc

15 8 7

iter[7:0]

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 38: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–38 第 16章 : DMA コントローラDMA コントローラのプログラミング・モデル

■ DMALP ループでは、定義されたループ・カウントがあり、DMALPEND[S|B]はルー

プ・カウンタ・レジスタの値を読み出す DMAC を指示します。ループ・カウン

タ・レジスタを返した場合、

■ ゼロ —DMAC は DMANOPを実行して、ループを終了します。

■ ゼロではない —DMAC は、ループ・カウンタ・レジスタの値をデクリメント

し、プログラム・ループの 初の命令のアドレス(DMALPの次の命令)を格納

するスレッドの PC を更新します。

■ DMALPFE ループは未定義のループ・カウントを持っており、DMAC はループを終了

するときに request_lastフラグの状態を制御するために使用します。 request_lastフラグは以下の場合、

■ 0—DMAC は、ループ・カウンタ・レジスタの値をデクリメントし、プログラ

ム・ループの 初の命令のアドレス(DMALPの次の命令)を格納するスレッド

の PC を更新します。

■ 1—DMAC は DMANOPを実行し、ループを終了します。

図 16–14 には、命令のエンコーディングを示しています。

アセンブラの構文DMALPEND[S|B]

この場合、

[S] S が存在する場合、アセンブラは 、bs を 0 に設定し、そして xを 1 に設定します。 命令は request_typeフラグの状態を条件となります。

■ request_type = シングル

■ DMAC は DMALPENDを実行します。

■ request_type = バースト

■ DMAC は DMANOPを実行し、ループを終了します。

[B] B が存在し、ループが DMALPで始まる場合、アセンブラは 、bs と xを 1 に設定しま

す。 命令は request_typeフラグの状態を条件となります。

■ request_type = シングル

■ DMAC は DMANOPを実行し、ループを終了します。

■ request_type = バースト

■ DMAC は DMALPENDを実行します。

S または B オペランドを指定しない場合、アセンブラは bs と xを 0 に設定し、

DMAC は常に DMALPENDを実行します。

図16‒14. DMALPEND[S|B] エンコーディング

x

7 6 5 4 3 2 1 0

0 0 1 nf 1 lc bs

15 8 7

backwards_jump[7:0]

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 39: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–39DMA コントローラのプログラミング・モデル

1 ループが DMALPFEで始まるときには、S または B オペランドを指定しないでください。 そうした場合、アセンブラは警告メッセージを発行し、bs と xを 0 に、そして nfを 1 に設定します。 DMALPFEの場合と同様に、DMAC は、ループ終了する時に制御する

ために、request_lastフラグの状態を使用します。

1 DMAC は、値を設定します。

■ DMAWFP命令を実行したときの request_typeフラグです。 16–45 ページの

「DMAWFP」を参照してください。

■ ペリフェラル要求インタフェースを介して対応するペリフェラルは 後の要求コ

マンドを発行するときの 1 への request_lastフラグです。 16–13 ページの「ペ

リフェラル・レングスの管理」を参照してください。

DMALPEND命令で追加ビットを正しく割り当てるには、図 16–14 に示すように、アセ

ンブラは以下のために値を決定します。

backwards_jump[7:0] プログラム・ループの 初の命令の相対的な位置を設定しま

す。アセンブラは DMALPENDのアドレスからループの 初の命令のアドレスを減算す

ることによって backwards_jump[7:0]の値を計算します。

■ nfは以下に設定します。

■ DMALPFEはプログラム・ループを開始した場合、0

■ DMALPはプログラム・ループを開始した場合、1

■ lcは以下に設定します。

■ ループ・カウンタ 0 レジスタがループ・カウンタの値が含まれている場合、0

■ ループ・カウンタ 1 レジスタがループ・カウンタの値が含まれている場合、1

■ DMALPFEがプログラム・ループを開始した場合、1

動作DMA チャネル・スレッドにのみ、この命令を使用することができます。 S または B オ

ペランドを指定した場合、命令の実行は、命令と一致する request_typeフラグの状

態上で条件付きです。

DMALPFEアセンブラは DMALPENDで特定のビットを設定するために Loop Forever を使用してい

ます。 16–37 ページの「DMALPEND[S | B]」を参照してください。

1 アセンブラが DMALPFEを遭遇すると、それは DMAC の指示を作成しません。その代わ

り、DMALPENDの動作を変更します。 プログラム・コードでの DMALPFEの挿入は、

ループの開始を識別します。

アセンブラの構文DMALPFE

DMAMOV次のレジスタに 32 ビットの即値を移動するには、DMAC の命令を移動します。

■ ソース・アドレス・レジスタ

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 40: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–40 第 16章 : DMA コントローラDMA コントローラのプログラミング・モデル

■ デスティネーション・アドレス・レジスタ

■ チャネル・コントロール・レジスタ

図 16–15 には、命令のエンコーディングを示しています。

アセンブラの構文DMAMOV <destination_register>?<32-bit_immediate>

この場合、

<destination_register>

有効なレジスタは、以下のとおりです。

■ SAR— ソース・アドレス・レジスタを選択し、rdを b000 に設定します。

■ CCR— チャネル・コントロール・レジスタを選択し、rdを b001 に設定します。

■ DAR— デスティネーション・アドレス・レジスタを選択し、rdを b010 に設定し

ます。

<32-bit_immediate>

指定されたデスティネーション・レジスタに書き込まれる 32 ビット値。

1 チャネル・コントロール・レジスタの様々なフィールドをプログラムするためにア

センブラを使用する方法については、16–47 ページの「DMAMOV CCR」を参照してく

ださい 。

動作DMA チャネル・スレッドにのみ、この命令を使用することができます。

DMANOPNo Operation は何もしません。 コード・アラインメントの目的でこの命令を使用する

ことができます。

図 16–16 には、命令のエンコーディングを示しています。

図16‒15. DMAMOV エンコーディング

0

7 6 5 4 3 2 1 0

1 0 1 1 1 1 0

15 14 13 12 11 10 8 7

rd[2:0]0 000 0

1647

imm[31:0]

図16‒16. DMANOPエンコーディング

0

7 6 5 4 3 2 1 0

0 0 0 1 1 0 0

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 41: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–41DMA コントローラのプログラミング・モデル

アセンブラの構文DMANOP

動作DMA マネージャ・スレッドおよび DMA チャネル・スレッドで命令を使用することが

できます。

DMARMBRead Memory Barrier は、そのチャネルの実行された DMALD命令のすべての AXI マス

タ・インタフェース上で発行されており、完了するまで待つように DMA チャネルを

強制します。

これは、危険なしの同じアドレス位置への書き込みと読み出しのシーケンスをイ

ネーブルにします。

図 16–17 には、命令のエンコーディングを示しています。

アセンブラの構文DMARMB

動作DMA チャネル・スレッドにのみ、この命令を使用することができます。

DMASEVSend Event は、イベント割り込みリソースを変更する DMAC に指示します。 割り込み

イネーブル・レジスタをプログラムする方法に応じて、

■ <event_num>イベントを生成します。

1 一般的には、スレッドを停止する DMAWFEを使用し、別のスレッドが待機中

のスレッドをアンストールするために、適切なイベント番号を使用して、

DMASEVを実行します。 16–16 ページの「DMA チャネルを再起動するイベン

トの使用」を参照してください。

■ irq<event_num>を使用して割り込みを通知します。

図 16–18 には、命令のエンコーディングを示しています。

図16‒17. DMARMB エンコーディング

図16‒18. DMASEV エンコーディング

0

7 6 5 4 3 2 1 0

0 0 0 1 0 0 1

0

7 6 5 4 3 2 1 0

0 0 1 1 0 1 0

15 8

event_num[4:0]

1011

0

9

00

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 42: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–42 第 16章 : DMA コントローラDMA コントローラのプログラミング・モデル

アセンブラの構文DMASEV <event_num>

この場合、

<event_num> 5-ビットの即値 0-31

1 使用不可能なイベント番号を選択した場合、DMAC はスレッドを停止します。

動作DMA マネージャ・スレッドおよび DMA チャネル・スレッドで命令を使用することが

できます。16–16 ページの「イベントと割り込みの使用」を参照してください。

DMAST[S | B]Store は、DA レジスタとチャネル・コントロール・レジスタで指定される AXI トラン

ザクションを使用して、デスティネーション・アドレス・レジスタが指定される位

置に FIFO バッファからデータを転送するために DMAC を指示します。 チャネル・コ

ントロール・レジスタの dst_incビットをインクリメントに設定されている場合、

DMAC は DMAST[S|B]を実行した後、デスティネーション・アドレス・レジスタを更

新します。

図 16–19 には、命令のエンコーディングを示しています。

アセンブラの構文DMAST[S|B]

この場合、

[S] S が存在する場合、アセンブラは 、bs を 0 に、そして xを 1 に設定します。 命令は

request_typeフラグの状態を条件となります。

■ request_type = シングル

■ DMAC は DMAST命令を実行し、AXI ライト・トランザクションの長さが 1 になる

ように awlen[3:0]=0x0 を設定します。 DMAC はチャネル・コントロール・レ

ジスタ内の dst_burst_len フィールドの値を無視します。

■ request_type = バースト

■ DMAC は DMANOP命令を実行します。DMAC は、次の命令へのチャンネル PC をイ

ンクリメントします。 状態変更は発生しません。

[B] B が存在する場合、アセンブラは 、bs と xを 1 に設定します。 命令は request_typeフラグの状態を条件となります。

■ request_type = シングル

■ DMAC は DMANOP命令を実行します。DMAC は、次の命令へのチャンネル PC をイ

ンクリメントします。 状態変更は発生しません。

図16‒19. DMAST[S|B] エンコーディング

x

7 6 5 4 3 2 1 0

0 0 0 0 1 0 bs

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 43: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–43DMA コントローラのプログラミング・モデル

■ request_type = バースト

■ DMAC は DMAST. を実行します。

■ S または B オペランドを指定しない場合、アセンブラは bs と xを 0 に設定し、

DMAC は常に DMA ストアを実行します。

1 DMAC は、DMAWFP命令を実行したときに request_typeフラグの値を設定します。 16–45 ページの「DMAWFP」を参照してください。

動作DMA チャネル・スレッドにのみ、この命令を使用することができます。 S または B オ

ペランドを指定した場合、命令の実行は、命令と一致する request_typeフラグの状

態上で条件付きです。

DMAC は MFIFO バッファがバースト転送を完了するために必要なすべてのデータを

含むバーストのみ開始します。

DMASTP<S | B>Store and notify Peripheral は、DA レジスタとチャネル・コントロール・レジスタで指

定される AXI トランザクションを使用して、デスティネーション・アドレス・レジ

スタが指定される位置に FIFO バッファからデータを転送するために DMAC を指示し

ます。 これは、FIFO バッファ内の適切な場所にアクセスする DMA チャネル番号を使

用しています。 DMA ストアが完了すると、DMAC はバッファリングされたライト応答

を受信した後、データの転送が完了したことをペリフェラルに確認を発行します。 チャネル・コントロール・レジスタの dst_incビットがインクリメントに設定され

ている場合、DMAC は、DMASTP<S|B>が実行した後にデスティネーション・アドレ

ス・レジスタを更新します 。

図 16–20 には、命令のエンコーディングを示しています。

アセンブラの構文DMASTP<S|B> <peripheral>

この場合、

<S> bs を 0 に設定します。実行するために DMAC に指示します。

■ request_type が Single にプログラムされている場合、シングル DMA ストアが

動作されます。

1 DMAC はチャネル・コントロール・レジスタに dst_burst_len フィールドの状

態を無視して、常に 1 つのバースト・レングスと AXI 転送を実行します。

■ request_typeが Burst にプログラムされている場合は DMANOPです。

図16‒20. DMASTP<S|B> エンコーディング

1

7 6 5 4 3 2 1 0

0 0 1 0 1 0 bs

15 11 10 9 8 7

periph[4:0] 0 00

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 44: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–44 第 16章 : DMA コントローラDMA コントローラのプログラミング・モデル

<B> bsを 1 に設定します。 実行するために DMAC に指示します。

■ request_typeが Burst にプログラムされている場合、DMA ストアです。

■ request_typeが Single にプログラムされている場合、DMANOPです。

<peripheral> 5-ビットの即値 の 0-31

1 DMAC は、DMAWFP命令を実行したときに request_typeフラグの値を設定しま

す。16–45 ページの「DMAWFP」を参照してください。

動作DMA チャネル・スレッドにのみ、この命令を使用することができます。

DMAC は MFIFO バッファがバースト転送を完了するために必要なすべてのデータを

含むバーストのみ開始します。

DMASTZStore Zero は、デスティネーション・アドレス・レジスタとチャネル・コントロー

ル・レジスタで指定される AXI トランザクションを使用して、DMAC を指示すること

によりゼロが格納されます。チャネル・コントロール・レジスタの dst_incビット

がインクリメントに設定されている場合、DMASTZを実行した後、DMAC はデスティ

ネーション・アドレス・レジスタを更新します。

図 16–21 には、命令のエンコーディングを示しています。

アセンブラの構文DMASTZ

動作DMA チャネル・スレッドにのみ、この命令を使用することができます。

DMAWFEWait For Event は <event_num> が指定するイベントが発生するまでスレッドの実行を停

止する DMAC に指示します。イベントが発生すると、スレッドは Executing 状態に移

行します。そして、DMAC は、イベントをクリアします。16–16 ページの「イベント

と割り込みの使用」を参照してください。

図 16–22 には、命令のエンコーディングを示しています。

図16‒21. DMASTZ エンコーディング

図16‒22. DMAWFE エンコーディング

0

7 6 5 4 3 2 1 0

0 0 0 0 1 1 0

0

7 6 5 4 3 2 1 0

0 0 1 1 0 1 1

15 8

event_num[4:0]

1011

i 0

9

0

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 45: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–45DMA コントローラのプログラミング・モデル

アセンブラの構文DMAWFE <event_num>[?invalid]

この場合、

<event_num> 5-ビットの即値 の 0-31

[invalid]iを 1 に設定します。invalidが存在する場合、DMAC は、現在の DMA スレッ

ドの命令キャッシュを無効化します。invalidが存在しない場合、アセンブラは iを

0 に設定します。そして、DMAC は現在の DMA のための命令キャッシュを無効化し

ません。

1 DMAC のコンフィギュレーションに使用できないイベント番号を選択した

場合、DMAC はスレッドを停止します。

プロセッサは、DMA チャネルの命令ストリームを書き込むときにキャッ

シュ・コヒーレンシを確保するには、invalidを使用する必要があります。

動作DMA マネージャ・スレッドおよび DMA チャネル・スレッドで命令を使用することが

できます。

DMAWFPWait For Peripheral は、指定されたペリフェラル信号が DMA チャネルのために DMA 要

求を通知するまでスレッドの実行を停止する DMAC に指示します。

図 16–23 には、命令のエンコーディングを示しています。

アセンブラの構文DMAWFP <peripheral>?<single|burst|periph>

この場合、

<peripheral> 5-ビットの即値 の 0-31

1 使用できないペリフェラル番号を選択した場合、DMAC はスレッドを停止

します。

<single> bsと pを 0 に設定します。 これは、シングルまたはバースト DMA 要求を受信

した後、DMA チャネル・スレッドの実行を継続するために DMAC を指示します。 DMAC はその DMA チャネルのための Single に request_typeを設定します。

<burst> bsと pを 1に設定します。 これは、バースト DMA要求を受信した後、DMA チャ

ネル・スレッドの実行を継続するための DMAC を指示します。 DMAC はバーストに

request_typeを設定します。

1 DMAC は、シングル・バースト DMA 要求を無視します。

図16‒23. DMAWFP エンコーディング

p

7 6 5 4 3 2 1 0

0 0 1 1 0 0 bs

15 8

peripheral[4:0]

1011

0 0

9

0

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 46: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–46 第 16章 : DMA コントローラDMA コントローラのプログラミング・モデル

<periph> bsと pを 0 に設定します。 これは、シングルまたはバースト DMA 要求を受信

した後、DMA チャネル・スレッドの実行を継続するための DMAC を指示します。 DMAC は request_typeを以下のように設定します。

Single シングル DMA 要求を受信する場合

Burst バースト DMA 要求を受信する場合

動作DMA チャネル・スレッドにのみ、この命令を使用することができます。

DMAWMBWrite Memory Barrier は、そのチャネルの実行される DMAST命令のすべてが AXI マス

タ・インタフェース上で発行されるまで、DMA チャネルが待機することを強制しま

す。

これは、危険なしの同じアドレス位置にリードとライトのシーケンスを可能にしま

す。

図 16–24 には、命令のエンコーディングを示しています。

アセンブラの構文DMAWMB

動作DMA チャネル・スレッドにのみ、この命令を使用することができます。

アセンブラ・ディレクティブアセンブラは、次の追加コマンドを提供します。

■ DCD

■ DCB

■ DMALP

■ DMALPFE

■ DMAMOV CCR

DCDア命令ストリームに 32 ビットの即値を配置するセンブラ・ディレクティブはです。

構文DCD imm32

図16‒24. DMAWMBエンコーディング

1

7 6 5 4 3 2 1 0

0 0 0 1 0 0 1

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 47: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–47DMA コントローラのプログラミング・モデル

DCB命令ストリームに 8 ビットの即値を配置するセンブラ・ディレクティブはです。

構文DCB imm8

DMALP反復ループを挿入するセンブラ・ディレクティブはです。

構文DMALP [<LC0>|<LC1>] <loop_iterations>

この場合、

<loop_iterations>

実行するループの数を指定する 8 ビット値です。

1 アセンブラ命令を記述において明確にするために、8 ビット値は、実行す

るループの反復の実際の数です。 アセンブラは DMAC が使用する実際の値

(0-255)を作成することによりデクリメントします。

[LC0] LC0が存在している場合、DMAC はループ・カウンタ 0 レジスタでの

<loop_iterations>を格納します。

[LC1] LC1が存在している場合、DMAC はループ・カウンタ 1 レジスタでの

<loop_iterations>を格納します。

1 LC0または LC1が存在しない場合、アセンブラはループ・カウンタ・レジスタが使用

することを決定します。

DMALPFE反復ループを挿入するアセンブラ・ディレクティブです。

構文DMALPFE

DMALPENDに存在する nfビットをクリアするためにアセンブラをイネーブルしま

す。16–37 ページの「DMALPEND[S | B]」を参照してください。

DMAMOV CCR指定した書式でチャネル・コントロール・レジスタをプログラムすることができる

アセンブラ・ディレクティブです。

構文DMAMOV CCR?

[SB<1-16>] [SS<8|16|32|64|128>] [SA<I|F>]

[SP<imm3>] [SC<imm4>]

[DB<1-16>] [DS<8|16|32|64|128>] [DA<I|F>]

[DP<imm3>] [DC<imm4>]

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 48: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–48 第 16章 : DMA コントローラDMA コントローラのプログラミング・モデル

[ES<8|16|32|64|128>]

表 16–3 に、引数の説明とデフォルト値を示します。

MFIFO バッファの使用法の概要この項では、いくつかの DMA チャネル・プログラムの例のための MFIFO バッファの

使用法を示しています。

FIFO バッファの使用法の概要についてMFIFO バッファは、現在アクティブなすべてのチャネルでの先着順に使用されてい

る共有リソースです。 プログラムには、すべての Fifes の合計深さがバッファの深さ

(512)を超えることはできないという制限で、可変深パラレル FIFO バッファは、

チャネルごとに 1 つのセットとして表示されます。 AXI マスタ・インタフェースの幅

は MFIFO バッファ幅と同じです。

DMAC は、ソースからデスティネーションへデータを再編成することが可能です。 例えば、アドレス 0x103 からワードを読み出して、アドレス 0x205 に書き込む場合、

DMAC は 2 バイトのレーンによってデータをシフトします。 すべてのバイト補整

表16‒3. DMAMOV CCR 引数の説明とデフォルト値

構文 説明 オプションデ

フォールト

SA ソース・アドレスインクリメント。 arburst[0]の値を設定します。

I = 増加

F = 固定I

SS ビット単位のソース・バースト・サイズ。 arsize[2:0] の値を設定します。

8、16、32、or 64 8

SB ソース・バースト・レングス。arlen[3:0] の値を設定します。 1 ~ 16 1

SP ソース保護。 0 ~ 7 (1) 0

SC ソース・キャッシュ。 0 ~ 15 (1) (2) 0

DA デスティネーション・アドレス・インクリメント。 awburst[0] の値を設定します。

I = 増加

F = 固定I

DS ビット単位のデスティネーション・バースト・サイズ。awsize[2:0] の値を設定します。

8、16、32、または64 8

DB デスティネーション・バースト・レングス。awlen[3:0] の値を設定します。

1 ~ 16 1

DP デスティネーション保護。 0 ~ 7 (1) 0

DC デスティネーション・キャッシュ。 0 ~ 15 (1) (3) 0

ES ビット単位のエンディアンス・ワップ・サイズ。8、16、32、または64 8

表16‒3 の注 :(1) この即値をプログラミングするときには、小数点以下の値を使用する必要があります。

(2) DMAC は ARCACHE[3] LOW を結ぶので、アセンブラは常にビット 3 を 0 に設定され、SC のために 選択した値のビット [2:0] を使用しています。

(3) DMAC は ARCACHE[2] LOW を結ぶので、アセンブラは常にビット 2 を 0 に設定され、DC のために 選択した値のビット [1:0]を使用しています。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 49: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–49DMA コントローラのプログラミング・モデル

は、DMALD 命令による AXI リードの結果として、データは MFIFO バッファを入ると

きに発生します。これにより、DMAC は、DMAST命令による AXI ライトの結果とし

て、MFIFO バッファから削除するときにデータを補整する必要はありません。した

がって、データは MFIFO バッファ内のデータの格納およびパッキングは、デスティ

ネーション・アドレスと伝達特性によって決定されます。

インクリメントするトランザクションがデスティネーションへ実行されることをプ

ログラムが指定する場合、MFIFO バッファ・エントリの使用法を 小化するために、

DMAC は MFIFO バッファにデータをパックします。例えば、DMAC が 64 ビットの AXIデータ・バスを持っており、プログラムが 0x100 のソース・アドレスおよび 0x200のデスティネーション・アドレスを使用する場合、DMAC は MFIFO バッファのシン

グル・エントリに 2 つの 32 ビットのワードをパックします。

特定の状況では、ソースからロードしたデータを格納するために必要なエントリ数

は MFIFO バッファ幅で割ったソース・データの量を簡単な計算ではありません。 以下

のいずれかが発生すると、必要なエントリ数の計算は簡単ではありません。

■ ソース・アドレスは AXI バス幅にアラインメントされていない。

■ デスティネーション・アドレスが AXI バス幅にアラインメントされていない。

■ デスティネーションは、非インクリメント・アドレスで固定デスティネーション

にある。

DMALDとDMAST命令は各AXIトランザクションが実行されるように指定します。 AXIトラ

ンザクションによって転送されるデータの量は、CCRnレジスタとトランザクショ

ン・アドレスにプログラムされた値に依存します。

f アラインメントされていない転送の詳細については、ARM ウェブサイト

(infocenter.arm.com) から入手できる AMBA AXI Protocol Specification v1.0 を 参照してく

ださい。

次の項では、MFIFO バッファの使用法のイラストのいくつかの例では、DMAC のプロ

グラムを提供しています。

1 これらの項は、次の方法で MFIFO バッファの使用法を表示します。

■ MFIFO バッファ・エントリ対時間の数のグラフ

■ DMAC データが MFIFO バッファに入ったときに実行されるバイト・レーン操作

の図

1 MFIFO バッファ図での数字の 0 および 7 は、MFIFO バッファ内のバイト・レーンを示し

ています。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 50: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–50 第 16章 : DMA コントローラDMA コントローラのプログラミング・モデル

アラインメントされた転送次の項では、アラインメントされた転送の例を示しています。

シンプルなアラインメントされたプログラムこのプログラムでは、ソース・アドレスとデスティネーション・アドレスが AXIデータ・バス幅でアラインメントせされます。

図 16–25 には、このプログラムの MFIFO バッファの使用方法を示しています。

図 16–25 で 、各 DMALDは 4 つのエントリを必要とし、各 DMASTは、4 つのエントリ

を削除します。

この例では、0 の MFIFO バッファ・エントリのスタティック要件と 4 つの MFIFOバッファ・エントリのダイナミック要件があります。この例では、0 の MFIFO バッ

ファ・エントリの静的要件と 4 MFIFO バッファ・エントリの動的な要件があります。

例16‒2. シンプルなアラインメントされたプログラムDMAMOV CCR?SB4 SS64 DB4 DS64DMAMOV SAR?0x1000DMAMOV DAR?0x4000DMALP 16DMALD ; shown as a in ? 16–25DMAST ; shown as b in ? 16–25DMALPENDDMAEND

図16‒25. シンプルなアラインメントされたプログラム

0

4a a a a

b b b b

Data from

DMALD

a a a a a a a a

07

Data for

DMAST

DMALD

DMAST

a a a a a a a a

a a a a a a a a

a a a a a a a a

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 51: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–51DMA コントローラのプログラミング・モデル

複数のロードとのアラインメントされた非対称プログラム次のプログラムは、各ストアに 4 つのロードを実行し、ソース・アドレスとデス

ティネーション・アドレスが AXI データ・バス幅とアラインメントされています。

例 16–4 には、このプログラムの MFIFO バッファの使用方法を示しています。

例 16–4 に示すように 、各 DMALDには 1 つのエントリを必要とし、各 DMASTには、4つのエントリを削除します。

この例では、0 の MFIFO バッファ・エントリのスタティック要件と 4 つの MFIFOバッファ・エントリのダイナミック要件があります。この例では、0 の MFIFO バッ

ファ・エントリの静的要件と 4 MFIFO バッファ・エントリの動的な要件があります。

複数のストアとのアラインメントされた非対称プログラム次のプログラムは、各ロードに対して 4 つのストアを実行して、ソース・アドレス

とデスティネーション・アドレスが AXI のデータ・バス幅と位置合わせされます。

例16‒3. 複数のロードとのアラインメントされた非対称プログラムDMAMOV CCR?SB1 SS64 DB4 DS64DMAMOV SAR?0x1000DMAMOV DAR?0x4000DMALP 16DMALD ; shown as a in ? 16–4DMALD ; shown as b in ? 16–4DMALD ; shown as c in ? 16–4DMALD ; shown as d in ? 16–4DMAST ; shown as e in ? 16–4DMALPENDDMAEND

例16‒4. 複数のロードとのアラインメントされた非対称プログラム

例16‒5. 複数のストアとのアラインメントされた非対称プログラムDMAMOV CCR?SB4 SS64 DB1 DS64DMAMOV SAR?0x1000DMAMOV DAR?0x4000DMALP 16DMALD ; shown as a in ? 16–26DMAST ; shown as b in ? 16–26DMAST ; shown as c in ? 16–26DMAST ; shown as d in ? 16–26DMAST ; shown as e in ? 16–26DMALPENDDMAEND

Data from

4 × DMALD

a a a a a a a a

07

Data for

DMAST

DMALD

DMAST

b b b b b b b b

c c c c c c c c

d d d d d d d d0

4

a

b

c

d

e

a

b

c

d

a

b

c

d

e e

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 52: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–52 第 16章 : DMA コントローラDMA コントローラのプログラミング・モデル

図 16–26 には、このプログラムの MFIFO バッファの使用方法を示しています。

図 16–26 には、このプログラムの MFIFO バッファの使用方法を示し、各 DMALDは 4つのエントリを必要とし、各 DMASTは 1 つのエントリを削除します。

この例では、0 の MFIFO バッファ・エントリのスタティック要件と 4 つの MFIFOバッファ・エントリのダイナミック要件があります。

アラインメントされていない転送次の項では、アラインメントされていない転送の例を示しています。

アラインメントされていないデスティネーション・アドレスへのアラインメントされたソース・アドレスこのプログラムでは、ソース・アドレスが AXI データ・バス幅とアラインメントさ

れていますが、デスティネーション・アドレスがアラインメントされていません。 デスティネーション・アドレスは、デスティネーション・バースト・サイズにアライ

ンメントされていないので、 初の DMAST命令は、 初の DMALD 命令リードよりも少

ないデータを削除します。 したがって、シングル・ワードの 後の DMASTは MFIFOバッファからデータを消去する必要があります。

図16‒26. 複数のストアとのアラインメントされた非対称プログラム

例16‒6. アラインメントされていないデスティネーション・アドレスへのアラインメントされたソース・アドレスDMAMOV CCR?SB4 SS64 DB4 DS64DMAMOV SAR?0x1000DMAMOV DAR?0x4004DMALP 16DMALD ; shown as a1?... a?an in ? 16–27DMAST ; shown as b in ? 16–27DMALPENDDMAMOV CCR?SB4 SS64 DB1 DS32DMAST ; shown as c in ? 16–27DMAEND

Data from

DMALD

a a a a a a a a

07

Data for

4 × DMAST

DMALD

DMAST

a a a a a a a a

a a a a a a a a

a a a a a a a a0

4

d

c

b

a

e

d

c

b

a

d

c

b

a

e e

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 53: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–53DMA コントローラのプログラミング・モデル

図 16–27 には、このプログラムの MFIFO バッファの使用方法を示しています。

初の DMALD命令は、4 つのダブル・ワードをロードしますが、デスティネーショ

ン・アドレスがアラインメントされていないので、DMAC は 4 バイトでシフトしま

す。したがって、MFIFO バッファ内の 5 つのエントリを使用しています。

各 DMASTは 4 つのデータ・エントリのみが必要です。したがって、 後の DMASTに

よって空になるまで、余分なエントリは、プログラム期間中は使用中の状態を維持

します。

この例では、1 つの MFIFO バッファ・エントリのスタティック要件および 4 つの

MFIFO バッファ・エントリのダイナミック要件があります。

図16‒27. アラインメントされたプログラムからアラインメントされていないプログラムへ

Data from

DMALD

a1 a1 a1 a1

07

Data for

first DMAST

DMALD

DMAST

a1 a1 a1 a1 a1 a1 a1 a1

a1 a1 a1 a1 a1 a1 a1 a1

a1 a1 a1 a1 a1 a1 a1 a1

0

5

1

a1

b

a a a n

b b b

c a a a a a1 a1 a1 a1

a a a a a a a a

a a a a a a a a

a a a a a a a a

an an an an

Data for

15 × DMAST

Data for

last DMAST

.

.

.

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 54: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–54 第 16章 : DMA コントローラDMA コントローラのプログラミング・モデル

アラインメントされたデスティネーション・アドレスへのアラインメントされていないソース・アドレスこのプログラムでは、ソース・アドレスが AXI データ・バス幅でアラインメントさ

れていませんが、デスティネーション・アドレスがアラインメントされています。 ソース・アドレスは、ソース・バースト・サイズにアラインメントされていないた

め、 初の DMALD命令が DMAST未満のデータを読み込むようになります。 そのため、

余分な DMALDは 初の DMASTを満たすために必要とされます。

図 16–28 には、このプログラムの MFIFO バッファの使用方法を示しています。

1 DMACがすでにこのチャネルに割り当てたMFIFOバッファ・エントリに 4バイトをロー

ドするので、d に示される DMALDは MFIFO バッファ使用量を増加させません。

例16‒7. アラインメントされたデスティネーション・アドレスへのアラインメントされていないソース・アドレスDMAMOV CCR?SB4 SS64 DB4 DS64DMAMOV SAR?0x1004DMAMOV DAR?0x4000DMALD ; shown as a in ? 16–28DMALP 15DMALD ; shown as b1?... b?bn in ? 16–28DMAST ; shown as c in ? 16–28DMALPENDDMAMOV CCR?SB1 SS32 DB4 DS64DMALD ; shown as d in ? 16–28DMAST ; shown as e in ? 16–28DMAEND

図16‒28. アラインメントされたプログラムからアラインメントされていないプログラムへ

0

4a

b1

c

b bn

c c

d

e

8

Data from

DMALD

a a a a a a a a

07

Data for

first DMAST

DMALD

DMAST

a a a a a a a a

a a a a a a a a

b1 b1 b1 b1 a a a a

b1 b1 b1 b1 b1 b1 b1 b1

b1 b1 b1 b1 b1 b1 b1 b1

b1 b1 b1 b1 b1 b1 b1 b1

b b b b b1 b1 b1 b1Data for

14 × DMAST ...

bn bn bn bn bn bn bnbn

bn bn bn bn bn bn bn bn

bn bn bn bn bn bn bn bn

d d d d bn bn bn bn

Data for

last DMAST

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 55: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–55DMA コントローラのプログラミング・モデル

初の DMALD命令は、DMASTを実行する DMAC をイネーブルするために十分なデータ

をロードしません。したがって、ループの開始する前に追加の DMALDを含みます。

初の DMALDの後、後続の DMALDはソース・バースト・サイズに合わせます。 これ

は、p性能を 適化しますが、MFIFO バッファ・エントリの多くを必要とします。

この例では、4 つの MFIFO バッファ・エントリのスタティック要件および 1 つの

MFIFO バッファ・エントリのダイナミック要件があります。

超過初期ロードによるアラインメントされていないソース・アドレスからアラインメントされたデスティネーション・アドレスこのプログラムは、16–54 ページの「アラインメントされたデスティネーション・ア

ドレスへのアラインメントされていないソース・アドレス」で説明するための代替

手段です 。プログラムは、あまり効率的かもしれないソース・バーストの異なる

シーケンスを使用しますが、少ない MFIFO バッファ・エントリを必要とします。プ

ログラムは、それほど効率的でないかもしれませんが、より少数の MFIFO バッ

ファー・エントリーを要求する出所爆発の異なるシーケンスを使用します。

例16‒8. 超過初期ロードによるアラインメントされていないソース・アドレスからアラインメントされたデスティネーション・アドレスDMAMOV CCR?SB5 SS64 DB4 DS64DMAMOV SAR?0x1004DMAMOV DAR?0x4000DMALD ; shown as a in ? 16–29DMAST ; shown as b in ? 16–29DMAMOV CCR?SB4 SS64 DB4 DS64DMALP 14DMALD ; shown as c and cn in ? 16–29DMAST ; shown as d in ? 16–29DMALPENDDMAMOV CCR?SB3 SS64 DB4 DS64DMALD ; shown as e in ? 16–29DMAMOV CCR?SB1 SS32 DB4 DS64DMALD ; shown as f in ? 16–29DMAST ; shown as g in ? 16–29DMAEND

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 56: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–56 第 16章 : DMA コントローラDMA コントローラのプログラミング・モデル

図 16–29 には、このプログラムの MFIFO バッファの使用方法を示しています。

1 DMACがすでにこのチャネルに割り当てたMFIFOバッファ・エントリに 4バイトをロー

ドするので、f と示される DMALDは MFIFO バッファ使用量を増加させません。

初の DMALD命令は、 初の DMASTを実行する DMAC をイネーブルするには、5ビートのデータをロードします。

初の DMALDの後、以後の DMALD はソース・バースト・サイズにアラインメントさ

れていません。例えば、 初の DMALDは、アドレス 0x1028 から読み出します。 ルー

プの後、 後の 2 つの DMALDは 終の DMASTを満たすために必要なデータを読み出

します。

この例では、1 つの MFIFO バッファ・エントリのスタティック要件および 4 つの

MFIFO バッファ・エントリのダイナミック要件があります。

図16‒29. 超過初期ロードによるアラインメントされていなからアラインメントされたへ

0

5

1

a

b

c c c n

d

e

d d

f

g

4

Data from

DMALD

a a a a a a a a

07

Data for

first DMAST

DMALD

DMAST

a a a a a a a a

a a a a a a a a

c c c a a a a

c c c c c c c c

c c c c c c c c

c c c c c c c c

e e e e cn cn cn cn

Data for

14 × DMAST ...

e e e e e e e e

e e e e e e e e

f f f f e e e e

Data for

last DMAST

a a a a a a a a

c

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 57: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–57DMA コントローラのプログラミング・モデル

アラインメントされたバースト・サイズのアラインメントされていないMFIFO バッファこのプログラムでは、MFIFO バッファ幅より狭くなっているデスティネーション・

アドレスは、バースト・サイズとアラインメントされていますが、MFIFO バッファ

幅とはアラインメントされていません。

図 16–30 には、このプログラムの MFIFO バッファの使用方法を示しています。

この例では、デスティネーション・アドレスは 64 ビット・アラインメントではな

く、それは 2 つの予期された MFIFO バッファ・エントリーではなく 3 つを必要とし

ます。

この例では、0 の MFIFO バッファ・エントリのスタティック要件と 3 つ MFIFO バッ

ファ・エントリのダイナミック要件があります。

固定の転送以下の項では、アラインメント・アドレスの固定デスティネーションの例を示して

います。

例16‒9. アラインメントされたバースト・サイズのアラインメントされていないMFIFOバッファDMAMOV CCR?SB4 SS32 DB4 DS32DMAMOV SAR?0x1000DMAMOV DAR?0x4004DMALP 16DMALD ; shown as a in ? 16–30DMAST ; shown as b in ? 16–30DMALPENDDMAEND

図16‒30. アラインメントされたバースト・サイズのアラインメントされていないMFIFO バッファ幅

0

3a a a a

b b b b

Data from

DMALD

a a a a

07

Data for

DMAST

DMALD

DMAST

a a a a a a a a

a a a a

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 58: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–58 第 16章 : DMA コントローラDMA コントローラのプログラミング・モデル

アラインメントされたアドレスとの固定のデスティネーションこのプログラムでは、ソース・アドレスとデスティネーション・アドレスが AXIデータ・バス幅とアラインメントされて、デスティネーション・アドレスが固定さ

れています。

図 16–31 には、このプログラムの MFIFO バッファの使用方法を示しています。

プログラム内の各 DMALDは MFIFO バッファに 2 つの 64 ビットのデータ転送をロード

します。 デスティネーション・アドレスは 32 ビット固定アドレスであるため、DMACは MFIFO バッファに 2 つのエントリに各 64 ビットのデータ項目を分割します。

この例では、0 の MFIFO バッファ・エントリのスタティック要件と 4 つの MFIFOバッファ・エントリのダイナミック要件があります。

例16‒10. アラインメントされたアドレスとの固定のデスティネーションDMAMOV CCR?SB2 SS64 DB4 DS32 DAFDMAMOV SAR?0x1000DMAMOV DAR?0x4000DMALP 16DMALD ; shown as a in ? 16–31DMAST ; shown as b in ? 16–31DMALPENDDMAEND

図16‒31. アラインメントされたアドレスとの固定のデスティネーション

0

4a a a a

b b b b

Data from

DMALD

a a a a

07

Data for

DMAST

DMALD

DMAST

a a a a

a a a a

a a a a

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 59: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

第 16 章 : DMAコントローラ 16–59DMA コントローラ・レジスタ

DMA コントローラ・レジスタ図 16–32 に示されているように、DMAC のレジスタ・マップは 4KB の地域にまたが

ります 。

図 16–32 で 、レジスタ・マップは、以下の項から構成されています。

■ コントロール・レジスタ —DMAC を制御することができます。

■ DMA チャネル・スレッド・ステータス・レジスタ —DMA チャネル・スレッドのス

テータスを提供します。

■ AXI およびループ・カウンタ・ステータ・スレジスタ — 各 DMA チャネル・スレッ

ドに対して、AXI 転送ステータスとループ・カウンタの状態を提供します。

図16‒32. DMAC 概要のレジスタ・マップ

0x000

Configuration

Debug

AXI and loop counter status

DMA channel thread status

Control

Component ID

0x1000x13C

0x05C

0xD000xD0C

0xE14

0xFE0

0x400

0x4FC

0xE00

0xFFF

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル

Page 60: Cyclove V、 Volume 3、第16章:DMAコントローラ...(infocenter.arm.com) から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manual を参照してください。DMAコントローラの機能

16–60 第 16章 : DMA コントローラ改訂履歴

■ デバッグ・レジスタ — 次の機能をイネーブルします。

■ プログラム・コードをデバッグするときにスレッドに指示を送ることができ

ます。

■ 16–10 ページの「スレーブ・インタフェースを使用して DMAC への命令の発行」

で説明するように、システム・ファームウェアは、DMA マネージャ・スレッ

ドに指示を送ることができます。

■ コンフィグレーション・レジスタ —DMAC の構成を発見し、ウォッチドッグの動

作を制御するシステム・ファームウェアをイネーブルします。

■ コンポーネント ID レジスタ — ペリフェラルを識別するために、システム・ファー

ムウェアをイネーブルします。予約済みまたは未使用のアドレス位置にアクセス

しようとしないでください。これらの位置にアクセスしようとすると、予期しな

い動作が発生することがあります。

アドレス・マップおよびレジスタの定義

f アドレス・マップとレジスタの定義は、このハンドブック・ボリウムに付属する hps.html ファイルに存在します。ファイルを開くためのリンクをクリックします。

モジュールの説明とベース・アドレスを表示するには、以下のモジュール・インス

タンスのリンクをスクロールとクリックしてください。

■ dmanonsecure

■ dmasecure

そして、レジスタおよびフィールド説明を表示するには、レジスタ名をスクロール

とクリックします。 レジスタ・アドレスは、各モジュール・インスタンスのベース・

アドレスに相対的なオフセットです。

f また、すべてのモジュールのベース・アドレスは、「Cyclone V デバイス・ハンドブック Volume 3」の「 Introduction to the Hard Processor System」の章にリストされていま

す 。

改訂履歴表 16–4 に、本資料の改訂履歴を示します。

表16‒4. 改訂履歴

日付 ベージョン 変更内容

2012 年 11 月 1.1 マイナーな更新。

2012 年 1 月 1.0 初版。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル