...

16ビットは、MS DOSサブシステムエラー

by user

on
Category: Documents
14

views

Report

Comments

Transcript

16ビットは、MS DOSサブシステムエラー
I/O公開資料
PEX-493109
Vol. 1/1
www.interface.co.jp
PEX-493109
[改訂履歴]
Ver.
1.0
日付
内容
2006年9月
新規作成
本ドキュメントは、製品の改良その他により将来予告なく改訂しますので、予めご了承ください。
(詳細は、『42ページ 重要な情報』を参照してください。)
! 注意
数値の表記方法は、下記のようになっております。
h:16進数表示
b:2進数表示
-1-
Interface Corporation
PEX-493109
目 次
第1章
アドレスマップ
4
コンフィギュレーションレジスタ ............................................................................................ 4
1.1.1 ベンダ ID レジスタ............................................................................................................ 5
1.1.2 デバイス ID レジスタ........................................................................................................ 5
1.1.3 コマンドレジスタ .............................................................................................................. 5
1.1.4 ステータスレジスタ .......................................................................................................... 6
1.1.5 リビジョン ID レジスタ.................................................................................................... 6
1.1.6 制御ポートベースアドレスレジスタ 0........................................................................... 6
1.1.7 制御ポートベースアドレスレジスタ 1........................................................................... 7
1.1.8 サブシステムベンダ ID..................................................................................................... 7
1.1.9 サブシステム ID................................................................................................................. 7
1.1.10 割り込みラインレジスタ................................................................................................ 8
1.2 I/O モジュール制御レジスタ・メモリンク制御用(ベースアドレス 0)................................ 8
1.2.1 メモリバンク選択レジスタ.............................................................................................. 9
1.2.2 割り込み制御レジスタ .................................................................................................... 10
1.2.3 割り込みフラグレジスタ................................................................................................ 10
1.2.4 I/O モジュール識別レジスタ ......................................................................................... 11
1.2.5 タイマリードレジスタ .................................................................................................... 11
1.2.6 タイマクリアレジスタ .................................................................................................... 12
1.3 I/O モジュール制御レジスタ・DPRAM アクセス用(ベースアドレス1) .................................................. 12
1.3.1 マスタへの割り込み要求................................................................................................ 12
1.1
第2章
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
機能説明
13
回路構成図 ................................................................................................................................... 13
2.1.1 バス調停回路 .................................................................................................................... 13
2.1.2 本製品と PCI Express のアクセス.................................................................................. 14
転送速度 ....................................................................................................................................... 14
スレーブ番号............................................................................................................................... 15
メモリバンク............................................................................................................................... 16
メモリアクセスイネーブル....................................................................................................... 17
パリティチェック....................................................................................................................... 17
タイマ ........................................................................................................................................... 17
割り込み機能............................................................................................................................... 17
ソフトウェアによる調停制御................................................................................................... 18
■同期フラグによる調停制御 ............................................................................................ 19
■割り込みによる調停制御 ................................................................................................ 19
Interface Corporation
-2-
PEX-493109
第3章
3.1
3.2
3.3
3.4
第4章
4.1
4.2
4.3
4.4
4.5
4.6
第5章
5.1
第6章
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
DOS からのリソース取得(BPD-0805)
20
概要 ............................................................................................................................................... 20
プログラム作成時の注意........................................................................................................... 20
対応言語 ....................................................................................................................................... 20
関数説明 ....................................................................................................................................... 21
DOS からのメモリアクセス(BPD-0806)
26
概要 ............................................................................................................................................... 26
BPD-0806 使用時の注意事項 .................................................................................................... 26
メモリへのアクセス方法........................................................................................................... 26
プログラム作成時の注意........................................................................................................... 27
対応言語 ....................................................................................................................................... 27
関数説明 ....................................................................................................................................... 27
割り込み処理
33
割り込み処理方法....................................................................................................................... 33
制御方法
34
データ転送(マスタ→スレーブ) ................................................................................................ 34
データ転送(スレーブ→マスタ) ................................................................................................ 35
同期データ転送・同期フラグ(マスタ→スレーブ) ............................................................... 36
同期データ転送・同期フラグ(スレーブ→マスタ) ............................................................... 37
同期データ転送・割り込み(マスタ→スレーブ).................................................................... 38
同期データ転送・割り込み(スレーブ→マスタ).................................................................... 39
データ転送・パリティチェック(マスタ→スレーブ) ........................................................... 40
データ転送・パリティチェック(スレーブ→マスタ) ........................................................... 41
重要な情報
42
-3-
Interface Corporation
PEX-493109
第1章 アドレスマップ
1.1 コンフィギュレーションレジスタ
オフセット
+00h
+04h
+08h
+0Ch
+10h
+14h
+18h
+1Ch
+20h
+24h
+28h
+2Ch
+30h
+34h
+38h
+3Ch
+40h > +DFh
+F0h
+F4h
+F8h
+FCh
3h
2h
Device ID
0h
Vendor ID
13h
43h
47h
Command
04h
00h
00h
000000?0b
Base Class
Sub Class
Prog. Intf.
Revision ID
FFh
00h
00h
01h
BIST
Header Type
Late. Timer
Cache Line Size
00h
00h
00h
00h
Base Address 0
??h
??h
??h
?0h
Base Address 1
??h
??h
??000000b
00h
Base Address 2
??h
??h
??h
?0h
Base Address 3
00h
00h
00h
00h
Base Address 4
00h
00h
00h
00h
Base Address 5
00h
00h
00h
00h
Card Bus CIS
00h
00h
00h
00h
Sub System ID
Sub System Vendor ID
2Ch
8Bh
11h
47h
Expansion ROM Base Address
00h
00h
00h
00h
Reserved
00h
00h
00h
00h
Reserved
00h
00h
00h
00h
Max Lat.
Min Gnt.
Int. Pin
Int Line
00h
00h
01h
??h
Reserved
Reserved
Reserved
Reserved
Reserved
Status
数値は、「h:16進数表示」,「b:2進数表示」で表記しています。
「?」はPlug & Playソフトウェアが設定します。
Interface Corporation
1h
-4-
11h
PEX-493109
1.1.1 ベンダIDレジスタ
Offset
Size
:+00h
:16ビット
Byte
○
-
Read
Write
ビット
Word
○
-
Dword
-
15∼0
Vendor ID
1147h
R
初期値
R/W
Vendor ID
(ベンダIDレジスタ)
:製造メーカを示すためのレジスタです。 1147h= Interface
1.1.2 デバイスIDレジスタ
Offset
Size
:+02h
:16ビット
Byte
○
-
Read
Write
ビット
Word
○
-
Dword
-
15∼0
Device ID
1343h
R
初期値
R/W
Device ID
(デバイスIDレジスタ)
:製造メーカの管理番号を示すためのレジスタです。1343h(4931)
1.1.3 コマンドレジスタ
Offset
Size
:+04h
:16ビット
ビット
Byte
○
○
Read
Write
Mem Spc
(Memory空間コントロール)
Dword
1
Mem
Spc
?
R/W
15∼2
-
初期値
R/W
Word
○
○
-
0
-
:“1”の時、メモリアクセスに対してブリッジが反応します。
Plug & Playソフトウェアが、Memory空間を割り付けることが
できれば“1”を書き込みます。
-5-
Interface Corporation
PEX-493109
1.1.4 ステータスレジスタ
Offset
Size
:+06h
:16ビット
ビット
Byte
○
-
Read
Write
15∼11
-
初期値
R/W
-
DEVSEL timing1,DEVSEL timing0
(DEVSEL#タイミング)
10
DEV
SEL
Timing1
1
R
Word
○
-
9
DEV
SEL
Timing0
0
R
Dword
8∼0
-
:“10”低速応答
1.1.5 リビジョンIDレジスタ
Offset
Size
:+08h
:8ビット
ビット
Byte
○
-
Read
Write
Word
-
Dword
-
7∼0
Revision ID
01h
R
初期値
R/W
Revision ID
(リビジョンIDレジスタ)
:I/Oモジュールのリビジョンを表します。
I/Oモジュールの仕様が変更された時、リビジョンIDが増加され
ます。
1.1.6 制御ポートベースアドレスレジスタ0
Offset
Size
:+10h
:32ビット
ビット
初期値
R/W
BA0[31]∼BA0[4]
(メモリ領域ベースレジスタ)
Interface Corporation
Byte
○
○
Read
Write
31∼4
BA0[31]∼BA0[4]
?
R/W
Word
○
○
Dword
○
○
3∼0
-
:メモリンク制御用メモリ領域へのベースアドレスレジスタです。
16バイト分占有。
-6-
PEX-493109
1.1.7 制御ポートベースアドレスレジスタ1
Offset
Size
:+14h
:32ビット
Byte
○
○
Read
Write
ビット
Word
○
○
31∼14
BA1[31]∼BA1[14]
?
R/W
初期値
R/W
BA1[31]∼BA1[14]
(メモリ領域ベースレジスタ)
Dword
○
○
13∼0
-
:DPRAMアクセス用メモリ領域へのベースアドレスレジスタです。
16KB分占有。
1.1.8 サブシステムベンダID
Offset
Size
:+2Ch
:16ビット
Byte
○
-
Read
Write
ビット
Word
○
-
Dword
-
15∼0
Sub System Vendor ID
1147h
R
初期値
R/W
Sub System Vendor ID
(サブシステムベンダID)
:製造メーカを示すためのレジスタです。1147h= Interface
1.1.9 サブシステムID
Offset
Size
:+2Eh
:16ビット
ビット
初期値
R/W
ビット
12∼10
9∼7
6∼0
Byte
○
-
Read
Write
15∼13
001
値
000b
001b
010b
011b
100b∼111b
000b
001b
010b∼111b
0h∼63h
64h∼7Fh
12∼10
バス仕様
011
R
9∼7
単/多機能
001
R
Word
○
-
Dword
-
6∼0
6桁製品の下2桁
0000100
R
説
明
PCI/Low Profile PCI
CompactPCI
CardBus
PCI Express
予約
未使用
単機能デバイス
多機能デバイス
6桁製品の下2桁を16進数に変更した値
予約
-7-
Interface Corporation
PEX-493109
1.1.10 割り込みラインレジスタ
Offset
Size
:+3Ch
:8ビット
Byte
○
○
Read
Write
ビット
Word
-
Dword
-
7∼0
ILIN[7]∼ILIN[0]
?
R/W
初期値
R/W
ILIN[7]∼ILIN[0]
(割り込みラインレジスタ)
:本製品が占有する割り込みレベルを表します。Plug & Playソフ
トウェアBIOSが設定します。
1.2 I/Oモジュール制御レジスタ・メモリンク制御用(ベースアドレス0)
I/Oモジュール制御用のレジスタは、次の通りです。
本製品に対してPCI Expressのリセット,パワーオンリセットが発生した場合レジスタは、初期値と
なります。
オフセット
+00h
+01h
+02h
+03h,+04h
+05h
+06h
+07h∼+0Fh
Interface Corporation
入出力方向
入力
出力
入力
出力
入力
出力
入力
出力
入力
出力
入力
出力
入力
出力
内
メモリバンク選択レジスタ
メモリバンク選択レジスタ
割り込み制御レジスタ
割り込み制御レジスタ
割り込みフラグレジスタ
予約
予約
予約
I/Oモジュール識別レジスタ
予約
タイマリードレジスタ
タイマクリアレジスタ
予約
予約
-8-
容
PEX-493109
1.2.1 メモリバンク選択レジスタ
Offset
Size
ビット
初期値
R/W
:+00h
:8ビット
7
MEN
0
R/W
Byte
○
○
Read
Write
6∼3
BNK[3]∼BNK[0]
0
R/W
Word
-
Dword
-
2∼0
-
MEN
:DPRAMアクセス領域に対してアクセスの有効/無効を設定・確認し
(メモリアクセス制御)
ます。
MEN
0
1
メモリアクセス制御
アクセス無効
アクセス有効
BNK[3]∼BNK[0]
:DPRAMアクセス領域に割り当てられたバンクメモリ領域を設定・確認
(メモリバンク)
します。
BNK[3]∼BNK[0]
0000b
0001b
0010b
0011b
0100b
0101b
0110b
0111b
1000b
1001b
1010b
1011b
1100b
1101b
1110b
1111b
バンク番号
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-9-
Interface Corporation
PEX-493109
1.2.2 割り込み制御レジスタ
Offset
Size
ビット
初期値
R/W
:+01h
:8ビット
Read
Write
7
IEN
0
R/W
IEN
Byte
○
○
Word
-
Dword
-
6∼0
-
:マスタからのメモリアクセスによる割り込みが発生します。
(メモリアクセス割り込み)
メモリアクセス割り込み
IEN
0
1
割り込み発生禁止
割り込み発生許可
1.2.3 割り込みフラグレジスタ
Offset
Size
:+02h
:8ビット
ビット
初期値
R/W
Byte
○
-
Read
Write
Word
-
Dword
0
MR
0
R
7∼1
-
MR
:マスタからのメモリアクセスによる割り込み要求フラグの確認を行
(メモリ割り込み要求)
います。
MR
0
1
メモリ割り込み要求
割り込み未検出
割り込み検出
このレジスタをリードすると、ビットが0になり、割り込みクリアが
行われます。
以下の条件によっても、初期値になります。
・割り込み禁止に設定した場合(割り込み制御レジスタのIEN= ‘0’)
Interface Corporation
- 10 -
PEX-493109
1.2.4 I/Oモジュール識別レジスタ
Offset
Size
:+05h
:8ビット
ビット
Byte
○
-
Read
Write
7∼4
-
初期値
R/W
BID[3]∼BID[0]
(I/OモジュールID)
Word
-
Dword
-
3∼0
BID[3]∼BID[0]
?
R
:同一型式のI/Oモジュールが複数枚同時に使用された場合に、個別にI/Oモジ
ュールを識別するための番号です。
I/Oモジュール識別用ロータリスイッチ(RSW1)の値を読み出します。出荷時
設定は“0”です。
1.2.5 タイマリードレジスタ
Offset
Size
ビット
初期値
R/W
:+06h
:8ビット
7
TOF
0
R
TOF
(タイマカウント
オーバーフロー)
Byte
○
-
Read
Write
Word
-
Dword
-
6∼0
TC[6]∼TC[0]
0
R
:前回タイマをクリアしてから12800ms以上経過したことを示すフ
ラグです。
TOF
0
1
タイマカウントオーバーフロー
12800ms 以内
12800ms 以上経過
TC[6]∼TC[0]
:前回タイマをクリアしてから経過した時間を示します。
(タイマカウント)
実際に経過した時間は、
N×100ms(N= 0∼127)
TOF= ‘1’の際は無効です。
※ 0s~12.7sのタイマカウンタ
タイマクリアレジスタにデータをWRITEすることにより、I/Oモジュール上の100msタイマが0クリアされ、
その後TC[6]∼TC[0]がカウントアップされます。また、12.7sを超えるとオーバーフローとなり TOF= ‘1’
になります。
- 11 -
Interface Corporation
PEX-493109
1.2.6 タイマクリアレジスタ
Offset
Size
:+06h
:8ビット
Byte
○
Read
Write
ビット
Word
-
Dword
-
7∼0
TCLR
W
初期値
R/W
TCLR
:タイマクリアレジスタをライトすると、I/Oモジュール上の100ms
(タイマクリア)
タイマが0クリアされます。書き込む値は任意です。
1.3 I/Oモジュール制御レジスタ・DPRAMアクセス用(ベースアドレス1)
DPRAM(256KB)のメモリンク制御用レジスタ+00hのBNK[3]∼BNK[0]にて指定された16KBの領域
に対してアクセスすることができます。
I/Oモジュール制御用のレジスタは、次の通りです。
本製品に対してPCI Expressのリセット,パワーオンリセットが発生した場合レジスタは、初期値と
なります。
オフセット
+0Ch
(バンク0時のみ)
入出力方向
入力
出力
内
容
予約
マスタへの割り込み要求
1.3.1 マスタへの割り込み要求
Offset
Size
:+0Ch
:8ビット
ビット
初期値
R/W
Byte
○
Read
Write
Word
-
Dword
-
7∼0
IREQ
W
IREQ
:バンク番号= ‘0’時に+0Chにライトを行うことによりマスタに対し
(マスタ割り込み要求)
て、割り込みを要求します。ライト値は任意とします。
Interface Corporation
- 12 -
PEX-493109
第2章 機能説明
2.1 回路構成図
PCI Express
タイマ
DPRAM
制御信号
制御信号
バス調停回路
データバス
MD15∼MD0
データバス
MD15∼MD0
SRAM
(256KB)
アドレスバス
A17∼A1
アドレスバス
A17∼A1
メモリンクスレーブ
バスインタフェース
メモリンクマスタ
バスインタフェース
CN1
制御信号
PCI Express ブリッジ回路
制御信号
2.1.1 バス調停回路
マスタおよびスレーブからDPRAMへのアクセス要求の監視,DPRAMへのアクセス,アクセス権の
制御を行っています。
アクセス権を順番に監視回路に受け渡し、アクセス要求があった場合にDPRAMへアクセスを行い
ます。一方がアクセスを行っている間、もう一方のアクセスは待ち状態となります。
<アクセス権の流れ>
終了
要求あり
要求なし
スレーブからの
DPRAM への
アクセス要求
監視回路
スレーブから
DPRAM への
アクセス
要求あり
マスタから
DPRAM への
アクセス要求
監視回路
要求なし
- 13 -
マスタから
DPRAM への
アクセス
終了
Interface Corporation
PEX-493109
2.1.2 本製品とPCI Expressのアクセス
PCI Expressと本製品のアクセスは、32ビットのデータバスを使用しています。
メモリンクでは16ビットのデータバスを採用しているため、ユーザプログラムにて32ビット単位
でアクセスを行った場合、本製品上のPCI Expressブリッジにて自動的に16ビットのアクセス2回に
変換されます。
本製品
メモリンクマスタ ス(レーブ
バスインタフェース
メモリンク内部回路
データバス
MD15∼MD0
データバス
16 ビット
PCI Express ブリッジ回路
PCI Express
)
2.2 転送速度
Word,Dword転送時、PCI Expressからスレーブ上のDPRAMに対して
最大2MB/s(バイト転送時は1MB/s)でデータ転送を行うことができます。(最大転送速度はシステム
に依存します。)
以下の場合に転送速度は遅くなります。
・ マスタとスレーブが同時にアクセスが発生した場合
・ マスタと終端スレーブ間のケーブルを長くした場合
・ 30m版メモリンクと接続した場合
Interface Corporation
- 14 -
PEX-493109
2.3 スレーブ番号
マスタはアクセスを行うスレーブをスレーブ番号により決定しています。このため、スレーブは
スレーブ番号を設定する必要があります。
スレーブ番号はソフトウェアにて設定してください。
スレーブ番号は他のスレーブと重複しないように設定してください。
マスタ
スレーブ
番号:7
スレーブ
番号:3
スレーブ
番号:4
スレーブ番号を重複しないように設定してください。
! 注意
出荷時スレーブ番号は“0”となっております。ご注意ください。
スレーブ番号を重複したままマスタからアクセスを行った場合、信号の衝突が発生し、故障,
破損の原因となりますので、ご注意ください。
- 15 -
Interface Corporation
PEX-493109
2.4 メモリバンク
メモリンクはスレーブ上のDPRAM(256KB)を16KBごとに16個の領域に分割することにより、メモ
リアクセスを行っています。この16個の領域をバンクと呼び、0∼15までの番号で管理します。
本製品がDPRAMにアクセスを行う場合、まず、メモリバンクの設定を行い、その後、メモリアク
セスを行う必要があります。
下図はバンク番号“0”を指定した際のメモリアクセスの概念図を示しています。
スレーブ上の DPRAM
3FFFFh
バンク番号:15
(16KB)
3C000h
コンピュータ(CPU)の
メモリ空間
∼
3BFFFh
本製品が
占有している
メモリ領域
バンク番号:14
(16KB)
38000h
16KB
①メモリバンク
番号“0”を指定
・
・
・
∼
7FFFh
4000h
3FFFh
∼
②メモリアクセスを行うこと
により、バンク番号 “0”の
領域の DPRAM に対してア
クセスできる。
バンク番号:1
(16KB)
バンク番号:0
(16KB)
0000h
DPRAMのアドレスからバンク番号,コンピュータ(CPU)のメモリ空間における占有メモリ領
域でのオフセットアドレスを求める式は以下の通りです。
DPRAM のアドレス
16KB
=
バンク番号
余り:オフセットアドレス
例として、DPRAMのアドレス“3C010h”にアクセスする手順を示します。
本製品上の DPRAM
コンピュータ(CPU)の
メモリ空間
バンク番号:15
3C010h
バンク番号:14
本製品が
占有している
メモリ領域
バンク番号“15”
メモリアドレス
“00010h”
16KB
・
・
・
バンク番号:1
バンク番号:0
DPRAM のアドレス
16KB
Interface Corporation
=
3C010h
04000h(16KB)
= 15
- 16 -
余り:00010h
PEX-493109
2.5 メモリアクセスイネーブル
本製品では、メモリアクセスの有効/無効を設定することができます。また、スレーブでは、マス
タからのアクセスの有効/無効を設定することができます。電源をOFFにする際には、マスタから
のアクセスを無効にしてください。
2.6 パリティチェック
マスタよりスレーブにメモリアクセスを行う場合、常にパリティチェックが行われています。
メモリアクセスごとにパリティの結果を確認し、エラー発生時再度メモリアクセスを行う等の処
理をすることにより、データ転送の信頼性を向上させることができます。
なお、パリティの結果がエラーの場合、次回の確認までエラーの結果が保持されるため、メモリ
ブロック転送ごとに結果を確認することも可能です。
2.7 タイマ
本製品には、100msごとにカウントアップを行うタイマが実装されています。0ms∼12700msまで
測定することができます。
2.8 割り込み機能
本製品にはスレーブ上のメモリへの書き込みにより、マスタからスレーブ、または、スレーブか
らマスタへ割り込みを要求することができます。
- 17 -
Interface Corporation
PEX-493109
2.9 ソフトウェアによる調停制御
メモリンクは、16ビットのデータバスを採用しているため、2バイトを越える情報を1つのデータ
として扱う場合、ソフトウェアによる調停が必要になります。
(データのアドレスが奇数番地の場合は、1バイトを超える情報を1つのデータとして扱う際に、調
停が必要になります。)
ソフトウェアの調停を行わない場合、同じアドレスに対してスレーブ⇔マスタで同時にアクセス
が発生した際に、ライト途中のデータがリードされる可能性があります。
例として、4バイトの情報を1つのデータとして扱う場合の処理を説明します。この場合、同じア
ドレスに対してスレーブ,マスタにて同時にアクセスが発生した際に、下位2バイトのみ更新され
たデータをリードする可能性があります。
<32 ビットリードアクセス>
ユーザプログラム
32 ビットリードアクセス
旧
新
16 ビット 16 ビット
<32 ビットライトアクセス>
マスタ
スレーブ
②
32 ビットライトアクセス
DPRAM
③
ユーザプログラム
①
④
新
新
16 ビット 16 ビット
①4バイトデータの下位2バイトをライト
②4バイトデータの下位2バイト(ライト済み)をリード
③4バイトデータの上位2バイト(ライト前)をリード
④4バイトデータの上位2バイトをライト
ソフトウェアによる調停を行うためには、同期フラグもしくは割り込みを使用します。
Interface Corporation
- 18 -
PEX-493109
■同期フラグによる調停制御
同期フラグを使用する場合、同期フラグ用にメモリンクのメモリ上の1バイトを使用します。
①同期フラグは予め“0”にクリアしておきます。
②ライト側でデータをライトし、データのライトが完了した時点で、同期フラグを“1”に
セットします。
③リード側では同期フラグが“1”にセットされるのを待ち、リードを開始します。
④リードを完了した時点で、同期フラグを“0”にクリアします。
⑤同期フラグは“0”にクリアされるのを待ち、次のデータのライトを開始します。
リード側
ライト側
メモリンク上のメモリ
START
START
データが有効になる
データを書き込む
データをライトする
データが有効になった
ことを知らせる
同期フラグ
のを待つ
同期フラグを 1 にする
YES
相手がデータを
取り出すのを待つ
同期フラグ=1?
NO
データをリードする
NO
同期フラグ=0?
データを取り出す
データ
同期フラグを 0 にする
データを取り出した
ことを知らせる
YES
END
END
■割り込みによる調停制御
割り込みを使用する場合、下記のようになります。
①ライト側でライトを開始し、完了した時点でリード側に割り込みを発行します。
②リード側では割り込み受信後、リードを完了した時点でライト側に割り込みを発行します。
以下を繰り返すことにより、データの受け渡しができます。
ライトデータありもしくは
リード完了の割り込み
データを書き込む
データが有効になった
ことを知らせる
ライト側
リード側
START
START
データをライトする
メモリンク上のメモリ
リード側に割り込みを
発行
データ
データをリードする
リード側に割り込みを
待つ
ライト側に割り込み
を発行
ライト完了の割り込み
データを取り出す
データを取り出した
ことを知らせる
END
END
- 19 -
Interface Corporation
PEX-493109
第3章 DOSからのリソース取得(BPD-0805)
3.1 概要
DOS上からI/Oモジュールのリソース情報を取得する場合には、BPD-0805をご利用ください。
BPD-0805は、弊社Web siteからダウンロードできます。下記説明および、README.TXTを参照の
上、ご利用ください。
3.2 プログラム作成時の注意
プログラムソースにヘッダファイルを記述し、オブジェクトファイルを一緒にリンクしてくださ
い。
3.3 対応言語
Borland C++
Ver. 5.0
Turbo C++
Ver. 4.0
Microsoft C
Ver. 6.0
Microsoft C/C++ Ver. 7.0
Interface Corporation
- 20 -
PEX-493109
3.4 関数説明
PciGetConfigReg
【機 能】
ベンダID,デバイスIDから、本製品に割り当てられたI/Oポートアドレス,メモリアドレス,割り込
み番号を取得します。サブシステムID,サブベンダIDを区別する時や、全てのPCIコンフィギュ
レーションレジスタの値を取得したい場合は、PciGetConfigRegEx関数を使用します。
【書 式】
int PciGetConfigReg(
int index,
unsigned int ven_id,
unsigned int dev_id,
unsigned long bar[],
char *irq
)
【パラメータ】
index
I/Oモジュールのインデックス番号を指定します。
(RSW1の値とは関係ありません)
同一型式のI/Oモジュールが1枚しかない場合は1を指定します。複数枚ある場合に
は何枚目のI/Oモジュールのリソースを取得するか指定します。
ven_id
ベンダIDを指定します。
弊社のベンダIDは1147hです。
dev_id
デバイスIDを指定します。
PEX-493109のデバイスIDは4931(16進数では1343h)です。
bar[6]
BaseAddress0∼BaseAddress5を格納する変数へのポインタです。
PEX-493109では以下のようになります。
bar[0](BaseAddress0) I/Oモジュール制御レジスタ・メモリンク制御用
bar[1](BaseAddress1) I/Oモジュール制御レジスタ・DPRAMアクセス用
irq
割り込み番号を格納する変数へのポインタです。
【戻り値】
0:正常終了(I/Oモジュールが見つかりました)
-1:PCI BIOSがありません
-2:I/Oモジュールが1枚も見つかりませんでした
-3:これ以上I/Oモジュールがありません
- 21 -
Interface Corporation
PEX-493109
【使用例】
#include <stdio.h>
#include “GETBAR.H”
void main ( void )
{
unsigned long bar[6], adr0, adr1;
char irq;
PciGetConfigReg ( 1, 0x1147, 4931, bar, &irq ); // リソースの取得
adr0= bar[0] & 0xFFFFFFF0;
//I/Oモジュール制御レジスタ・メモリンク制御用
adr1= bar[1] & 0xFFFFFFF0;
//I/Oモジュール制御レジスタ・DPRAMアクセス用
printf ( “I/Oモジュール制御レジスタ・メモリンク制御用:%1x¥n” , adr0);
printf ( “I/Oモジュール制御レジスタ・DPRAMアクセス用:%1x¥n” , adr1);
printf ( “割り込み番号:%d¥n” , irq );
}
Interface Corporation
- 22 -
PEX-493109
PciGetConfigRegEx
【機 能】
ベンダID,デバイスID,サブベンダID,サブシステムIDから、本製品に割り当てられたI/Oポート
アドレス,メモリアドレス,割り込み番号を取得します。本関数では、全てのPCIコンフィギュ
レーションレジスタの値を取得できます。
【書 式】
int PciGetConfigRegEx(
int index,
unsigned int ven_id,
unsigned int dev_id,
unsigned int subven_id,
unsigned int subsys_id,
unsigned int *bus_info,
PPCI_CONFIG PciData
)
【パラメータ】
index
I/Oモジュールのインデックス番号を指定します。
(RSW1の値とは関係ありません)
同一型式のI/Oモジュールが1枚しかない場合は1を指定します。複数枚ある場合
には何枚目のI/Oモジュールのリソースを取得するか指定します。
ven_id
ベンダIDを指定します。
弊社のベンダIDは1147hです。
dev_id
デバイスIDを指定します。
PEX-493109のデバイスIDは4931(16進数では1343h)です。
subven_id
サブシステムベンダIDを指定します。
弊社のサブシステムベンダIDは1147hです。
subsys_id
サブシスムIDを指定します。
PEX-493109のサブシステムIDは2C8Bhです。
bus_info
バス情報を格納する変数へのポインタです。
バス情報は、以下の形式で格納されます。
bit15∼bit8 :バス番号
bit7∼bit3 :デバイス番号
bit2∼bit0 :ファンクション番号
PciData
PCIコンフィギュレーションレジスタの値を格納する構造体へのポインタです。
【戻り値】
0:正常終了(I/Oモジュールが見つかりました)
-1:PCI BIOSがありません
-2:I/Oモジュールが1枚も見つかりませんでした
-3:これ以上I/Oモジュールがありません
- 23 -
Interface Corporation
PEX-493109
【使用例】
#include <stdio.h>
#include “GETBAR.H”
void main ( void )
{
unsigned long adr0, adr1;
unsigned int
bus_info;
PCI_CONFIG PciData;
PciGetConfigRegEx ( 1, 0x1147, 4931, 0x1147, 0x2C8B,
&bus_info, &PciData );
// リソースの取得
adr0=PciData.BaseAddresses[0] & 0xFFFFFFF0;// メモリンク制御用
adr1=PciData.BaseAddresses[1] & 0xFFFFFFF0;// DPRAMアクセス用
printf ( “I/Oモジュール制御レジスタ・メモリンク制御用:%1x¥n” , adr0);
printf ( “I/Oモジュール制御レジスタ・DPRAMアクセス用:%1x¥n” , adr1);
printf ( “割り込み番号:%d¥n” , PciData.InterruptLine );
}
Interface Corporation
- 24 -
PEX-493109
PCI_CONFIG構造体
【機 能】
PCIコンフィギュレーションレジスタの値を格納します。
【書 式】
typedef struct _PCI_CONFIG {
unsigned short
VendorID;
unsigned short
DeviceID;
unsigned short
Command;
unsigned short
Status;
unsigned char
RevisionID;
unsigned char
ProgIf;
unsigned char
SubClass;
unsigned char
BaseClass;
unsigned char
CacheLineSize;
unsigned char
LatencyTimer;
unsigned char
HeaderType;
unsigned char
BIST;
unsigned long
BaseAddresses[6];
unsigned long
CIS;
unsigned short
SubVendorID;
unsigned short
SubSystemID;
unsigned long
ROMBaseAddress;
unsigned char
CapabilitiesPtr;
unsigned char
Reserved1[3];
unsigned long
Reserved2[1];
unsigned char
InterruptLine;
unsigned char
InterruptPin;
unsigned char
MinimumGrant;
unsigned char
MaximumLatency;
unsigned char
DeviceSpecific[192];
} PCI_CONFIG, *PPCI_CONFIG;
// 00:Vendor ID
// 02:Device ID
// 04:Command
// 06:Status
// 08:Revision
// 09:ProgIf
// 0A:Sub Class
// 0B:Base
// 0C:Cache Line
// 0D:Latency
// 0E:Header
// 0F:BIST
// 10:Base Address
// 28:CIS Pointer
// 2C:Subsystem Vendor ID
// 2E:Subsystem ID
// 30:ROM Base Address
// 34:Capabilities Pointer
// 35:Reserved
// 38:Reserved
// 3C:INT Line
// 3D:INT Pin
// 3E:MIN_GNT
// 3F:MAX_LAT
// 40:
【パラメータ】
ここでは、主なパラメータのみを説明します。
BaseAddresses[6]
InterruptLine
RevisionID
BaseAddress0∼BaseAddress5を格納する変数です。
PEX-493109では以下のようになります。
bar[0](BaseAddress0) I/Oモジュール制御レジスタ・メモリンク制御用
bar[1](BaseAddress1) I/Oモジュール制御レジスタ・DPRAMアクセス用
割り込み番号を格納する変数です。
Revisionを格納する変数です。
他のパラメータについては、PCI規格書をご覧ください。
- 25 -
Interface Corporation
PEX-493109
第4章 DOSからのメモリアクセス(BPD-0806)
4.1 概要
DOS上から1MBを超えるメモリ空間にアクセスするには、BPD-0806を利用してください。
BPD-0806はDOSから4GBメモリ空間へアクセスするためのツールです。
MS-DOS,PC DOS 2000のREALモードでは、CPUのセグメントリミットが64KBに制限されるため、
32ビットレジスタ(EBX,ESI,EDI)による1MBを超えるメモリエリアへのアクセスは、例外が発生し
ます。
FBIMEM4G.COMの実行により、REALモードのセグメントリミット(DS,ES,FS,GS)は64KBから
4GBに拡張され、32ビットレジスタ(EBX,ESI,EDI)による1MBを超えるメモリエリアへのアクセス
が有効となります。
BPD-0806は、弊社Web siteからダウンロードできます。下記説明および、README.TXTを参照の
上、ご利用ください。
4.2 BPD-0806 使用時の注意事項
■ BPD-0806は、仮想86モードでは、動作しません。
■ CPUのGDTを変更するアプリケーションは動作しません。
■ FBIMEM4G.COMを実行していない状態で、4GBの領域にアクセスするとコンピュータがハン
グアップするのでご注意ください。
4.3 メモリへのアクセス方法
1MBを超えるメモリエリアにアクセスを行なう前に、1度だけ、FBIMEM4G.COMを実行してくだ
さい。
その後は、メモリアクセスライブラリを使用して、4GBまでのメモリ空間に対して
Byte,Word,Dword単位でのリード/ライトが行えます。
4GBまでのメモリ空間へアクセスする場合、まず FBIMEM4G.COMを実行してください。
その後は、メモリアクセスライブラリを使用して、4GBまでのメモリ空間に対して
Byte,Word,Dword単位でのリード/ライトが行えます。
■ FBIMEM4G.COM Ver.2.00 以上はメモリ常駐タイプです。
コンベンショナルメモリを約2KB使用します。
■ FBIMEM4G.COM Ver.1.01-02 は常駐しません。また、メモリも消費しません。
Interface Corporation
- 26 -
PEX-493109
4.4 プログラム作成時の注意
プログラムソースにヘッダファイルを記述し、オブジェクトファイルを一緒にリンクしてください。
4.5 対応言語
Borland C++
Ver. 5.0
Turbo C++
Ver. 4.0
Microsoft C
Ver. 6.0
Microsoft C/C++ Ver. 7.0
4.6 関数説明
UioPeekByte
【機 能】
指定したメモリから 1バイト(8ビット)データを読み込みます。
【書 式】
unsigned char UioPeekByte(
unsigned long _address
)
【パラメータ】
_address
読み込むメモリのアドレスを指定します。32ビットの値です。
【戻り値】
0h∼FFh:読み込まれたデータを返します。
【使用例】
I/Oモジュール上のメモリの先頭から16バイトのデータを読み出します。
(例として FEC00000hにメモリがあるとします。)
#include <stdio.h>
#include “fbiuio.h”
void main (void)
{
unsigned long
unsigned char
int i;
Adr;
bData;
Adr= 0xFEC00000L;
for (i= 0; i<16; i++,Adr++) {
bData= UioPeekByte(Adr);
// 1バイト読み込み
printf(”%08lX:%02X¥n”,Adr,bData);
}
}
- 27 -
Interface Corporation
PEX-493109
UioPokeByte
【機 能】
指定したメモリへ 1バイト(8ビット)データを書き込みます。
【書 式】
void UioPokeByte(
unsigned long _address,
unsigned char _data
)
【パラメータ】
_address
書き込むメモリのアドレスを指定します。32ビットの値です。
_data
書き込むデータを指定します。
【戻り値】
ありません。
【使用例】
I/Oモジュール上のメモリの先頭から16バイトへデータを書き込みます。
(例として FEC00000hにメモリがあるとします。)
#include <stdio.h>
#include “fbiuio.h”
void main (void)
{
unsigned long
unsigned char
int i;
Adr;
bData;
Adr= 0xFEC00000L;
for (i= 0,bData= 0x00; i<16; i++,Adr++,bData++) {
UioPokeByte(Adr,bData);
// 1バイト書き込み
printf(”%08lX:%02X¥n”,Adr,bData);
}
}
Interface Corporation
- 28 -
PEX-493109
UioPeekWord
【機 能】
指定したメモリから 1ワード(16ビット)データを読み込みます。
【書 式】
unsigned short UioPeekWord(
unsigned long _address
)
【パラメータ】
_address
読み込むメモリのアドレスを指定します。32ビットの値です。
【戻り値】
0h∼FFFFh:読み込まれたデータを返します。
【使用例】
I/Oモジュール上のメモリの先頭から16ワードのデータを読み出します。
(例として FEC00000hにメモリがあるとします。)
#include <stdio.h>
#include “fbiuio.h”
void main (void)
{
unsigned long Adr;
unsigned short wData;
int i;
Adr= 0xFEC00000L;
for (i= 0; i<16; i++,Adr+= 2) {
wData= UioPeekWord(Adr);
// 1ワード読み込み
printf(”%08lX:%04X¥n”,Adr,wData);
}
}
- 29 -
Interface Corporation
PEX-493109
UioPokeWord
【機 能】
指定したメモリへ 1ワード(16ビット)データを書き込みます。
【書 式】
void UioPokeWord(
unsigned long _address,
unsigned short _data
)
【パラメータ】
_address
書き込むメモリのアドレスを指定します。32ビットの値です。
_data
書き込むデータを指定します。
【戻り値】
ありません。
【使用例】
I/Oモジュール上のメモリの先頭から16ワードへデータを書き込みます。
(例として FEC00000hにメモリがあるとします)
#include <stdio.h>
#include “fbiuio.h”
void main (void)
{
unsigned long Adr;
unsigned short wData;
int i;
Adr= 0xFEC00000L;
for (i= 0,wData= 0x00; i<16; i++,Adr+= 2,wData++) {
UioPokeWord(Adr,wData);
// 1ワード書き込み
printf(”%08lX:%04X¥n”,Adr,wData);
}
}
Interface Corporation
- 30 -
PEX-493109
UioPeekDword
【機 能】
指定したメモリから 1ダブルワード(32ビット)データを読み込みます。
【書 式】
unsigned long UioPeekDword(
unsigned long _address
)
【パラメータ】
_address
読み込むメモリのアドレスを指定します。32ビットの値です。
【戻り値】
0h∼FFFFFFFFh:読み込まれたデータを返します。
【使用例】
I/Oモジュール上のメモリの先頭から16ダブルワードのデータを読み出します。
(例として FEC00000hにメモリがあるとします。)
#include <stdio.h>
#include “fbiuio.h”
void main (void)
{
unsigned long
unsigned long
int i;
Adr;
dwData;
Adr= 0xFEC00000L;
for (i= 0; i<16; i++,Adr+= 4) {
dwData= UioPeekDword(Adr); // 1ダブルワード読み込み
printf(”%08lX:%08lX¥n”,Adr,dwData);
}
}
- 31 -
Interface Corporation
PEX-493109
UioPokeDword
【機 能】
指定したメモリへ 1ダブルワード(32ビット)データを書き込みます。
【書 式】
void UioPokeDword(
unsigned long _address,
unsigned long _data
)
【パラメータ】
_address
書き込むメモリのアドレスを指定します。32ビットの値です。
_data
書き込むデータを指定します。
【戻り値】
ありません。
【使用例】
I/Oモジュール上のメモリの先頭から16ダブルワードへデータを書き込みます。
(例として FEC00000hにメモリがあるとします。)
#include <stdio.h>
#include “fbiuio.h”
void main (void)
{
unsigned long
unsigned long
int i;
Adr;
dwData;
Adr= 0xFEC00000L;
for (i= 0,dwData= 0x00; i<16; i++,Adr+= 4,dwData++) {
UioPokeDword(Adr,dwData);
// 1ダブルワード書き込み
printf(”%08lX:%08lX¥n”,Adr,dwData);
}
}
Interface Corporation
- 32 -
PEX-493109
第5章 割り込み処理
5.1 割り込み処理方法
割り込み処理を行う場合、以下の処理を行う必要があります。
①割り込みの制御
使用する割り込みの設定を“割り込み発生許可”にします。割り込みの設定で“割り込み発生許可”
にしないと割り込みが発生しません。
例) メモリアクセス割り込みを有効にする場合。
ADR= BaseAddress0
UioPokeByte( ADR+0x01, 0x80);
②割り込みフラグの確認
割り込みが発生すると、発生した割り込みに対応する割り込みフラグのビットが1になります。
このフラグで発生した割り込みの要因を確認します。フラグを読み込んだら全てのビットがク
リアされます。また割り込み制御の設定変更でもフラグはクリアされます。
例)割り込みフラグを確認する場合。
ADR= BaseAddress0
nRet= UioPeekByte( ADR+0x02 );
※ メモリアクセス関数(UioPokeByte,UioPeekByte)につきましては『26ページ 第4章 DOSからの
メモリアクセス(BPD-0806)』を参照してください。
- 33 -
Interface Corporation
PEX-493109
第6章 制御方法
6.1 データ転送(マスタ→スレーブ)
<マスタ>
1.初期設定
①メモリアクセス制御の有効設定
メモリバンク/スレーブ選択レジスタの“MEN”を“1”に設定します。
②スレーブ番号設定
メモリバンク/スレーブ選択レジスタの“SLV[2]∼SLV[0]”にアクセスしたいスレーブの番号
を設定します。
2.転送データの書き込み
①転送データのDPRAMへの書き込み
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”にアクセスしたいバンク番号を設
定します。その後、アクセス用レジスタよりDPRAMにデータの書き込みを行います。
②送信処理完了
<スレーブ>
1.初期設定
①メモリアクセス制御の有効設定
メモリバンク/スレーブ選択レジスタの“MEN”を“1”に設定します。
2.転送データの読み込み
①転送データのDPRAMからの読み込み
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”にアクセスしたいバンク番号を設
定します。その後、アクセス用レジスタよりDPRAMのデータの読み込みを行います。
②同期受信完了
Interface Corporation
- 34 -
PEX-493109
6.2 データ転送(スレーブ→マスタ)
<スレーブ>
1.初期設定
①メモリアクセス制御の有効設定
メモリバンク/スレーブ選択レジスタの“MEN”を“1”に設定します。
2.転送データの書き込み
①転送データのDPRAMへの書き込み
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”にアクセスしたいバンク番号を設
定します。その後、アクセス用レジスタよりDPRAMにデータの書き込みを行います。
②送信処理完了
<マスタ>
1.初期設定
①メモリアクセス制御の有効設定
メモリバンク/スレーブ選択レジスタの“MEN”を“1”に設定します。
②スレーブ番号設定
メモリバンク/スレーブ選択レジスタの“SLV[2]∼SLV[0]”にアクセスしたいスレーブの番号
を設定します。
2.転送データの読み込み
①転送データのDPRAMからの読み込み
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”にアクセスしたいバンク番号を設
定します。その後、アクセス用レジスタよりDPRAMのデータの読み込みを行います。
②同期受信完了
- 35 -
Interface Corporation
PEX-493109
6.3 同期データ転送・同期フラグ(マスタ→スレーブ)
<マスタ>
1.初期設定
①メモリアクセス制御の有効設定
メモリバンク/スレーブ選択レジスタの“MEN”を“1”に設定します。
②スレーブ番号設定
メモリバンク/スレーブ選択レジスタの“SLV[2]∼SLV[0]”にアクセスしたいスレーブの番号
を設定します。
③同期フラグレジスタ(DPRAMの任意のアドレス)クリア
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”を同期フラグのバンク番号に設定
します。その後、同期フラグレジスタを“0”に設定します。
2.転送データの書き込み
①転送データのDPRAMへの書き込み
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”にアクセスしたいバンク番号を設
定します。その後、アクセス用レジスタよりDPRAMにデータの書き込みを行います。
②同期フラグレジスタ(DPRAMの任意のアドレス)セット
全データの書き込み終了後、メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”を同
期フラグのバンク番号に設定します。その後、同期フラグレジスタを“1”に設定します。
3.同期送信完了処理
①同期フラグレジスタ(DPRAMの任意のアドレス)クリア確認
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”を同期フラグのバンク番号に設定
します。その後、同期フラグレジスタが“0”になるのを待ちます。
②送信処理完了
<スレーブ>
1.初期設定
①メモリアクセス制御の有効設定
メモリバンク/スレーブ選択レジスタの“MEN”を“1”に設定します。
②同期フラグレジスタ(DPRAMの任意のアドレス)セット確認
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”を同期フラグのバンク番号に設定
します。その後、同期フラグレジスタが“1”になるのを待ちます。
2.転送データの読み込み
①転送データのDPRAMからの読み込み
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”にアクセスしたいバンク番号を設
定します。その後、アクセス用レジスタよりDPRAMのデータの読み込みを行います。
②同期フラグレジスタ(DPRAMの任意のアドレス)クリア
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”を同期フラグのバンク番号に設定
します。その後、同期フラグレジスタを“0”に設定します。
③同期受信完了
Interface Corporation
- 36 -
PEX-493109
6.4 同期データ転送・同期フラグ(スレーブ→マスタ)
<スレーブ>
1.初期設定
①メモリアクセス制御の有効設定
メモリバンク/スレーブ選択レジスタの“MEN”を“1”に設定します。
②同期フラグレジスタ(DPRAMの任意のアドレス)クリア
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”を同期フラグのバンク番号に設定
します。その後、同期フラグレジスタを“0”に設定すします。
2.転送データの書き込み
①転送データのDPRAMへの書き込み
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”にアクセスしたいバンク番号を設
定します。その後、アクセス用レジスタよりDPRAMにデータの書き込みを行います。
②同期フラグレジスタ(DPRAMの任意のアドレス)セット
全データの書き込み終了後、メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”を同
期フラグのバンク番号に設定します。その後、同期フラグレジスタを“1”に設定します。
3.同期送信完了処理
①同期フラグレジスタ(DPRAMの任意のアドレス)クリア確認
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”を同期フラグのバンク番号に設定
します。その後、同期フラグレジスタが“0”になるのを待ちます。
②送信処理完了
<マスタ>
1.初期設定
①メモリアクセス制御の有効設定
メモリバンク/スレーブ選択レジスタの“MEN”を“1”に設定します。
②スレーブ番号設定
メモリバンク/スレーブ選択レジスタの“SLV[2]∼SLV[0]”にアクセスしたいスレーブの番号
を設定します。
③同期フラグレジスタ(DPRAMの任意のアドレス)セット確認
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”を同期フラグのバンク番号に設定
します。その後、同期フラグレジスタが“1”になるのを待ちます。
2.転送データの読み込み
①転送データのDPRAMからの読み込み
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”にアクセスしたいバンク番号を設
定します。その後、アクセス用レジスタよりDPRAMのデータの読み込みを行います。
②同期フラグレジスタ(DPRAMの任意のアドレス)クリア
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”を同期フラグのバンク番号に設定
します。その後、同期フラグレジスタを“0”に設定します。
③同期受信完了
- 37 -
Interface Corporation
PEX-493109
6.5 同期データ転送・割り込み(マスタ→スレーブ)
<マスタ>
1.初期設定
①メモリアクセス制御の有効設定
メモリバンク/スレーブ選択レジスタの“MEN”を“1”に設定します。
②スレーブ番号設定
メモリバンク/スレーブ選択レジスタの“SLV[2]∼SLV[0]”にアクセスしたいスレーブの番号
を設定します。
2.転送データの書き込み
①転送データのDPRAMへの書き込み
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”にアクセスしたいバンク番号を設
定します。その後、アクセス用レジスタよりDPRAMにデータの書き込みを行います。
②スレーブに割り込み要求
全データの書き込み終了後、メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”を
“000b”に設定します。その後、+000Chに対して任意の値を出力します。
③送信処理完了
<スレーブ>
1.初期設定
①メモリアクセス制御の有効設定
メモリバンク/スレーブ選択レジスタの“MEN”を“1”に設定します。
②割り込み発生許可設定
割り込み制御レジスタの“IEN”を“1”に設定します。
2.割り込み処理
①割り込みフラグの確認
割り込み発生時、割り込みフラグレジスタの“MR”が“1”で有ることを確認します。
②転送データのDPRAMからの読み込み
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”にアクセスしたいバンク番号を設
定します。その後、アクセス用レジスタよりDPRAMのデータの読み込みを行います。
③割り込み完了処理
EOI(End of Interrupt)を発行します。
④同期受信完了
Interface Corporation
- 38 -
PEX-493109
6.6 同期データ転送・割り込み(スレーブ→マスタ)
<スレーブ>
1.初期設定
①メモリアクセス制御の有効設定
メモリバンク/スレーブ選択レジスタの“MEN”を“1”に設定します。
2.転送データの書き込み
①転送データのDPRAMへの書き込み
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”にアクセスしたいバンク番号を設
定します。その後、アクセス用レジスタよりDPRAMにデータの書き込みを行います。
③マスタに割り込み要求
全データの書き込み終了後、メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”を
“000b”に設定します。その後、+000Chに対して任意の値を出力します。
④送信処理完了
<マスタ>
1.初期設定
①メモリアクセス制御の有効設定
メモリバンク/スレーブ選択レジスタの“MEN”を“1”に設定します。
②割り込み発生許可設定
割り込み制御レジスタの“IEN”を“1”に設定します。
2.割り込み処理
①割り込みフラグの確認
割り込み発生時、割り込みフラグレジスタの“SR[7]∼SR[0]”の何れかが“1”で有ることを確認
します。
②スレーブ番号設定
メモリバンク/スレーブ選択レジスタの“SLV[2]∼SLV[0]”に割り込み要求したスレーブの番
号を設定します。
③転送データのDPRAMからの読み込み
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”にアクセスしたいバンク番号を設
定します。その後、アクセス用レジスタよりDPRAMのデータの読み込みを行います。
④割り込み完了処理
EOI(End of Interrupt)を発行します。
⑤同期受信完了
- 39 -
Interface Corporation
PEX-493109
6.7 データ転送・パリティチェック(マスタ→スレーブ)
<マスタ>
1.初期設定
①メモリアクセス制御の有効設定
メモリバンク/スレーブ選択レジスタの“MEN”を“1”に設定します。
②スレーブ番号設定
メモリバンク/スレーブ選択レジスタの“SLV[2]∼SLV[0]”にアクセスしたいスレーブの番号
を設定します。
2.転送データの書き込み
①転送データのDPRAMへの書き込み
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”にアクセスしたいバンク番号を設
定します。その後、アクセス用レジスタよりDPRAMにデータの書き込みを行います。
②パリティチェックの確認
パリティチェックステータスレジスタの“PWR”が“0”で有ることを確認します。
“PWR”が“1”の場合は、①を再度行います。
②送信処理完了
<スレーブ>
1.初期設定
①メモリアクセス制御の有効設定
メモリバンク/スレーブ選択レジスタの“MEN”を“1”に設定します。
2.転送データの読み込み
①転送データのDPRAMからの読み込み
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”にアクセスしたいバンク番号を設
定します。その後、アクセス用レジスタよりDPRAMのデータの読み込みを行います。
②同期受信完了
Interface Corporation
- 40 -
PEX-493109
6.8 データ転送・パリティチェック(スレーブ→マスタ)
<スレーブ>
1.初期設定
①メモリアクセス制御の有効設定
メモリバンク/スレーブ選択レジスタの“MEN”を“1”に設定します。
2.転送データの書き込み
①転送データのDPRAMへの書き込み
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”にアクセスしたいバンク番号を設
定します。その後、アクセス用レジスタよりDPRAMにデータの書き込みを行います。
②送信処理完了
<マスタ>
1.初期設定
①メモリアクセス制御の有効設定
メモリバンク/スレーブ選択レジスタの“MEN”を“1”に設定します。
②スレーブ番号設定
メモリバンク/スレーブ選択レジスタの“SLV[2]∼SLV[0]”にアクセスしたいスレーブの番号
を設定します。
2.転送データの読み込み
①転送データのDPRAMからの読み込み
メモリバンク/スレーブ選択レジスタの“BNK[3]∼BNK[0]”にアクセスしたいバンク番号を設
定します。その後、アクセス用レジスタよりDPRAMのデータの読み込みを行います。
②パリティチェックの確認
パリティチェックステータスレジスタの“PRD”が“0”で有ることを確認します。
“PRD”が“1”の場合は、①を再度行います。
③同期受信完了
- 41 -
Interface Corporation
PEX-493109
重要な情報
補償について
ドキュメント内の情報には万全を期していますが、万一、誤記または誤植等があった場合、予告無
く改訂する場合があります。
ドキュメントまたはドキュメント内の情報を利用して作成されたプログラムの挙動により発生し
たいかなる損害に対しても弊社は責任を負いません。
ドキュメント内の図や表は説明のために用意されたものであり、ユーザ個別の応用事例により変化
する場合があります。
本製品に含まれるバグ、あるいは本製品の供給(納期遅延),性能、もしくは使用に起因する付帯的損
害もしくは間接的損害に対して、弊社に全面的に責がある場合でも、弊社はその製品に対する改良
(正常に動作する)、代品交換までとし、金銭面での賠償の責任は一切負わないものとしますので、
予めご了承ください。
著作権,知的所有権
本ドキュメントに含まれるソースプログラムおよび、本ドキュメントに関する権利や知的所有権は
弊社が所有しています。
弊社製品の適用における注意
弊社製品は、人命にかかわるような状況下で使用される機器に用いられることを目的として設計,
製造されたものではありません。
弊社製品を乗用移動体用,医療用,航空宇宙用,原子力制御用,海底中継用機器等、特殊用途をご検討の
際には、弊社お客様相談センタまでご照会ください。
複製の禁止
弊社の許可なく、本ドキュメントの全て、または一部に関わらず、複製,改変,転用等を行うことは
できません。
サポート
本ドキュメントは、経験を積んだ開発者を対象に作成されたものです。
本ドキュメントの内容に関する質問および、本ドキュメントを利用したプログラム作成や記載内容
に関する技術サポートは行いません。
サポートが必要な方は、有償にてサポートが可能です。別途、お客様相談センタまでお問い合わせ
ください。
商標/登録商標
本ドキュメントに掲載されている会社名,製品名は、それぞれ各社の商標または登録商標です。
ご使用の製品に関する制限,注意事項,保証等に関しては、製
品の USER’S MANUAL に記載されていますので、よく目を
通した上で、本ドキュメントをご利用ください。
Interface Corporation
- 42 -
∼MEMO∼
- 43 -
Interface Corporation
PEX-493109 I/O公開資料
2006年 9月 IEB-J493109 Ver.1.0 発行
発行所
〒732-0828
広島県広島市南区京橋町10-21
TEL 082-262-7777
FAX 082-262-5066
定価 ¥2,000
本書の内容の一部または全部を、無断で転載することを禁止します。
本書の内容は、将来予告なく変更することがありますので、予めご了承ください。
Interface Corporation
IEB-J493109 Ver. 1.0 Vol. 1/1
Fly UP