21.uartコントローラ...21–2 第21章:uartコントローラ...

14
cv_54021-1.2 © 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. Portions © 2011 Synopsys, Inc. Used with permission. All rights reserved. Synopsys & DesignWare are registered trademarks of Synopsys, Inc. All documentation is provided "as is" and without any warranty. Synopsys expressly disclaims any and all warranties, express, implied, or otherwise, including the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, and any warranties arising out of a course of dealing or usage of trade. †Paragraphs marked with the dagger (†) symbol are Synopsys Proprietary. Used with permission. Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Subscribe ISO 9001:2008 Registered 21. UART コントローラ 雌実詩質寺竺止紫支質斯旨至痔θHPSχ朔腰倻輪鑢斯式仔識〛徳ぁ昨 2 肴昨 UART 執詞竺実鹿燦蛬盗裁崎哉擦際甑 UART 昨思執詞竺実鹿朔腰黻な④╪昨 16550 UART 思執 詞竺実鹿削嫻咲哉崎哉擦際甑 UART 思執詞竺実鹿朔腰Synopsys ® DesignWare ® APB Universal Asynchronous Receiver/Transmitter (DW_apb_uart) 時式児史鹿識昨使執旨祉執旨 埼際甑 UART コントローラの機能 UART 思執詞竺実鹿朔腰逗昨㎏1碕Y摩燦蛬盗裁崎哉擦際甑 姿而鹿屍祉再冴三昨視実祉質似紫詞豬腰士寺斯辞執昨歯式至伺質似紫詞腰採皿索 旨詞紫寺質似紫詞豬作鷺昨寺竺市鹿痔療1作姿而鹿屍祉昨寺竺歯至伺 謦⊕昨ブ耨碕鶺箆 私使鴫屍詞質磁示式質仔屍止旨θDMAχ思執詞竺実鹿質使執祉児史実旨 被菱昨某三Ů札ゖ慕 寺竺市鹿痔療1作滋実質鴫実詞 ゲ榊冴旨祉実詞質似紫詞昨鶺箆 16750 サ駟斎碕昨G湊児竺実質思執詞竺実識質示実詩 不使識実寺飼紫屍質示実詩昨支治実詞 128 似紫詞昨=徳 FIFO 飼紫児仕採皿索溜徳 FIFO 飼紫児仕昨視寺旨 FIFO 飼紫児仕昨旨至実祉旨質鴫施旨祉 爾旨祉削皿榊崎溜徳FIFO飼紫児仕昨鹿使詞採皿索=徳FIFO 飼紫児仕昨式実詩燦 使資実字識際傘 FIFO 飼紫児仕質仔屍止旨質示実詩θFIFO 飼紫児仕昨至旨詞 ぁχ11? 2012? cv_54021-1.2

Upload: others

Post on 02-Feb-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 21.UARTコントローラ...21–2 第21章:UARTコントローラ UARTコントローラのブロック図およびシステム統合 Cyclone V デバイス・ハンドブック

cv_54021-1.2

© 2012? Altera Corporation. All rights reserved. ALTERA, ARRare 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

Portions © 2011 Synopsys, Inc. Used with permission. All rightis provided "as is" and without any warranty. Synopsys expressof merchantability, fitness for a particular purpose, and non-in

†Paragraphs marked with the dagger (†) symbol are Synopsys

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

11? 2012?cv_54021-1.2

21. UART コントローラ

ハード・プロセッサ・システム(HPS)は、非同期シリアル通信用の 2 つの UART コ

ントローラを提供しています。 UART のコントローラは、業界標準の 16550 UART コン

トローラに基づいています。 UART コントローラは、Synopsys® DesignWare® APB Universal Asynchronous Receiver/Transmitter (DW_apb_uart) ペリフェラルのインスタンス

です。

UART コントローラの機能UART コントローラは、次の機能と特長を提供しています。

■ キャラクタあたりのデータ・ビット数、オプションのパリティ・ビット、および

ストップ・ビット数などのプログラム可能なキャラクタのプロパティ †

■ 改行の生成と検出 †

■ ダイレクト・メモリ・アクセス(DMA)コントローラ・インタフェース

■ 優先の割り込み識別 †

■ プログラム可能なボー・レート

