AN-1554: REM スイッチfido5100/fido5200 とホストおよびネットワーク・プロセッサとのペアリング
はじめに
CANbus やRS-485 といった従来のフィールド・バス接続に代わり工業用イーサネット・デバイスを使用することが、工業用オートメーションやモーション・コントロール・アプリケーションにおいて必須となりつつあります。
リアルタイム・アプリケーションの処理には、高度な確定性と信頼性が要求されます。そして、Profinet 、EtherCAT 、Ethernet/IP、Sercos、Modbus TCP など、多くのプロトコルが主要な機器メーカー(OEM)によって導入されています。あらゆる工業用通信機器の設計において、これらのプロトコルと互換性を有すること、およびタイム・センシティブ・ネットワーキング(TSN)のような今後の機能拡張に対応するため更新が必要となる可能性のあることが、重要な考慮事項となります。アナログ・デバイセズのリアルタイム・イーサネット・マルチプロトコル(REM)スイッチfido5100/fido5200 は、一般的な工業用イーサネット・プロトコルのほとんどをサポートしています。このスイッチをfido1100 通信コントローラと組み合わせて使用することで、プログラマブルなマルチプロトコルのRapID プラットフォームを強化できます。fido5100/fido5200 REM スイッチは、Profinet IRT、EtherCAT、Ethernet/IP、Modbus TCP、およびPowerlink 向けに事前認証済みのソリューションを提供します。
このアプリケーション・ノートでは、様々なマイクロプロセッサとfido5100/fido5200 REM スイッチのホスト・インターフェースについて説明します。
メモリ・バス・インターフェースに加えて、イーサネット・インターフェースを制御するために必要な信号についても説明します。このアプリケーション・ノートでは、アクティブ・ロー信号は、信号名にオーバーラインを付けることによって区別します(例えばRESET)。
図1. fido5100/fido5200 およびソフトウェア・スタックをベースとした工業用イーサネット・デバイスのアーキテクチャ
ホスト・インターフェース
fido5100/fido5200 REM スイッチは、標準的な非同期メモリ・バス・ポートとして設計されたホスト・インターフェースを使用して通信プロセッサに接続します。
fido5100/fido5200 REM スイッチは、それぞれ2 個のイーサネット・インターフェースを備えており、Media Independent Interface(MII)またはReduced Media Independent Interface(RMII)をサポートしています。イーサネット物理層の性能には異なる条件が要求されるため、イーサネット物理層はスイッチから意図的に除外されています。
一般的なアーキテクチャを図2 に示します。
ホスト・インターフェースは、16 ビットまたは32 ビットのメモリ・バスで、アドレスとデータをマルチプレクスすることによりピン本数の削減を可能にしています。
マルチプレクス・バス選択(MBS)信号およびデータ・バス・サイズ(SIZE_32)信号で、このバスのモードを選択します。MBS およびSIZE_32 はRESET信号の立上がりエッジでサンプリングされます。
もう1 つ考慮すべきなのがエンディアンネスです。これはリトルエンディアン(LE)信号によって決定されます。LEのレベルもRESETの立上がりエッジでサンプリングされます。
スイッチのデータ・バスは、次のように定義されます。
- D0 は最下位ビット(LSB)です。
- D15 は16 ビット・バスの最上位ビット(MSB)です。
- D31 は32 ビット・バスのMSB です。
すべてのコントロール・レジスタとステータス・レジスタは16ビット幅のため、32 ビット・バスを使用している場合も、データはD15~D0 ビットを使用して転送する必要があります。エンディアンネスの扱い方、およびピン機能の詳細については、fido5100/fido5200 のデータシートを参照してください。
アドレス・バス用には4 ビットのデータがあり、16 個のアドレス・レジスタに直接アクセスできます。マルチプレクスされないデータ・バス(MBS = 0 等)の場合は、アドレス用にピンを4本追加することを検討する必要があります。
タイミング図(fido5100/fido5200のデータシート参照)は、マルチプレクスされないモードとマルチプレクスされるモードの両方について読出し動作と書込み動作を表しているため、これを参照することが重要です。
マルチプレクスされない動作の場合は、アドレス・セットアップ・タイム(tAS)が非同期メモリ・アクセスにおける重要なパラメータとなります。マイクロプロセッサのアーキテクチャに応じて、アドレス・ラインとCSは同時(tAS = 0)に、または微小な遅延時間で駆動することができます。
マルチプレクスされない動作に関しては、市販の多くのCortex®-M4ファミリ(アナログ・デバイセズのADSP-CM408FやSTM32F4等)、およびCortex-Axファミリ(アナログ・デバイセズのADSP-SC589やNXPのimx6等)が、遅延なしにCSとアドレス・ラインを駆動します。その他、Motorolaの68000アーキテクチャのような場合、CSはアドレス・ラインが有効になってからアサートされます。
fido5100/fido5200 REMスイッチは、CSの立下がりエッジを使用してアドレス・ラインをラッチします。遅延時間tASは小さくする必要があります(最小20ps)。
マイクロプロセッサがCSとアドレスを同時にアサートすると、CSには数nsの遅延が追加されます。例えば、ADSP-CM408Fは、fido5100/fido5200 REMスイッチに対して1チャンネルの高速非反転バッファ(通常は追加で2.5nsの遅延)でCSを駆動します。
マルチプレクスされるメモリ・アドレスの場合、アドレスとALE信号が有効になる間のタイミングには、使用するプロセッサに応じた短時間の遅延をALE信号に追加しなければならないこともあります。
割込み
3本の割込みラインがfido5100/fido5200 REMスイッチの出力として機能します。ホスト・マイクロプロセッサは、これらのラインを監視する必要があります。
MDIOインターフェース
イーサネット物理層はすべて設定が必要です。それらの物理層はステータス情報を提供可能です。多くのデバイスは、管理データ入出力(MDIO)インターフェースを使用します。この通信インターフェースは、データ・ライン(MDIO)と管理データ・クロック・ライン(MDC)の2本のラインで構成されています。
通信プロトコルの仕様は、IEEE802.3規格で定義されています。
fido5100/fido5200 REMスイッチはこの通信インターフェースを駆動しません。このため、ホスト・プロセッサがMDIOとMDCを管理できるようにする必要があります。
メモリ条件
理想的には、REMスイッチのドライバには50kB~100kBの読出し専用メモリ(ROM)が必要です。RapIDプラットフォームでは、fido1100は46kBのROMを使用します。
更に、工業用イーサネット・プロトコルによっては、複数のパケットを同時にプロセッサへ転送するため、8kBのRAMが必要となる場合があります。
ピン本数
最大ピン本数(125MB/sec、マルチプレクスされないバス)で設定する場合と、最小ピン本数(62.5MB/sec、マルチプレクスされるバス)で設定する場合のピン本数を表1に示します。ここで、MBS、SIZE_32、およびLEは固定レベルであると仮定します。マルチプレクスされないバスは45ピン、マルチプレクスされるバスは26ピンになります。
Signals | Nonmultiplexed Bus (32-Bit) | Multiplexed Bus (16-Bit) |
Data/Address | 32 | 16 |
RESET | 1 | 1 |
A02 to A05 | 4 | Not applicable |
WE | 1 | 1 |
CS | 1 | 1 |
OE | 1 | 1 |
ALE (A02) | Not applicable | 1 |
INTx | 3 | 3 |
MDIO/MDC (for External Physical Layers) | 2 | 2 |
相互接続ブロック図
ホスト・プロセッサまたはネットワーク・プロセッサとfido5100/fido5200 REMスイッチ、および2つのイーサネット物理層の完全な相互接続ブロック図を図4に示します。この図で、点線はマルチプレクスされるモードでのみ使用する接続を表します。マルチプレクスされるモードでは、4本のアドレス・ラインは接続せず、A02/ALEのみ接続してください。A02/ALEには2つの機能があります。マルチプレクスされるモードでは、A02ラインはアドレス・ラインを検証するALE信号として機能します。
REMスイッチのソフトウェア・ドライバ
REMスイッチのソフトウェア・ドライバによって、fido5100/fido5200とのプロトコルに依存しない標準インターフェースを実現できます。このソフトウェア・ドライバを使用して、初期化、割込み管理、タイマー管理、プロトコルに依存しないパケット送受信を実行します。
REMスイッチがサポートする各プロトコル(Profinet、Ethernet/IP、EtherCAT、ModbusTCP、POWERLINK)のソフトウェア・ドライバは、ソース・コードで入手可能です。
ドライバはC言語で書かれています。このドライバで、選択したプロトコル用にスイッチを設定します。
このファームウェアはホスト・プロセッサからダウンロードします。
通常、起動時に設定が行われますが、システムのリセット後はいつでも設定を行うことができます。
図5に示すように、CコードはAPI(アプリケーション・プログラミング・インターフェース)のセットで構成され、これらはプロトコル固有のインターフェースと標準スイッチ・インターフェースの2つの主要な機能領域にグループ化されています。
標準スイッチ・インターフェースにはあらゆるTCP/IP(Transmission Control Protocol/Internet Protocol)スタックを接続でき、プロトコル固有のインターフェースにはあらゆるプロトコル・スタックを接続できます。標準スイッチ・インターフェースはすべてのドライバで共通なため、TCP/IPスタックと接続しなければならないのは1回だけです。
プロセッサの開発環境におけるオペレーティング・システム(OS)の一部として提供されるTCP/IPスタックを選択することも、サード・パーティのベンダが提供するPROFINETスタックを選択することも可能です。
その後、プロトコル・スタックはホスト・プロセッサによって管理され、REMスイッチ・ドライバのプロトコル固有のAPIと接続します。同時に、REMドライバの標準スイッチAPIはOSのTCP/IPスタックと接続します。
ドライバはオペレーティング・システムのどのリソース(ノー・スレッディングやセマフォなど)にも依存しないため、移植が必要となるのは、ホスト・プロセッサとREMスイッチの通信方法やいくつかのデバッグ・オプションを定義する場合に限られます。
移植に関するコード(REMS_Port.hおよびREMS_Port.c)は、Portingディレクトリ(/Porting/inc/および/Porting/src/)にあります。
この2つのファイルは、個別のハードウェア・プラットフォームに応じて修正する必要があり、ホスト・プロセッサにも依存します。REMソフトウェア・ドライバのアーキテクチャを図6に示します。
アプリケーション例
ここでは、工業用アプリケーションで一般的に使用されるマイクロプロセッサ・アーキテクチャとのペアリングの例を示します。詳細については、それぞれの集積回路(IC)メーカーが提供する仕様書を参照してください。
アナログ・デバイセズのADSP-CM408F(FPU搭載のArm® CORTEX-M4)
ADSP-CM408Fには、柔軟な外部メモリ・インターフェースが搭載されています。このスタティック・メモリ・コントローラ(SMC)は、外部メモリを最大4バンク制御するようにプログラムできます。非同期のマルチプレクスされない16ビット動作が可能です。
fido5100/fido5200 REMスイッチとADSP-CM408Fプロセッサの接続を表2に示します。
REM Switches Signals | ADSP-CM408F Signals |
Data | SMC0_Dxx (from D00 to D15) |
RESET | GPIO pin |
A02 to A05 | SMC0_Axx |
WE | SMC0_AWE |
CS | SMC0_AMS0 (buffer needed) |
OE | SMC0_AOE |
INTx | GPIO pins |
MDIO/MDC (for External Physical Layers) | ETH0_MDIO/ETH0_MDC |
アナログ・デバイセズのADSP-SC589(ARM CORTEX-A5搭載の SHARC®+デュアル・コアDSP)
ADSP-SC589は、最大2ブロックの外部メモリを制御できるSMCを備えています。非同期のマルチプレクスされない16ビット動作が可能です。ADSP-CM408Fで推奨したように、CS信号には外部バッファが必要です。MDIOインターフェースは内蔵コントローラによって管理されます。
fido5100/fido5200 REMスイッチとSHARC + Armデュアル・プロセッサの接続を、表3に示します。
REM Switches Signals | ADSP-SC589 Signals |
Data | SMC0_Dxx (from D00 to D15) |
RESET | GPIO pin |
A02 to A05 | SMC0_Axx |
WE | SMC0_AWE |
CS | SMC0_AMS0 (buffer needed) |
OE | SMC0_AOE |
INTx | GPIO pins |
MDIO/MDC (for External Physical Layers) | ETH0_MDIO/ETH0_MDC |
ADSP-SC589にはフラッシュ・メモリが内蔵されていないため、プロセッサで、起動時に外部ROMからコードをダウンロードするようにREMスイッチをプログラムする必要があります。
ST MICROELECTRONICSの STM32F42ファミリ(FPU搭載のARM CORTEX-M4)
STM32F42ファミリにはフレキシブル・メモリ・コントロール(FMC)インターフェースが搭載されており、非同期で16ビットと32ビットのマルチプレクスされたアクセス、およびマルチプレクスされないアクセス動作が可能です。FMC_NE(チップ・セレクト)は、アドレスの有効化に最大2nsの時間が見込まれるため、この信号には長い遅延時間が必要となることがあります。
fido5100/fido5200 REMスイッチとSTM32F42プロセッサの接続を表4に示します。
REM Switches Signals | Nonmultiplexed Bus (32-Bit) STM32F42 Signals | Multiplexed Bus (16-Bit) STM32F42 Signals |
Data/Address | FMC_D[31:0] | FMC_D[15:0] |
RESET | GPIO pin | GPIO pin |
A02 to A05 | FMC_A[3:0] | Not applicable |
WE | FMC_NWE | FMC_NWE |
CS | FMC_NE1 (buffer needed) | FMC_NE1 |
OE | FMC_NOE | FMC_NOE |
ALE (A02) | Not applicable | FMC_NADV (inverter needed) |
INTx | GPIO pins | GPIO pins |
MDIO/MDC (for External Physical Layers) | ETH_MDIO/ETH_MDC | ETH_MDIO/ETH_MDC |
マルチプレクスされる動作の場合、FMC_NADVがアクティブ・ロー信号であるのに対して、fido5100/fido5200はアクティブ・ハイ信号でアドレスをラッチするため、インバータが必要です。この場合、fido5100/fido5200がアドレス・ラインをラッチするにはtw(NADV)の時間で十分であるため、遅延を追加する必要はありません。
ST MICROELECTRONICSの STM32F103ファミリ(ARM CORTEX-M3)
STM32F103ファミリは、フレキシブル・スタティック・メモリ・コントローラ(FSMC)を搭載しており、SRAMを含む様々な種類のメモリ・バンクを最大4つまで管理できます。FSMCは、非同期16ビットで、マルチプレクスされる動作とマルチプレクスされない動作が可能です。FSMC_NE(チップ・セレクト)は、アドレス・ラインが有効になる前に最大3nsでアサートされるため、この信号には長い遅延が必要となることがあります。
fido5100/fido5200 REMスイッチとSTM32F103プロセッサの接続を表5に示します。
REM Switches Signals | Nonmultiplexed Bus (16-Bit) STM32F103 Signals | Multiplexed Bus (16-Bit) STM32F103 Signals |
Data/Address | FSMC_D[15:0] | FSMC_D[15:0] |
RESET | GPIO pin | GPIO pin |
A02 to A05 | FSMC_A[3:0] | Not applicable |
WE | FSMC_NWE | FSMC_NWE |
CS | FSMC_NE1 (buffer needed) | FSMC_NE1 |
OE | FSMC_NOE | FSMC_NOE |
ALE (A02) | Not applicable | FSMC_NADV (inverter needed) |
INTx | GPIO pins | GPIO pins |
MDIO/MDC (for External Physical Layers) | GPIO pins | GPIO pins |
マルチプレクスされる動作の場合、FSMC_NADVがアクティブ・ロー信号であるのに対して、fido5100/fido5200はアクティブ・ハイ信号でアドレスをラッチするため、インバータが必要です。この場合、fido5100/fido5200がアドレス・ラインをラッチするにはtw(NADV)の時間で十分であるため、遅延を追加する必要はありません。このファミリのCortex-M3プロセッサには、MDIOインターフェースは実装されていません。
ただし、MDIO機能はソフトウェアを介してエミュレートしなければなりませんが、このプロセッサでは代わりに2個のGPIOを使用することができます。
TEXAS INSTRUMENTSの AM1808 SITARAファミリ(Arm9)
AM1808には、非同期のSRAMをサポートする外部メモリ・インターフェース(EMIFA)が搭載されています。EMIFAは、16ビットのマルチプレクスされないアクセスを管理できます。チップ・セレクト信号にはバッファが必要です。
fido5100/fido5200 REMスイッチとAM1808プロセッサの接続を表6に示します。
REM Switches Signals | AM1808 Signals |
Data | EMA_D[15:0] |
RESET | GPIO pin |
A02 to A05 | EMA_A[3:0] |
WE | EMA_WE |
CS | EMA_CS2 (buffer needed) |
OE | EMA_OE |
INTx | GPIO pins |
MDIO/MDC (for External Physical Layers) | MDIO_D/MDIO_CLK |
TEXAS INSTRUMENTSの TMS320F2807 PICCOLOファミリ (32ビット浮動小数点マイクロコントローラ)
TMS320F2807ファミリには、非同期のSRAMをサポートするEMIFAが搭載されています。EMIFAは、32ビットおよび16ビットのマルチプレクスされないアクセスを管理できます。チップ・セレクト信号にはバッファが必要です。
fido5100/fido5200 REMスイッチとTMS320F2807プロセッサの接続を表7に示します。
REM Switches Signals | TMS320F2807 Signals |
Data | EM1D[x:0] (x = 31 or 15) |
RESET | GPIO pin |
A02 to A05 | EM1A[3:0] |
WE | EM1WE |
CS | EM1CS2 (buffer needed) |
OE | EM1OE |
INTx | GPIO pins |
MDIO/MDC (for External Physical Layers) | GPIO pins |
このファミリの32ビット・プロセッサには、MDIOインターフェースは実装されていません。ただし、MDIO機能はソフトウェアを介してエミュレートしなければなりませんが、このプロセッサでは代わりに2個のGPIOをこの目的に使用することができます。
NXPのi.MX 6ULLファミリ(Arm CORTEX-A7)
i.MX 6ULLプロセッサには、16ビットで、SRAMに対してマルチプレクスされるアクセスとマルチプレクスされないアクセスが可能な外部インターフェース・モジュール(EIM)が搭載されています。
fido5100/fido5200 REMスイッチとi.MX 6ULLプロセッサの接続を表8に示します。
REM Switches Signals | Nonmultiplexed Bus (16-bit) i.MX6 Signals | Multiplexed Bus (16-bit) i.MX6 Signals |
Data/Address | EIM_DATAx [x = 15:0] | EIM_DATAx [x = 15:0] |
RESET | GPIO pin | GPIO pin |
A02 to A05 | EIM_ADx[3:0] | Not applicable |
WE | EIM_WE | EIM_WE |
CS | EIM_CS0 (buffer needed) | EIM_CS0 |
OE | EIM_OE | EIM_OE |
ALE (A02) | Not applicable | EIM_LBA (inverter needed) |
INTx | GPIO pins | GPIO pins |
MDIO/MDC (for External Physical Layers) | ENET_MDIO/ENET_MDC | ENET_MDIO/ENET_MDC |
マルチプレクスされる動作の場合、EIM_LBAがアクティブ・ロー信号であるのに対して、fido5100/fido5200はアクティブ・ハイ信号でアドレスをラッチするため、インバータが必要です。
EIM_LBAのアサート解除(アドレスのラッチング時間になります)はプログラマブルなパラメータに依存するため、W40Aのタイミングを計算する場合には注意が必要です。バッファが必要になることもあります。
タイミングW31(EIM_CSx有効からアドレス有効まで)はプログラマブルで、負の値にもできます(アドレスが有効になる前にCSがアサートされます)。バッファが必要になることもあります。