Integrated当ウェブサイトを利用することによりクッキーの使用に同意したことになります。iButton®デバイスを含むすべての1-Wire®デバイスには、読取り専用メモリ(ROM)内に8バイトの一意の登録番号が含まれています。この登録番号は、1-Wireバス上で一意のネットワークアドレスとして使用されます。CRCバイトとして使用されています。CRCの計算方法について説明します。デバイスのメモリ内に保存されているレコードの検証に使用する16ビットCRCについても説明します。CRCとCRC-16はどちらも、選択された1-Wireデバイスのハードウェア内で生成され、データを検証します。はじめにマキシムのiButton製品は、1-Wireプロトコルと呼ばれる特別なコマンドシーケンスに従って、単線を使ってすべての通信を行うデバイスファミリです。各デバイスの重要な特長は、製造時に各部品に書き込まれた8バイトの一意のROMコードです。この8バイトのコードの構成を図1に示します。最下位バイトには、iButton製品の種類を特定するファミリコードが格納されます。(16進数)のファミリコードを持ちます。同種または異種のファミリの複数デバイスが、同じ1-Wireバスに同時に存在することが可能であるため、1-Wireバス上に配置された各デバイスに正しくアクセスする方法をホストが決定することが重要です。ファミリコードが、この情報を提供します。次の6バイトは、同じファミリコードに属する複数のデバイスを区別できるようにするための一意のシリアル番号です。この一意のシリアル番号は、1-Wireバス上の各デバイスの「アドレス」と考えることができます。1-Wireデバイスの集合全体にホストを加えたものが、一種の小規模なローカルエリアネットワーク(MicroLAN)を形成し、これらがすべて共通の単線で通信します。各デバイスのROMコード内の最上位バイトには、巡回冗長検査(CRC)の値が格納されており、これはその部分よりも前にある7バイトのデータに基づいたものです。ホストシステムがデバイスと通信を開始するとき、LSBを先頭として8バイトのROMを読み取ります。ホストによって計算されたCRCがROMデータのバイト7に含まれるCRCと一致すれば、その通信は正しいと考えることができます。一致しない場合はエラーが発生しており、ROMコードを再び読み取る必要があります。CRCを使用したiButtonのシステム構成iButton製品の中には、適切なコマンドを用いてホストシステムがアクセス可能なROMの8バイトに加えて、最大8kBのランダムアクセスメモリ(RAM)を持つものもあります。iButtonデバイスがCRCハードウェアを搭載していない場合でも、ホストがROMコードのCRC値を計算することが可能であれば、CRCを使用してデバイスのRAM部分にデータを保存したり取り出したりする方法を開発することも可能です。データは通常の方法でデバイスに書き込むことができます。次に、ホストによって計算されたCRC値が付加され、データとともに保存されます。このデータをiButtonデバイスから取り出すときは、逆のプロセスとなります。ホストは、データバイト用に算出されたCRC値と、そのデータのCRCとしてメモリ内に保存された値とを比較します。2つの値が同じであれば、iButtonデバイスから読み取ったデータは正しいと考えることができます。CRCの能力を活用して1-Wireバス上のシリアル通信を検証するためには、CRCがどのようなものか、またその働きについて理解しておく必要があります。ハードウェアまたはソフトウェア実装には、ホストによるCRC値の計算を実際に行う必要があります。背景シリアルデータは、さまざまな方法でエラーチェックを行うことができます。一般的な方法の1つとしては、チェックする各パケットにビットを追加して、エラーが発生したかどうかを表示することです。8ビットのASCII文字のパケットにおいて、ASCII文字に追加ビットを付加し、文字にエラーが含まれるかどうかが分かるようにします。11010001というビット列からなるデータについて考えてみましょう。1であるビットの総数が常に奇数になるように9番目のビットを付加することにします。すると1が付加され、データパケットは111010001となります。下線を引いた文字は、9ビットのパケット全体で奇数ビットとなるために必要なパリティビットの値を示しています。受け取ったデータが111010001であれば、情報は正確であると見なされます。受け取ったデータが111010101である場合、つまり、左から7番目のビットが誤って受け取られた場合、1の総数は奇数とはならず、エラー状態が検出され、適切な処置が講じられます。この種の方式は、奇数パリティと呼ばれています。同様に、1の総数が常に偶数となるような選択も可能で、これは偶数パリティと呼ばれます。この方式は、奇数のビットエラーを検出する場合に限られます。上記の例では、データが壊れて111011101となった場合、つまり、左から6番目と7番目のビットが誤りである場合、パリティチェックでは正しいものと見なされますが、偶数または奇数パリティのいずれが使用されていても、エラーは検出されないままです。CRC最小限のハードウェアを用いてシリアルデータストリーム内のエラーを発見する最も有効なエラー検出方式は、CRCです。ここでは、マキシムの製品で使用されるCRC機能の動作と特性について説明します。命令文や記述文を証明する数学的な詳細は省かれています。CRCの特性の背景にある数学的な概念については、参考資料に詳しく説明されています。CRCは、図2に示すように、実際にはハードウェアで構築される機能(一般的に、フィードバックを備えたシフトレジスタ構成として表現される)と考えると、最も容易に理解することができます。CRCは、各項にバイナリ係数を持つ、ダミー変数Xによる多項式と見なされることもあります。係数は、シフトレジスタ実装の中に示されるフィードバックパスに直接対応します。ハードウェアで記述した場合のシフトレジスタの段数、すなわち多項式内に存在する最高次の係数が、算出されるCRC値の大きさを示します。デジタルデータ通信において一般的に使用されるCRCコードは、CRC-16およびCRC-CCITTで、それぞれが16ビットのCRC値を計算します。CRCの大きさは8ビットで、これを使用して各1-Wire製品に書き込まれた64ビットのROMコードをチェックします。このROMコードは、最下位バイトに書き込まれた8ビットのファミリコード、次の6バイトに書き込まれた48ビットのシリアル番号、および最上位バイトに書き込まれたCRC値(先行するROMの56ビットを用いて計算される)で構成されています。図2において排他的論理和ゲートによって示されたフィードバックパスの配置、すなわち多項式内の係数の存在が、CRCの特性とアルゴリズムの能力(データ内の特定タイプのエラーを見つける)を決定します。CRCの場合、検出可能なエラーのタイプは以下のとおりです。64ビット数値内の任意の場所にある奇数個のエラーのすべて64ビット数値内の任意の場所にあるダブルビットエラーのすべて8ビットの「ウィンドウ」内に含まれる任意のエラー群(1~8ビットの誤り)これより大きなエラー群のほとんど入力データは、図2に示されるシフトレジスタの第8段の出力と排他的論理和が取られます。シフトレジスタは、数学的には、除算回路と考えることができます。入力データは被除数で、フィードバックを備えたシフトレジスタが除数として働きます。得られた商は切り捨てられ、余りが、特定ストリームの入力データのCRC値となり、最後のデータビットがシフトインされた後にこの値がシフトレジスタ内に残ります。シフトレジスタの実装から明らかなように、最終結果(CRC値)は、非常に複雑な方法で、提示されたビットの履歴に依存しているということです。したがって、非常にまれな組合せのエラーが起こらない限り、この方法による検出から免れることはできません。マキシム1-Wireの8ビットCRC例2は、各データビットが入力された後のCRC値を計算しています。シフトレジスタ回路は、計算の開始と同時に常に0にリセットされます。(16進数)のファミリコードです。(16進数))が、次の8ビットデータのシフトレジスタへの入力として使用されると、64ビットの全データが入力された後のシフトレジスタにおける最終結果は、すべて0になるはずです。CRCアルゴリズムに常に当てはまります。(16進数)となります。この理由は、シフトレジスタの第8段の内容が、入ってくるデータビットに常に等しくなるからです。して、フィードバックを制御するEXORゲートの出力とシフトレジスタの第1段の次の状態値は常にロジック0となります。これによって、シフトレジスタは、各データビットの入力に伴って単純に0が左から右にシフトされ、最終的に8番目のビット以降すべてのレジスタが0で満たされます。マキシムの1-Wireの64ビットROMの構造は、この特性を用いて、ROMの読取りに使用するデバイスのハードウェア設計を簡素化しています。ホスト内のシフトレジスタが消去された後、CRC値を含むROMの64ビットが読み取られます。正しい読取りが行われると、シフトレジスタは再びすべて0となり、検出しやすい状態になります。0でない値がシフトレジスタ内に残ると、読取り動作を繰り返す必要があります。CRCの値を算出する別の手段になります。この方法をコード化する例を表1に示します。CRC内のEXORフィードバックゲートの存在に起因するものであることがわかります。別のソフトウェアソリューションとしては、CRCレジスタ内に現在保存されている任意の8ビットの値と新しいデータの任意の8ビットパターンに対して直接アクセスできるルックアップテーブルを構築するだけというものもあります。(16進数)という単純なケースでは、入力バイトに対して256種類のビットの組み合わせに対する値を求めてこれを行列に格納することができます。0~255)に等しくなります。(16進数)でない場合、現在のCRC値および任意の入力バイトに対するルックアップテーブルの値は単純化されたケースの場合と同じとなりますが、テーブルへのインデックスの計算は、下の式になります。(16進数)のケースの場合には、この式は単純なケースになります。この2番目の手法は、前の例のようにビット指向のコマンドではなくバイト単位による演算が可能であるため、計算にかかる時間を短縮することができます。トレードオフとしてメモリ容量が犠牲となります。これはプログラムコード以外に実質的にメモリが不要な最初の例に比べ、ルックアップテーブルを保存する必要があるため256バイトを消費するからです。この種のコードの例を例3に示します。表1は、参照テーブルの手法を用いて前の例を繰り返して示したものです。CRCの2つの特性が役立ちます。1つ目の特性は、ハードウェアによる実装の場合にすでに述べた通りです。(16進数)になるというものです(前述の説明を参照)。コードの正しい動作を確認するために使用可能な2つ目の特性は、CRCレジスタの現在の値の1の補数を入力するというものです。この理由は、表2に示すとおり、1の補数データが入力されたときのCRCレジスタの動作に注目することによって説明することができます。「はじめに」で説明したように、iButtonデバイスの中には、すべてのiButtonデバイスに存在する8バイトの一意のROMコードに加えて、RAMを持つものもあります。CRCの代わりに、16ビットのCRC値を使用してデータの完全性を保証することを推奨します。ここで推奨する特定のCRCは、一般的に、CRC-16と呼ばれています。シフトレジスタおよび多項式表現を図3に示します。図3から分かることは、16ビットCRCでは、16段がシフトレジスタに備わり、また多項式は16次の項を持つということです。先に述べたように、iButtonデバイスはCRC値を計算しません。ホストが値を生成し、実際のデータの末尾に16ビットCRC値を付加する必要があります。iButtonデバイスの「通信チャネル」、つまり金属接点の2つの表面の不確実性のため、データ転送には、一般的に3つのカテゴリに分類されるエラーが生じる可能性があります。1つ目は、短時間の断続的な接続が、データ内に少数のビットエラーを起こす場合で、通常のCRC-16機能はこのエラーを検出するように設計されています。2つ目のエラーは、接触が完全に失われたとき、たとえば、iButtonデバイスの読取り装置からの取外しが早すぎるときに発生するものです。この場合は、iButtonデバイスの無接続がホストによって「すべて1」と解釈されるため、データの最後の部分がロジック1として読まれることになります。通常のCRC-16機能は、ほとんどの条件においてこの状況も検知可能です。3つ目のエラーは、読取り装置内での短絡によって発生するもので、このエラーは、iButtonデバイスが正しく挿入されていなかった場合、あるいは読取り装置内で大幅に傾いたことがある場合に起こる可能性があります。読取り装置の短絡の場合、ホストはデータをすべて0として読み取ります。これは、CRCを使用する際に問題を起こす原因となります。(16ビットCRCの場合)であるかどうかを確認することであるからです。読取り装置が短絡されると、データおよびデータとともに保存されたCRC値はすべて0として読み取られ、誤った読取りが発生することになりますが、ホストが計算したCRCは、有効な読取りであると誤って示されます。この状況を回避するため、マキシムは、RAMに書き込まれたデータとともに、計算したCRC-16の値(CRC-16*)の補数を保存することを推奨しています。CRCのケースに類似したものになります。(16進数)となるはずです。(16進数)に初期化され、実際のデータおよび保存されたCRC-16*の値が読み取られます。(16進数)となるはずです。これによって、読取り装置の短絡によってだまされる可能性がなくなるため、システムの動作は大幅に改善されます。CRCケースと類似した方法で示すことができます(図3と図5を参照)。16ビットのCRCの動作は、理論的には先に述べた8ビットの場合と同じですが、16ビット値がエラー検出に利用できるようになるため、CRCの特性は変更されています。CRC-16機能において検出可能なエラーのタイプは以下のとおりです。CRC-16のハードウェア図と多項式CRC-16機能のハードウェア実装は、図3に示した機能図によって簡単にわかります。例4は、シングルビット演算を用いてCRC-16の値を計算する、ハードウェア動作に類似したソフトウェアソリューションを示しています。述べたように、ルックアップテーブルを使用することにより、計算負荷を軽減するソフトウェアソリューションを実現することができます。CRCルックアップテーブル用に示した基本的な概念がCRC-16のケースにも有効です。8ビットのケースの方法に若干の変更を加える必要があります。CRC-16機能で得られる16ビット全体を前述のとおり1つのテーブルにマッピングした場合、このテーブルは216または65,536エントリを持つことになります。別の手法を例5に示します。ここでは、16ビットのCRC値を計算し、2つの256エントリテーブルに保存されています(一方は得られたCRCの高次バイトを、他方は低次バイトを格納)。現在の任意の16ビットCRC値(現在の高次バイトはCurrent_CRC16_Hiと表され、現在の低次バイトはCurrent_CRC16_Loと表される)、および新しい任意の入力バイトに対して、新しい高次バイトのCRC値(New_CRC16_Hi)を見つけるための、高次バイトテーブルへのインデックスを求める式を下に示します。(入力バイト)新しい低次バイトのCRC値(New_CRC16_Lo)を見つけるための、低次バイトテーブルへのインデックスを求める式を下に示します。(入力バイト)この方法の動作の仕組みについての例を図4に示します。興味深い中間的な方法を例6に示します。このコードは、図5に示す式を使用して現在のCRC値と入ってくるバイトの全体を処理することによって、CRC-16に入力される各バイトごとにCRC-16の値を生成しています。式の展開も示されており、現在の16ビットのCRCの値をアルファベット文字で示し、入力されるバイトのビットを数字で示しています。8シフト後の結果が、式として示されています。次にこれらの式を使用して、新しいCRC値の大部分をあらかじめ計算することができます。(これらの全ビットのEXORとして定義)は、入ってくるデータバイトと現在のCRCの低次バイトのパリティです。この方法は、先に述べたビット単位やルックアップテーブルの方法に比べて、計算時間とメモリスペースが節約されます。最後に、テストケースとして使用可能なCRC-16機能の2つの特性について述べます。これは、前の方法のいずれについてもコードをデバッグするのに役立つものです。CRCのケースと同じです。(16進数)となります。CRCのケースと類似しています。(16進数)となります。CRCケースと同様の方法で証明されます。EE-Mail配信の登録申し込みをして、興味のある分野の最新ドキュメントに関する自動通知を受け取る。Inc.このウェブサイトのコンテンツは米国および各国の著作権法によって保護されています。お問い合わせください。totalPrice.value}}保存して後で見る​削除{{else}}購入カートには何も入っていません。無料サンプル​削除{{else}}サンプルカートには何も入っていません。{{else}}購入カートには何も入っていません。注文履歴を見るサンプルカートには何も入っていません。注文履歴を見る{{/each}}×ブックマークブックマークを利用するにはログインが必要です。MAXIMお知らせツールをクリックおよびドラッグしてダッシュボードをカスタマイズすることができます。>ご質問/ご意見をお寄せください。見積もり請求をご検討くださいx注意お客様のアカウントに制限がかけられているためご注文をお受けすることができません。カスタマーサポートまでご連絡ください。申し訳ありませんが、このサイトではビジネス/教育と関係のないEメールアドレスからのサンプル請求は受け付けておりません。マキシムの代理店マキシムにご興味をお持ちいただきどうもありがとうございます。x注意マキシム・インテグレーテッドにご興味をお持ちいただきどうもありがとうございます。マキシムの無料サンプルプログラムは、暦年につきお客様に提供できる数量を限らせていただいております。誤ってこのメッセージをお受け取りになった場合はsamples-admin@maximintegrated.comまでご連絡ください。distributorData.coreStaff.stockValue}}{{distributorData.coreStaff.stockValue}}{{/if}}価格は代理店のサイトにあります。製品IDを選択して、はじめてください。閉じるお客様の見積もり請求にお応えするためには以下情報が必要です。できるだけ詳しくお答えください。見積もり請求を送信キャンセルお客様の見積もり請求が送信されました。価格と入手性について24時間以内にお答えします。全カテゴリ最近行った。