■ 誤ったスタート・ビットの検出 †

■ 16750 規格ごとの自動フロー・コントロール・モード †

■ 内部ループバック・モードのサポート

■ 128 ビットの送信 FIFO バッファおよび受信 FIFO バッファのデプス

■ FIFO バッファのステータス・レジスタ †

■ マスタによって受信FIFOバッファのライトおよび送信FIFOバッファのリードを

イネーブルする FIFO バッファ・アクセス・モード(FIFO バッファのテスト

用)†

IA, 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.

s reserved. Synopsys & DesignWare are registered trademarks of Synopsys, Inc. All documentation ly disclaims any and all warranties, express, implied, or otherwise, including the implied warranties fringement, and any warranties arising out of a course of dealing or usage of trade.

Proprietary. Used with permission.

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

Subscribe

ISO 9001:2008 Registered

Page 2: 21.UARTコントローラ...21–2 第21章:UARTコントローラ UARTコントローラのブロック図およびシステム統合 Cyclone V デバイス・ハンドブック

21–2 第 21章:UART コントローラUART コントローラのブロック図およびシステム統合

■ ソフトウェア・オーバーヘッドを減少し、プログラム可能なリセットを提供する

シャドー・レジスタ †

■ レジスタ空(THRE)割り込みモードを保持するトランスミッタ †

UART コントローラのブロック図およびシステム統合図 21–1 に、HPS システム内の UART コントローラの統合を示します。

表 21–1 は、UART コントローラの主要なブロックの概要を説明しています。

図21‒1. UART のブロック図

表21‒1. UART コントローラのブロックの説明

ブロック 説明

スレーブ・インタフェース

コンポーネントと L4 ペリフェラル・バス間のスレーブ・インタフェースです。

レジスタ・ブロックメイン UART コントロール、ステータス、および割り込み発生機能を提供します。†

FIFO バッファ FIFO バッファのコントロールとストレージを提供します。 †

ボー・クロック・ジェネレータ

トランスミッタとレシーバのボー・クロックを生成します。 100 MHz の基準クロックで、UART コントローラは 6.25 M ボーに95 ボーの転送レートをサポートします。これは、すべての既知の 16550 デバイスとの通信をサポートします。ボー・レートは、割り込みイネーブルまたは除数ラッチ High(IER_DLH)および受信バッファ、送信保持、または除数ラッチ Low

(RBR_THR_DLL)レジスタをプログラムするによって制御されます。

DMAController

UART Controller MPU

IRQTo I/O Pins

RXTXRTSCTS

Clock Manager

ResetManager

Baud ClockGenerator

DMAInterface

Interrupt and SystemReset Control

Serial Transmitter/Receiver

FIFO Buffer

Slave Interface

Register Block

L4 Peripheral Bus

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

Page 3: 21.UARTコントローラ...21–2 第21章:UARTコントローラ UARTコントローラのブロック図およびシステム統合 Cyclone V デバイス・ハンドブック

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

UART コントローラの機能の説明HPS UART は、業界標準の 16550 UART に基づいています。 UART は、ペリフェラル、

モデム(データ・キャリア装置)、またはデータ・セットとのシリアル通信をサポー

トしています。マスタ(CPU)は、UART へのスレーブ・バス経由でデータを書き込

みます。 UART はシリアル形式にデータを変換し、デスティネーション・デバイスに

送信します。 また、UART はシリアル・データを受信し、マスタ(CPU)にそれを格

納します。

UART のレジスタは、キャラクタ長、ボー・レート、パリティの生成とチェック、お

よび割り込みの生成を制御します。 UART の単一の割り込み出力信号は、アサーショ

ンをトリガするいくつかの優先割り込みタイプによってサポートされます。コント

ロール・レジスタを使用して個別に各割り込みタイプをイネーブルまたはディセー

ブルすることができます。 †

FIFO バッファのサポートUART コントローラは、送信データと受信データをバッファするために、128 バイト

の FIFO バッファを内蔵しています。 FIFO バッファのアクセス・モードでは、マスタ

がテスト目的用の受信 FIFO バッファの書き込み、および送信 FIFO バッファの読み出

しすることができます。 FIFO バッファのアクセス・モードは、FIFO アクセス・レジス

