IOMSCTL

IOMSCTL( IO Memory Select Control )レジスタは外部IO空間へのアクセス方法を指定します。

レジスタの構造

このレジスタは16ビット整数レジスタです。初期値は0x0000です。

図1 レジスタの構造

E_RWC : Read Waitstate Cycles

Readアクセスを行うときに挿入するウェイトステート数を指定します。

E_WWC : Write Waitstate Cycles

Writeアクセスを行うときに挿入するウェイトステート数を指定します。

E_WMS : Waitstate Mode Select

挿入するウェイトステートの数の決め方を指定します。

  • 00 : 外部アクノレッジ信号のみで決めます。
  • 01 : レジスタ指定のみで決めます。
  • 10 : レジスタ指定と外部アクノレッジ信号による指定のうち大きなほうを使います。
  • 11 : レジスタ指定と外部アクノレッジ信号による指定のうち小さなほうを使います。。
E_CDS : Clock Devider Select

HCLKに対する動作クロック分周比を指定します。動作周波数は:

動作周波数 = HCLK / ( 2^E_CDS) 

で与えられます。HR B-95ではCCLKソースになっていますが、誤りです。

E_WHC : Write Hold Cycle

書き込み後のホールドサイクル数を指定します。HR 7-4ではE_WHEとなっています。

E_COE : CMS Output Enable

CMSピンはADSP-2191にはありませんので、このビットは常に0にします。

API

C/C++言語用に以下のインターフェースが用意されています。宣言はsysreg.hで行われています。IOMSCTLにアクセスする前には必ずIOPGにExternal_Memory_Interface_Pageを設定してください。

// #include <sysreg.h>
// #include <def2191.h>

sysreg_write(sysreg_IOPG, External_Access_Bridge_Page)   // EMIページに設定

io_space_write(IOMSCTL, 値)         // IOMSCTLに値を設定
変数 = io_space_read(IOMSCTL)       // IOMSCTLの値を取得

アナログデバイセズが配布しているmcmの中のビット定義ファイルdef2191bit.hから関連するビット定義部分をここに引用します。なお、レジスタ構造がBMSCTLと同じであるため、この部分も同じです。

// Definition for BMSCTL (HR B-94)
#define E_COE                   BIT_15
#define E_WHC                   BIT_11
#define E_CDS_OFST              8
#define E_CDS_MASK              ( 0x7 << E_CDS_OFST )
#define E_CDS_1x                ( 0 << E_CDS_OFST )
#define E_CDS_2x                ( 1 << E_CDS_OFST )
#define E_CDS_4x                ( 2 << E_CDS_OFST )
#define E_CDS_8x                ( 3 << E_CDS_OFST )
#define E_CDS_16x               ( 4 << E_CDS_OFST )
#define E_CDS_32x               ( 5 << E_CDS_OFST )
#define E_WMS_OFST              6
#define E_WMS_MASK              ( 0x3 << E_WMS_OFST )
#define E_WMS_EXT               ( 0 << E_WMS_OFST )
#define E_WMS_INT               ( 1 << E_WMS_OFST )
#define E_WMS_BOTH              ( 2 << E_WMS_OFST )
#define E_WMS_EITHER    ( 3 << E_WMS_OFST )
#define E_WWC_OFST              3
#define E_WWC_MASK              ( 0x3 << E_WWC_OFST )
#define E_WWC_0                 ( 0 << E_WWC_OFST )
#define E_WWC_1                 ( 1 << E_WWC_OFST )
#define E_WWC_2                 ( 2 << E_WWC_OFST )
#define E_WWC_3                 ( 3 << E_WWC_OFST )
#define E_WWC_4                 ( 4 << E_WWC_OFST )
#define E_WWC_5                 ( 5 << E_WWC_OFST )
#define E_WWC_6                 ( 6 << E_WWC_OFST )
#define E_WWC_7                 ( 7 << E_WWC_OFST )
#define E_RWC_OFST              0
#define E_RWC_MASK              ( 0x7 << E_RWC_OFST )
#define E_RWC_0                 ( 0 << E_RWC_OFST )
#define E_RWC_1                 ( 1 << E_RWC_OFST )
#define E_RWC_2                 ( 2 << E_RWC_OFST )
#define E_RWC_3                 ( 3 << E_RWC_OFST )
#define E_RWC_4                 ( 4 << E_RWC_OFST )
#define E_RWC_5                 ( 5 << E_RWC_OFST )
#define E_RWC_6                 ( 6 << E_RWC_OFST )
#define E_RWC_7                 ( 7 << E_RWC_OFST )

参照情報

項目 マニュアルのページ等
レジスタ構造 HR B-95
説明 HR 7-3
2191空挺団 | プログラム | EZ-KIT | こぼれ話 | アーキテクチャー | 命令 | レジスタ | DSP掲示板 | FAQ |