アプリケーションノート 5507

合成可能1-Wire®バスマスターのDS1WMについて理解する


要約:

1-Wireスレーブデバイスとの通信には、1-Wireマスターが必要です。1-Wireマスターを構築する方法は数多くあります(リファレンスデザイン4206 「組込みアプリケーション用の正しい1-Wireマスターの選択」を参照)。このアプリケーションノートでは、特定用途向け集積回路(ASIC)やフィールドプログラマブルゲートアレイ(FPGA)に実装することができる合成可能1-WireマスターであるDS1WMについて説明します。無料のDS1WM IPは、https://support.maximintegrated.com/jp/1-Wireからご請求ください。


はじめに

1-Wireデバイスが普及し、多様化するにつれて、多くの技術者がどのように1- Wireマスターをシステムに組み込むかという問題に直面しています。リファレンスデザイン4206 「組込みアプリケーション用の正しい1-Wire®マスターの選択」では、さまざまな選択肢について説明しています。このアプリケーションノートでは、特定用途向け集積回路(ASIC)やフィールドプログラマブルゲートアレイ(FPGA)の機能ブロックとして実装することができる合成可能1-WireバスマスターであるDS1WMに焦点を合わせます。DS1WMコアは、わずかなチップ面積しか使用しません(約3470個のゲートと2つのボンドパッド)。また、1-Wireのタイミング全体をハードウェアで生成するため、当初のソフトウェア開発に要する時間と費用が低減されます。したがって、アプリケーションソフトウェア全体を高級言語で開発することができます。DS1WMでは1-Wireの通信信号DQのほか、制御信号STPZも利用可能です。この信号は特定の1-Wireスレーブの電力要件を満たす上で役立ち、多数のスレーブや広範囲にわたる配線を含む大規模ネットワークにも対応することができます。図1に、DS1WMの標準アプリケーション回路を示します。DS1WMは、VerilogとVHDLの両形式で無償提供されています。
図1. DS1WMの標準アプリケーション回路
図1. DS1WMの標準アプリケーション回路

説明

メモリデバイスと同様に、DS1WMは3つのアドレスラインと通常の制御信号を使用し、8ビットデータバス経由でユーザーのシステムに接続します(図2)。内部の分周器チェーンによって適合するすべてのシステムクロックを1MHzの信号に変換し、1-Wireのタイミングを制御します。DS1WMは、標準とオーバードライブの1-Wire通信をシングルビットまたはバイトモードでサポートし、ロングラインアプリケーションのタイミング修正にも対応しています。ホストインタフェースと1-Wireポートの信号を表1に示します。図3図5表2は、ホストインタフェースの波形とタイミングを示しています。
図2. DS1WMのブロック図
図2. DS1WMのブロック図
表1. 信号の説明
名称 タイプ 機能
MR I マスターリセット。この信号によって、DS1WMは内部リセットを実行します。結果はパワーオンリセットの場合と同じです。MRは%-overbar_pre%EN%-overbar_post%によってゲート制御されません。この信号は、ピンで立上りエッジが生じた場合にアクティブとみなされます(最小継続時間の要件はありません)。
CLK I システムクロック信号。クロック分周器ブロックによってこの信号を約1.0MHzのクロックに変換し、1-Wireのタイミングを制御します。デューティサイクルは約50%である必要があります。論理的に許容されるCLK周波数については、「Clock Divisorレジスタ」の説明を参照してください。物理的に許容される上限は、実装用に選択するASIC/FPGAの特性によって変わります。
A[2:0] I メモリマッピングした各種のデバイスレジスタにアクセスするホストインタフェースのアドレスライン。レジスタアドレスについては、「メモリマップ」を参照してください。
%-overbar_pre_title%ADS%-overbar_post% I ホストインタフェースのアクティブローアドレスストローブ。アドレスストローブの立上りエッジで、アドレスラインA[2:0]の状態が内部ラッチにコピーされます。詳細については、ホストインタフェースのタイミング図(図3、4、5)を参照してください。
%-overbar_pre_title%EN%-overbar_post% I ホストインタフェースのアクティブロー一般イネーブル信号。詳細については、ホストインタフェースのタイミング図(図3、4、5)を参照してください。
D[7:0] I/O ホストインタフェースの双方向データバス(3状態型)。DS1WMは、ホストの読取りサイクル中にこれらの信号を駆動します(図3)。それ以外の場合、これらの信号はハイインピーダンス状態になるため、ホストがこのデータバスで他のデバイスと通信することができます。
%-overbar_pre_title%WR%-overbar_post% I ホストインタフェースのアクティブロー書込みイネーブル信号。%-overbar_pre%WR%-overbar_post%信号の立上りエッジで、データバスD[7:0]の状態がアドレス指定されたレジスタにコピーされます。ホストがDS1WMに書き込まない場合、%-overbar_pre%WR%-overbar_post%は非アクティブ(ハイ)である必要があります。詳細については、ホストインタフェースのタイミング図(図3と5)を参照してください。%-overbar_pre%RD%-overbar_post%%-overbar_pre%WR%-overbar_post%の両方が同時にアクティブである場合は、%-overbar_pre%WR%-overbar_post%が優先されます。
%-overbar_pre_title%RD%-overbar_post% I ホストインタフェースのアクティブロー読取りイネーブル信号。アクティブになると、DS1WMは選択されたレジスタの内容をホストの読取りのためにデータバスに送ります。ホストがDS1WMから読み取らない場合、%-overbar_pre_sentence%RD%-overbar_post%は非アクティブ(ハイ)である必要があります。詳細については、ホストインタフェースのタイミング図(図4)を参照してください。%-overbar_pre%RD%-overbar_post%%-overbar_pre%WR%-overbar_post%の両方が同時にアクティブである場合は、%-overbar_pre%WR%-overbar_post%が優先されます。
DQ I/O 1-WireバスのIOドライバ。これはオープンドレインの双方向ポートで、VCCに対するプルアップ抵抗が必要です。プルアップ抵抗の許容範囲については、アプリケーション内の1-Wireスレーブのデータシートを参照してください。最小値は、実装用に選択するASIC/FPGAの駆動特性や論理スレッショルドによっても変わります。
STPZ O 特定の時点でプルアップ抵抗をバイパスする外付けPチャネルトランジスタのアクティブロー制御信号。詳細については、「制御レジスタ」の項にあるビットSTPENSTP_SPLYの説明、およびSTPZのタイミング図(図1013)を参照してください。
INTR O ホストインタフェースの割込み信号。起動時のデフォルト極性はアクティブローですが、Interrupt EnableレジスタのIASビットによってアクティブハイに変更することができます。Interrupt Enableレジスタによって割込みがイネーブルされておらず、該当する割込み条件が存在しない場合、INTR信号は非アクティブです。詳細については、「割込みレジスタ」の説明を参照してください。割込みレジスタが読み取られると、INTR信号は非アクティブ状態に変化します。
図3. ホストインタフェースの書込みサイクル
図3. ホストインタフェースの書込みサイクル
図4. ホストインタフェースの読取りサイクル
図4. ホストインタフェースの読取りサイクル
図5. ホストインタフェースのタイミング、1-Wireリセットの発行
図5. ホストインタフェースのタイミング、1-Wireリセットの発行
表2. ホストインタフェースのタイミング仕様
Symbol Parameter Conditions Min Max Units
tADS Address strobe width Notes 1, 2 60   ns
tAH Address hold time Notes 1, 2 0   ns
tAR Address latch to read Notes 1, 2 60   ns
tAS Address setup time Notes 1, 2 60   ns
tAW Address latch to write Notes 1, 2 60   ns
tDH Data hold time Note 1 30   ns
tDS Data setup time Note 1 30   ns
tES Enable setup time Note 1 60   ns
tHZ RD to floating data delay Note 1 0 100 ns
tPDI Presence detect to INTR Note 1 0 100 ns
tRD RD strobe width Note 1 125   ns
tREN Enable hold time from RD Note 1 20   ns
tRVD Delay from RD to data Note 1   60 ns
tWEN Enable hold time from WR Note 1 20   ns
tWR WR strobe width Note 1 100   ns
tWRST WR high to reset Note 1 0 100 ns
注1: これらの値は、DS1WMの実装に使用されるプロセスによって変わります。ここに示した値はあくまで一例に過ぎません。
注2: %-overbar_pre%ADS%-overbar_post%がローである場合、tARとtAWはtESから測定されます。この場合、%-overbar_pre%RD%-overbar_post%または%-overbar_pre%WR%-overbar_post%の立下りエッジは、%-overbar_pre%EN%-overbar_post%の立下りエッジ後、tES + tARまたはtES + tAW以上経過してから発生する必要があります。
ホストプロセッサは、3つのアドレスラインA[2:0]でアクセスされる6つのレジスタによってDS1WMと通信します。表3にメモリマップを示します。
表3. メモリマップ
Address A2 A1 A0 Access Description
00h 0 0 0 Write/read Command Register
01h 0 0 1 Write/read Transmit/Receive Buffer
02h 0 1 0 Read Interrupt Register
03h 0 1 1 Write/read Interrupt Enable Register
04h 1 0 0 Write/read Clock Divisor Register
05h 1 0 1 Write/read Control Register