タ(FAR)でイネーブルになります。イネーブルになると、送信 FIFO バッファと受

信 FIFO バッファのコントロール部分がリセットされ、FIFO バッファは空として扱わ

れます。†

FIFO バッファのアクセス・モードがイネーブルされている場合、通常通り送信 FIFOバッファにデータを書き込むことができますが、このモードではシリアル伝送は行

われず、FIFO バッファからデータは送信されません。送信 FIFO リード(TFR)レジ

スタを使用して送信 FIFOバッファに書き込まれたデータを読み戻すことができます。 TFRのレジスタは、送信 FIFO バッファの先頭に現在のデータを提供します。 †

シリアル・トランスミッタ

シリアル・データに UART への書き込まれたパラレル・データを変換し、伝送用としてコントロール・レジスタで指定されたすべての追加ビットを追加します。キャラクタと呼ばれるこのシリアル・データの構成は、シリアル UART のブロックで終了します。 †

シリアル・レシーバ

パラレル・フォームに UART 形式で受信したシリアル・データ・キャラクタ(コントロール・レジスタによって指定される)を変換します。パリティ・エラー検出、フレーミング・エラー検出、および改行検出は、このブロックで行われています。†

DMA インタフェース

UART コントローラは、受信したデータが使用可能であるとき、または送信 FIFO バッファがデータを必要とするときに示すために、DMA コントローラ・インターフェイスが含まれています。 DMA は、送信用と受信用の 2 つのチャネルが必要です。 UART コントローラは、シングルとバースト転送をサポートします。FIFO バッファ・モードと非 FIFO バッファ・モードで DMA を使用することができます。

詳細は、Cyclone® V デバイス・ハンドブック Volume 3 の 「DMA Controller」 の章を参照してください。

表21‒1. UART コントローラのブロックの説明

ブロック 説明

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

Page 4: 21.UARTコントローラ...21–2 第21章:UARTコントローラ UARTコントローラのブロック図およびシステム統合 Cyclone V デバイス・ハンドブック

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

同様に、FIFO バッファのアクセス・モードで受信 FIFO バッファからのデータを読み

出すこともできます。 UART の正常な動作がこのモードで停止しているので、データ

を読み戻すために受信 FIFO バッファにデータを書き込む必要があります。受信 FIFOライト(RFW)レジスタは、受信 FIFO バッファにデータを書き込みます。 10 ビット・

レジスタの上位 2 ビットは受信 FIFO バッファにフレーミング・エラーやパリティ・

エラーの検出情報を書き込みます。 RFWのビット 9 はフレーミング・エラーを示し、

RFWのビット 8 はパリティ・エラーを示します。受信バッファ・レジスタからこれら

のビットを読み出すことはできませんが、ライン・ステータス・レジスタ(LSR)の

読み出すこと、および問題のデータが受信 FIFO バッファの先頭にあるときに対応す

るビットをチェックすることにより、ビットをチェックすることができます。†

自動フロー・コントロールUART は、6750 互換の request-to-send (RTS)および clear-to-send(CTS)のシリア

ル・データ自動フロー・コントロール・モードが含まれています。モデム・コント

ロール・レジスタ(MCR.AFCE)で自動フロー・コントロールをイネーブルします。†

自動RTSモード次の条件が発生したとき、自動 RTS モードがアクティブになります。 †

■ RTS (MCR.RTS ビットおよび MCR.AFCE ビットの両方が設定される)

■ FIFO バッファがイネーブルされる(IIR_FCR.FIFOE ビットが設定される)

自動 RTS がイネーブルになっている場合、受信 FIFO バッファ・レベルが RCVR トリ

ガ(IIR_FCR.RT)によって設定されたスレッショルド値に達すると、rts_n出力ピ

ンは非アクティブ(High)に強制されます。 rts_nが別の UART デバイスの cts_n入力ピンに接続されている場合は、他の UART は受信 FIFO バッファに空きができるま

で(それが完全に空になるまで)、シリアル・データの送信を停止します。†

選択可能な受信 FIFO バッファのスレッショルド値はフルより小さい 1、¼、½、およ

び 2 があります。 rts_nが非アクティブになった後 1 つの追加キャラクタが UART に

