|
|
キーワード: DS1WM, 1WM, 1-Wire, 1-Wireマスタ, DS89C200, ASIC, Verilog, VHDL, 1wire, 1 wire
関連製品
|
|
|

|
|
FPGAまたはASICへの1-Wire®マスタの組み込み
|
要約:このアプリケーションノートでは、1-Wireマスタ(1WM)をユーザのASIC設計に組み込む方法について説明しています。また、Verilogで1-Wireマスタのインスタンスを作成する方法についても要約しています。このアプリケーションノートで参照しているDS89C200は、ロジックマイクロコントローラです。読者は、一般的なDS1WM 1-Wireマスタと1-Wireプロトコルの知識があることを前提にしています。
はじめに
1WMと呼ばれるDS1WM 1-Wireマスタは、ビットタイミングの問題をなくした1-Wireバスに接続されたデバイスとのホストCPU通信を容易にするために開発されました。このアプリケーションノートでは、1-Wireマスタ(1WM)をユーザのASIC設計に組み込む方法について説明しています。このアプリケーションノートで参照しているDS89C200は、ロジックマイクロコントローラです。読者に、一般的なDS1WM 1-Wireマスタとマキシムの1-Wireプロトコルの知識があることを前提にしています。詳細については、アプリケーションノート937 「Book of iButton Standards」およびDS1WMのデータシートを参照してください。
構造
1WMは、4つのサブモジュールを連結して完全な装置を形成する、トップレベルのハーネスとして用意されています。トップレベルのハーネスには、HDLコードはありません。4つのサブモジュールファイルは、one_wire_interface、one_wire_master、clk_prescaler、およびone_wire_ioから構成されています。クロックプレスケ―ラを必要としないアプリケーションで、clk_1us信号のために外部1MHzクロックソースが供給されている場合、このモジュールを省くことができます(DS1WMデータシートにτとして示されていますが、入力クロックは0.8MHz~1.0MHzまでと指定されています)。
one_wire_ioモジュールは、DATAとDQ信号について双方向の信号を提供します。DQ信号は多くのアプリケーションでI/Oピンになります。この場合、DQのパッドドライバは適正なESD保護を備えたオープンドレインパッドでなければなりません(図1)。また、周辺デバイスがDS1WMの供給電源より大きいプルアップ電圧を使う場合、パッドドライバは、余剰な電圧に耐えることができるものでなければなりません。この場合、ダイオードクランプを使うことはできません。100Ωの出力ドライバ(Q1)と、チップのVCCには4.7kΩの外部DQプルアップを推奨します。適正な通信を確立するために、チップVCCは1-WireスレーブのVIHよりも大きくなければなりません。

図1. DQパッドドライバ(one_wire_io)
ライブラリ
Verilogソースをコンパイルするのに外部ライブラリは必要ありません。VHDLソースバージョンには、IEEE.std_logic_1164とwork.std_arithの両方のライブラリが必要です。
接続
次の表は、1-Wireマスタが正常に動作するために接続しなければならないワイヤを示しています。
| Pin |
Operation |
| DQ |
Open Drain Bi-directional 1-Wire Bus Connection |
| DATA |
Bi-directional 8 Bit Data Bus |
| ADDRESS |
3 Bit Address Bus |
| ADS-bar |
Address Strobe |
| EN-bar |
Instance Enable |
| RD-bar |
Read Data Strobe |
| WR-bar |
Write Data Strobe |
| INTR |
Interrupt Detection |
| CLK |
System Clock |
| MR |
Mater Reset |
アドレスストローブがシステム内で利用できない場合、/ADSをローに接続し、アドレスラッチをトランスペアレントにすることができます。/EN信号は、1Wマスタモジュールの外部のアドレスデコードロジックによって生成する必要があります。1WMがデータバスの唯一のインスタンスである場合、/ENはローに接続することができます。CLKに接続されているシステムクロックは、3.2MHz~128MHzの範囲でなければなりません。すべての接続の詳細な動作については、DS1WMのデータシートを参照してください。
例
以下の例は、Verilogで1-Wireマスタのインスタンスを作成する方法を示しています。
module DS89C200 (...top level list...);
wire [7:0] DB;
wire [2:0] ADDR;
wire sysclk, read-bar,
write-bar, master_reset,
interrupt, addr_strobe;
wire DQ_OUT;
supply1 Tie1;
supply0 Tie0;
cpu xcpu(.CLK(sysclk),
.DB(DB),
.EXTRD-bar(read-bar),
.EXTWR-bar(write-bar),
.EXTADDR(ADDR),
.RESET(master_reset),
.EXTINTR(interrupt),
.ADDR_ST(addr_strobe),
... other I/O signals ...);
onewiremaster xonewiremaster(
.ADDRESS(ADDR),
.ADS-bar(addr_strobe),
.EN-bar(Tie0),
.RD-bar(read-bar),
.WR-bar(write-bar),
.DATA(DB),
.INTR(interrupt),
.CLK(sysclk),
.DQ(DQ_OUT),
.MR(master_reset) );
... rest of design ...
xcpuで生成されたすべての信号は、1-Wireマスタのタイミング要件を満たしています。データバス上にその他のアドレス可能なロジックがないので、/EN信号はローに接続されます。DQ_OUT信号は、直接I/Oパッドに接続されています。
合成
この設計の合成は、非常に簡単です。個々のサブモジュールを個別にコンパイルし、その後、オプションとしてトップレベルをコンパイルするボトムアップアプローチを推奨します。sysclk信号に伴うclk_1us信号に対して、タイミングの制約を与える必要があります。さらに、/WR、/RD、/EN、/ADS、およびMRなど非同期の制御信号のいくつかに対して、タイミングの制約が必要となる場合があります。また、クロック信号にバッファが挿入されないようにするため、clk_1usにも制約が必要となる場合があります。ほとんどの場合、クロックツリーなどのクロック分配手法が必要になります。
ソースコードには、合成スクリプト例と、Synopsysデザインコンパイラとともに使用することができるメークファイルが含まれています。これらを使用するには、ターゲット合成ライブラリを定義する.synopsys_dc.setupファイルを作成する必要があります。また、出力駆動強度と入力負荷を指定するために使われるデバイスをターゲットライブラリから指定する環境ファイル(「environment」と呼ばれる)を変更する必要があります。これらのスクリプト例は非常に一般的なものです。実際のスクリプトと制約ファイルは、特定設計のタイミング要件に適合するようにエンジニアによって作成されます。ここで念頭に置くべきことは、1-Wireマスタブロックのタイミングは意図的に完全同期ではないということです。DQ出力はCLKに同期しますが、バスのリード/ライトのタイミングは、CPUがCLKを使って/RD、/WR、および/ADSを生成する場合にのみCLKに同期します。これらの信号についてはタイミング関係の仕様を参照してください。
この設計例は、完全な自己完結型の設計です。FPGAとASICのターゲットに問題なく正常にコンパイルされています。標準的なASICターゲットライブラリに合成したとき、この設計は合計1934の2入力NANDゲートまたは237スライスのXilinx® Spartan 3A FPGAを使用します。
XilinxはXilinx, Inc.の登録商標および登録サービスマークです。

フィードバックをお寄せください。 内容に満足されましたか、あるいは満足されていませんか?もっと良いページにできると思いますか?あるいは、単なるコメントでも結構です。フィードバックをお待ちしています。—マキシムはお客様からいただく訂正、提案を元に改善していきます。
このページを評価し、フィードバックを送信する。
APP 119: Oct 03, 2005
アプリケーションノート119,
AN119,
AN 119,
APP119,
Appnote119,
Appnote 119
|
|
|