レジスタの説明

Commandレジスタ

このレジスタは、1-Wireリセット/プレゼンス検出サイクルを生成する際や、ROM検索アクセラレータをアクティブ化または非アクティブ化する際にアクセスされます。これら2つの機能のほか、CommandレジスタにはDQピンの直接制御用に2つのビットが含まれています。
Commandレジスタのビットマップ
ADDR b7 b6 b5 b4 b3 b2 b1 b0
00h X X X X OW_IN FOW SRA 1WR
このレジスタは読取り/書込み可能です。起動時のデフォルトは08hです(OW_IN = 1)。ビット4~7には機能がありません。これらのビットは読取り値が常に0で、1に設定することはできません。
ビットの説明 定義
OW_IN: DQ Input (Read only)
目的 DQピンの論理状態を読み取ります。CLK信号の立下りエッジのたびにサンプリングが行われます。
コード 1:DQの電圧はVIHMIN以上です(デフォルト)。
0:DQの電圧はVILMAX以下です。
条件 この機能は常にイネーブルです。パワーオンリセットやマスターリセット(MRピン)が発生すると、OW_INは1に変化します。
用途 FOWと組み合わせて、1-Wireリセットや1-Wire読取り/書込みの機能を超えた1-Wire通信を実行します。
FOW: Force 1-Wire
目的 ホストのタイミング制御下でDQピンを直接駆動します。
コード 1:DQのプルダウンをアクティブにします。
0:DQのプルダウンを終了します(デフォルト)。
条件 この機能は、まず制御レジスタ(アドレス05h)のEN_FOWビットに1を書き込むことでイネーブルする必要があります。それ以外の場合、FOWは効果を持ちません。EN_FOWとFOWの両方が1である場合、1-Wireリセットや1-Wire送信/受信機能(アドレス01h)には効果がありません。パワーオンリセットやマスターリセット(MRピン)が発生すると、FOWは0に戻ります。EN_FLOWを0に変更することは、FOWに0を書き込むのと同じ効果があります。
用途 1-Wireリセットや1-Wire読取り/書込みの機能を超えたDQシグナリングを生成します。1-Wireバスから読み取るには、FOWを0に変更した後、必要に応じて待ち状態にしてからOW_INビットを読み取ります。安全対策として、STPZ信号がアクティブ(ロー)の状態でFOWに1が書き込まれると、STPZ信号はただちに非アクティブ(ハイ)に変化します。
SRA: Search ROM Accelerator
目的 ROM検索アクセラレータをアクティブにします。
コード 1:ROM検索アクセラレータはアクティブ化されています。
0:ROM検索アクセラレータはアクティブ化されていません(デフォルト)。
条件 この機能は常にイネーブルです。パワーオンリセットやマスターリセット(MRピン)が発生した場合や、0が書き込まれた場合、SRAは0に戻ります。
用途 ROM検索アクセラレータは、1-Wire検索アルゴリズムの実行時に時間を節約します。詳細については、「検索アクセラレータの動作」の項を参照してください。
1WR: 1-Wire Reset
目的 1-Wireバスでリセット/プレゼンス検出シーケンスを生成します。
コード 1:リセット/プレゼンス検出サイクルが進行中です。
0:リセット/プレゼンス検出サイクルは完了しています(デフォルト)。
条件 この機能は常にイネーブルです。パワーオンリセットやマスターリセット(MRピン)が発生した場合や、1-Wireリセット/プレゼンス検出サイクルが完了した場合、1WRは0に戻ります。このビットに0を書き込むことによって、1-Wireリセット/プレゼンス検出サイクルを中止することができます。
用途 このビットに1を書き込むと、1-Wireリセット/プレゼンス検出サイクルが開始され、割込みレジスタ(アドレス02h)のPDビットとPDRビットが影響を受けます。

送信/受信バッファ

これはホストプロセッサが1-Wireバスで送信するデータバイトを書き込む場所です。1-Wireスレーブがそのデータに応答する状態にある場合、ホストはバイトFFhをこのレジスタに書き込み、そのバイトが送信された後に、このレジスタを再び読み取って1-Wireスレーブが送信したデータを取得します。
送信/受信バッファのビットマップ
ADDR b7 b6 b5 b4 b3 b2 b1 b0
01h Data7 Data6 Data5 Data4 Data3 Data2 Data1 Data0
このレジスタは読取り/書込み可能です。起動時のデフォルトは00hです。
ビットの説明 定義
Data[7:0]: Transmit/Receive Data
目的 1-Wireバスで送信するデータを提供し、1-Wireバスから取得されたデータにアクセスします。
コード N/A
条件 1-Wire通信は、ビットモードまたはバイトモード(デフォルト)で実行することができます。ビットモードでは、Data0のみが使用されます。ビットモードは、制御レジスタ(アドレス05h)のBIT_CTLビットに1を書き込むことによって選択されます。パワーオンリセットやマスターリセット(MRピン)が発生すると、Data[7:0]は00hに戻ります。
用途 1-Wireリセットを除く1-Wire通信全般。1-Wireの速度は、制御レジスタ(アドレス05h)のODビットによって選択されます。