送信する可能性があるので(データがすでに他の UART のトランスミッタ・ブロック

に入ったため)、フルより 2 小さいスレッショルド値を設定すると、1 つのキャラク

タのマージンを持つ FIFO バッファの 大値を使用することができます。

一度受信 FIFO バッファが完全にレシーバ・バッファ・レジスタ(RBR_THR_DLL)を

読み出すことによって空にされると、rts_nは再び他の UART がデータの送信を続行

するためにシグナリングすることで、アクティブ(Low)になります。†

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

Page 5: 21.UARTコントローラ...21–2 第21章:UARTコントローラ UARTコントローラのブロック図およびシステム統合 Cyclone V デバイス・ハンドブック

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

FIFO バッファが FCR.FIFOEを通じてディセーブルになっている場合は、適切な MCRのビットを設定している場合でも、自動フロー・コントロールもディセーブルにな

ります。自動 RTS が実装されていない場合またはディセーブルになっている場合に

は、rts_nは単に MCR.RTSによって制御されます。図 21–2 は、自動 RTS の動作を示

しています。 図 21–2 では、次のキャラクタが送信 UART トランスミッタを入力する

前に rts_nが検出されていないため、キャラクタ T が受信されます。 †

自動 CTS モード 次の条件が発生するとき、自動 CTS モードがアクティブになります。 †

■ AFCE (CR.AFCE ビットが設定される)

■ FIFO バッファがイネーブルされている (FIFO バッファのコントロール・レジスタ

IIR_FCR.FIFOEビットを通じて)

自動 CTS がイネーブル(アクティブ)になっている場合、cts_n入力が非アクティ

ブ(High)になるたびに、UART トランスミッタはディセーブルになります。これ

は、受信 UART の FIFO バッファがオーバーフローするのを防ぎます。 †

cts_n入力が 後のストップ・ビットの真ん中前に非アクティブ化されていない場合

は、トランスミッタがディセーブルされる前に、別のキャラクタが送信されます。

トランスミッタがディセーブルされている間は、送信 FIFO バッファにに書き込み続

けることもできて、オーバーフローを続けることもできます。 †

自動 CTS モードでは、以下のシーケンスを必要とします。

1. UART ステータス・レジスタは、送信 FIFO バッファがフル(UART ステータス・レ

ジスタ USR.TFNFはゼロに設定されている)であることを確認するために読み出

されます。†

2. 現在の FIFO バッファのレベルは、送信 FIFO レベル(TFL)レジスタを介して読み

出されます。

3. プログラム可能な THRE 割り込みモードは LSR からの FIFO バッファ・フル・ス

テータスにアクセスするためにイネーブルする必要があります。†

図21‒2. 自動 RTS のタイミング

sin

rts_n

rx_fifo_read

start character T stop start character T+1 stop

1 2 3 T T+1

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

Page 6: 21.UARTコントローラ...21–2 第21章:UARTコントローラ UARTコントローラのブロック図およびシステム統合 Cyclone V デバイス・ハンドブック

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

FIFO バッファ・フル・ステータスを使用すると、ソフトウェアは送信 FIFO バッファ

に各ライトの前にこれをポーリングすることができます。 cts_n入力が再びアクティ

ブ(Low)になると、伝送が再開されます。 FIFO バッファが IIR_FCR.FIFOE ビットで

ディセーブルになっている場合、自動フロー・コントロールは、他の設定に関係な

く無効になります。自動 CTS が実装されていない場合またはディセーブルになって

いる場合、トランスミッタは cts_nの影響を受けません。図 21–3 のタイミング図

は、自動 CTS の動作を示します。†

クロックUART コントローラは l4_sp_clkクロックに接続されています。クロック入力はク

ロック・マネージャによって駆動されます。

f クロック・マネージャについて詳しくは、Cyclone V デバイス・ハンドブック Volume 3の 「Clock Manager」 の章を参照してください。

リセットUART コントローラは uart_rst_n リセット信号に接続されています。リセット・マ

ネージャはコールド・リセットまたはウォーム・リセットの時に信号を駆動します。

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

してください。

割り込み次の割り込みのタイプのいずれかがイネーブルになっており、アクティブな場合、

UART 割り込み出力信号のアサーションが発生します。 †

