STM32H7- DLYB
遅延ブロック
1.0版

こんにちは、遅延ブロックモジュールのプレゼンテーションにようこそ。

1概要

2

• SDMMCおよびQSPI通信インタフェース用の遅延サンプル･クロックを生成• 入力クロック周波数は25~208MHz• ファームウェア制御• 電圧と温度ドリフトの補償はない

アプリケーション側の利点• 可変遅延のSDMMCカードをサポート• SDMMCおよびQSPIのタイミング･マージンを改善

STM32H7マイクロコントローラに内蔵されている遅延ブロック
モジュールは，SD/SDIO/MMCカード・ホスト・インタフェース（SDMMC）およびQuad-SPIメモリ・インタフェース（QSPI）の受信データ・サンプリング・クロックの調整に使用されます。可変遅延を持つSDMMC Ultra-High-Speed(UHS-I)インターフェー
スカードでの使用が必須です。
25～208MHzの幅広い入力クロック周波数に対応しています。
出力クロックの遅延はファームウェアによって制御されており、電圧や温度の変動により再調整が必要になる場合があります。
アプリケーションにとっては、可変遅延のSDMMCUHS-Iカードをサポートできることや、高速のSDMMCおよびQSPIインタフェースの統合が容易になることなどのメリットがあります。
STM32H7では、SDMMC1、SDMMC2、およびQUADSPIモジュールで遅延ブロックを利用できます。

2

ブロック図3

DLYB
AHBインタフェース

遅延コントロール

遅延ライン

ユニット遅延ライン

入力クロック

遅延フィードバック
スレーブ
AHB

フェーズ
選択

出力クロック･フェーズ選択

出力クロック

出力クロック･マルチプレクサ

AHBバス上にある遅延ブロックモジュールは、「遅延ライン」と「出力クロックマルチプレクサ」のパラメータ値を持つ遅延ライン制御レジスタ、フィードバック情報レジスタ、出力クロック選択レジスタを含む「AHBインタフェース」で構成されています。
遅延ブロックモジュールは、プログラム可能な単位遅延を持つ12個の遅延ユニットで構成されています。遅延ラインのフィードバック情報は、入力クロックの1周期に合わせて調整するために使用されます。
出力クロックの位相は，位相選択レジスタで選択します。

3

遅延ブロック手順

4

遅延ラインのチューニング

• 出力クロックの位相を選択する前に、遅延ラインの長さを入力クロックの1周期分に調整する必要がある
スタート

長さサンプリングを有効

UNIT = UNIT + 1

長さフラグ待機SEN = 1
すべての遅延ユニットを有効

SEL = 12

LNGF = 1

はい

遅延長さの確認
LNG[10:0] > 0&
(LNG[11]もしくはLNG[10]) = 0

最小単位遅延の設定

UNIT = 0

偽UNIT < 127
いいえ真

遅延長さ調整入力クロック
遅すぎる

出力クロックのフェーズを選択する前に，入力クロックの1周期分に相当する遅延長さを調整する必要があります。これを行うには，SENビットを'1'に設定して，遅延長さサンプリングを有効にします。(これは同時に、出力クロックをディセーブルにすることになります）。)その後、SEL[3:0]を‘1100’に設定すると、すべての遅延ユニットが有効になります。
UNIT[6:0]を'0'に設定することで、最小単位の遅延を選択します。
レジスタのUNITフィールドを書き込むことで、遅延ラインのサンプリングが開始されます。
1入力クロック期間にわたるサンプリングが完了すると、LNGFフラグが設定されます。ファームウェアは、LNG[11:0]の遅延ライン長さフィードバックをチェックする前に、このビットをポーリングする必要があります。
LNGフィールドが0ではなく、LNGビット11またはビット10のいずれかが‘0’の場合、遅延ラインは1入力クロック期間にわたっており、遅延ライン長さの調整処理は終了します。そうでない場合は、ユニット遅延が増加し、新たなチェックが行われます。
最大遅延ユニットに達してもチェックが偽になる場合、入力クロックが遅すぎて遅延ラインに1つの完全な周期を収めることができません。

