UART コントローラ、ハード・プロセッサ・システム(HPS)のテクニカル

21. UART コントローラ
11? 2012?
cv_54021-1.2
cv_54021-1.2
ハード・プロセッサ・システム(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 バッファのテスト
用)†
© 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.
ISO
9001:2008
Registered
†Paragraphs marked with the dagger (†) symbol are Synopsys Proprietary. Used with permission.
Cyclone V デバイス・ハンドブック
Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル
2012 年 11 月
Subscribe
第 21 章: UART コントローラ
UART コントローラのブロック図およびシステム統合
21–2
■
ソフトウェア・オーバーヘッドを減少し、プログラム可能なリセットを提供する
シャドー・レジスタ †
■
レジスタ空(THRE)割り込みモードを保持するトランスミッタ †
UART コントローラのブロック図およびシステム統合
図 21–1 に、HPS システム内の UART コントローラの統合を示します。
図 21‒1. UART のブロック図
UART Controller
To I/O Pins
RX
TX
RTS
CTS
MPU
Serial Transmitter/
Receiver
Interrupt and System
Reset Control
FIFO Buffer
Baud Clock
Generator
IRQ
DMA
Interface
DMA
Controller
Clock
Manager
Register Block
Reset
Manager
Slave Interface
L4 Peripheral Bus
表 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)レジスタをプログラムするによって制御されま
す。
Cyclone V デバイス・ハンドブック
Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル
2012 年 11 月
Altera Corporation
第 21 章: UART コントローラ
UART コントローラの機能の説明
21–3
表 21‒1. UART コントローラのブロックの説明
ブロック
説明
シリアル・トランス
ミッタ
シリアル・データに UART への書き込まれたパラレル・データ
を変換し、伝送用としてコントロール・レジスタで指定された
すべての追加ビットを追加します。キャラクタと呼ばれるこの
シリアル・データの構成は、シリアル UART のブロックで終了
します。†
シリアル・レシーバ
パラレル・フォームに UART 形式で受信したシリアル・データ・
キャラクタ(コントロール・レジスタによって指定される)を
変換します。パリティ・エラー検出、フレーミング・エラー検
出、および改行検出は、このブロックで行われています。†
DMA インタフェース
UART コントローラは、受信したデータが使用可能であるとき、
または送信 FIFO バッファがデータを必要とするときに示すため
に、DMA コントローラ・インターフェイスが含まれています。
DMA は、送信用と受信用の 2 つのチャネルが必要です。UART コ
ントローラは、シングルとバースト転送をサポートします。
FIFO バッファ・モードと非 FIFO バッファ・モードで DMA を使
用することができます。
詳細は、Cyclone® V デバイス・ハンドブック Volume 3 の 「DMA
Controller」の章を参照してください。
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 バッファの先頭に現在のデータを提供します。†
2012 年 11 月
Altera Corporation
Cyclone V デバイス・ハンドブック
Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル
第 21 章: UART コントローラ
UART コントローラの機能の説明
21–4
同様に、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 デバイス・ハンドブック
Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル
2012 年 11 月
Altera Corporation
第 21 章: UART コントローラ
UART コントローラの機能の説明
21–5
FIFO バッファが FCR.FIFOE を通じてディセーブルになっている場合は、適切な MCR
のビットを設定している場合でも、自動フロー・コントロールもディセーブルにな
ります。自動 RTS が実装されていない場合またはディセーブルになっている場合に
は、rts_n は単に MCR.RTS によって制御されます。図 21–2 は、自動 RTS の動作を示
しています。図 21–2 では、次のキャラクタが送信 UART トランスミッタを入力する
前に rts_n が検出されていないため、キャラクタ T が受信されます。†
図 21‒2. 自動 RTS のタイミング
sin
start character T stop start
character T+1 stop
rts_n
1
rx_fifo_read
2
3
T
T+1
自動 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 バッファ・フル・ス
テータスにアクセスするためにイネーブルする必要があります。†
2012 年 11 月
Altera Corporation
Cyclone V デバイス・ハンドブック
Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル
第 21 章: UART コントローラ
UART コントローラの機能の説明
21–6
FIFO バッファ・フル・ステータスを使用すると、ソフトウェアは送信 FIFO バッファ
に各ライトの前にこれをポーリングすることができます。cts_n 入力が再びアクティ
ブ(Low)になると、伝送が再開されます。FIFO バッファが IIR_FCR.FIFOE ビットで
ディセーブルになっている場合、自動フロー・コントロールは、他の設定に関係な
く無効になります。自動 CTS が実装されていない場合またはディセーブルになって
いる場合、トランスミッタは cts_n の影響を受けません。図 21–3 のタイミング図
は、自動 CTS の動作を示します。†
図 21‒3. 自動 CTS のタイミング
sout
data bits
start
stop
start
data bits
stop
start
data bits
stop
Disabled
cts_n
クロック
UART コントローラは l4_sp_clk クロックに接続されています。クロック入力はク
ロック・マネージャによって駆動されます。
f クロック・マネージャについて詳しくは、Cyclone V デバイス・ハンドブック Volume 3
の 「Clock Manager」の章を参照してください。
リセット
UART コントローラは uart_rst_n リセット信号に接続されています。リセット・マ
ネージャはコールド・リセットまたはウォーム・リセットの時に信号を駆動します。
詳細は、Cyclone V デバイス・ハンドブック Volume 3 の 「Reset Manager」の章を参照
してください。
割り込み
次の割り込みのタイプのいずれかがイネーブルになっており、アクティブな場合、
UART 割り込み出力信号のアサーションが発生します。†
表 21‒2. 割り込みのタイプと優先順位 †
割り込みのタイプ
優先順位
Receiver line status
最高
Received data available
2 番目
Character timeout indication
2 番目
Transmit holding register empty
3 番目
割り込みイネーブル・レジスタ(IER_DLH)を使用して割り込みのタイプをイネーブ
ルすることができます。
Cyclone V デバイス・ハンドブック
Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル
2012 年 11 月
Altera Corporation
第 21 章: UART コントローラ
UART コントローラの機能の説明
21–7
プログラム可能な THRE 割り込み
UART はシステムのパフォーマンスを向上させるためにプログラム可能な THRE 割り
込みモードがあります。割り込みイネーブル・レジスタ(IER_DLH.PTIME)を使用し
てプログラム可能な THRE 割り込みモードをイネーブルします。THRE モードがイ
ネーブルになっている場合、THRE 割り込みと dma_tx_req 信号は、図 21–4 のフロー
チャートに示すようにプログラムされた送信 FIFO バッファ空スレッショルド値レベ
ル以下でアクティブになっています。†
図 21‒4. プログラム可能な THRE 割り込みモード
Clear INTR
FIFO Level > TX
Empty Trigger?
yes
no
no
THRE Interrupt
Enabled?
yes
Set INTR
FIFO Level > TX
Empty Trigger?
no
yes
スレッショルド・レベルは、IIR_FCR.TET にプログラムされています。使用可能な空
のスレッショルドは、空、2、¼、および ½ です。最適なスレッショルドは、適時に
新しい送信シーケンスを開始するためのシステムの能力に依存します。しかし、こ
れらスレッショルドのいずれかは、空のランニングから送信 FIFO バッファを防止す
ることにより、システムのパフォーマンスを増加させるのに最適な証明する必要が
あります。
割り込みの変更に加え、ライン・ステータス・レジスタ(LSR.THRE)は送信 FIFO
バッファが空であることの表示から FIFO バッファがいっぱいであることの表示に切
り替わります。この変更によって、別のキャラクタを書き込む前に、ソフトウェア
が LSR.THRE をポーリングすることによって各送信シーケンス用に FIFO バッファを
埋めることができるようになります。これは、FIFO バッファが完全に空になるまで
2012 年 11 月
Altera Corporation
Cyclone V デバイス・ハンドブック
Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル
第 21 章: UART コントローラ
UART コントローラの機能の説明
21–8
待っている代わりに、割り込みが発生し、送信するデータが存在するたびに送信
FIFO バッファを埋めるために UART を指示します。システムがすぐに応答できないと
き、常に FIFO バッファが空になるまで待っていると、パフォーマンスが低下します。
このモードは自動フロー・コントロールとの組み合わせでイネーブルになっている
場合は、システムの効率を向上させることができます。
選択されていないか、ディセーブルになっているときは、空の THR または FIFO バッ
ファを反映して、通常 THRE は割り込みおよび LSR.THRE は機能します。図 21–5 は、
プログラム可能な THRE 割り込みモードなしで THRE 割り込みの生成を示していま
す。
図 21‒5. プログラム可能な THRE 割り込みモードなしで割り込みの生成
Clear INTR
TX FIFO
Empty?
no
yes
THRE
Interrupt
Enabled?
no
yes
Set INTR
(INTR Is Asserted If
There Are No Interrupts)
TX FIFO Not
Empty?
no
yes
Cyclone V デバイス・ハンドブック
Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル
2012 年 11 月
Altera Corporation
第 21 章: UART コントローラ
UART コントローラのプログラミング・モデル
21–9
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: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル
第 21 章: UART コントローラ
UART コントローラのプログラミング・モデル
21–10
■
ケース 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 を示します。
図 21‒6. 送信 FIFO ウォーターマーク・レベル = 16
Transmit
FIFO Buffer
FIFO_DEPTH = 128
FIFO_DEPTH - IIR_FCR.TET = 112
Empty
Transmit FIFO
Watermark Level
Data Out
DMA
Controller
Data In
Full
Decoded watermark
level of IIR_FCR.TET = 16
必要なバースト・トランザクションの数は、バーストあたりのデータ・アイテム
数で割ったブロック・サイズに等しくなります。
ブロック・トランザクションのサイズ /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 †
Cyclone V デバイス・ハンドブック
Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル
2012 年 11 月
Altera Corporation
第 21 章: UART コントローラ
UART コントローラのプログラミング・モデル
21–11
図 21–7 に、ウォーターマーク・レベルが 64 に等しいときの送信 FIFO を示します。
図 21‒7. 送信 FIFO ウォーターマーク・レベル = 64
Transmit
FIFO Buffer
FIFO_DEPTH = 128
Empty
FIFO_DEPTH - IIR_FCR.TET = 64
Transmit FIFO
Watermark Level
Full
Decoded watermark
level of IIR_FCR.TET = 64
Data In
DMA
Controller
Data Out
ブロック内のバースト・トランザクションの数:†
ブロック・トランザクションのサイズ /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 のデコードされたウォーターマーク・
レベル
2012 年 11 月
Altera Corporation
Cyclone V デバイス・ハンドブック
Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル
第 21 章: UART コントローラ
UART コントローラのプログラミング・モデル
21–12
この式に従うことにより、ブロック転送に必要な 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 デバイス・ハンドブック
Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル
2012 年 11 月
Altera Corporation
第 21 章: UART コントローラ
UART コントローラのアドレス・マップおよびレジスタの定義
21–13
図 21–8 に、受信 FIFO バッファを示します。
図 21‒8. 受信 FIFO バッファ
Receive
FIFO Buffer
Empty
Receive FIFO
Watermark Level
Full
Data In
Data Out
Decoded watermark
level of IIR_FCR.RT
DMA
Controller
UART コントローラのアドレス・マップおよびレジスタの定義
f アドレス・マップとレジスタ定義は、このハンドブックのボリュームに付属の
hps.html ファイルにあります。ファイルを開くには、リンクをクリックします。
モジュールの説明とベース・アドレスを表示するには、以下のモジュールのインス
タンスのいずれかをスクロールして、リンクをクリックします。
■
uart0
■
uart1
次に、レジスタとフィールドの説明を表示するには、レジスタ名をスクロールして、
クリックします。レジスタのアドレスは、各モジュール・インスタンスのベース・
アドレスからの相対的なオフセットです。
f すべてのモジュールのベース・アドレスは、Cyclone V デバイス・ハンドブック
Volume 3 の 「Introduction to the Hard Processor System」の章に記載されています。
改訂履歴
表 21–3 に、このドキュメントの改訂履歴を示します。
表 21‒3. 改訂履歴
バー
ジョン
日付
変更内容
2012 年 11 月
1.2
マイナーな更新。
2012 年 5 月
1.1
プログラミング・モデル、アドレス・マップおよびレジスタの定義、クロック、
およびリセットの項を追加。
2012 年 1 月
1.0
初版。
2012 年 11 月
Altera Corporation
Cyclone V デバイス・ハンドブック
Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル
21–14
Cyclone V デバイス・ハンドブック
Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル
第 21 章: UART コントローラ
改訂履歴
2012 年 11 月
Altera Corporation