割込みレジスタ

このレジスタは、現在のステータスや送信、受信、1-Wireリセットの各動作のフラグに対するアクセスを提供します。これらのフラグはいずれも、対応するイネーブルビットが割込みイネーブルレジスタで設定された場合にINTRピンで割込みを生成することができます。 INTR信号をクリアする場合は、割込みレジスタを読み取る必要があります。割込みレジスタを読み取ると、クリアされていないフラグがある場合でも、常にINTRピンが非アクティブに設定されます。
割込みレジスタのビットマップ
ADDR b7 b6 b5 b4 b3 b2 b1 b0
02h OW_LOW OW_SHORT RSRF RBF TEMT TBE PDR PD
このレジスタは読取り専用です。起動時のデフォルトは0Ehです(TEMT、TBE、PDR = 1、PD = 0)。
ビットの説明 定義
OW_LOW: 1-Wire Event
目的 1-Wireバス上のスレーブ着信を通知します。
コード 1:スレーブ着信がありました。
0:前回の割込みレジスタ読取り以降、スレーブ着信はありません(デフォルト)。
条件 この機能は常にイネーブルです。割込みレジスタの読取り、パワーオンリセット、またはマスターリセット(MRピン)が発生すると、OW_LOWは0に戻ります。
用途 アイドル状態のバス(通信が行われていないバス)でスレーブ着信があると、自動的にプレゼンスパルスが生成され、このビットが設定されます。アイドル状態のバスで短絡が発生した場合も、このビットが設定されます。
OW_SHORT: 1-Wire Shorted
目的 1-Wireバス上の短絡を通知します。
コード 1:1-Wireバスは短絡状態です。
0:1-Wireバスは通常の動作状態です(デフォルト)。
条件 この機能は常にイネーブルです。割込みレジスタの読取り、パワーオンリセット、またはマスターリセット(MRピン)が発生すると、OW_SHORTは0に戻ります。
用途 1-Wireリセットやタイムスロットの生成に先立って、DS1WMは1-Wireバスがアイドルハイであるかどうかをチェックします。そのときに1-Wireバスがローであれば、通信を行うことはできません。この状況は短絡として通知されます。
RSRF: Receive Shift Register Full
目的 Receive Shiftレジスタのステータスを通知します。
コード 1:Receive Shiftレジスタはフルです。
0:Receive Shiftレジスタは空またはデータ受信中です(デフォルト)。
条件 この機能は常にイネーブルです。Receive Shiftレジスタの内容がホストによる読取りのために受信バッファ(アドレス01h)に転送されたときや、パワーオンリセットやマスターリセット(MRピン)が発生した場合、RSRFは0に戻ります。
用途 RSRFが設定され、RBFが設定されていない場合(つまり、Receive Shiftレジスタがフルで、受信バッファフラグがクリアされている場合)、内部1MHzクロックの立上りエッジで転送が行われます。
RBF: Receive Buffer Full
目的 受信バッファのステータスを通知します。
コード 1:受信バッファに新規データがあります。
0:受信バッファに新規データがありません(デフォルト)。
条件 この機能は常にイネーブルです。受信バッファ(アドレス01h)の読取り、パワーオンリセット、またはマスターリセット(MRピン)が発生すると、RBFは0に戻ります。先に受信バッファを読み取らずに割込みレジスタを読み取ると、ERBF = 1かつRBF = 1の場合に別の割込みが発生します。
用途 1-Wireスレーブとの通常の通信。割込みを使用しない場合は、割込みレジスタをポーリングしてイベントを検出します。RBFの割込み(ERBF = 1)を使用する場合は、割込みレジスタを読み取る前に受信バッファを読み取ります。
RBFフラグを使用するプロセスは、次のようになります。
  1. FFを送信バッファに書き込み、TBEフラグをイネーブルします。
  2. 割込みピンのトリガを待ち受けます。
  3. 割込みが発生したら、割込みレジスタを読み取り、設定されたTBEを確認します。
  4. ETBEビットをクリアし、次にETMTビットを設定します。
  5. 割込みピンのトリガを待ち受けます。
  6. 割込みが発生したら、割込みレジスタを読み取り、設定されたETMTを確認します。
  7. ETMTビットをクリアし、次にERBFビットを設定します。
  8. 割込みピンのトリガを待ち受けます。
  9. 割込みが発生したら、割込みレジスタを読み取り、設定されたRBFを確認します。
  10. 受信バッファを読み取ります。
  11. 受信バッファを読み取った後、ERBFをクリアします。
TEMT: Transmit Shift Register Empty
目的 Transmit Shiftレジスタのステータスを通知します。
コード 1:Transmit Shiftレジスタは空で、新規データを受け入れ可能です(デフォルト)。
0:Transmit Shiftレジスタはデータ送信中でビジー状態です。
条件 この機能は常にイネーブルです。送信バッファの内容(アドレス01h)がTransmit Shiftレジスタに転送されると、TEMTは0に戻ります。パワーオンリセットやマスターリセット(MRピン)が発生すると、TEMTは1に変化します。
用途 TBEが設定され次第、内部1MHzクロックで転送が行われます。
TBE: Transmit Buffer Empty
目的 送信バッファのステータスを通知します。
コード 1:送信バッファは空で、新規データを受け入れ可能です(デフォルト)。
0:送信バッファは、Transmit Shiftレジスタがデータ送信を完了するのを待ち受けています。
条件 この機能は常にイネーブルです。送信バッファ(アドレス01h)に書込みが行われると、TBEは0に戻ります。パワーオンリセットやマスターリセット(MRピン)が発生すると、TBEは1に変化します。
用途 1-Wireスレーブとの通常の通信。
PDR: Presence Detect Result
目的 プレゼンス検出サイクルの結果を通知します。
コード 1:プレゼンスパルスは検出されませんでした(デフォルト)。
0:プレゼンスパルスが検出されました。
条件 この機能は常にイネーブルです。パワーオンリセットやマスターリセット(MRピン)が発生した場合や、プレゼンスが検出されなかった場合、PDRは1に変化します。
用途 1-Wireスレーブとの通常の通信。
PD: Presence Detect
目的 1-Wireリセット/プレゼンス検出サイクルの完了を通知します。
コード 1:最新のリセット/プレゼンス検出が完了しています。
0:前回の割込みレジスタ読取り以降、リセット/プレゼンス検出サイクルはありませんでした(デフォルト)。
条件 この機能は常にイネーブルです。割込みレジスタの読取り、パワーオンリセット、またはマスターリセット(MRピン)が発生すると、PDは0に戻ります。
用途 1-Wireスレーブとの通常の通信。

