November 2012 cv_54025-1.2 cv_54025-1.2 ハードウェア プロセッサ システム (HPS) は Cortex -A9 マイクロプロセッサ ユニット (MPU) サブシステム ホスト プロセッサ および CAN プロトコルで使用するダイレクト メモリ アクセス (DMA) コントローラでのシリアル通信用に 2 つのコントローラ エリア ネットワーク (CAN) コントローラを提供しています CAN コントローラは Bosch D_CAN コントローラのインスタンスで ISO 11898-1 に対応しています CAN コントローラは 以下の機能を提供します Bosch のウェブサイト (www.semiconductors.bosch.de) で閲覧可能な CAN Protocol Specification 2.0 パート A およびパート B に対応 最大 1Mbps までのプログラム可能な通信レート 最大 128 通のメッセージまで保持 誤り訂正コード (ECC) 11 ビットの標準識別子および 29 ビットの拡張識別子 プログラム可能なループバック モード 大規模データ転送用の外部ダイレクト メモリ アクセス (DMA) コントローラ 自動再送信 2012 Altera Corporation. All rights reserved. ALTERA, ARRIA, CYCLONE, HARDCOPY, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos are trademarks of Altera Corporation and registered in the U.S. Patent and Trademark Office and in other countries. All other words and logos identified as trademarks or service marks are the property of their respective holders as described at www.altera.com/common/legal.html. Altera warrants performance of its semiconductor products to current specifications in accordance with Altera's standard warranty, but reserves the right to make changes to any products and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly agreed to in writing by Altera. Altera customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services. ISO 9001:2008 Registered Cyclone V Subscribe
図 25 1 に CAN コントローラのブロック図を示します CAN Bus Interface CAN_TXD CAN_RXD CAN Controller CAN Core System Manager ECC Control Signals Message RAM Message RAM Interface Message Handler Register Block Interrupt Request DMA Peripheral Request Interface Host Processor (MPU Subsystem) DMA Controller Slave Interface L4 Peripheral Bus CAN コントローラは 以下のモジュールとインタフェースから構成されています CAN コア CAN バス インタフェースに接続します ISO 11898-1 プロトコルの全ファンクションを処理します メッセージ ハンドラ メッセージ RAM および CAN コアの間でのデータ転送を制御するステート マシーンです 受け入れフィルタリングおよび割り込み生成を処理します メッセージ RAM 最大 128 のメッセージ オブジェクトの保存できます シングル ビット エラー訂正とダブル ビット エラー検出が可能です メッセージ RAM インタフェース IF1 および IF2 の 2 つの独立したインタフェースがあります Cyclone V
レジスタ ブロック モジュール セットアップ用と間接メッセージ オブジェクト アクセス用のコントロールおよびステータス レジスタ (CSR) があります メッセージ RAM へのホスト プロセッサ アクセスはすべて メッセージ RAM インタフェースを中継します CSR アクセス用の Level 4(L4) スレーブ インタフェース CAN コントローラは CAN プロトコルのバージョン 2.0 パート A およびパート B に応じて通信を実行します CAN バスでのすべての通信はメッセージ オブジェクトを経由します CAN コントローラは メッセージ オブジェクトをその内部メッセージ RAM に格納します ホスト プロセッサは 直接メッセージ RAM にアクセスできません そのかわり IF1 および IF2 メッセージ インタフェース レジスタのセットは ホスト プロセッサがメッセージにアクセスできるようにします メッセージは メッセージ ハンドラによってメッセージ RAN および CAN コアの間を通過します メッセージ ハンドラには 受け入れフィルタリング 割り込み生成 および送信リクエスト生成などのメッセージ レベルの役割もあります メッセージ RAM は 最大 128 のメッセージ オブジェクトを格納できます ホスト プロセッサのメッセージ RAM へのアクセスと CAN メッセージ送受信の間に起きうる衝突を回避するには ホスト プロセッサを直接メッセージ オブジェクトにアクセスさせないことです アクセスは IF1 および IF2 のメッセージ インタフェース レジスタを通して処理されます 表 25 1 に メッセージ オブジェクトの構造を示します 最初のロウにはメッセージ オブジェクトのコントロール フラグが含まれており 2 番目のロウにはメッセージ オブジェクトのマスクが 3 番目のロウには CAN メッセージがそれぞれ含まれています MsgVal NewDat MsgLst IntPnd TxIE RxIE RmtEn TxRqst EoB UMask Msk [28:0] ID [28:0] MXtd Xtd MDir Dir DLC [3:0] Data 0 [7:0] Data 1 [7:0] Data 2 [7:0] Data 3 [7:0] Data 4 [7:0] Data 5 [7:0] Data 6 [7:0] この項では メッセージ オブジェクトのコントロール フラグについて説明します MsgVal 0= メッセージ オブジェクトはメッセージ ハンドラに無視されます Data 7 [7:0] 1= メッセージ オブジェクトはコンフィギュレーションされて メッセージ ハンドラで認識される必要があります Cyclone V
ホスト プロセッサは CAN コントローラを初期化するために CAN コントロール レジスタ (CCTRL) の初期化ビット (Init) をリセットする前に未使用のメッセージ オブジェクトすべての MsgVal ビットを 0 に設定する必要があります メッセージ オブジェクトをそれ以上使用しない場合 MsgVal もゼロに設定する必要があります MsgVal フィールドは メッセージ バリッド レジスタ (MOVALA MOVALB MOVALC MOVALD および MOVALX) から直接読み出し可能です しかし 特別なメッセージ オブジェクト用として MsgVal フィールドに書き込む場合 ホスト プロセッサはメッセージ インタフェース レジスタに書き込む必要があります NewDat 0= どの新規データも ホスト プロセッサによってこのフラグがクリアされて以来 メッセージ ハンドラによってこのメッセージ オブジェクトのデータ部分に書き込まれていません 1= メッセージ ハンドラまたはホスト プロセッサは 新規データをこのメッセージ オブジェクトのデータ部分に書き込みました NewDat フィールドは 新しいデータ レジスタ (MONDA MONDB MONDC MONDD および MONDX) から直接読み出し可能です しかし 特別なメッセージ オブジェクト用として NewDat フィールドに書き込む場合 ホスト プロセッサはメッセージ インタフェース レジスタに書き込む必要があります MsgLst 0= ホスト プロセッサにこのビットがリセットされて以来メッセージ消失はありません 1= NewDat ビットがまだ設定されているときに ホスト プロセッサがメッセージを消失してしまったことを示すために メッセージ ハンドラは新規メッセージをこのオブジェクトに格納します MsgLst は メッセージ方向ビット (Dir) が受信になっているメッセージ オブジェクト中でのみ有効です IntPnd 0= このメッセージ オブジェクトは割り込みのソースではありません 1= このメッセージ オブジェクトは割り込みのソースです より高い優先度の割り込みソースが他にない場合 CAN 割り込みレジスタ (CIR) の割り込み識別子フィールドはこのメッセージ オブジェクトをポイントします IntPnd フィールドは 割り込み待機レジスタ (MOIPA MOIPB MOIPC MOIPD および MOIPX) から直接読み出し可能です しかし 特別なメッセージ オブジェクト用として IntPnd フィールドに書き込む場合 ホスト プロセッサはメッセージ インタフェース レジスタに書き込む必要があります TxIE 0= TxIE はディセーブルされます フレームの送信後 IntPnd は変更されずにそのままです 1= TxIE はイネーブルされます フレームの送信後 IntPnd が設定されます Cyclone V
RxIE 0= RxIE はディセーブルされます フレームの受信後 IntPnd は変更されずにそのままです 1= RxIE はイネーブルされます フレームの受信後 IntPnd が設定されます RmtEn 0= RmtEn はディセーブルされます リモート フレームの受信時 TxRqst は変更されずにそのままです 1= RmtEn はイネーブルされます リモート フレームの受信時 TxRqst が設定されます TxRqst 0= このメッセージ オブジェクトは 送信を待機しません 1= このメッセージ オブジェクトの送信が要求されて 完了していません TxRqst フィールドは 送信リクエスト レジスタ (MOTRA MOTRB MOTRC MOTRD および MOTRX) から直接読み出し可能です しかし 特別なメッセージ オブジェクト用として TxRqst フィールドに書き込む場合 ホスト プロセッサはメッセージ インタフェース レジスタに書き込む必要があります EoB 0= メッセージ オブジェクトは FIFO バッファ ブロックに属しており FIFO バッファ ブロックの最後のメッセージ オブジェクトではありません 1= FIFO バッファ ブロックのシングル メッセージ オブジェクトまたは最後のメッセージ オブジェクトです このビットは FIFO バッファを構成する 2 つ以上のメッセージ オブジェクト ( 最大 128) を連結するために使用されます (FIFO バッファに属していない ) シングル メッセージ オブジェクトでは このビットは常に 1 に設定されている必要があります メッセージ オブジェクトのマスク ビットは アービトレーション ビットと共に受信メッセージの受け入れフィルタリングに使用されます UMask 0= マスクを無視します Msk[28:0] MXtd および Mdir は受け入れフィルタリングに影響しません 受け入れられる受信メッセージでは 以下の条件すべてを満たしている必要があります 受信メッセージが メッセージ方向が 0( 受信 ) に設定されたデータ フレームである またはメッセージ方向が 1( 送信 ) に設定されたリモート フレームであること 受信メッセージ識別子が メッセージ オブジェクトのメッセージ識別子 (ID[28:0]) に一致していること 受信識別子の拡張ビットが メッセージ オブジェクトの識別子の拡張ビット (Xtd) と一致していること Cyclone V
1= それぞれのマスク ビットが受け入れフィルタリング用にセットアップされている場合 受け入れフィルタリング用のマスク (Msk[28:0] MXtd および MDir) を使用します 受け入れられる受信メッセージは 以下の条件をすべて満たしている必要があります 受信メッセージが メッセージ方向が 0( 受信 ) に設定されたデータ フレームである または MDir マスク ビットがイネーブルされている状態でメッセージ方向が 1( 送信 ) に設定されたリモート フレームであること 受信メッセージ識別子が Msk[28:0] マスク ビットがイネーブルされているメッセージ オブジェクトのメッセージ識別子 (ID[28:0]) に一致していること 受信識別子の拡張ビットが MXtd マスク ビットがイネーブルされているメッセージ オブジェクトの識別子の拡張ビット (Xtd) と一致していること 1 UMask ビットが 1 に設定されている場合 メッセージ オブジェクトのマスク ビットは MsgVal が 1 に設定される前に メッセージ オブジェクトの初期化中にプログラムされる必要があります Msk[28:0] 識別子マスクは ID[28:0] の関連ビットをフィルタします 0= 関連する識別子ビットは 受け入れフィルタに影響しません 1= 関連する識別子ビットは 受け入れフィルタで使用されます MXtd 0= 拡張フレーム識別子ビット (Xtd) は 受け入れフィルタに影響しません 1= 拡張フレーム識別子ビット (Xtd) は 受け入れフィルタで使用されます 11 ビット ( 標準 ) 識別子がメッセージ オブジェクトで使用される場合 受信データ フレームの識別子は ビット ID28 ~ ビット ID18 に書き込まれます 受け入れフィルタでは Msk28 ~ Msk18 のマスク ビットと共にこれらのビットのみが使用されます MDir 0= メッセージ方向ビット (Dir) は受け入れフィルタリングに影響しません 1= メッセージ方向ビット (Dir) は受け入れフィルタリングで使用されます (1) アルテラは MDir を常に 1 に設定しておくことを推奨しています メッセージ方向ビットを無視するには非常に注意深く処理することが必要で 高度な技術を要します アービトレーション フィールドの ID28-0 Xtd および Dir は 識別子および送信メッセージのタイプを定義するために使用され ( マスク フィールドの Msk28-0 MXtd および MDir と共に ) 受信メッセージの受け入れフィルタリングで使用されます データ フレームを受信するように あるいはリモート フレームを送信するように方向が設定されている場合 受信メッセージは 一致する識別子のバリッド Cyclone V
メッセージ オブジェクトに格納されます 拡張フレームは Xtd が 1 に設定されているメッセージ オブジェクトにのみ格納できて 標準フレームは Xtd が 0 に設定されているメッセージ オブジェクトに格納できます 受信メッセージ ( データ フレームまたはリモート フレーム ) が 1 つ以上のバリッド メッセージ オブジェクトに一致している場合 最小のメッセージ数でオブジェクトに格納されます ID[28:0] ID28-ID0:29 ビット識別子 ( 拡張フレーム ) ID28-ID18:11 ビット識別子 ( 標準フレーム ) Xtd 0= 11 ビット ( 標準 ) 識別子は このメッセージ オブジェクトで使用されます 1= 29 ビット ( 拡張 ) 識別子は このメッセージ オブジェクトで使用されます Dir 0= 受信方向です TxRqst が 1 に設定されている場合 このメッセージ オブジェクトの識別子のリモート フレームが送信されます 一致した識別子のデータ フレームの受信時に そのメッセージはこのメッセージ オブジェクトに格納されます 1= 送信方向です TxRqst が 1 に設定されている場合 それぞれのメッセージ オブジェクトはデータ フレームとして送信されます 一致した識別子のリモート フレームの受信時に このメッセージ オブジェクトの TxRqst ビットは 1 に設定されます (RmtEn = 1 の場合 ) DLC[3:0] DLC は データ フレームのデータ バイト数を指定します 最大バイト数は 8 です メッセージ オブジェクトのデータ長コード (DLC) は すべての CAN デバイスの同一識別子のすべての関連オブジェクトの中と同じように定義されます メッセージ ハンドラがデータ フレームを格納する場合 DLC フィールドを受信メッセージで与えられる値に設定します Data 0[7:0] Data 7[7:0] CAN データ フレームのデータ バイトです メッセージ インタフェース レジスタには IF1 および IF2 の 2 つがあり ホスト プロセッサまたは DMA コントローラに対して 間接的に任意のメッセージ オブジェクトにアクセスするための手段を提供します メッセージ オブジェクトは メッセージ RAM およびメッセージ バッファ レジスタ間で メッセージ間のデータ一貫性を維持しながらシングルのアトミック動作として転送されます Cyclone V
表 25 2 に 各メッセージ インタフェース レジスタ セットの構造を示します ここで x は 1 または 2 のどちらか一方に設定することを示しています コマンド メッセージ バッファ IFxCMR IFxMSK IFxARB IFxMCTR IFxDA IFxDB IFx コマンド レジスタ IFx マスク レジスタ IFx アービトレーション レジスタ IFx メッセージ コントロール レジスタ IFx データ A レジスタ IFx データ B レジスタ 転送方向を指定して メッセージ オブジェクトの転送する部分を選択します メッセージ オブジェクトの Msk MDir および MXtd マスク フィールドへのアクセスを提供します メッセージ オブジェクトの ID Dir Xtd および MsgVal アービトレーション フィールドへのアクセスを提供します メッセージ オブジェクトの DLC EoB TxRqst RmtEn RxIE TxIE UMask IntPnd MsgLst および NewDat フィールドへのアクセスを提供します メッセージ オブジェクトのデータ バイト 0 ~ 3 へのアクセスを提供します メッセージ オブジェクトのデータ バイト 4 ~ 7 へのアクセスを提供します 図 25 1 に示すように CAN コントローラは DMA コントローラのリクエストを発行して メッセージ インタフェース レジスタ間またはそれらとシステム メモリとの間でデータを転送できます CAN コントローラには can_if1dma および can_if2dma と呼ばれる 2 つの DMA リクエスト インタフェースがあります CAN ペリフェラル リクエスト インタフェースは FPGA の DMA ペリフェラル リクエスト インタフェースと共有されます DMA ペリフェラル リクエスト インタフェースを使用するには ホスト プロセッサがプロトコル グループ (protogrp) の CAN コントロール レジスタ (CCTRL) にアクセスする必要があります ペリフェラル リクエスト インタフェースは システム マネージャを通して選択されます f CAN DMA ペリフェラル リクエスト インタフェースの選択について詳しくは Cyclone V デバイス ハンドブック Volume 3 の System Manager の章を参照してください DMA サポート機能をアクティベートして転送を初期化するには メッセージ インタフェース グループ (msgifgrp) の適切な IF コマンド レジスタ (IFxCMR) の DMAactive ビットに 1 を書き込みます メッセージ オブジェクト転送の完了後 CAN コントローラは DMA ペリフェラル リクエストを発行して次のメッセージ オブジェクト転送を実行します リクエストは メッセージ インタフェース レジスタに対する最初の読み出しまたは書き込みまでアクティブの状態が維持されます f 詳しくは Cyclone V デバイス ハンドブック Volume 3 の DMA Controller の章を参照してください Cyclone V
CAN コントローラは アービトレーションを失ったフレームまたは送信中にエラーが発生したフレームを自動再送信する手段を提供します 再送信は ユーザーが介入や通知をしなくても自動的に発生します 送信がうまくいった場合には通常の確認がなされます テスト モードをイネーブルするには CCTRL レジスタのテスト モード イネーブル ビット (Test) を 1 に設定します この動作によって CAN テスト レジスタ (CTR) への書き込みアクセスがアクティベートされます 以下の項では 使用可能なテスト モードを説明します テスト レジスタ (CTR) のサイレント モード (Silent) ビットを 1 にプログラミングすることで CAN コントローラがサイレント モードに設定されます サイレント モードでは CAN コントローラはバリッド データ フレームおよびバリッド リモート フレームを受信することができますが CAN_TXD ピンを High の状態に保持して CAN バスにデータを送信しません サイレント モードは 主要なビットの送信による CAN バスへの影響なしでそのトラフィックを解析するために使用できます ISO 11898-1 では サイレント モードはバス モニタリング モードと呼ばれます 図 25 2 に サイレント モードでの CAN コアを示します CAN Controller CAN_RXD CAN_TXD Vcc RX TX CAN Core テスト レジスタ (CTR) のループバック モード (LBack) ビットを 1 にプログラミングすることで CAN コントローラがループバック モードに設定されます ループバック モードでは CAN コントローラは 自身の送信メッセージを受信メッセージとして扱って それらを受信バッファに格納します ( 受け入れフィルタリングを通過する場合 ) 外部シミュレーションと独立させるために CAN コントローラは ループバック モードでは確認エラーを無視します このモードでは CAN コントローラは 送信 (TX) 出力から受信 (RX) 入力に対して内部フィードバックを提供します 入力ピンの実際の値は CAN コントローラに無視されます Cyclone V
図 25 3 に ループバック モードでの CAN コアを示します CAN Controller CAN_RXD CAN_TXD RX TX CAN Core テスト レジスタ (CTR) のサイレント モード (Silent) ビットおよびループバック モード (LBack) ビットを 1 にプログラミングすることで CAN コントローラはループバックとサイレントの組み合わせモードに設定されます 組み合わせモードは CAN バスに接続されているほかのデバイスに影響することなく CAN ハードウェアをテストするために使用できます このモードでは CAN_RXD ピンは CAN コアから接続されておらず CAN_TXD ピンは High に維持されます 図 25 4 に 組み合わせモードでの CAN コアを示します CAN Controller CAN_RXD CAN_TXD Vcc RX TX CAN Core ホスト プロセッサは L4 スレーブ インタフェースを通して CAN コントローラのデータ コントロール およびステータスの情報にアクセスします スレーブ インタフェースは 32 ビット アクセスのみサポートしています 1 このインタフェースは エラー応答をサポートしていません CAN コントローラは l4_sp_clk クロック入力および can_clk クロック入力で動作します l4_sp_clk クロックは L4 スレーブ インタフェースによって使用されて can_clk は CAN コアを動作するために使用されます can_clk クロックは 少なくとも CAN バス インタフェースの 8 倍の速度にプログラムされている必要があります 例えば 1Mbps のボーレートで動作する CAN バス インタフェースでは can_clk クロックは少なくとも 8MHz に設定されている必要があります l4_sp_clk クロックは can_clk 周波数以上のクロック周波数で動作できます Cyclone V
f l4_sp_clk クロックおよび can_clk クロックについて詳しくは Cyclone V デバイス ハンドブック Volume 3 の Clock Manager の章を参照してください 各 CAN コントローラは ソフトウェアまたはハードウェアによってリセットできます ソフトウェアは CAN コントローラ レジスタ マップのプロトコル グループ (protogrp) の CAN コントロール レジスタ (CCTRL) の Init ビットを設定することで初期化されます バスが CAN リンクでオフ状態である場合 このビットは CAN プロトコルを通して設定されます また このビットは ハードウェアのリセット で説明しているハードウェア リセット入力を通しても設定されます 1 2 つのクロック ドメイン間の同期メカニズムにより Init ビットに書き込まれる値が読み返せるようになるまでに遅延が生じることがあります 前回書き込まれた値が受け取られたことを確認するには Init ビットを新規の値に設定する前にそれを読み出します 1 バス オフ リカバリ シーケンスは Init ビットの設定またはリセットによる短縮ができません バス オフについて詳しくは Bosch のウェブサイト (www.semiconductors.bosch.de) で閲覧可能な CAN Protocol Specification 2.0 パート A およびパート B を参照してください それぞれの CAN コントローラには 個別のリセット信号があります リセット マネージャは コールド リセットまたはウォーム リセット時にそれらの信号を駆動します リセット信号は 両方のクロック ドメインに同期して CAN コントローラ内の適切なロジックに適用されます f 詳しくは Cyclone V デバイス ハンドブック Volume 3 の Reset Manager の章を参照してください 各 CAN コントローラは 2 つの割り込み信号を生成します 1 つはエラーおよびステータス割り込みを示すもので もう 1 つはメッセージ オブジェクト割り込みを示すものです どちらの割り込み信号もグローバル割り込みコントローラ (GIC) に接続されます 割り込みは プロトコル グループ (protogrp) の CAN コントロール レジスタ (CCTRL) でイネーブルされます プロトコル グループ (protogrp) の CAN 割り込みレジスタ (CIR) は 待機中の最高優先度の割り込みを示します 以下のエラー条件において 割り込みが生成されます バス オフ 送信エラー カウントが 256 以上の場合 プロトコル グループ (protogrp) の CAN ステータス レジスタ (CSTS) のバス オフ (BOff) ビットは 1 に設定されます Cyclone V
エラー警告 送信エラー カウンタまたは受信エラー カウンタのどちらか一方が 96 に達している場合 プロトコル グループ (protogrp) の CAN ステータス レジスタ (CSTS) のエラー警告ステータス (EWarn) ビットが 1 に設定されます 以下のステータス条件において 割り込みが生成されます 受信 OK CAN コントローラがメッセージの受信に成功すると プロトコル グループ (protogrp) の CAN ステータス レジスタ (CSTS) の RxOK ビットが 1 に設定されます 送信 OK CAN コントローラがメッセージの送信に成功すると プロトコル グループ (protogrp) の CAN ステータス レジスタ (CSTS) の TxOK ビットが 1 に設定されます ラスト エラー コード メッセージがエラーと共に送受信される場合 エラー タイプに応じてプロトコル グループ (protogrp) の CAN ステータス レジスタ (CSTS) の LEC ビットが設定されます 関連メッセージ オブジェクトの TxIE ビットまたは RxIE ビットが 1 に設定されている場合 メッセージ オブジェクトからの IntPnd ビットは割り込みを生成できます 表 25 3 に 割り込み待機中レジスタのメッセージ オブジェクトの割り込み情報の場所を示します 割り込み待機中レジスタは メッセージ ハンドラ グループ (msghandgrp) にあります MOIPA 割り込み待機中 A レジスタ 1 ~ 32 MOIPB 割り込み待機中 B レジスタ 33 ~ 64 MOIPC 割り込み待機中 C レジスタ 65 ~ 96 MOIPD 割り込み待機中 D レジスタ 97 ~ 128 MOIPX レジスタによって どのメッセージ オブジェクト グループに待機中割り込みがあるかソフトウェアが素早く検出できるようになります この項では CAN コントローラの動作方法について説明します CAN コントロール レジスタ (CCTRL) の Init ビットを 1 に設定することで ソフトウェアの初期化が開始されます Init ビットが 1 のとき CAN バスとの間でメッセージは転送されず CAN_TXD の CAN バス出力が High ステートに維持されます Init ビットを設定しても コンフィギュレーション レジスタは何も変わりません Cyclone V
CAN コントローラを初期化するには ホスト プロセッサは CAN 通信で使用される CAN ビット タイミング (CBT) レジスタおよびメッセージ オブジェクトをプログラムする必要があります メッセージ オブジェクトが必要ない場合 RAM 初期化後のデフォルトのように メッセージ オブジェクトの MsgVal ビットを非バリッド (0) に設定すれば十分です MsgVal ビットをバリッド (1) に設定する前に メッセージ オブジェクト全体を設定する必要があります メッセージ オブジェクトは メッセージ インタフェース レジスタ セットのどちらかを通して設定されます CAN コントロール レジスタ (CCTRL) のコンフィギュレーション変更イネーブル (CCE) ビットおよび Init ビットがどちらも 1 に設定されている場合 CAN ビット タイミング (CBT) レジスタへのアクセスがイネーブルされます Init ビットを 0 に設定することで ソフトウェア初期化を終了します CAN コアは バスの動作およびメッセージ転送に関われるようになる前にバスがアイドル状態になるまで待機することで CAN バスのデータ転送に同期します メッセージ オブジェクトの初期化は CAN コントロール初期化から独立しておりいつでも実行可能ですが メッセージ オブジェクトはすべて メッセージ転送が開始する前に特定の識別子にコンフィギュレーションされているか非バリッドに設定されている必要があります 起動時 メッセージ RAM は初期化される必要があります RAM を初期化するには Init ビットを 1 に設定して プロトコル グループ (protogrp) の CAN ファンクション レジスタ (CFR) の RAMInit ビットを 1 に設定します RAM 初期化が完了すると RAMInit ビットは 0 に戻ります RAM 初期化中は すべてのメッセージ オブジェクトがゼロにクリアされていて RAM ECC ビットが初期化されます RAM へのアクセスは RAM 初期化前または初期化中には許可されません CAN コントローラが初期化されると CAN コントローラは CAN バスに同期してメッセージの転送を開始します メッセージがメッセージ ハンドラの受け入れフィルタリングを通過してきた場合 受信されるメッセージは適切なメッセージ オブジェクトに格納されます すべてのアービトレーション ビット Xtd Dir DLC 8 データ バイト マスク ビットおよびコントロール ビットの UMask MXtd MDir EoB MsgLst RxIE TxIE および RmtEn を含むメッセージ全体は メッセージ オブジェクトに格納されます 受信メッセージが格納されている場合 マスクされたアービトレーション ビットは メッセージ オブジェクト内で変更される可能性があります ホスト プロセッサは メッセージ インタフェース レジスタを使用するときはいつでも各メッセージを読み出しまたは更新することがあります メッセージが RAM との間で転送されると同時にホスト プロセッサがメモリ オブジェクトにアクセスする場合 メッセージ ハンドラはデータの一貫性を保証します 転送されるメッセージは ホスト プロセッサによって更新されます パーマネントなメッセージ オブジェクト ( コンフィギュレーション中に設定されるアービトレーション ビットおよびコントロール ビットが複数の CAN 転送用に変更されないメッセージ オブジェクト ) がメッセージ用に存在する場合 データ バイトのみ更新される必要があります それぞれの送信メッセージが同じメッセージ オブジェクトに割り当てられている場合 ( メッセージ オブジェクト数が十分ではない場合 ) このメッセージの送信が要求される前に全メッセージ オブジェクトをコンフィギュレーションする必要があります Cyclone V
内部での優先度に応じて メッセージ オブジェクトが送信されると同時に 任意の数のメッセージ オブジェクトの送信が要求される可能性があります メッセージ オブジェクト数は 1 ~ 128 で 内部において 1 が最下位 128 が最上位の優先度です 要求された送信が待機中であっても メッセージが更新されるか あるいは非バリッド (MsgVal=0) として設定される可能性があります 待機中の送信が開始する前にメッセージが更新されると 古いデータは無視されます メッセージ オブジェクトのコンフィギュレーションに応じて マッチング識別子を持っているリモート フレームの受信によって メッセージの送信が自動的に要求されることがあります リモート フレームは CAN ネットワークで特別なメッセージを要求するために使用されるフレームです 1 プログラミングを容易にするために アルテラは 受信方向と送信方向の動作でそれぞれ異なる IF メッセージ インタフェースを使用することを推奨しています データ フレームを受信するようにメッセージ オブジェクトをコンフィギュレーションするには Dir フィールドを 0 に設定します リモート フレームを受信するようにメッセージ オブジェクトをコンフィギュレーションするには Dir フィールドを 1 に UMask を 1 に RmtEn を 0 にそれぞれ設定します オブジェクトが送信されている間にそれが変更されないようにするには 以下のコンフィギュレーション ビットおよびコントロール ビットを変更する前に MsgVal を 0 に設定する必要があります ID[28:0] Xtd DLC[3:0] RxIE TxIE RmtEn EoB UMask Msk[28:0] MXtd MDir メッセージ オブジェクトの以下のフィールドは MsgVal クリアせずに変更できます Data0[7:0] to Data7[7:0] TxRqst NewDat MsgLst Cyclone V
IntPnd データ フレームを送信するようにメッセージ オブジェクトをコンフィギュレーションするには Dir フィールドを 1 に設定して UMask を 0 に設定するか RmtEn を 1 に設定します 以下のコンフィギュレーション ビットおよびコントロール ビットを変更する前に MsgVal を 0 に設定する必要があります Dir RxIE TxIE RmtEn EoB UMask Msk[28:0] MXtd MDir メッセージ オブジェクトの以下のフィールドは MsgVal をクリアせずに変更できます ID[28:0] Xtd DLC[3:0] Data0[7:0] to Data7[7:0] TxRqst NewDat MsgLst IntPnd f アドレス マップおよびレジスタの定義は このハンドブックの volume に付属の hps.html ファイルにあります ファイルを開くにはリンクをクリックします モジュールの説明およびベース アドレスを見るには スクロールして以下のモジュール インスタンスのリンクをクリックします can0 can1 Cyclone V
そしてレジスタおよびフィールドの説明を見るには スクロールしてレジスタ名をクリックします レジスタのアドレスは 各モジュール インスタンスのベース アドレスに相対的なオフセットです f すべてのモジュールのベース アドレスは Cyclone V デバイス ハンドブック Volume 3 の Introduction to the Hard Processor System の章にも示されています 表 25 4 に 本資料の改訂履歴を示します 2012 年 11 月 1.2 マイナーな更新 リセットの項の拡張 割り込みの項の拡張 2012 年 5 月 1.1 ブロック図およびシステム統合 機能の説明 プログラミング モデル アドレス マップとレジスタの定義の各項の追加 2012 年 1 月 1.0 初版 Cyclone V