割り込みイネーブル・レジスタ(IER_DLH)を使用して割り込みのタイプをイネーブ

ルすることができます。

図21‒3. 自動 CTS のタイミング

sout

cts_n

start data bits stop start

Disabled

data bits stop start data bits stop

表21‒2. 割り込みのタイプと優先順位 †

割り込みのタイプ 優先順位Receiver line status 高

Received data available 2 番目

Character timeout indication 2 番目

Transmit holding register empty 3 番目

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

Page 7: 21.UARTコントローラ...21–2 第21章:UARTコントローラ UARTコントローラのブロック図およびシステム統合 Cyclone V デバイス・ハンドブック

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

プログラム可能な THRE 割り込み UART はシステムのパフォーマンスを向上させるためにプログラム可能な THRE 割り

込みモードがあります。割り込みイネーブル・レジスタ(IER_DLH.PTIME)を使用し

てプログラム可能な THRE 割り込みモードをイネーブルします。 THRE モードがイ

ネーブルになっている場合、THRE 割り込みと dma_tx_req信号は、図 21–4 のフロー

チャートに示すようにプログラムされた送信 FIFO バッファ空スレッショルド値レベ

ル以下でアクティブになっています。 †

スレッショルド・レベルは、IIR_FCR.TETにプログラムされています。使用可能な空

のスレッショルドは、空、2、¼、および ½ です。 適なスレッショルドは、適時に

新しい送信シーケンスを開始するためのシステムの能力に依存します。しかし、こ

れらスレッショルドのいずれかは、空のランニングから送信 FIFO バッファを防止す

ることにより、システムのパフォーマンスを増加させるのに 適な証明する必要が

あります。

割り込みの変更に加え、ライン・ステータス・レジスタ(LSR.THRE)は送信 FIFOバッファが空であることの表示から FIFO バッファがいっぱいであることの表示に切

り替わります。この変更によって、別のキャラクタを書き込む前に、ソフトウェア

が LSR.THREをポーリングすることによって各送信シーケンス用に FIFO バッファを

埋めることができるようになります。これは、FIFO バッファが完全に空になるまで

図21‒4. プログラム可能な THRE 割り込みモード

FIFO Level > TXEmpty Trigger?

THRE InterruptEnabled?

no

yes

Clear INTR

yes

no

Set INTR

yes

noFIFO Level > TXEmpty Trigger?

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

Page 8: 21.UARTコントローラ...21–2 第21章:UARTコントローラ UARTコントローラのブロック図およびシステム統合 Cyclone V デバイス・ハンドブック

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

待っている代わりに、割り込みが発生し、送信するデータが存在するたびに送信

FIFO バッファを埋めるために UART を指示します。システムがすぐに応答できないと

き、常に FIFO バッファが空になるまで待っていると、パフォーマンスが低下します。

このモードは自動フロー・コントロールとの組み合わせでイネーブルになっている

場合は、システムの効率を向上させることができます。

選択されていないか、ディセーブルになっているときは、空の THR または FIFO バッ

ファを反映して、通常 THRE は割り込みおよび LSR.THREは機能します。図 21–5 は、

プログラム可能な THRE 割り込みモードなしで THRE 割り込みの生成を示していま

す。

図21‒5. プログラム可能な THRE 割り込みモードなしで割り込みの生成

THREInterruptEnabled?

TX FIFOEmpty?

yes

no

Clear INTR

yes

no

Set INTR(INTR Is Asserted If

There Are No Interrupts)

TX FIFO NotEmpty?

yes

no

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

Page 9: 21.UARTコントローラ...21–2 第21章:UARTコントローラ UARTコントローラのブロック図およびシステム統合 Cyclone V デバイス・ハンドブック

第 21 章: UARTコントローラ 21–9UARTコントローラのプログラミング・モデル

UART コントローラのプログラミング・モデル この項では、UART コントローラのプログラミング・モデルについて説明します。

DMA コントローラの動作UART コントローラには、受信 FIFO バッファのデータが使用可能であるとき、または

送信 FIFO バッファがデータを必要とするときを示すために、DMA コントローラのイ

ンタフェースが含まれています。 DMA には、送信用と受信用の 2 つのチャネルが必