Interrupt Enableレジスタ

Interrupt Enableレジスタを使用すると、システムプログラマがINTRピンをアクティブにする割込みソースを指定することや、INTRピンのアクティブ状態を定義することが可能です。マスターリセットを受信した場合、このレジスタ内のビットはすべて0にクリアされ、すべての割込みソースがディセーブルされるとともに、INTRピンのアクティブ状態がローに設定されます。INTRピンは、割込みレジスタの読取りによって非アクティブ状態にリセットされます。
Interrupt Enableレジスタのビットマップ
ADDR b7 b6 b5 b4 b3 b2 b1 b0
03h EOWL EOWSH ERSF ERBF ETMT ETBE IAS EPD
このレジスタは読取り/書込み専用です。起動時のデフォルトは00hです。
ビットの説明 定義
EOWL: Enable 1-Wire Low Interrupt
目的 1-Wireバスでスレーブ着信が発生した場合の割込みをイネーブルします。
コード 1:OW_LOWの割込みはイネーブルです。
0:OW_LOWの割込みはディセーブルです(デフォルト)。
条件 なし。パワーオンリセットやマスターリセット(MRピン)が発生すると、EOWLは0に戻ります。
用途 この割込みは、iButton®デバイスをキーとして使用した出入管理など、1-Wireスレーブが行き来するようなアプリケーションで役立ちます。
EOWSH: Enable 1-Wire Short Interrupt
目的 1-Wireバスで短絡が発生した場合の割込みをイネーブルします。
コード 1:OW_SHORTの割込みはイネーブルです。
0:OW_SHORTの割込みはディセーブルです(デフォルト)。
条件 なし。パワーオンリセットやマスターリセット(MRピン)が発生すると、EOWSHは0に戻ります。
用途 この割込みは、出入管理アプリケーションでホストプロセッサに対するタンパーやサボタージュの警報に役立ちます。
ERSF: Enable Receive Shift Register Full Interrupt
目的 Receive Shiftレジスタがフルになった場合の割込みをイネーブルします。
コード 1:RSRFの割込みはイネーブルです。
0:RSRFの割込みはディセーブルです(デフォルト)。
条件 なし。パワーオンリセットやマスターリセット(MRピン)が発生すると、ERSFは0に戻ります。
用途 この割込みを使用すると、受信バッファとReceive Shiftレジスタの両方にデータが格納された状態を回避することができます。両方にデータが格納されている場合は、読取りを2回行わないとバッファがクリアされません。
ERBF: Enable Receive Buffer Full Interrupt
目的 受信バッファがフルになった場合の割込みをイネーブルします。
コード 1:RBFの割込みはイネーブルです。
0:RBFの割込みはディセーブルです(デフォルト)。
条件 なし。パワーオンリセットやマスターリセット(MRピン)が発生すると、ERBFは0に戻ります。
用途 この割込みは、1-Wire通信中、受信バッファに読取り可能なデータが存在することをホストプロセッサに通知するのに役立ちます。
ETMT: Enable Transmit Shift Register Empty Interrupt
目的 Transmit Shiftレジスタが空になった場合の割込みをイネーブルします。
コード 1:TEMTの割込みはイネーブルです。
0:TEMTの割込みはディセーブルです(デフォルト)。
条件 なし。パワーオンリセットやマスターリセット(MRピン)が発生すると、ETMTは0に戻ります。
用途 この割込みは、1-Wireのワイヤビットがすべて送信された時点を確認するのに役立ちます。
ETBE: Enable Transmit Buffer Empty Interrupt
目的 送信バッファが空になった場合の割込みをイネーブルします。
コード 1:TBEの割込みはイネーブルです。
0:TBEの割込みはディセーブルです(デフォルト)。
条件 なし。パワーオンリセットやマスターリセット(MRピン)が発生すると、ETBEは0に戻ります。
用途 この割込みは、1-Wire通信中、送信バッファが空で新規データを受け入れ可能であることをホストプロセッサに通知するのに役立ちます。
IAS: INTR Active State
目的 INTR信号のアクティブ状態の極性を設定します
コード 1:INTRの極性はアクティブハイです。
0:INTRの極性はアクティブローです(デフォルト)。
条件 なし。パワーオンリセットやマスターリセット(MRピン)が発生すると、IASは0に戻ります。
用途 INTR信号が使用される場合、このビットによって信号の極性をホストプロセッサの要件に合わせます。
EPD: Enable Presence Detect Interrupt
目的 1-Wireリセット/プレゼンス検出サイクルが完了した場合の割込みをイネーブルします。
コード 1:PDの割込みはイネーブルです。
0:PDの割込みはディセーブルです(デフォルト)。
条件 なし。パワーオンリセットやマスターリセット(MRピン)が発生すると、EPDは0に戻ります。
用途 この割込みは、1-Wire通信中、1-Wireリセット/プレゼンス検出(PD)サイクルが完了し、その結果が割込みレジスタ(アドレス02h)のPDRビットに格納されたことをホストプロセッサに通知するのに役立ちます。EPDは、1-Wireリセット/PDサイクルの前にイネーブルされます。その後、割込みを待ち受け、割込みが発生したら読取りを行い、PDが原因であったことを確認する必要があります。

Clock Divisorレジスタ