4

遅延ブロック手順

5

遅延長さ検出• 遅延長を調整した後は、入力クロック1周期分の遅延セルの数を決定• LNG[11:0]の最初のMSBビットが'1'の場合、入力クロック1周期分の遅延ユニット数が決定

期間
入力クロック

LNGレジスタ･フィールド
値

[0]

[1]

[2]

[N-1] [N] [N+1]

000

1

10

遅延ラインの調整が完了したら、入力クロック1周期分の遅延ユニットの数を決定します。
LNG[11:0]の最上位ビットから順に、'1'に設定された最初のビットが、入力クロックの1周期にかかる遅延ユニットの数を決定します。
遅延ユニットの数＝ビットインデックス＋1
つまり、最初に‘1’に設定されたLNGビットがビット番号[10]であれば、11個の遅延ユニット[0:10]が1入力クロック期間に反映されます。

5

遅延ブロック手順

6

出力クロック位相選択• 関連するペリフェラルの最適な出力クロックを決定するためには、すべてのサンプルポジションに基づいて、受信データのアイ・ダイアグラムを構築する必要がある• アイパターンを使って、最適なサンプル位置を決めることができる• 新しい出力フェーズは、出力クロックがディセーブルの場合にのみ選択可能• SD規格は、この目的に対してチューニング･ブロックを提供

出力クロックフェーズ 0 1 2 3 4 5
値 フェール グッド グッド グッド グッド フェール

N-1

Nフェール フェール

アイベストサンプルポジション出力クロック フェーズ3

アイパターンを決定するためには、すべてのペリフェラルインタフェースデータを受信し、選択可能なすべての出力クロックフェーズについて検証する必要があります。これにより、良好な出力クロックフェーズとフェールした出力クロックフェーズのパターンが得られます。その後、良好なものの中から最良のフェーズを選択します。
新しい出力クロックフェーズを選択するには，まずSENビットを'1'に設定して出力クロックをディセーブルにします。SEL[3:0]
ビットで出力クロックのフェーズを選択した後，SENビットを'0'にリセットすることで，出力クロックを再び有効にすることができます。
SD仕様では、受信データのサンプルポイントを調整するための特別なチューニングブロックが用意されています。

6

ポーリング･ビット
ポーリング･ビット
LNGF

7

説明
遅延行サンプリング準備完了フラグ

UNITでのユニット遅延の更新に続いて、LNGFフラグは、遅延ラインのサンプリングが終了したことをファームウェアに知らせ、遅延長さのフィードバックはビットLNG[11:0]から読み取ることができます。

7

低電力モード
モード

8

説明

RUN

アクティブ

SLEEP

アクティブ
ペリフェラル･レジスタの内容は保持 クロック入出力の遅延機能

STOP

アクティブ
ペリフェラル･レジスタの内容は保持 クロック入出力の遅延機能

STANDBY

パワーダウン
STANDBYモードを終了した後、ペリフェラルを再初期化する必要がある

ここでは、特定の低消費電力構成モードにおけるペリフェラルのステータスを説明します。遅延ブロックモジュールは、SLEEPモード以下では状態を変更させることができません。しかし、入力から出力までのクロック遅延は、STOPモードまで機能します。STANDBYモードでは、遅延ブロックモジュールはパワーダウンします。

8

関連ペリフェラル

9• このペリフェラルにリンクしているペリフェラル・トレーニングがあれば、それをご参照ください• リセットとクロック･コントローラ（RCC）• 汎用入出力（GPIOs）• SD/SDIO/MMCカード･ホスト･インタフェース（SDMMC）• Quad-SPIメモリ･インタフェース（QSPI）

ここでは、遅延ブロックモジュールに関連するペリフェラルの一覧を示します。ユーザーは、遅延ブロックモジュールを正しく設定して使用するために、これらのペリフェラルの関係をすべて理解しておく必要があります。

9