要です。 UART コントローラは、シングル転送とバースト転送の両方をサポートして

います。

f DMA コントローラについて詳しくは、 Cyclone V デバイス・ハンドブック Volume 3 の

「DMA Controller」 の章を参照してください。

UART コントローラの RX バッファおよび TX バッファの両方の FIFO バッファのデプ

ス(FIFO_DEPTH)は 128 エントリです。

送信 FIFOアンダーフローUART シリアル転送中、送信 FIFO 内のエントリ数が FIFO コントロール・レジスタ

(IIR_FCR)の Transmit Empty Trigger (TET)(ウォーターマーク・レベルとしても知ら

れている)のデコードされたレベル以下になると送信 FIFO バッファ・リクエストが

DMA コントローラになされます。 DMA コントローラは、DMA バースト長として指定

された長さのデータのバーストを送信 FIFO バッファに書き込むことによって応答し

ます。†

f DMA バースト長のマイクロコード・セットアップについて詳しくは、 Cyclone V デバイス・ハンドブック Volume 3 の「DMA Controller」 の章を参照してください。

送信 FIFO が連続的にシリアル転送を実行できるように、十分な頻度で DMA からデー

タをフェッチする必要があります。つまり、FIFO バッファが空になり始めたら、別

の DMA リクエストがトリガーされる必要があります。そうしないと、FIFO はデータ

不足(アンダーフロー)になるため、UART バス上で STOP が挿入されることになり

ます。この状態を回避するために、ウォーターマーク・レベルを正しく設定する必

要があります。†

送信ウォーターマーク・レベル以下のような仮定がなされた例を考えます。†

DMA バースト長 = FIFO_DEPTH - IIR_FCR.TET のデコードされたウォーターマー

ク・レベル †

ここで、DMA バーストで転送されるデータ・アイテムの数は、送信 FIFO の空スペー

スに等しいとします。次の 2 種類のウォーターマーク・レベルの設定を考えます。†

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

Page 10: 21.UARTコントローラ...21–2 第21章:UARTコントローラ UARTコントローラのブロック図およびシステム統合 Cyclone V デバイス・ハンドブック

21–10 第 21章:UART コントローラUART コントローラのプログラミング・モデル

■ ケース 1: IIR_FCR.TET = 1( 16 のウォーターマーク・レベルをデコードする) †

■ 送信 FIFO ウォーターマーク・レベル = IIR_FCR.TET のデコードされたウォー

ターマーク・レベル = 16 †

■ DMA バースト長 = FIFO_DEPTH - IIR_FCR.TET のデコードされたウォーターマー

ク・レベル = 112 †

■ UART 送信 FIFO_DEPTH = 128 †

■ ブロック・トランザクションのサイズ = 448†

図 21–6 に、 ウォーターマーク・レベルが 16 に等しいときの送信 FIFO を示します。

必要なバースト・トランザクションの数は、バーストあたりのデータ・アイテム

数で割ったブロック・サイズに等しくなります。

ブロック・トランザクションのサイズ /DMA バースト長 = 448/112 = 4

DMA ブロック転送のバースト・トランザクションの数は 4 です。しかし、ウォー

ターマーク・レベルの IIR_FCR.TETのデコードされたレベルは、非常に低いで

す。したがって、UART シリアル送信ラインがデータを送信する必要がある場合、

送信アンダーフローの確率は高いですが、送信 FIFO に残っているデータはありま

せん。 これが発生するのは、FIFO バッファが空になる前に、DMA が DMA リクエ

ストを処理する時間がなかったためです。

■ ケース 2: IIR_FCR.TET = 3( 64 のウォーターマーク・レベルをデコードする) :†

■ 送信 FIFO ウォーターマーク・レベル = IIR_FCR.TETのデコードされたウォー

ターマーク・レベル = 64 †

■ DMA バースト長 = FIFO_DEPTH - IIR_FCR.TET のデコードされたウォーターマー

ク・レベル = 64†

■ UART 送信 FIFO_DEPTH = 128 †

■ ブロック・トランザクションのサイズ = 448 †

図21‒6. 送信 FIFO ウォーターマーク・レベル = 16

Data InDecoded watermarklevel of IIR_FCR.TET = 16

FIFO_DEPTH - IIR_FCR.TET = 112