1-Wireのタイミングには、1MHzの内部クロックが必要です。DS1WMでは、このクロック周波数をCLKピンの外部リファレンスから生成します。この外部クロックはデューティサイクルが50%である必要があります。クロック分周比レジスタによって、ホストプロセッサは、外部CLKから1-Wireのタイミングに必要な1MHzにできる限り近い信号が得られるようにクロック分周器とプリスケーラを制御することが可能です。1-Wireバスで通信を行うには、クロック分周比を設定する必要があります。FPGAを使用する場合は、クロック分周器ブロックの代わりに、FPGAクロックリソースによって1MHzの内部クロックを生成することが推奨されます。これによって、FPGAでクロックのゲート制御を回避することができます。
Clock Divisorレジスタのビットマップ
ADDR b7 b6 b5 b4 b3 b2 b1 b0
04h CLK_EN X X DIV2 DIV1 DIV0 PRE1 PRE0
このレジスタは読取り/書込み可能です。起動時のデフォルトは00hです。ビット5とビット6には機能がありません。これらのビットは読取り値が常に0で、1に設定することはできません。
ビットの説明 定義
CLK_EN: Enable 1-Wire Timing System
目的 1-Wireのタイミングを制御する回路をイネーブルします。
コード 1:1-Wireのタイミングシステムはイネーブルです。
0:1-Wireのタイミングシステムはディセーブルです(デフォルト)。
条件 パワーオンリセットやマスターリセット(MRピン)が発生すると、CLK_ENは0に戻ります。
用途 1-Wire通信の前提条件として、このビットには1を書き込む必要があります。1-Wire通信を行わないときの節電のために、このビットを0に変更することができます。
DIV[2:0]: Binary Divider Ratio
目的 プリスケーラと連携して1-Wireのタイミング全体を制御する1µsのクロックを生成するように2進分周器を設定します。
コード: 000b:1分周(パススルー、デフォルト)
001b:2分周
010b:4分周
011b:8分周
100b:16分周
101b:32分周
110b:64分周
111b:128分周
条件 パワーオンリセットやマスターリセット(MRピン)が発生すると、DIV[2:0]は000bに戻ります。
用途 1-Wire通信の前提条件として、これらのビットには、利用可能なマスタークロック周波数に依存する適切な値を書き込む必要があります。手引きについては、表4を参照してください。
PRE[1:0]: Prescaler Ratio
目的 2進分周器と連携して1-Wireのタイミング全体を制御する1µsのクロックを生成するようにプリスケーラを設定します。
コード 00b:1分周(パススルー、デフォルト)
01b:3分周
10b:5分周
11b:7分周
条件 パワーオンリセットやマスターリセット(MRピン)が発生すると、PRE[1:0]は00bに戻ります。
用途 1-Wire通信の前提条件として、これらのビットには、利用可能なマスタークロック周波数に依存する適切な値を書き込む必要があります。手引きについては、表4を参照してください。
表4. Clock Divisorレジスタの設定値
Min CLK Frequency (MHz) Max CLK Frequency (MHz) Max CLK Error (%) Overall Divider Ratio DIV2 DIV1 DIV0 PRE1 PRE0
1 1.25 25 1 0 0 0 0 0
2 2.5 25 2 0 0 1 0 0
3 3.75 25 3 0 0 0 0 1
4 < 5 25 4 0 1 0 0 0
5 < 6 20 5 0 0 0 1 0
6 < 7 17 6 0 0 1 0 1
7 < 8 14 7 0 0 0 1 1
8 < 10 25 8 0 1 1 0 0
10 < 12 20 10 0 0 1 1 0
12 < 14 17 12 0 1 0 0 1
14 < 16 14 14 0 0 1 1 1
16 < 20 25 16 1 0 0 0 0
20 < 24 20 20 0 1 0 1 0
24 < 28 17 24 0 1 1 0 1
28 < 32 14 28 0 1 0 1 1
32 < 40 25 32 1 0 1 0 0
40 < 48 20 40 0 1 1 1 0
48 < 56 17 48 1 0 0 0 1
56 < 64 14 56 0 1 1 1 1
64 < 80 25 64 1 1 0 0 0
80 < 96 20 80 1 0 0 1 0
96 < 112 17 96 1 0 1 0 1
112 < 128 14 112 1 0 0 1 1
128 < 160 25 128 1 1 1 0 0
160 < 192 20 160 1 0 1 1 0
192 < 224 17 192 1 1 0 0 1
224 280 25 224 1 0 1 1 1
320 < 384 20 320 1 1 0 1 0
384 < 448 17 384 1 1 1 0 1
448 560 25 448 1 1 0 1 1
640 800 25 640 1 1 1 1 0
896 1120 25 896 1 1 1 1 1
:システムクロック周波数が15MHzである場合、1MHzに最も近くなる総合分周比は14です。これは値87hをクロック分周比レジスタに書き込むということです。この場合、クロックの誤差は(15/14) -1、つまり7%です。

制御レジスタ

ホストプロセッサは、このレジスタにアクセスしてDS1WMの適切な動作モードを選択します。動作モードには、1-Wire電力供給、リチャージアクセラレータ、シングルビットモード/バイトモード、ロングラインモード、プレゼンスパルスマスキングなどがあります。これらの機能を正しく使用すると、1-Wire上でデータの完全性が向上します。
制御レジスタのビットマップ
ADDR b7 b6 b5 b4 b3 b2 b1 b0
05h X OD BIT_CTL STP_SPLY STPEN EN_FOW PPM LLM
このレジスタは読取り/書込み可能です。起動時のデフォルトは00hです。ビット7には機能がありません。このビットは読取り値が常に0で、1に設定することはできません。
ビットの説明 定義
OD: 1-Wire Speed
目的 1-Wire通信に使用される速度を選択します。
コード 1:オーバードライブ速度が選択されています。
0:標準速度が選択されています(デフォルト)。
条件 なし。パワーオンリセットやマスターリセット(MRピン)が発生すると、ODは0に戻ります。
用途 大部分の1-Wireスレーブでは、起動時のデフォルトは標準速度です。それらの部品を使用する場合に速度をオーバードライブに変更する場合は、まず1-Wireスレーブで適切な切替えコマンドを標準速度で受信する必要があります。その後、DS1WMのODビットを1に変更します。標準速度に戻す場合は、ODビットを0に変更して1-Wireリセットを発行します(「コマンドレジスタ」(アドレス00h)を参照)。
BIT_CTL: Bit Control
目的 1-Wire通信用にビットモードまたはバイトモードを選択します。
コード 1:DS1WMはビットモードで動作しています。
0:DS1WMはバイトモードで動作しています(デフォルト)。
条件 なし。パワーオンリセットやマスターリセット(MRピン)が発生すると、BIT_CTLは0に戻ります。
用途 大部分の1-Wire通信はバイトモードで行われます(起動時のデフォルト)。ビットモードが選択された場合は、送信/受信バッファの最下位ビットのみが使用され、有効になります。その結果、バイトモードの場合の8タイムスロット後ではなく、1タイムスロット後に割込みレジスタ(アドレス02h)の対応するフル/空ビットが設定されます。
STP_SPLY: Strong Pullup Power Delivery
目的 ストロングプルアップ電力供給機能をアクティブ化します。この機能は、STPZピンを使用してpチャネルトランジスタを制御し、1-Wireプルアップ抵抗をバイパスします。
コード 1:ストロングプルアップ電力供給はアクティブ化されています。
0:ストロングプルアップ電力供給はアクティブ化されていません(デフォルト)。
条件 この機能は、まず制御レジスタのSTPENビットに1を書き込むことによってイネーブルする必要があります。パワーオンリセットやマスターリセット(MRピン)が発生すると、STP_SPLYは0に戻ります。
用途 1-Wireスレーブの中には、EEPROMのプログラム、温度の測定、数値計算の実行などのために余分な電力を必要とするものがあります。動作環境によっては、スレーブの正しい動作に必要な最低電圧を維持するために、1-Wireプルアップ抵抗をバイパスする必要があります。ホストプロセッサは、スレーブが大電流を要求する前にSTP_SPLYを1に設定し、大電流のフェーズが終了した後、STP_SPLYに0を書き込む必要があります。
STPEN: Active Pullup Enable
目的 負荷の高い1-Wireバスで立上り時間を最小限に抑えるアクティブプルアップをイネーブルします。この機能は、STPZピンを使用してpチャネルトランジスタを制御し、1-Wireプルアップ抵抗を一時的にバイパスします。
コード 1:アクティブプルアップはイネーブルです。
0:アクティブプルアップはディセーブルです(デフォルト)。
条件 なし。パワーオンリセットやマスターリセット(MRピン)が発生すると、STPENは0に戻ります。
用途 アクティブプルアップは寄生的に給電される1-Wireスレーブの電源状況を改善するため、常にイネーブルされている必要があります。1-Wireバスを最低許容プルアップ電圧近くで動作させる場合、長いバスケーブルを使用する場合、または複数のスレーブデバイスを使用する場合は、アクティブプルアップをイネーブルする必要があります。パワーオンリセット後、アクティブプルアップはディセーブルされます。詳細については、表6 「STPZのタイミング仕様」を参照してください。
EN_FOW: Enable Force 1-Wire
目的 1-Wire強制コマンドをイネーブルします。
コード 1:1-Wire強制コマンドはイネーブルです。
0:1-Wire強制コマンドはディセーブルです(デフォルト)。
条件 なし。パワーオンリセットやマスターリセット(MRピン)が発生すると、EN_FOWは0に戻ります。
用途 1-Wireリセットや1-Wire読取り/書込みの機能を超えたDQ信号を生成します。詳細については、「コマンドレジスタ」(アドレス00h)の項にあるFOWビットの説明を参照してください。
PPM: Presence Pulse Masking
目的 1-Wireスレーブによって生成されるプレゼンスパルスをプリエンプトします。
コード 1:プレゼンスパルスマスキングはイネーブルです。
0:プレゼンスパルスマスキングはディセーブルです(デフォルト)。
条件 なし。パワーオンリセットやマスターリセット(MRピン)が発生すると、PPMは0に戻ります。
用途 ロングライン環境では、1-Wireスレーブによって生成されるプレゼンスパルスのために、バス上でリンギングが発生することがあります。プレゼンスパルスマスキングは、プレゼンスパルスによって引き起こされる悪影響を防ぐことができます。PPMが1であれば、バス上に1-Wireスレーブが存在しない場合でも、プレゼンス検出の結果(割込みレジスタ(アドレス02h)のPDRビット)は常に0です。詳細については、表5 「DQ信号のタイミング仕様」を参照してください。
LLM: Long Line Mode
目的 ロングラインアプリケーション環境に対応して標準速度のタイミングを修正します。
コード 1:ロングラインモードはイネーブルです。
0:ロングラインモードはディセーブルです(デフォルト)。
条件 なし。パワーオンリセットやマスターリセット(MRピン)が発生すると、LLMは0に戻ります。
用途 ロングラインモードでは、書込み1のロー時間、データサンプリング時間、リカバリ時間が変更されます。詳細については、表5 「DQ信号のタイミング仕様」を参照してください。