FIFO_DEPTH = 128

Transmit FIFOWatermark Level

Data Out

Empty

Full

Transmit FIFO Buffer

DMAController

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

Page 11: 21.UARTコントローラ...21–2 第21章:UARTコントローラ UARTコントローラのブロック図およびシステム統合 Cyclone V デバイス・ハンドブック

第 21 章: UARTコントローラ 21–11UARTコントローラのプログラミング・モデル

図 21–7 に、 ウォーターマーク・レベルが 64 に等しいときの送信 FIFO を示します。

ブロック内のバースト・トランザクションの数: †

ブロック・トランザクションのサイズ /DMA バースト長 = 448/64 = 7 †

このブロック転送では、DMA ブロック転送の 15 個のデスティネーション・バー

スト・トランザクションがあります。しかし、ウォーターマーク・レベル、

IIR_FCR.TETのデコードされたレベルは高いです。したがって、 UART 送信 FIFO が

空になる前に、DMA コントローラがデスティネーション・バースト・トランザク

ション・リクエストを処理するための十分な時間を持っているので、UART の送

信アンダーフローの確率は低いです。 †

したがって、第 2 のケースは、ブロックあたりのバースト・トランザクションを

犠牲にすることで低い確率のアンダーフローとなっています。このケースでは、

第 1 に対して、ブロックあたりのバーストは潜在的に多くなり、バス使用率も悪

くなります。†

このように、ウォーターマーク・レベルの選択目標は、アンダーフロー状態の確率

を許容レベルに維持しながら、同時にブロックごとのトランザクションの数を 小

限に抑えることです。実際には、この値は、UART 送信データのレートと、DMA がデ

スティネーション・バースト・リクエストに応答できるレート、これら 2 つのレー

トの比の関数になります。 †

送信 FIFOオーバーフローデスティネーション・バースト・リクエストを処理するのに十分なスペースが送信

FIFO バッファにない場合、DMA リクエストをトリガするウォーターマーク・レベル

より大きい値に DMA のバースト長を設定すると、オーバーフローを引き起こす可能

性があります。したがって、オーバーフローを防止するために、次式が満たされて

いる必要があります。 †

DMA バースト長 <= FIFO_DEPTH - IIR_FCR.TETのデコードされたウォーターマーク・

レベル

ケース 2:IIR_FCR.TET デコードされたウォーターマーク・レベル = 64 では、バース

ト・リクエストが行われた時の送信 FIFO 内のスペースの量は、DMA バースト長に等

しくなります。したがって、バースト・トランザクションの完了時に、送信 FIFO が

フルである可能性がありますが、オーバーフローはしていません。†

したがって、 適な動作のために、DMA バースト長は送信 DMA リクエストをトリ

ガーする FIFO レベルに設定される必要があります。つまり、以下のようになります。

DMA バースト長 = FIFO_DEPTH - IIR_FCR.TETのデコードされたウォーターマーク・

レベル

図21‒7. 送信 FIFO ウォーターマーク・レベル = 64

Decoded watermarklevel of IIR_FCR.TET = 64

FIFO_DEPTH - IIR_FCR.TET = 64FIFO_DEPTH = 128

Transmit FIFOWatermark Level

Data Out

Transmit FIFO Buffer

Empty

FullDMA

ControllerData In

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

Page 12: 21.UARTコントローラ...21–2 第21章:UARTコントローラ UARTコントローラのブロック図およびシステム統合 Cyclone V デバイス・ハンドブック

21–12 第 21章:UART コントローラUART コントローラのプログラミング・モデル

この式に従うことにより、ブロック転送に必要な DMA のバースト数を減少させ、バ

スの使用率を向上させます。†

1 UART コントローラが正常に転送中に I2C シリアル送信ライン上の 1 つ以上のデータ・

アイテムを送信した場合、送信 FIFO は、DMA バースト転送の終了時にフルにはなり

ません。 †

受信 FIFOオーバーフローUART シリアル転送中、受信 FIFO 内のエントリ数が FIFO コントロール・レジスタ

(IIR_FCR)の Receive Trigger (RT)フィールドのデコードされたレベルの以上になる

と受信 FIFO バッファ・リクエストが DMA コントローラになされます。これは、