1-Wireポートの説明

1-Wireポートは信号DQとSTPZを使用します。1-Wire通信はDQ上で行われます。DS1WMは、リセット/プレゼンス検出サイクル、書込み0のタイムスロット、書込み1のタイムスロット、データ読取りタイムスロットの各1-Wire通信波形をサポートしています。

リセット/プレゼンス検出サイクル

この信号(図6)は、2つの要素で構成されます。1つはリセットロー時間tRSTL中のDS1WMプルダウンであり、もう1つはtPDHの遅延後に1-WireスレーブがtPDLの間、ラインローをプルしてそのプレゼンスを通知するtRSTHウィンドウです。プレゼンスパルスを確認する場合、DS1WMはまずtPDWだけ待った後、tPDSWの間、DQの電圧をサンプリングします。DS1WMはtPDHとtPDLの継続時間を制御しないことに注意してください。
DS1WMは、スレーブによって生成されたプレゼンスをマスクするように構成することができます(「制御レジスタ」のPPMビットを参照)。PPMビットが1である場合、DS1WMは、tPPMSで始まり、tPPMEまで続くプレゼンスパルス(点線)を生成します。
図6. リセット/プレゼンス検出サイクル
図6. リセット/プレゼンス検出サイクル

書込み0のタイムスロット

このタイムスロット(図7)は、tW0Lで規定されるDS1WMプルダウンとリカバリ時間tREC0の2つの要素で構成されます。tW0LとtREC0の合計は、tSLOTに等しくなります。
図7. 書込み0のタイムスロット
図7. 書込み0のタイムスロット

書込み1のタイムスロット

このタイムスロット(図8)は、tW1Lで規定されるDS1WMプルダウンとそれ以外のタイムスロット部分の2つの要素で構成されます。
図8. 書込み1のタイムスロット
図8. 書込み1のタイムスロット

データ読取りタイムスロット

このタイムスロット(図9)は、tW1Lで規定されるDS1WMプルダウン、スレーブプルダウン時間、それ以外のタイムスロット部分の3つの要素で構成されます。tMSRでは、DS1WMがDQで電圧をサンプリングします。1-Wireスレーブが0で応答する場合は、tW1Lが終わる前にDQラインをローにプルし始めることに注意してください。
図9. データ読取りのタイムスロット
図9. データ読取りのタイムスロット
表5. DQ信号のタイミング仕様(注1)
Symbol Parameter Conditions Min Max Units
τ Time base period (Note 2) 0.8 1 µs
tSLOT Time-slot duration Standard speed, LLM = 0 56 70 µs
Standard speed, LLM = 1 64 80
Overdrive speed 8 10
tW0L Write-zero low time Standard speed 48 60 µs
Overdrive speed 6.4 8
tW1L Write-one/read low time Standard speed, LLM = 0 4.8 6 µs
Standard speed, LLM = 1 6.4 8
Overdrive speed 0.8 1
tMSR Read sample time Standard speed, LLM = 0 12 15 µs
Standard speed, LLM = 1 19.2 24
Overdrive speed 1.6 2
tREC0 Write-zero recovery time Standard speed, LLM = 0 8 10 µs
Standard speed, LLM = 1 16 20
Overdrive speed 1.6 2
tRSTL Reset low time Standard speed 480 600 µs
Overdrive speed 56 70
tRSTH Reset high time Standard speed 384 480 µs
Overdrive speed 46.4 58
tPDW Presence-detect wait time Standard speed, LLM = 0 8 10 µs
Standard speed, LLM = 1 8 10
Overdrive speed 1.6 2
tPDSW Presence-detect sample window Standard speed, LLM = 0 48.8 61 µs
Standard speed, LLM = 1 60.8 76
Overdrive speed 6.4 8
tPPMS Presence-pulse mask START Standard speed only 16 20 µs
tPPME Presence-pulse mask end Standard speed only 72 90 µs
注1 タイミングの値は内部ロジックに依存します。I/Oドライバが低速であれば、これらの時間もそれ相応に変化します。
注2 表4に基づいたシステムクロックCLK入力周波数とクロック分周比の設定。

STPZのタイミング