ウォーターマーク・レベルとして知られています。DMA は、受信 FIFO からデータの

バーストをフェッチすることによって応答します。†

受信 FIFO が連続的にシリアル転送を受け入れるように、十分な頻度で DMA からデー

タをフェッチする必要があります。つまり、FIFO がフィルを開始する場合は、別の

DMA 転送が要求されます。そうしないと、FIFO がデータでいっぱいになってしまい

ます(オーバーフロー)。この状態を回避するために、ウォーターマーク・レベルを

正しく設定する必要があります。†

受信ウォーターマーク・レベル前述の送信ウォーターマーク・レベルの選択と同様に、IIR_FCR.RTのデコードされ

たウォーターマーク・レベルの受信ウォーターマーク・レベルは、図 21–8 に示すよ

うにオーバーフローの確率が 小限になるように設定する必要があります。オー

バーフローが発生する確率に対して、ブロックごとに必要な DMA バースト・トラン

ザクション数がトレードオフの関係になります。†

受信 FIFOアンダーフローウォーターマーク・レベルより大きいソース・トランザクションのバースト長を設

定すると、ソース・バースト・リクエストを処理するために十分なデータがないた

め、アンダーフローを引き起こす可能性があります。そのため、アンダーフローを

避けるために次式に従う必要があります。 †

DMA バースト長 = IIR_FCR.RT + 1 のデコードされたウォーターマーク・レベル

受信 FIFO 内のデータ・アイテムの数がバースト・リクエストが行われた時のソー

ス・バースト長に等しい場合には、バースト・トランザクションの完了時に、受信

FIFO が空になる可能性はありますがアンダーフローにはなりません。 適な動作の

ために、DMA バースト長は、IIR_FCR.RTのデコードされたウォーターマーク・レベ

ルのウォーターマーク・レベルに設定する必要があります。†

この式に従うことにより、アンダーフローを避けてバスの使用率が向上させること

ができ、ブロック転送の DMA バースト数を減少させます。†

1 UART コントローラがバースト中に UART シリアル受信ライン上で 1 つ以上のデータ・

アイテムを正常に受信した場合、受信 FIFO は、ソース・バースト・トランザクショ

ンの終了時に空にはなりません。 †

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

Page 13: 21.UARTコントローラ...21–2 第21章:UARTコントローラ UARTコントローラのブロック図およびシステム統合 Cyclone V デバイス・ハンドブック

第 21 章: UARTコントローラ 21–13UARTコントローラのアドレス・マップおよびレジスタの定義

図 21–8 に、受信 FIFO バッファを示します。

UART コントローラのアドレス・マップおよびレジスタの定義f アドレス・マップとレジスタ定義は、このハンドブックのボリュームに付属の

hps.html ファイルにあります。ファイルを開くには、リンクをクリックします。

モジュールの説明とベース・アドレスを表示するには、以下のモジュールのインス

タンスのいずれかをスクロールして、リンクをクリックします。

■ uart0

■ uart1

次に、レジスタとフィールドの説明を表示するには、レジスタ名をスクロールして、

クリックします。レジスタのアドレスは、各モジュール・インスタンスのベース・

アドレスからの相対的なオフセットです。

f すべてのモジュールのベース・アドレスは、Cyclone V デバイス・ハンドブックVolume 3 の 「Introduction to the Hard Processor System」の章に記載されています。

改訂履歴表 21–3 に、このドキュメントの改訂履歴を示します。

図21‒8. 受信 FIFO バッファ

Decoded watermarklevel of IIR_FCR.RT

DMAControllerData Out

Receive FIFOWatermark Level

Data In

Empty

Full

ReceiveFIFO Buffer

表21‒3. 改訂履歴

日付 バージョン 変更内容

2012 年 11 月 1.2 マイナーな更新。

2012 年 5 月 1.1 プログラミング・モデル、アドレス・マップおよびレジスタの定義、クロック、およびリセットの項を追加。

2012 年 1 月 1.0 初版。

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

Page 14: 21.UARTコントローラ...21–2 第21章:UARTコントローラ UARTコントローラのブロック図およびシステム統合 Cyclone V デバイス・ハンドブック

21–14 第 21章:UART コントローラ改訂履歴

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