イネーブルされた場合(「制御レジスタ」のSTPENビットを参照)、STPZ信号は特定の時点で外付けpチャネルトランジスタをアクティブにして、1-Wireバスのリチャージを促進します。この機能は通常、オーバードライブ速度の場合と大規模ネットワークで標準速度の場合に必要になります。図10と図11は、リセット/プレゼンス検出サイクルと通信波形におけるSTPZ信号を示しています。
図10. リセット/プレゼンス検出サイクル中のSTPZのタイミング
図10. リセット/プレゼンス検出サイクル中のSTPZのタイミング
図11. 読取り/書込みタイムスロット中のSTPZのタイミング
図11. 読取り/書込みタイムスロット中のSTPZのタイミング
通信プロトコル中には、いくつかの1-Wireスレーブが特定の時点で余分な電力を必要とします。この余分な電力を供給する機能は、制御レジスタのSTP_SPLYビットによってイネーブルされます。STPENとSTP_SPLYの両方がイネーブルされている場合、STPZ信号は可能な限りアクティブ(ロー)にとどまります(図12と図13を参照)。
図12. リセット/プレゼンス検出サイクル中に電力供給機能を使用したSTPZのタイミング
図12. リセット/プレゼンス検出サイクル中に電力供給機能を使用したSTPZのタイミング
図13. 読取り/書込みタイムスロット中に電力供給機能を使用したSTPZのタイミング
図13. 読取り/書込みタイムスロット中に電力供給機能を使用したSTPZのタイミング
表6. STPZのタイミング仕様(注1)
Symbol Parameter Conditions Min Max Units
tON1 Active time for presence detect Standard speed 6.4 8 µs
Overdrive speed 0.8 1
tON2 Active time for presence detect recovery   8 10 µs
tON3 Active time for write-one recovery (Notes 2, 3) Standard speed 51.2 64 µs
Overdrive speed 7.2 9
tON4 Active time for write-zero recovery (Notes 2, 3) Standard speed 6.4 8 µs
Overdrive speed 0.8 1
tDLY1 Delay time for presence detect   0.8 1 µs
tDLY2 Delay time for presence detect recovery (Note 4) Standard speed 399.2 499 µs
Overdrive speed 31.2 39
tDLY3 Delay time for write-one and write-zero recovery   0.8 1 µs
tOFF1 Turn-off time for 1-Wire Reset   1.6 2 µs
tOFF2 Turn-off time for write-one and write-zero (Note 5) 0.8 1 µs
注1 タイミングの値は内部ロジックに依存します。I/Oドライバが低速であれば、これらの時間もそれ相応に変化します。
注2 1バイト内のビットの送信と受信にはタイミングの違いはありません。バイトの最終ビットが送信で終わるときに差が生じます。このとき、信号は次のリセットまたはタイムスロットが始まるまで継続的にイネーブルであるか、あるいはtON3またはtON4の間のみイネーブルになります。
注3 書込みタイムスロットに対して読取りを実行する場合、マスターは1の書込みと0の書込みに対して同じアクティブ時間を提供します。ただし、ハイの値についてはDQラインからの入力が1µsごとに検出されます。DQがハイの場合、STPZ信号はイネーブルです。DQラインがローの場合、STPZ信号はハイが検出されるまでディセーブルのままです。すべての書込みタイムスロットで、ハイはただちに検出されます。
注4 このパラメータは、マスターがDQ入力レベルの監視を開始するまでの時間遅延です。ラインがすでにハイであれば、STPZはイネーブルされます。ハイでなければ、DQラインの回復後、次のステートマシンクロックまで待ってSTPZをイネーブルします。
注5 バイト送信の最初のビットは、マスターのステートマシンが経由する状態の順序のために、tOFF2が4µsに延長されます。

デバイスの動作

起動後、ホストはまずクロック分周比レジスタにアクセスしてプリスケーラと分周器の必要な値を書き込み、1-Wireタイミングシステムをイネーブルします。アプリケーションでSTPZ出力を使用する場合は、制御レジスタのSTPENビットを設定する必要があります。アプリケーションでINTR信号を使用する場合は、ホストが割込みイネーブルレジスタに書込みを行ってINTRのアクティブ状態極性を定義し、INTR信号をアクティブ化する際の条件を選択します。これでセットアップフェーズは完了です。この時点で、DS1WMが標準速度、バイトモードで動作する準備が整います。

1-Wireリセット/プレゼンス検出サイクルの生成

ホストがコード01hをコマンドレジスタに書き込みます。プレゼンス検出割込みがイネーブル(EPDビット)の場合は、DS1WMがリセット/プレゼンス検出サイクルでビジー状態となっている間、ホストが他のタスクを実行することがあります。サイクルが完了した後、ホストは割込みレジスタ(PDRビット)を読み取ってプレゼンスパルスが検出されたかどうかを確認します。

1-Wireラインに対するバイト書込み

1-Wireバスで1バイトを送信する場合、ユーザーは目的のデータを送信バッファに書き込みます。そのデータはTransmit Shiftレジスタに移され、そこでLSB側からバスに順次シフトされます。その後、1バイトの新規データを送信バッファに書き込むことができます。Transmit Shiftレジスタが空になると、そのデータがただちに送信バッファから移されます。こうしたプロセスが繰り返されます。これらの各レジスタには、割込みソースとして使用可能なフラグがあります。送信バッファが空になり、新規バイトを受け入れ可能になると、送信バッファエンプティ(TBE)フラグが設定されます。1バイトが送信バッファに書き込まれると、ただちにTBEはクリアされます。Transmit Shiftレジスタ内のデータがなくなり、新規バイトを受け入れ可能になると、Transmit Shiftレジスタエンプティ(TEMT)フラグが設定されます。1バイトのデータが送信バッファから移されると、ただちにTEMTはクリアされ、TBEが設定されます。

1-Wireラインからのバイト読取り

1-Wireバスからデータを読み取るには、まずスレーブデバイスが事前にDS1WMから受け取ったコマンドによって送信準備を整えている必要があります。1-Wireラインからの読取りは、書込みの場合と似ています。ホストがFFhバイトを送信バッファに書き込むことによって読取りを開始します。この書込みデータとスレーブデバイスからのデータのワイヤードANDがReceive Shiftレジスタにシフトされます。Receive Shiftレジスタがフルになると、そのデータは受信バッファに移され、ホストによるアクセスが可能になります。スレーブデバイスが送信可能な状態にない場合、受信されるデータは送信されたデータと同じになります。Receive Bufferレジスタも割込みを生成可能です。受信バッファフラグ(RBF)は、Receive Shiftレジスタからデータが移されると設定され、ホストがレジスタを読み取るとクリアされます。RBFが設定された場合、1-Wireバスでそれ以上の送信を行わないようにします。そうしなければ、受信バッファ内のバイトが次の受信バイトによって上書きされ、データが失われる可能性があります。

ビットモードでの1-Wire通信

ビットモードをアクティブ化する場合は、ホストが制御レジスタのBIT_CTLビットに1を書き込みます。その後のホストとDS1WM間の通信はバイトモードの場合と同じです。ただし、送信/受信バッファの最下位ビットのみが使用されます。

標準速度とオーバードライブ速度の切替え

1-Wireの速度を切り替える場合は、ホストが制御レジスタのODビットに1 (オーバードライブ)または0 (標準)を書き込みます。ODビットを更新した後の1-Wire通信は、すべて新しい速度で行われます。ロングラインモード(LLMビット)は標準速度の一種です。

スレーブが必要とする余分な電力の供給

1-Wireスレーブのデータシートには、機能コマンド実行中、どのような場合に余分な電力が要求されるかが明記されています。そうしたスレーブに対処する場合、ホストはそのスレーブが余分な電力を必要とする状態に近付くまで、リセット、バイト、またはビットの機能を使用してDS1WMを動作させます。その後、ホストは制御レジスタのSTPENとSTP_SPLYの両ビットを設定します。次にホストは、スレーブが余分な電力を必要とすることになるバイトまたはビットの読取り/書込み操作を実行します。その後、ホストは大電力のフェーズが終わるまで待ってから、制御レジスタに再びアクセスしてSTP_SPLYビットに0を書き込みます。STPENビットは設定したままでかまいません。この電力供給機能は、図1に示すように、STPZピンがトランジスタに接続されている場合にのみ機能します。

検索アクセラレータの動作

アプリケーションノート187 「1-Wire検索アルゴリズム」は、ROM検索機能の仕組みを説明しています。検索アクセラレータは、1-Wire検索実行時にホストとDS1WM間の通信を最小限に抑える機能です。DS1WMの検索アクセラレータは、DS2480Bのアクセラレータとまったく同じです。そのため、アプリケーションノート192 「シリアル1-WireラインドライバDS2480Bの使用」(「OWSearch」の項)で説明している検索の原理は、DS1WMに対しても有効です。もちろん、DS2480B固有のコマンドやエコーバイトは、DS1WMには当てはまりません。
検索アクセラレータを使用する場合は、1-Wireリセット/プレゼンス検出サイクルを実行し、Search ROMコマンド(F0h)をバイトモードで送信済みである必要があります。検索アクセラレータは、コマンドレジスタのSRAビットに1を書き込むことによってアクティブ化されます。
検索アクセラレータがアクティブ化された後、ホストは16個のバイトを送信すれば1-Wireバスで1つのROM検索パスを完了させることができます。これらのバイトの構造は次のとおりです。
1番目のバイト
7 6 5 4 3 2 1 0
r3 x3 r2 x2 r1 x1 r0 x0
Etc.
16番目のバイト
7 6 5 4 3 2 1 0
r63 x63 r62 x62 r61 x61 r60 x60
この構造図で、インデックス(値0~63、「n」)は1-WireデバイスのROM ID内のビット位置を示します。文字「x」はフィラーの役割を果たし、特定の値を必要としないビットを示します(任意ビット)。文字「r」は、ROM検索実行中に競合が発生した場合、その特定のビットに書き込む選択されたビット値を示します。
各ビット位置n (値0~63)について、DS1WMは1-Wireバス上で3つのタイムスロットを生成します。これらは次のように表現されます。
b0 :第1のタイムスロット(データ読取り)
b1 :第2のタイムスロット(データ読取り)
b2 :第3のタイムスロット(データ書込み)
DS1WMは、タイムスロットb2のタイプ(1の書込み/0の書込み)を次のように決定します。
b2 = rn:競合発生時(ホストが選択した値)
= b0:競合なし(選択肢なし)
= 1:エラー(応答なし)
検索アクセラレータを使用したROM検索機能による1つの完全パス中にホストが受信バッファから読み取る16個の応答バイトの構造は、次のとおりです。
1番目のバイト
7 6 5 4 3 2 1 0
r'3 d3 r'2 d2 r'1 d1 r'0 d0
Etc.
16番目のバイト
7 6 5 4 3 2 1 0
r'63 d63 r'62 d62 r'61 d61 r'60 d60
前と同様に、インデックス(値0~63、「n」)は1-WireデバイスのROM ID内のビット位置を示します。文字「d」は、その特定のビット位置における不一致フラグを示します。不一致フラグは、その特定のビット位置に競合が存在するか、または応答がなかった場合は1で、それ以外の場合は0です。文字「r'」は、その特定のビット位置で実際に選択された経路を示します。選択された経路は、ROM IDの特定のビット位置に対するb2と同一です。
ROM検索シーケンスを実行する場合は、すべてのrnビットが0である状態で開始します。バスエラーが発生すると、その後のすべてのシーケンス応答ビットr'nは、コマンドレジスタのSRAビットに0を書き込むことによって検索アクセラレータが非アクティブ化されるまで1です。そのため、r'63とd63が両方とも1である場合は、検索手順中にエラーが発生したということであり、最後のシーケンスを繰り返す必要があります。それ以外の場合、r'n (n = 0~63)は、検出されてアドレス指定されたデバイスのROM IDです。ホストがこのスレーブについてメモリ機能を実行する場合は、まず検索アクセラレータを非アクティブ化する必要があります。
ホストが引き続きROM検索によって残りの1-Wireスレーブを特定する場合は、まずDS1WMに対して検索アクセラレータをオフするように指示し、1-Wireリセット/プレゼンス検出サイクルを実行して、Search ROMコマンドを送信します。その後、検索アクセラレータは再びアクティブにする必要があります。
次のROM検索シーケンスについては、以前のセットrn (n = 0~63)を再利用しますが、rm (「m」は1である最上位の不一致フラグのインデックス番号)を1に設定し、すべてのri (i > m)を0に設定します。
最上位の不一致が2つの連続するパスに対して同じビット位置で発生すると、すべての部品が検出されます。

アプリケーションの情報

FPGAまたはASICに、設計したDS1WMを集積化します。図14では、マイクロプロセッサを実装した設計モジュールによって、1-Wire通信の負荷をDS1WMに処理させることが可能です。
図14. FPGAまたはASICの標準アプリケーション
図14. FPGAまたはASICの標準アプリケーション

検証

業界では、一般にIPブロックの検証レベルを以下の表記で示しています。
  • ゴールドIPは、ターゲットシリコンまで検証済みです。
  • シルバーIPは、FPGA内のターゲットシリコンまで検証済みです。
  • ブロンズIPは、論理タイミングクロージャを使用したシリコンモデルで検証済みです。
  • 開発中IPは、未検証です。
:DS1WMはシルバーの状態を達成しています。

製品内容

DS1WMのパッケージには、以下のものが含まれています。
  • Verilog HDL
  • VHDL
  • Verilogテストベンチ
  • セットアップとスクリプトに関するReadme情報
無料のDS1WM IPは、https://support.maximintegrated.com/jp/1-Wireからご請求ください。

まとめ

合成可能1-WireバスマスターのDS1WMは、細部まで自社開発しなくても1-Wire通信を実現することができる手段を提供します。DS1WMはFPGAやASICに組み込むことが可能で、その状態ではメモリマッピングされたデバイスとして認識されます。DS1WMは、すべての1-Wireスレーブデバイスの通信と電力供給の要件を満たします。