SC-OBC Module A1 Technical Reference Manual

このドキュメントは、Space Cubics製 OBC SC-OBC Module A1に搭載するFPGAの仕様を説明する「SC-OBC-A1 FPGA Technical Reference Manual」です。

SC-OBC-A1 FPGAの開発や、ソフトウェアの開発に必要な、FPGA機能やレジスタの仕様が記載されています。

Overview

SC-OBC Module A1 FPGA (以下 SC-OBC-A1 FPGA)は、Space Cubics製 OBC "SC-OBC Module A1"の FPGAに搭載されるシステムです。

SC-OBC Module A1は 3U以上の CubeSatをターゲットとする On Board Computer(以下、OBC)です。 メインプロセッサ用デバイスとして AMD (旧 Xilinx) 製 Artix-7 FPGAを採用し、FPGAにインプリするソフトコアの ARM Cortex-M3を核としシステムを構成します。 FPGAを採用する事で、インターフェースの種類や数を 柔軟にカスタマイズする事が可能です。

SC-OBC-A1 FPGAには、ユーザーのIPコアを実装するためのモジュールが準備されており、AXIバス規格に適合した IPコアを設計する事で、簡単にシステムに組み込む事ができます。

FPGA_BlockDiagram
Figure 1. SC-OBC-A1 FPGA Block Diagram

SC-OBC-A1 FPGAのシステムは大きく 6つの機能に分割されます。

System Controller

System Controllerは、FPGAのクロック, リセットを生成するためのモジュールです。 このモジュールで生成されるクロック, リセットは、FPGA全体に供給されます。

CPU Subsystem

Space Cubics OBCの FPGA機能を司る CPUを構成するモジュールです。 CPUには ARM製の Cortex-M3を採用しています。 ARM Cortex-M3 Design Start FPGA-Xilinx editionをベースとし、ITCM(Instruction Tightly Coupled Memory)や、バスIPなどで構成されます。

HRMEM (High-reliability Memory)

HRMEMは、CPUが使用するメインメモリです。 CPUとの接続は AMBA AHBで構成される CPU Local Busで行われます。

CPU Local Busは ARM Cortex-M3の Instruction code AHB, Data code AHBをまとめたバスで構成されています。 CPU Local Busでメモリと直接接続する構成とする事で、Instructionアクセスのレイテンシーを最小限に抑えるように設計されています。

Main AXI Bus System

Main AXI Bus Systemは、CubeSat向けの OBCシステムとして必須となる機能の中で、アクセススピードが比較的重視されるIPコアをまとめたシステムです。

このバスには、コンピュータシステムとして必要なメモリコントロールIPや CubeSatのメインの通信バスとなる CANのコントローラIPなどが接続されています。

Low Performance IP Bus System

Low Performance IP Bus Systemは、CubeSat向け OBCシステムとして必須となる機能の中、アクセス頻度の低いIPコアをまとめたシステムです。

このシステムは AHBを採用する事で、IPコアの回路規模を小さくする事ができます。 このバスには、システムレジスタやI2Cコントローラなどが接続されます。

Mission Bus System

Mission Bus Systemはユーザーが CubeSatのミッションを行うための機能を実装するシステムです。 OBCの出荷時に Flash Memoryに書き込まれている標準イメージ (以下、標準イメージ)では、このシステムには UART、I2C、SPI、GPIOコアが接続されています。 ユーザーは、Mission Bus Systemを再設計したり、標準イメージとして実装される回路を修正したりする事により任意のシステムを実現する事ができます。

このシステムは、バスとして AXIが採用されています。ユーザーはAMDが提供する IPコアを用いる事によって簡単にシステムを構築する事ができます。

Outline

Feature Description

FPGA Device

AMD (旧 Xilinx) Artix-7 (XC7A200T-1FBG676I)
- Logic Cell 215,360
- CLB スライス数(4 LUT, 8 F/F) 33,650
- CLB 最大分散RAM 2,888 Kb
- DSP48E1スライス 740
- BlockRAM 36 Kb x 365 (18 Kb x 730
- CMT 10
- XADC 1 (for FPGA die temperature measurement)
- I/O Bank 10

CPU Core

ARM Cortex-M3 Design Start FPGA Xilinx Edition r0p1
- CPU Revision r2p1
- ARMv7-M architecture profile
- Maximum operation frequency up to 48 MHz
※ユーザーの回路も含めタイミング検証を行い最高動作周波数を確認する必要があります

On Chip SRAM (ITCM for Boot)

32 KByte

HRMEM (High-reliability Memory)

4 MByte
- ECC Memory Protection
- Memory Scrubbing

Internal System Bus

CPU Local Bus: AMBA AHB3 32 bitMain Bus: AMBA AXI4 32bit
Mission Bus (for User): AMBA AXI4 32 bit
Low Performance IP Bus: AMBA AHB3 32 bit

DMA

Not Support

Interrupt Support

16 User interrupt signal

Watchdog Timer

Space Cubics TRCH-FPGA watchdog system

FPGA Configuration Flash Memory

32 MByte/Redundancy (S25FL256L)

Data Store Flash Memory

32 MByte/Redundancy (S25FL256L)

FRAM

512 kByte x 2 (CY15B104QSN)

Control Area Network (CAN)

Conforms to the ISO 11898-1, CAN2.0A, and CAN2.0B standards Supports bit rates up to 1 Mb/s

Space Communication Bus (SCBus)

この機能は、現在開発中です
Compliant with the USB-based communication interface proposed by Space Cubics (T.B.D.)
- Supports bit rates 12 Mbps (USB Full-Speed)

I2C Interface

SC-OBC Module A1 On Board I2C x 1 channel
External I2C x 1 channel

FPGA User IO

User IO Group 1 x 16 pin (IO電圧可変)
User IO Group 2 x 16 pin (IO電圧可変)
User IO Group 4 x 6 pin, Cortex-M3 Debug Port兼用 (3.3V固定)
標準イメージでは、以下のインターフェースが実装されています。
- UART x 6 channel
- I2C x 2 channel
- SPI x 1 channel (Chip Select 3本)
- GPIO x 10 bit

Debug Port

ARM SW-DP (Serial Wire Debug Port) Interface

User IO Pin Description

SC-OBC-A1 FPGAの標準イメージにおいて、User IOに割り当てられている機能を以下に示します。 これらの信号のアサインは、ユーザーの Mission Bus Systemの設計によって変わります。

Table 1. User IO Pin Description
Pin No. User IO Direction Description

7

UIO1[0]

OUTPUT

UART 1 TX

8

UIO1[1]

INPUT

UART 1 RX

9

UIO1[2]

OUTPUT

UART 2 TX

10

UIO1[3]

INPUT

UART 2 RX

11

UIO1[4]

OUTPUT

UART 3 TX

12

UIO1[5]

INPUT

UART 3 RX

13

UIO1[6]

OUTPUT

UART 4 TX

14

UIO1[7]

INPUT

UART 4 RX

16

UIO1[8]

OUTPUT

UART 5 TX

17

UIO1[9]

INPUT

UART 5 RX

18

UIO1[10]

OUTPUT

UART 6 TX

19

UIO1[11]

INPUT

UART 6 RX

20

UIO1[12]

INOUT

I2C 1 SCL

21

UIO1[13]

INOUT

I2C 1 SDA

22

UIO1[14]

INOUT

I2C 2 SCL

23

UIO1[15]

INOUT

I2C 2 SDA

74

UIO2[0]

OUTPUT

SPI SCK

73

UIO2[1]

OUTPUT

SPI MOSI

72

UIO2[2]

INPUT

SPI MISO

71

UIO2[3]

OUTPUT

SPI CS0

70

UIO2[4]

OUTPUT

SPI CS1

69

UIO2[5]

OUTPUT

SPI CS2

68

UIO2[6]

INOUT

GPIO [6]

67

UIO2[7]

INOUT

GPIO [7]

65

UIO2[8]

INOUT

GPIO [8]

64

UIO2[9]

INOUT

GPIO [9]

63

UIO2[10]

INOUT

GPIO [10]

62

UIO2[11]

INOUT

GPIO [11]

61

UIO2[12]

INOUT

GPIO [12]

60

UIO2[13]

INOUT

GPIO [13]

59

UIO2[14]

INOUT

GPIO [14]

58

UIO2[15]

INOUT

GPIO [15]

28

UIO4[0]

INPUT

Reserved

47

UIO4[1]

INPUT

SWCLK

46

UIO4[2]

INPUT

SWDIO

45

UIO4[3]

OUTPUT

UART Console TX

44

UIO4[4]

INPUT

UART Console RX

43

UIO4[5]

INPUT

Reserved

Memory Map

以下に、SC-OBC-A1 FPGAのメモリマップを示します。

MemoryMap
Figure 2. SC-OBC-A1 FPGA Memory Map
Table 2. SC-OBC-A1 FPGA メモリマップ
Field Address Space Comment

Instruction Tightly Coupled Memory (Block RAM)

0x0000_0000 - 0x0000_7FFF

CFGITCMEN[0] is 1

HRMEM (SRAM)

0x0000_0000 - 0x003F_FFFF

CFGITCMEM[0] is 0

Main AXI Bus

0x4000_0000 - 0x4EFF_FFFF

- QSPI Controller (Configuration Flash)

0x4000_0000 - 0x4000_FFFF

- QSPI Controller (Data Store Flash)

0x4010_0000 - 0x4010_FFFF

- QSPI Controller(FRAM)

0x4020_0000 - 0x4020_FFFF

- CAN Controller

0x4040_0000 - 0x4040_FFFF

- HRMEM Register

0x4050_0000 - 0x4050_FFFF

Low Performance IP Bus

0x4F00_0000 - 0x4FFF_FFFF

- System Register

0x4F00_0000 - 0x4F00_FFFF

- UART Lite (Console Interface)

0x4F01_0000 - 0x4F01_FFFF

- External I2C Controller

0x4F03_0000 - 0x4F03_FFFF

- System Monitor

0x4F04_0000 - 0x4F04_FFFF

- General Purpose Timer

0x4F05_0000 - 0x4F05_FFFF

Mission(UDL) Bus

0x5000_0000 - 0x5FFF_FFFF

HRMEM Memory Mirror

0x6000_0000 - 0x603F_FFFF

Coretex-M3 Internal Private peripheral bus

0xE000_0000 - 0xE003_FFFF

- ITM

0xE000_0000 - 0xE000_0FFF

- DWT

0xE000_1000 - 0xE000_1FFF

- FPB

0xE000_2000 - 0xE000_2FFF

- SCS

0xE000_E000 - 0xE000_EFFF

Coretex-M3 External Private peripheral bus

0xE004_0000 - 0xE00F_FFFF

- TPIU

0xE004_0000 - 0xE004_0FFF

- ETM

0xE004_1000 - 0xE004_1FFF

- External PPB

0xE004_2000 - 0xE00F_EFFF

- ROM Table

0xE00F_F000 - 0xE00F_FFFF

SC-OBC-A1 FPGAのメモリ空間において、0x50000000〜0x5FFFFFFFは Mission Bus Systemに予約された空間です。 このメモリ空間は、Mission Bus Systemの設計によって任意の構成に実装することができます。 以下に示すメモリマップは、標準イメージに実装されている Mission Bus Systemのメモリマップです。

MissionBusMemoryMap
Figure 3. SC-OBC-A1 FPGA Mission Bus System Memory Map
Field Address Space Comment

Mission(UDL) Bus

0x5000_0000 - 0x5FFF_FFFF

- UART Lite 1

0x5000_0000 - 0x5000_FFFF

- UART Lite 2

0x5001_0000 - 0x5001_FFFF

- UART Lite 3

0x5002_0000 - 0x5002_FFFF

- UART Lite 4

0x5003_0000 - 0x5003_FFFF

- UART Lite 5

0x5004_0000 - 0x5004_FFFF

- UART Lite 6

0x5005_0000 - 0x5005_FFFF

- I2C Controller 1

0x5006_0000 - 0x5006_FFFF

- I2C Controller 2

0x5007_0000 - 0x5007_FFFF

- AMD QSPI

0x5008_0000 - 0x5008_FFFF

- AMD GPIO

0x5009_0000 - 0x5009_FFFF

CPUが使用する メインメモリーは アドレス 0x00000000にマッピングされています。 メインメモリーは、ITCM (Instruction Tightly Coupled Memory)と HRMEM (High Reliability Memory)を選択する事ができます。 ITCMと HRMEMの切り替えは Code Memory Select Registerの ITCMENビットによって行います。

ITCMは FPGAの Block RAMで構成されています。 このメモリは FPGAの Configurationデータ (Bit Streamデータ)にプログラムを格納する事で、FPGAの Configuration後 すぐに CPUが動作します。 HRMEMは On Boardの SRAMで構成されています。 このメモリを使用する場合には、電源の投入後にデータを書き込んで使用する必要があります。 HRMEMは IPコアの内部に SRAMのデータが放射線によって破壊された場合に訂正する仕組みを実装しているため、通常はこのメモリを使って動作します。

itcm_hrmem_select
Figure 4. CPU Main Memory構成

FPGAの Configuration後、アドレス 0x00000000に ITCMがマッピングされています。 ITCMには プログラムローダーを書き込んで使用します。 プログラムローダーは NOR Flash Memoryに書き込まれているプログラムを HRMEMに転送するために使用します。 HRMEMのアドレス 0x60000000番地は、アドレス 0x00000000番地のミラーとなっており、プログラムローダーによって 0x60000000に書き込まれたデータは、メインメモリーを HRMEMに切り替えた時に 0x00000000から読み出す事ができます。 プログラムローダーが HRMEMへのプログラムを書き込む最後の手順として、Code Memory Select Registerの ITCMENビットを 0に書き込みます。 ITCMENビットの書き込みにより、メインメモリーを切り替えるとシステムにリセットがかかり、切り替えたメモリのアドレス 0x00000000から書き込まれたデータで CPUが動作します。

Interrupt

SC-OBC-A1 FPGAは、Cortex-M3に組み込まれる割り込みコントローラの外部割り込みを使用し、IPコアの割り込みをCPUに伝えます。 Cortex-M3の 割り込みコントローラの仕様については、ARM Cortex-M3 Technical Reference Manualを参照してください。

IRQ Bit [31:16]は、Mission Bus Systemに割り当てられた割り込みビットです。 ユーザーが設計した回路に応じて割り当てが決定します。

以下に、SC-OBC-A1 FPGAの IPコアが出力する割り込みの割り当てを示します。 IRQ Bit [31:16]は、標準イメージにて実装されている割り込みビットです。

Table 3. SC-OBC-A1 FPGA割り込みリスト
Exception No. IRQ Bit Interrupt Type

16

[0]

UART (Console)

Pulse

17

[1]

HRMEM (High-reliability Memory)

Level

18

[2]

QSPI Controller (Configuration Flash Memory)

Level

19

[3]

QSPI Controller (Data Store Flash Memory)

Level

20

[4]

QSPI Controller (FRAM)

Level

21

[5]

CAN Controller

Level

22

[6]

Reserved (OBC System Interrupt Area)

-

23

[7]

External I2C Controller

Level

24

[8]

System Monitor (Hardware Error)

Level

25

[9]

System Monitor (Board Health Monitor)

Level

26

[10]

General Purpose Timer (Global Timer)

Level

27

[11]

General Purpose Timer (Software Interrupt Timer)

Level

28 - 31

[15:12]

Reserved (OBC System Interrupt Area)

-

32 - 47

[31:16]

UDL IP Interrupt Area

-

32

[16]

UART 1

Pulse

33

[17]

UART 2

Pulse

34

[18]

UART 3

Pulse

35

[19]

UART 4

Pulse

36

[20]

UART 5

Pulse

37

[21]

UART 6

Pulse

38

[22]

I2C Controller 1

Levle

39

[23]

I2C Controller 2

Level

40

[24]

AMD QSPI Controller

Level

41

[25]

AMD GPIO Controller

Level

47 - 42

[31:26]

Reserved (UDL IP Interrupt Area)

-

System Boot

NOR Flash for Configuration Memory

SC-OBC Module A1は、FPGAの Bitstreamデータと Flight Softwareを NOR Flash Memoryに格納しています。

ひとつの NOR Flash Memoryには、Goldenと Updateの 2つのデータセットを想定しています。

Goldenは、実績のあるデータを書き込みます。この領域は 宇宙機の打ち上げ前に書き込み、以後 書き換えを行わない事を想定しています。 Updateは、軌道上での書き換えを想定しています。 もしも、Updateデータに問題がある場合は、Goldenに書き込まれたデータによって、Updateデータを復旧します。

このように ひとつの NOR Flash Memoryに、2つのデータを書き込む事で、データの信頼性を確保しています。 また、Configuraionデータを格納するための Flash Memroyは 2個搭載されており、NOR Flash Memory 2を NOR Flash Memory 1のミラーとする事により、信頼性の高いシステムを構築します。

以下に NOR Flash Memoryのデータパーティションを示します。

NOR_Flash_for_Configuration
Figure 5. NOR Flash for Configuration Data Partition
Address Data Partision

0x000_0000_ - 0x07F_FFFF

FPGA Bitstream Data (Golden data)

0x080_0000_ - 0x0BF_FFFF

Flight Software (Golden data)

0x100_0000_ - 0x19F_FFFF

FPGA Bitstream Data (Update data)

0x1A0_0000_ - 0x1DF_FFFF

Flight Software (Update data)

FPGA Boot Flow

FPGAの Bootには AMD 7シリーズ FPGAでサポートされている Fallback Multi Bootを活用しています。

Multi Bootフローを以下に示します。

MultiBoot_Flow
Figure 6. NOR Flash for Configuration Data Partition

TRCHによって FPGAに電源が投入されると、FPGAは NOR Flash Memoryのアドレス 0から Goldenイメージを読み込みます。 Goldenデータの読み込み中に Multi Bootの処理を見つけると、Updateイメージが格納されているアドレスにジャンプし、Updateイメージの読み込みを行います。

読み込まれた Updateイメージが正常なデータであった場合、FPGAは Configurationを完了し Updateイメージで動作します。 読み込まれた Updateイメージに CRCエラーなどの問題があった場合、FPGAは Fallbackプロセスにより Goldenイメージの読み込みを行い、FPGAは Goldenイメージで動作します。

System Register

System Registerは、SC-OBC-A1 FPGAのシステム制御を司るレジスタで構成されるモジュールです。

レジスタ詳細

System Registerは、Base Address 0x4F00_0000に配置されています。

Table 4. System Registerメモリマップ
Offset Symbol Register Initial

0x0000

SYSREG_CODEMSEL

Code Memory Select Register

0x00000001

0x0004

SYSREG_SYSCLKCTL

System Clock Control Register

0x00000001

0x0008

SYSREG_PLLINFO

PLL Infomation Register

0x00280014

0x0010

SYSREG_CFGMEMCTL

Configuration Flash Memory Register

0x000x0000

0x0014

SYSREG_BOOTSTS

Boot Status Register

-

0x0020

SYSREG_PWRCYCLE

Power Cycle Register

0x00000000

0x0030

SYSREG_PWRMANAGE

Power Management Register

0x00000000

0x00F0

SYSREG_SPAD1

Scratchpad 1 Register

0x00000000

0x00F4

SYSREG_SPAD2

Scratchpad 2 Register

0x00000000

0x00F8

SYSREG_SPAD3

Scratchpad 3 Register

0x00000000

0x00FC

SYSREG_SPAD4

Scratchpad 4 Register

0x00000000

0xF000

SYSREG_VER

System Register IP Version Register

-

0xFF00

SYSREG_BUILDINFO

Build Information Register

-

0xFF10

SYSREG_DNA1

Device DNA 1 Register

-

0xFF14

SYSREG_DNA2

Device DNA 2 Register

-

Code Memory Select Register (Offset 0x0000)

Code Memory Select Registerは CPUの Instruction codeが格納されているメモリを選択するためのレジスタです。 本レジスタの制御により、メモリ空間の アドレス 0x00000000にマッピングされるメモリを選択します。

電源投入時、ITCMENビットは "1"となっており、メモリ空間のアドレス 0x00000000には ITCMがマッピングされています。 CPUによって、ITCMENビットが "0"に書き換えられると、メモリ空間のアドレス 0x00000000に HRMEMがマッピングされます。

ITCMENビットの設定値が変更された時、システム全体にリセットが発行されます。 ITCMENビットの変更は、ITCMに書き込まれた Boot用のソフトウェアから HRMEMに書き込まれたメインのソフトウェアに遷移する時に 1度だけ制御する事を想定しています。

Table 5. Code Memory Select Regsiter ビットフィールド
bit Symbol Field Description R/W

31:16

ITCMENPKC

Protect Keycode

ITCMENビットの書き込みプロテクトフィールドです。
ITCMENビットに書き込みを行う場合は、このフィールドに0x5A5Aを書き込んでください。このフィールドに0x5A5A以外が設定された場合、ITCMENビットへの書き込みは無視されます。

WO

15:1

-

Reserved

Reserved

-

0

ITCMEN

ITCM Enable

メモリ空間のアドレス0x00000000にマッピングされるメモリを選択します。
0: HRMEM
1: ITCMEN

R/W

System Clock Control Register (Offset 0x0004)

System Clock Control Registerは、システム内部で使われるクロックの周波数を設定するためのレジスタです。

このレジスタの制御により、SC-OBC-A1 FPGA内部の PLLを停止させ、低消費電力動作させることが可能です。 尚、CPUとして Cortex-M3を採用するシステムでは CLKMODE = 0b10 (SYS_CLK 96 MHz)の設定は禁止です。

Table 6. System Clock Control Register ビットフィールド
bit Symbol Field Description R/W

31:2

-

Reserved

Reserved

-

1:0

CLKMODE

CLKMODE Control

システムのクロックモードを制御します。設定値とクロック周波数の関係は "CLKMODE設定と PLL状態 及び クロック周波数の関係"を参照してください。

R/W

CLKMODE信号の設定値と、PLLの状態 及びシステムクロック周波数の関係は以下となります。

Table 7. CLKMODE設定と PLL状態 及び クロック周波数の関係
CLKMODE[1:0] PLL Status REF_CLK SYS_CLK MAXI_CLK USER_CLK1 / USER_CLK2

0b00

PowerDown

24 MHz (Reference Clock)

24 MHz (Reference Clock)

24 MHz (Reference Clock)

RTLパラメータにより設定 (Stop or Reference Clock)

0b01

Normal Operation

24 MHz (Reference Clock)

48 MHz (PLL Output)

48 MHz (PLL Output)

RTLパラメータにより設定 (PLL Output)

0b10 ([1])

Normal Operation

24 MHz (Reference Clock)

96 MHz (PLL Output)

96 MHz (PLL Output)

RTLパラメータにより設定 (PLL Output)

0b11 (設定禁止)

-

-

-

-

-

PLL Infomation Register (Offset 0x0008)

PLL Infomation Registerは、システムクロックの設定状況を示すレジスタです。 ソフトウェアはこのレジスタの値から、現在のシステムクロックの周波数を計算する事ができます。

Table 8. System Clock Control Register ビットフィールド
bit Symbol Field Description R/W

31:16

PLLMULT

PLL Multiple Rate

システムクロックを生成するPLLの現在の逓倍率を示すフィールドです。

RO

15:0

PLLDIV

PLL Divide Rate

システムクロックを生成するPLLの現在の分周率を示すフィールドです。

RO

システムクロック周波数は PLL Infomation Registerから読み出した値を使い以下の式で計算する事ができます。

\[システムクロック周波数 (MHz) = リファレンスクロック (24 MHz) \times \frac{PLL\_MULT}{PLL\_DIV}\]

Configuration Flash Memory Register (Offset 0x0010)

Configuration Flash Memory Registerは SC-OBC-A1 Moduleに実装される 2つの Configuration Flash Memory (NOR FLash Memory)に関する制御を行うためのレジスタです。

Table 9. Configuration Flash Memory Register ビットフィールド
bit Symbol Field Description R/W

31:13

-

Reserved

Reserved

-

12

CFGBOOTMEM

Boot Memory

SC-OBC-A1 FPGAが Configurationsに使用した Flash Memoryを示すビットです。 このフィールドを読み出す事で、SC-OBC-A1 FPGAがどちらの Flash Memoryから起動したか知る事ができます。SC-OBC-A1 FPGAの Configuration後 Resetが解除される時に確定します。

RO

11:6

-

Reserved

Reserved

-

5

CFGMEMMON

Configuration Flash Memory Monitor

現在選択されている Configuration Flash Memoryの選択状態を示すビットです。

RO

4

CFGMEMSEL

Configuration Flash Memory Select

Configuration Flash Memoryを選択するためのビットです。CFGMEMOWNERフィールドが "0"にクリアされている時のみ、このビットが有効になります。
0: Configuration Flash Memory 0を選択
1: Configuration Flash Memory 1を選択

R/W

3:1

-

Reserved

Reserved

-

0

CFGMEMOWNER

Configuration Flash Memory Owner

Configuration Flash Memoryの選択をレジスタによって選択するか、QSPIコアによって選択するかを決定するフィールドです。
0: Configuration Flash Memoryは CFGMEMSELビットにより選択される
1: Configuration Flash Memoryは QSPIコアにより選択される
QSPIコアによる Configuration Flash Memoryのメモリパトロールを行う場合は、このビットを "1"にセットしてください。

R/W

Configuration Flash Memoryの選択は、以下の 3つの制御状態を持っています。

状態 選択条件

TRCHによる選択

OBC Moduleへの電源投入後、TRCHが FPGAの 起動完了を認識するまでの間

レジスタによる選択

TRCHが FPGAの Configuration完了を認識し、且つ CFGMEMOWNER=0の場合

QSPIコアによる選択

TRCHが FPGAの Configuration完了を認識し、且つ CFGMEMOWNER=1の場合

SC-OBC-A1 FPGAが Configurationし TRCHが FPGAの起動完了を認識する間、Configuration Flash Memoryの選択は TRCHによって行われます。 この仕様により、SC-OBC-A1 FPGAが Configurationするための Memoryは TRCHによって選択されます。

TRCHが FPGAの起動完了を認識すると、Configuration Flash Memoryの制御権は FPGAに移行します。 FPGAは CFGMEMSELビットの設定によって、ソフトウェアによる選択を行うか、QSPIコアによる選択を行うかを決定します。

Configuration Flash Memoryの選択を切り替える場合は、CFGMEMSELビットの値を変更後、CFGMEMMONビットを読み出し切り替えが完了した事を確認してください。 Configuration Flash Memoryへのアクセス開始は、必ず CFGMEMMONビットが切り替わった後に開始してください。

現状の SC-OBC-A1 FPGAには QSPIコアによる Configuration Flash Memoryのメモリパトロール機能は実装されていません。 CFGMEMOWNERビットは必ず "0"に設定し使用してください。

Boot Status Register (Offset 0x0014)

SC-OBC-A1 FPGAのBoot Statusを示すレジスタです。 このレジスタは 7シリーズ FPGAデバイスに実装されている Configuration Regsiterの Boot History Status Registerの値を読み出すことができます。 起動後に このレジスタを読み出す事で、マルチブート機能によって Configurationした FPGAの起動状態を読み出す事ができます。

Table 10. Boot Status Register ビットフィールド
bit Symbol Field Description R/W

31:14

Reserved

Reserved

-

-

13

CRC_ERROR_1

Status 1 CRC Error

Status 1に CRC Errorが発生した事を示します。

RO

12

ID_ERROR_1

Status 1 ID Error

Status 1に ID Code Errorが発生した事を示します。

RO

11

WTO_ERROR_1

Status 1 WTO Error

Status 0に Watchdog Errorが発生した事を示します。

RO

10

IPROG_1

Status 1 IPROG

内部 PROGで開始したコンフィギュレーションである事を示します。Fallbackしたとき このビットはされます。

RO

9

FALLBACK_1

Status 1 Fallback

最新の Configuration Statusを示します。
0: 通常のコンフィギュレーション 1: Fallback コンフィギュレーション

RO

8

VALID_1

Status 1 Valid

Boot Status 0が有効である事を示します。Fallbackしたとき、このビットはセットされます。 0: Status 0 無効
1: Status 0 有効

RO

7:6

Reserved

Reserved

-

-

5

CRC_ERROR_0

Status 0 CRC Error

Status 0に CRC Errorが発生した事を示します。このビットは基本的にセットされる事はありません

RO

4

ID_ERROR_0

Status 0 ID Error

Status 0に ID Code Errorが発生した事を示します。このビットは基本的にセットされる事はありません。

RO

3

WTO_ERROR_0

Status 0 WTO Error

Status 0に Watchdog Errorが発生した事を示します。このビットは基本的にセットされる事はありません。

RO

2

IPROG_0

Status 0 IPROG

内部 PROGで開始したコンフィギュレーションである事を示します。このビットは常にセットされます。

RO

1

FALLBACK_0

Status 0 Fallback

最新の Configuration Statusを示します。
0: 通常のコンフィギュレーション 1: Fallback コンフィギュレーション

RO

0

VALID_0

Status 0 Valid

Boot Status 0が有効である事を示す
0: Status 0 無効
1: Status 0 有効

RO

Boot Statusの Bit0は Status 0が有効である事を示すステータスビットです。 Boot Statusの Bit1は Fallbackステータスが格納されています。 Bit0が "1"で 且つ Bit 1が "0"の場合、Update Imageから起動した事を示します。 Bit0が "1"で 且つ Bit 1が "1"の場合、Configurationデータの読み込み時にFallbackした事を示し、Golden Imageから起動した事を示します。

Updata Imageで起動したとき、このレジスタは 0x00000005 を示します。 Golden Imageで起動したとき、このレジスタは 0x00004007 に加え Status 1のいずれかの Errorビットがセットされます。

Power Cycle Register (Offset 0x0020)

Power Cycle Registerは SC-OBC-A1 FPGAに対する Power Cycle要求を発行するためのレジスタです。 このレジスタの制御により Power Cycleを要求すると、TRCHによって Power Cycleが実行されます。

Table 11. Power Cycle Register ビットフィールド
bit Symbol Field Description R/W

31:16

PWRCYCLEPKC

Power Cycle Protect Keycode

PWRCYCLEREQビットの書き込みプロテクトフィールドです。 PWRCYCLEREQビットに書き込みを行う場合は、このフィールドに0x5A5Aを書き込んでください。 このフィールドに0x5A5A以外が設定された場合、PWRCYCLEREQビットへの書き込みは無視されます。

WO

15:1

-

Reserved

Reserved

-

0

PWRCYCLEREQ

Power Cycle Request

TRCHに対し Power Cycle Requestを発行するためのビットです。このビットに "1"を書き込むと TRCHによる FPGAの Power Cycleが実行されます。このビットへの "0"の書き込みは何も影響しません。

R/W

Power Management Register (Offset 0x0030)

Power Management Registerは、SC-OBC-A1 FPGAの低電力制御を行うためのレジスタです。

このレジスタは、CPUが WFI (Wait For Interrupt)命令や WFE (Wait For Event)命令を実行したときに遷移する、Sleepモードにおける SC-OBC-A1 FPGAの状態を決定します。 WFI命令や WFE命令を実行すると、CPUは条件によって Sleepモードに遷移し 命令の実行を停止します。

PWRDOWNENがセットされた状態で CPUが Sleepモードに遷移すると、システムクロックを生成する PLLは停止状態になります。 PWRDOWNENがセットされていない状態では、CPUが Sleepモードに遷移しても、PLLは停止しません。

PLLが停止すると、UARTや QSPI Controllerなどのクロックも停止します。 したがって、低消費電力化のため PWRDOWNENをセットして WFI命令を実行する場合は、全ての Peripheralのデータ転送が完全に完了した後で、WFI命令を実行してください。

Table 12. Power Management Register ビットフィールド
bit Symbol Field Description R/W

31:16

PWRDOWNPKC

Power Down Protect Keycode

PWRDOWNENビットの書き込みプロテクトフィールドです。PWRDOWNENビットに書き込みを行う場合は、このフィールドに0x5A5Aを書き込んでください。 このフィールドに0x5A5A以外が設定された場合、PWRDOWNENビットへの書き込みは無視されます。

WO

15:1

-

Reserved

Reserved

-

0

PWRDOWNEN

Power Down Enable

CPUが Sleepモードになった時の PLLの状態を設定します。
0: CPUが Sleepモードになった時 PLLは停止しません。
1: CPUが Sleepモードになった時 PLLは停止します。

R/W

Scratchpad 1-4 Register (Offset 0x00F0-0x00FC)

Scratchpad 1-4 Registerは、ソフトウェアがワークスペースとして使用する為のレジスタです。 このレジスタの書き込みは、SC-OBC-A1 FPGAの機能に一切影響を与えません。

このレジスタは、SC-OBC-A1 FPGAの Configuration後に一度だけ初期化されます。 Code Memory Select Registerの ITCMENビットが変更された時に発行されるシステムリセットでは、このレジスタはクリアされません。

Table 13. Scratchpad 1 Register ビットフィールド (Offset: 0x00F0)
bit Symbol Field Description R/W

31:0

SPAD1

Scratchpad 1

32bitのScratchpadフィールドです。

R/W

Table 14. Scratchpad 2 Register ビットフィールド (Offset: 0x00F4)
bit Symbol Field Description R/W

31:0

SPAD2

Scratchpad 2

32bitのScratchpadフィールドです。

R/W

Table 15. Scratchpad 3 Register ビットフィールド (Offset: 0x00F8)
bit Symbol Field Description R/W

31:0

SPAD3

Scratchpad 3

32bitのScratchpadフィールドです。

R/W

Table 16. Scratchpad 4 Register ビットフィールド (Offset: 0x00FC)
bit Symbol Field Description R/W

31:0

SPAD4

Scratchpad 4

32bitのScratchpadフィールドです。

R/W

System Register IP Version Register (Offset: 0xF000)

System Registerの IPコアバージョンの管理レジスタです。

Table 17. System Register IP Version Register ビットフィールド
bit Symbol Field Description R/W

31:24

MAJVER

System Register Core Major Version

System RegisterコアのMajor Versionです。

RO

23:16

MINVER

System Register Core Minor Version

System RegisterコアのMinor Versionです。

RO

15:0

PATVER

System Register Core Patch Version

System RegisterコアのPatch Versionです。

RO

Build Information Register (Offset: 0xFF00)

SC-OBC-A1 FPGAのビルド情報を保持するレジスタです。 現在動作しているシステムの FPGAデータが作られた Git Repositoryのハッシュ値の先頭 8文字が保持されます。 FPGAデータが Git管理されていない環境から生成された場合、このレジスタは 0x00000000を示します。

Table 18. Build Information Register ビットフィールド
bit Symbol Field Description R/W

31:0

BUILDINFO

Build Information Register

現在動作しているシステムの FPGAデータが作られた Git Repositoryのハッシュ値の 先頭 8桁が格納されるレジスタです。

RO

Device DNA 1/2 Register (Offset: 0xFF10/0xFF14)

Device DNA 1/2 Registerは、FPGAの Device DNAの値を保持するレジスタです。

Artix-7は、デバイスの eFuse領域に FUSEDNAと呼ばれる、64 bitのデバイス固有値を保持しています。 FUSEDNAは、FPGAの工場出荷時にプログラミングされるものであり、値を変える事はできません。

FPGAからは、FUSEDNAのうち 63 bitから 7 bitを、Device DNAとして読み出す事ができます。 ユーザーは Device DNA 1/2 Registerを読み出す事によって、Device DNAの値を知る事ができます。

Table 19. Device DNA 1 Register ビットフィールド
bit Symbol Field Description R/W

31:7

DNALSB

Device DNA LSB side

Device DNAの bit 31:7が格納されるレジスタです。

RO

6:0

-

Reserved

Reserved

-

Table 20. Device DNA 2 Register ビットフィールド
bit Symbol Field Description R/W

31:0

DNAMSB

Device DNA MSB side

Device DNAの bit 63:32が格納されるレジスタです。

RO

System Monitor

System Monitorは、SC-OBC-A1 FPGAのシステムを監視するためのモジュールです。

このモジュールは以下の機能を実装しています。

  • FPGA Watchdog機能

  • Hardware Monitor機能

  • SEM Controller機能

  • Board Health Monitor機能

FPGA Watchdog

SC-OBC-A1 FPGAのシステムは、TRCHによって監視されます。 SC-OBC-A1 FPGAは System Monitorが収集した FPGA内部の状態を Watchdog signal (FPGA_WATCHDOG)を通じて TRCHに伝えます。 TRCHは FPGAが出力する FPGA_WATCHDOG信号が定期的にトグルしている間、FPGAが健全に動作していると判断します。

SEM Controller

SEM (Soft Error Mitigation) Controllerは、AMD (旧 Xilinx) FPGAのコンフィギュレーションメモリで発生したソフトエラーの検出 及び訂正を行う、AMD (旧 Xilinx) から提供されるソリューションです。 SC-OBC-A1 FPGAはこの機能をシステムに組み込み、SEM Controllerの状態を System Monitorのレジスタから読み出す機能を持っています。

CPUが正常に動作している場合でも、SEM Controllerが訂正不能なエラーを検出した場合や、SEM Controller自体に障害が発生した場合には、SC-OBC-A1 FPGAに深刻な障害が発生する可能性があります。 そのため、深刻な障害が発生する前に再起動することにより、システムを健全な状態に保つ事が可能です。

SC-OBC-A1 FPGAは以下の構成でSEM Controllerを実装しています。

項目 設定 説明

エラー訂正/修復方法

拡張修復

ECCおよび CRCアルゴリズムに基づく訂正を行います。1ビットのエラーまたは、隣接する 2ビットのエラーを訂正します。

エラー分類機能

未サポート

検出したすべてのエラーがエッセンシャルビットか非エッセンシャルビットかの分類はできません。全てエッセンシャルビットと判断します。

エラーモニタ機能

未サポート

SEM Controllerが持つモニターインタフェースは実装していません。System Monitorのレジスタから簡易的なステータスを参照することにより、SEM Controllerを管理します。

エラー挿入機能

サポート

ソフトウェアのテストのため、エラーを強制的に挿入する機能を持っています。

SEM Controllerの仕様詳細については、AMD (旧 Xilinx) ドキュメント「PG036: LogicCORE IP Soft Error Mitigation Controller v4.1 製品ガイド」を参照してください。

SEM Controller Interrupt

SEM Controllerは 4つの要因の割り込みを出力します。 SEM Controllerの割り込みは、System Monitor Interrupt Registerのビット 11:8にマッピングされています。

  • SEM Error Correction Interrupt

SEM Controllerがコンフィギュレーションメモリのエラーを検知し、訂正・修復した事を示す通知ビットです。 この割り込みは、SEM Controllerが正常にコンフィギュレーションメモリのエラーを訂正し修復した事を示すものであり、システムは健全に保たれている事を示します。 この割り込みがセットされる時、SEM Error Correction Count Registerの値が +1されます。

  • SEM Uncorrectable Interrupt

SEM Controllerがコンフィギュレーションメモリに訂正不能なエラーを検出した事を示す通知ビットです。 この割り込みが発生した時、コンフィギュレーションメモリには障害が発生しています。 エッセンシャルビットに障害が起きた場合、FPGAの回路が不正な状態となっている可能性があります。 そのため、このエラーが発生した場合はシステムを再起動する事を推奨します。

  • SEM Halted Interrupt

SEM Controllerが Haltした事を示す通知ビットです。 この割り込みは何らかの異常により、SEM Controllerに自体に障害が起き、動作を停止した事を示します。 このエラーが発生した後は、SEM Controllerによるコンフィギュレーションメモリのエラー検出と訂正は行われません。 そのため、このエラーが発生した場合はシステムを再起動する事を推奨します。

  • SEM Heartbeat Timeout Interrupt

SEM Controllerの Heartbeat信号が停止した事を示す通知ビットです。 この割り込みは何らかの異常により、SEM Controllerに障害が起き、Heartbeat信号を出力できなくなった事を示します。 このエラーが発生した後は、SEM Controllerが正常に動作していない可能性があります。 そのため、このエラーが発生した場合はシステムを再起動する事を推奨します。

Board Health Monitor (BHM)

Board Health Monitor (BHM)は、OBC Module上に搭載するセンサーから簡単にデータを取得するための機能です。

OBC Moduleには、2つの Current Voltage Monitorと 3つの 温度センサーを搭載しています。 これらのセンサーは I2C規格のバスで SC-OBC-A1 FPGAと接続されています。 BHMはセンサーにアクセスするためのシーケンサーが実装されており、センサーからのデータをレジスタに格納します。 これにより、ソフトウェアによる煩雑な処理を実行しなくても、センサーからデータを取得する事ができます。

BHMが、センサーからデータを取得するタイミングは General Purpose Timerの Hardware Interrupt Timerによって決定します。 Hardware Interrupt Timerを Hardware Schedulerとして動作させる事で、BHMに定期的にセンサーデータの取得トリガを生成します。 BHMは、センサーのデータ取得トリガを検出したタイミングで、センサーに対する I2Cアクセスを行い データを取得します。

尚、Current Voltage Monitorは Texas Instruments社の INA3221-Q1、温度センサーは Texas Instruments社の TMP175-Q1を搭載しています。 センサーやセンサーからの取得データの詳細は、各データのデータシートを参照してください。

BHMの I2Cアクセス

BHMは 3つの I2Cアクセスを行うことができます。

センサーデバイスの初期化

  • レジスタアクセスによりセンサーの初期化要求を発行すると、センサーの初期化のための I2Cアクセスを行います

  • センサーの初期化を行うアドレスや初期化データは、RTL設計時に Verilogのパラメータで設定する事ができます

センサーデータの取得

  • Hardware Schedulerからのトリガを検出すると、センサーからデータを取得するための I2Cアクセスを行います

  • Current Voltage Monitorからのデータ取得は、General Purpose Timerの Hardware Interrupt Timer Output Compare Channel 2が発生するトリガで開始されます

  • 温度センサーからのデータ取得は、General Purpose Timerの Hardware Interrupt Timer Output Compare Channel 3が発生するトリガで開始されます

ソフトウェア指示による I2Cアクセス

  • ランタイムでセンサーの設定を変更したり、センサーが出力した Alertをクリアする目的で、簡単なレジスタアクセスで任意の I2Cアクセスを行います

センサー構成

BHMに接続するセンサーと、BHMによって取得されるセンサーデータ 及び センサーデータが格納されるレジスタアドレスの一覧を以下に示します

センサー センサーデバイス センサーレジスタアドレス センサーデータ BHMレジスタアドレスオフセット

Current Voltage Monitor 1

INA3221-Q1

0x01

VDD_1V0 Shunt Voltage

0x2020

0x02

VDD_1V0 Bus Voltage

0x2024

0x03

VDD_1V8 Shunt Voltage

0x2028

0x04

VDD_1V8 Bus Voltage

0x202C

0x05

VDD_3V3 Shunt Voltage

0x2030

0x06

VDD_3V3 Bus Voltage

0x2034

Current Voltage Monitor 2

INA3221-Q1

0x01

VDD_3V3SYSA Shunt Voltage

0x2038

0x02

VDD_3V3SYSA Bus Voltage

0x203C

0x03

VDD_3V3SYSB Shunt Voltage

0x2040

0x04

VDD_3V3SYSB Bus Voltage

0x2044

0x05

VDD_3V3IO Shunt Voltage

0x2048

0x06

VDD_3V3IO Bus Voltage

0x204C

Temperature Sensor 1

TMP175-Q1

0x00

Temperature

0x2050

Temperature Sensor 2

TMP175-Q1

0x00

Temperature

0x2054

Temperature Sensor 3

TMP175-Q1

0x00

Temperature

0x2058

センサーデータ自動取得のためのレジスタアクセス手順

この章では、SC-OBC-A1 FPGAのシステムが起動してから、BHMによって Current Voltage Monitorと 温度センサーから、センサーデータを自動取得させるためのレジスタアクセス手順を説明します。

BHMによるセンサーデータの自動取得を開始するためには、a) BHMの初期化、b) センサーデバイスの初期化、c) General Purpose Timerの初期化、d) BHMサービス開始 の処理を行う必要があります。 本手順では、General Purpose Timerの初期化も行います。 General Purpose Timerのレジスタ仕様の詳細は「General Purpose Timer」の章を参照してください。

bhm_initilize
Figure 7. センサーデータ自動取得のためのレジスタアクセス手順

1: BHM Prescaler Registerに I2Cの通信速度を設定します

I2Cの通信速度は、必ず Standard-mode (100Kb/s)以下にしてください Standard-mode以上の速度にすると、正しく通信できない場合があります。 BHM Prescaler Registerの初期値は、システムクロックが 48 MHzの場合に 100 Kb/sとなる 0x77に設定されています。 システムクロックが 48 MHzの場合は、特に理由が無い限り設定値を 0x77のままにしてください。

2: BHM Retry Count Registerに I2C通信のリトライ回数を設定します

BHMは、I2C通信を行ったときにエラーを検出すると、このレジスタで設定した回数の自動リトライを行います。 BHM Retry Count Registerの初期値は リトライ回数 "2"に設定されています。

3: BHM Interrupt Enable Registerに 割り込みの有効化設定をします

本手順を実行するためには、最低限 Bit 0と Bit 13:8を設定してください。

4: BHM Initialization Access Control Registerの書き込み、センサーデバイスの書き込みを開始します

初期化を行う対象の INITENビットと BHM_INITREQビットに "1"をセットする事でデバイスの初期化が開始されます。

5: SYSMON_BHMINT割り込みにより、センサーデバイスの初期化完了を検出します

SYSMON_BHMINT割り込み発生時、BHM Interrupt Status Registerの BHM_INITACCENDビットが "1"にセットされているとき、デバイスの初期化が完了したと判断できます。 この時、BHM Interrupt Status Registerの Bit 12:8の I2CERRビットがセットされていない事を確認してください。 I2CERRビットがセットされている場合、手順 2で設定した I2C通信のリトライ回数を超えるエラーが発生した事を示します。

6: BHM Interrupt Status Registerの BHM_INTACCENDビットに "1"を書き込み、割り込みをクリアしてください

7: Hardware Interrupt Timer Control Registerに、Hardware Interruptの発生方式を設定します

レジスタの設定は、必ず次の通りに設定してください。 GPTMR_HITRUNMDビットを Restartモード (設定値 0b0)、GPTMR_HITOPMD2/GPTMR_HITOPMD3フィールド パルス割り込み出力 (設定値 0b10)。 GPTMR_HITOPMD2の設定は Current Voltage Monitorからのデータを取得するために設定する必要があり、GPTMR_HITOPMD3の設定は 温度センサーからデータを取得するために設定する必要があります。

8: Hardware Interrupt Timer Prescaler Registerに、Hardware Interrupt Timerのプリスケーラー設定を行います

Hardware Inerrupt Timerの動作クロックは 24 MHzです。 設定方法の詳細は Hardware Interrupt Timerのレジスタ設定を参照してください。

9: Hardware Interrupt Timer Output Compare Register 1 に、Hardware Interrupt Timerの周期を設定します

10: Hardware Interrupt Timer Output Compare Register 2 に、Current Voltage Monitorのセンサーデータ取得タイミングを設定します

11: Hardware Interrupt Timer Output Compare Register 3 に、温度センサーのセンサーデータ取得タイミングを設定します

12: BHM Access Control Registerの MONIENビットを "1"にセットし、各センサーからのデータの自動取得を有効化します

13: Timer Enable Control Registerの HITENビットを"1"に設定し、Hardware Interrupt Timerの動作を開始します

12、13の処理が完了すると、BHMは Hardware Interrupt Timerが生成するタイミングで、センサーに対し I2C通信を行いセンサーデータを取得します。 BHMがセンサーデバイスから取得したデータは、Monitor Registerに格納されます。

以下に Hardware Interrupt Timerの周期を 1秒とし、Current Voltage Monitorの読み出しタイミングを 100 ms、温度センサーの読み出しタイミングを 200 msとした場合のレジスタ設定を示します。

bhm_hardware_interrupt_timing
Figure 8. Hardware Interrupt Timerを 1秒周期にした時の、センサーデータ自動受信の例
  • 手順 8で行う Hardware Interrupt Timer Prescaler Registerに 0x5DBFを設定する事で Hardware Interrupt Timerのカウントアップ時間を 1msとする

  • 手順 9で行う Hardware Interrupt Timer Output Compare Register 1に 0x3E8を設定する事で Hardware Interrupt Timerの周期を 1秒とする

  • 手順 10で行う Hardware Interrupt Timer Output Compare Register 2に 0x64を設定する事で、Current Voltage Monitorのデータ読み出し開始タイミングを 100 msとする

  • 手順 11で行う Hardware Interrupt Timer Output Compare Register 3に 0xC8を設定する事で、温度センサーのデータ読み出し開始タイミングを 200 msとする

Current Voltage Monitorのデータ読み出しは 6 ms、温度センサーの読み出しは 1.5 msかかります。 そのため、Hardware Interrupt Timerの周期は 7.5 msより大きな時間に設定してください。 また、各センサーデバイスには AD変換時間があり、短い周期でデータを読み出した場合には、まだセンサーデバイスのデータ更新が行われていない場合があります。

詳細は各センサーデバイスのデータシートを参照してください。

センサーデバイスの初期化のためのレジスタアクセス手順

この章では、BHMによるセンサーデバイスの初期化のためのレジスタアクセス手順について説明します。

BHMは、ソフトウェアからのレジスタアクセスにより、センサーデバイスの初期化要求を受けると、I2Cアクセスを行い センサーデバイスに初期設定値を書き込みます。 センサーデバイスの初期化のためのレジスタアクセス手順を以下に示します。

bhm_sensor_init
Figure 9. センサーデバイスの初期化のためのレジスタアクセス手順

1: BHM Initialization Access Control Registerの初期化を行うセンサーデバイスに対応する Initialization Enableと INIT_REQビットをセットします。 INIT_REQビットをセットされると、Initialization Enableがセットされたセンサーデバイスへの初期化のための I2Cアクセスが開始されます。

2: BHMによるセンサーデバイスへの書き込みアクセスの完了は、SYSMON_BHMINT割り込みのアサートにより検出する事ができます。 割り込みを検出したとき、BHM Interrupt Status Registerの BHM_INITACCENDビットがセットされている場合、センサーデバイスの初期化のための I2Cアクセスが完了した事を示します。 BHM_INITACCENDがセットされたときは、I2CERRビットの確認を行い I2Cアクセスにエラーが発生したかどうかを確認します。 I2CERRビットがセットされていないとき、そのセンサーデバイスのアクセスは正常に完了したと判断できます。

3: Board Health Interrupt Status RegisterのBHM_SWACCENDビットに "1"を書き込むと、BHM_SWACCENDビットをクリアする事ができます。

以下に、初期設定を行うセンサーデバイス、デバイスアドレス、初期設定値の一覧を示します。 尚、初期設定値は、RTL設計において Verilog Parameterで変更する事ができます。

Table 21. デバイス初期設定一覧 (default)
Device Address 初期設定値 Description

Current Voltage Monitor1

0x07: Channel-1 Critical-Alert Limit

0x2710

VDD_1V0の Critical-Alertをシャント電圧: 50mV (シャント電流: 5A)に設定

Current Voltage Monitor1

0x08: Channel-1 Warning-Alert Limit

0x1770

VDD_1V0の Warning-Alertをシャント電圧: 30mV (シャント電流: 3A)に設定

Current Voltage Monitor1

0x09: Channel-2 Critical-Alert Limit

0x2710

VDD_1V8の Critical-Alertをシャント電圧: 50mV (シャント電流: 5A)に設定

Current Voltage Monitor1

0x0A: Channel-2 Warning-Alert Limit

0x1770

VDD_1V8の Warning-Alertをシャント電圧: 30mV (シャント電流: 3A)に設定

Current Voltage Monitor1

0x0B: Channel-3 Critical-Alert Limit

0x2710

VDD_3V3の Critical-Alertをシャント電圧: 50mV (シャント電流: 5A)に設定

Current Voltage Monitor1

0x0C: Channel-3 Warning-Alert Limit

0x1770

VDD_3V3の Warning-Alertをシャント電圧: 30mV (シャント電流: 3A)に設定

Current Voltage Monitor1

0x0F: Mask/Enable

0x0C00

Current Voltage Monitor 1の Critical-Alertピン、Warning-Alertピンのラッチの有効化を設定

Current Voltage Monitor2

0x07: Channel-1 Critical-Alert Limit

0x2710

VDD_3V3SYSAの Critical-Alertをシャント電圧: 50mV (シャント電流: 5A)に設定

Current Voltage Monitor2

0x08: Channel-1 Warning-Alert Limit

0x1770

VDD_3V3SYSAの Warning-Alertをシャント電圧: 30mV (シャント電流: 3A)に設定

Current Voltage Monitor2

0x09: Channel-2 Critical-Alert Limit

0x2710

VDD_3V3SYSBの Critical-Alertをシャント電圧: 50mV (シャント電流: 5A)に設定

Current Voltage Monitor2

0x0A: Channel-2 Warning-Alert Limit

0x1770

VDD_3V3SYSBの Warning-Alertをシャント電圧: 30mV (シャント電流: 3A)に設定

Current Voltage Monitor2

0x0B: Channel-3 Critical-Alert Limit

0x2710

VDD_3V3IOの Critical-Alertをシャント電圧: 50mV (シャント電流: 5A)に設定

Current Voltage Monitor2

0x0C: Channel-3 Warning-Alert Limit

0x1770

VDD_3V3IOの Warning-Alertをシャント電圧: 30mV (シャント電流: 3A)に設定

Current Voltage Monitor2

0x0F: Mask/Enable

0x0C00

Current Voltage Monitor 2の Critical-Alertピン、Warning-Alertピンのラッチの有効化を設定

Temperature Sensor1

0x01: Configuration register

0x0200

Temperature Sensor 1の ALERTピンの動作を Interrupt Modeに設定 (1Byteのレジスタの為、MSB Byteの書き込み値に設定される)

Temperature Sensor1

0x02: TLOW register

0x4B00

Temperature Sensor 1の TLOWを 75℃に設定

Temperature Sensor1

0x03: THIGH register

0x5000

Temperature Sensor 1の THIGHを 80℃に設定

Temperature Sensor2

0x01: Configuration register

0x0200

Temperature Sensor 2の ALERTピンの動作を Interrupt Modeに設定 (1Byteのレジスタの為、MSB Byteの書き込み値に設定される)

Temperature Sensor2

0x02: TLOW register

0x4B00

Temperature Sensor 2の TLOWを 75℃に設定

Temperature Sensor2

0x03: THIGH register

0x5000

Temperature Sensor 2の THIGHを 80℃に設定

Temperature Sensor3

0x01: Configuration register

0x0200

Temperature Sensor 3の ALERTピンの動作を Interrupt Modeに設定 (1Byteのレジスタの為、MSB Byteの書き込み値に設定される)

Temperature Sensor3

0x02: TLOW register

0x4B00

Temperature Sensor 3の TLOWを 75℃に設定

Temperature Sensor3

0x03: THIGH register

0x5000

Temperature Sensor 3の THIGHを 80℃に設定

センサーデバイスの初期化のための I2Cアクセスの実行中に、BHM Retry Count Setting Registerに設定されている回数の I2Cエラーが発生した場合、BHM Interrupt Status Registerの対応するセンサーデバイスの I2CERRビットがセットされます。 また、I2Cエラーが発生したデバイスへの以降の初期化設定はスキップされます。 ひとつのセンサーデバイスに I2Cエラーが起きても、I2CERRビットがセットされていないセンサーの初期化アクセスは正常に完了しています。

ソフトウェア指示によるセンサーデバイスへの I2Cアクセス

この章では、SC-OBC-A1 FPGAに実装されるセンサーデバイス (Current Voltage Monitor 及び 温度センサー)に、ソフトウェアの指示によりアクセスする方法を説明します。

BHMは、RTLに指定する Verilog parameterの値に従い、センサーデバイスのレジスタを初期化する機能を持っています。 この機能とは別に、センサーデバイスのレジスタに対し 任意の I2Cアクセスを行いたい場合は、ソフトウェア指示によるセンサーデバイスへのアクセスを行います。

ソフトウェア指示によりセンサーデバイスのレジスタにデータを書き込むためのレジスタアクセスフローを以下に示します。

bhm_sw_write_seq
Figure 10. ソフトウェア指示によるセンサーデバイスのレジスタ書き込みフロー

1: センサーデバイスに書き込む 2 Byteのデータを BHM Software Access Write Data Registerに書き込みます。 このレジスタに書き込まれたデータがそのままデバイスのレジスタに書き込まれます。

2: レジスタ書き込みを行うセンサーデバイスとレジスタアドレスを設定するため、BHM Software Access Control Registerの BHM_SWDEVSELと BHM_SWREGADRを書き込みます。 同時に、センサーデバイスへの書き込みアクセスを行うため、BHM_SWRWSELに "0" (Write Access)を設定し、BHM_SWACCREQに "1"をセットします。 BHM_SWACCREQビットが "1"にセットされた事をきっかけに、BHMはセンサーデバイスへの I2Cアクセスを開始します。

3: BHMによるセンサーデバイスへの書き込みアクセスの完了は、SYSMON_BHMINT割り込みのアサートにより検出する事ができます。 割り込みを検出したとき、BHM Interrupt Status Registerの BHM_SWACCENDビットがセットされている場合、ソフトウェア指示によるセンサーデバイスへの I2Cアクセスが正常に完了した事を示します。

4: Board Health Interrupt Status RegisterのBHM_SWACCENDビットに "1"を書き込むと、BHM_SWACCENDビットをクリアする事ができます。

ソフトウェア指示によるセンサーデバイスのレジスタ書き込み中に、I2Cアクセスのエラーが発生した場合は、BHM Interrupt Status Registerの BHM_SWACCERRビットに "1"にセットされ、センサーデバイスへの I2Cアクセスは停止します。

ソフトウェア指示によりセンサーデバイスのレジスタからデータを読み出すためのレジスタアクセスフローを以下に示します。

bhm_sw_read_seq
Figure 11. ソフトウェア指示によるセンサーデバイスからのレジスタ読み出しフロー

1: レジスタ読み出しを行うセンサーデバイスとレジスタアドレスを設定するため、BHM Software Access Control Registerの BHM_SWDEVSELと BHM_SWREGADRを書き込みます。 同時に、センサーデバイスからの読み出しアクセスを行うため、BHM_SWRWSELに "1" (Read Access)を設定し、BHM_SWACCREQに "1"をセットします。 BHM_SWACCREQビットが "1"にセットされた事をきっかけに、BHMはセンサーデバイスへの I2Cアクセスを開始します。

2: BHMによるセンサーデバイスへの書き込みアクセスの完了は、SYSMON_BHMINT割り込みのアサートにより検出する事ができます。 割り込みを検出したとき、BHM Interrupt Status Registerの BHM_SWACCENDビットがセットされている場合、ソフトウェア指示によるセンサーデバイスへの I2Cアクセスが正常に完了した事を示します。

3: Board Health Interrupt Status RegisterのBHM_SWACCENDビットに "1"を書き込むと、BHM_SWACCENDビットをクリアする事ができます。

4: BHMがセンサーデバイスのレジスタから読み出したデータは、BHM Software Access Read Data Registerに格納されます。 BHM Software Access Read Data Registerを読み出す事で、センサーデバイスから読み出したデータを取得できます。

ソフトウェア指示によるセンサーデバイスのレジスタ読み出し中に、I2Cアクセスのエラーが発生した場合は、BHM Interrupt Status Registerの BHM_SWACCERRビットが "1"にセットされ、センサーデバイスへの I2Cアクセスは停止します。

レジスタ詳細

System Monitorは、Base Address 0x4F04_0000に配置されています。

Table 22. System Monitorメモリマップ
Offset Symbol Register Initial

0x0000

SYSMON_WDOGCTRL

Watchdog Control Register

0x00075A5A

0x0010

SYSMON_WDOGSIVAL

Watchdog Signal Interval Register

0x00B71AFF

0x0030

SYSMON_INTSTATUS

System Monitor Interrupt Status Register

0x00000000

0x0034

SYSMON_INTENABLE

System Monitor Interrupt Enable Register

0x00000000

0x0040

SYSMON_SEMSTATE

SEM Controller State Register

0x00000000

0x0044

SYSMON_SEMECCOUNT

SEM Error Correction Count Register

0x00000000

0x0048

SYSMON_SEMHTIMEOUT

SEM Heartbeat Timeout Register

0x000000FF

0x0050

SYSMON_SEMEINJECT1

SEM Error Injection Command Register 1

0x00000000

0x0054

SYSMON_SEMEINJECT2

SEM Error Injection Command Register 2

0x00000000

0x1000 - 0x1FFF

SYSMON_XADCREG

XADC Register Window

-

0x2000

BHM_INICTLR

BHM Initialization Access Control Register

0x0000001F

0x2004

BHM_ACCCTLR

BHM Access Control Register

0x00000000

0x2010

BHM_ISR

BHM Interrupt Status Register

0x00000000

0x2014

BHM_IER

BHM Interrupt Enable Register

0x00000000

0x2020

BHM_1V0SNTVR

BHM VDD_1V0 Shunt Voltage Monitor Register

0x80000000

0x2024

BHM_1V0BUSVR

BHM VDD_1V0 Bus Voltage Monitor Register

0x80000000

0x2028

BHM_1V8SNTVR

BHM VDD_1V8 Shunt Voltage Monitor Register

0x80000000

0x202C

BHM_1V8BUSVR

BHM VDD_1V8 Bus Voltage Monitor Register

0x80000000

0x2030

BHM_3V3SNTVR

BHM VDD_3V3 Shunt Voltage Monitor Register

0x80000000

0x2034

BHM_3V3BUSVR

BHM VDD_3V3 Bus Voltage Monitor Register

0x80000000

0x2038

BHM_3V3SYSASNTVR

BHM VDD_3V3SYSA Shunt Voltage Monitor Register

0x80000000

0x203C

BHM_3V3SYSABUSVR

BHM VDD_3V3SYSA Bus Voltage Monitor Register

0x80000000

0x2040

BHM_3V3SYSBSNTVR

BHM VDD_3V3SYSB Shunt Voltage Monitor Register

0x80000000

0x2044

BHM_3V3SYSBBUSVR

BHM VDD_3V3SYSB Bus Voltage Monitor Register

0x80000000

0x2048

BHM_3V3IOSNTVR

BHM VDD_3V3IO Shunt Voltage Monitor Register

0x80000000

0x204C

BHM_3V3IOBUSVR

BHM VDD_3V3IO Bus Voltage Monitor Register

0x80000000

0x2050

BHM_TEMP1R

BHM Temperature1 Monitor Register

0x80000000

0x2054

BHM_TEMP2R

BHM Temperature2 Monitor Register

0x80000000

0x2058

BHM_TEMP3R

BHM Health Temperature3 Monitor Register

0x80000000

0x2060

BHM_SWCTLR

BHM Software Access Control Register

0x00000000

0x2064

BHM_SWWDTR

BHM Software Access Write Data Register

0x00000000

0x2068

BHM_SWRDTR

BHM Software Access Read Data Register

0x00000000

0x2080

BHM_PSCR

BHM Prescale Setting Register

0x00000077

0x2084

BHM_ACCCNTR

BHM Retry Count Setting Register

0x00000002

0x20C0

BHM_ASR

BHM Access Status Register

0x00000000

0xF000

SYSMON_VER

System Monitor IP Version Register

-

Watchdog Control Register (Offset 0x0000)

Watchdog Control Registerは、SC-OBC-A1 FPGAの Watchdogの制御を行うためのレジスタです。 本レジスタにより Watchdog Counterの満了時間の設定や、Software Watchdog Timerをリロードする事ができます。

システムの起動後、SC-OBC-A1 FPGAの Watchdog Timer回路は、TRCHに対し Watchdog信号のトグルを開始します。 ソフトウェアは Software Watcdog Timeフィールドに設定されている Software Watchdog Timerの満了時間以内に、Watchdog Service Registerにアクセスし Software Watchdog Timerをリロードする必要があります。 Software Watchdog Timerが満了すると、SC-OBC-A1 FPGAの Watchdog Timer回路は、TRCHに対する Watchdog信号のトグルを停止し、TRCHに対しソフトウェアに異常が起きた事を通知します。

初期状態では、Software Watchdog Timerのの満了時間は 128 [sec] に設定されています。 ソフトウェアが、定期的にSoftware Watchdog Timerをリロードできる状態となった後、Software Watchdog Timeフィールドを適切な値に変更する事で 異常検知のタイミングを設定する事ができます。

Table 23. Watchdog Control Register ビットフィールド
bit Symbol Field Description R/W

31:19

-

Reserved

Reserved

-

18:16

SW_WDOGTIME

Software Watchdog Time

Software Watchdog Timerの満了時間を設定するためのフィールドです。0x0: 1 [sec] 0x1: 2 [sec] 0x2: 4 [sec] 0x3: 8 [sec] 0x4: 16 [sec] 0x5: 32 [sec] 0x6: 64 [sec] 0x7: 128 [sec]

R/W

15:0

WDOG_WSR

Watchdog Service Register

Software Watchdog Timerをリロードするためのフィールドです。0x5A5Aと 0xA5A5を交互に書き込む事で、Software Watchdog Timerをリロードする事ができます。このフィールドを読み出すと、Software Watchdog Timerをリロードするために次に書き込む値(0x5A5A または 0xA5A5)を読み出す事ができます。

R/W

Watchdog Signal Interval Register (Offset 0x0010)

Watchdog Signal Interval Registerは、FPGA_WATCHDOG信号のトグル間隔を設定するためのレジスタです。

FPGA_WATCHDOGが Highレベル または Lowレベルとなるクロックサイクル数を規定します。Watchdog Signalのカウンタは 24 MHzで動作するため、以下の式で設定値を求める事ができます。

\[WDOG\_SIVAL設定値 = \frac{FPGA\_WATCHDOG\ High/Lowレベル幅 [s]}{\frac{1}{24 \times 10^{6}}} - 1\]
Table 24. Watchdig Signal Interval Registerビットフィールド
bit Symbol Field Description R/W

31:24

-

Reserved

Reserved

-

23:0

WDOG_SIVAL

Watchdog Signal Interval

Watchdog Signalの Highレベルまたは Lowレベルの幅を設定するフィールドです。初期値は 500 [ms]に設定されています。

R/W

Clock Monitor Register (Offset 0x0020)

Clock Monitor Registerは、SC-OBC-A1 FPGAのクロック状態を示すレジスタです。

Table 25. Clock Monitor Register ビットフィールド
bit Symbol Field Description R/W

31:17

-

Reserved

Reserved

-

16

PLL_LOCK

PLL Lock Status

SC-OBC-A1 FPGAの PLLの状態を示します。0: PLL Unlock 1: PLL LOCK

RO

15:13

-

Reserved

Reserved

-

12

UCLK2_STS

User Clock 2 Status

User Clock 2のクロックの動作状態を示します。 0: クロック停止中 1: クロック動作中

RO

11

UCLK1_STS

User Clock 1 Status

User Clock 1のクロックの動作状態を示します。 0: クロック停止中 1: クロック動作中

RO

10

ULPICLK_STS

ULPI Reference Clock Status

ULPI Reference Clockのクロックの動作状態を示します。 0: クロック停止中 1: クロック動作中

RO

9

MAXICLK_STS

Main AXI Clock Status

Main AXI Clockのクロックの動作状態を示します。 0: クロック停止中 1: クロック動作中

RO

8

SYSCLK_STS

System Clock Status

System Clockのクロックの動作状態を示します。 0: クロック停止中 1: クロック動作中

RO

7:2

-

Reserved

Reserved

-

1:0

OSC_CLKEN

OSC Clock Enable

SC-OBC-A1 FPGAの入力クロック (源発信クロック)の Enable信号の状態を示します。bit 0: Oscillator 1の状態を示します。 bit 1: Oscillator 2の状態を示します。これらのビットが "1"の時、クロックは Enableです。

RO

Hardware Status 1/2 Register (Offset 0x0024/Offset 0x0028)

Hardware Status Registerは、SC-OBC-A1 FPGAのハードウェアの状態を示すレジスタです。

このレジスタは、ソフトウェアから見ると、Scratchpadとして動作します。 Loaderによって、ハードウェアの健全性が確認されるとこのレジスタに書き込みを行います。 Flight Softwareは、起動時にこのレジスタを読み出す事で、ハードウェアの健全性を知る事ができます。

このレジスタは、SC-OBC-A1 FPGAの Configuration後に一度だけ初期化されます。 Code Memory Select Registerの ITCMENビットがセットされた時に発行されるシステムリセットでは、このレジスタはクリアされません。

このレジスタのフィールドの詳細は未定です。

Table 26. Hardware Status 1 Register ビットフィールド
bit Symbol Field Description R/W

31:0

HWARE_STATUS1

Hardware Status 1

T.B.D.

R/W

Table 27. Hardware Status 2 Register ビットフィールド
bit Symbol Field Description R/W

31:0

HWARE_STATUS2

Hardware Status 2

T.B.D.

R/W

System Monitor Interrupt Status Register (Offset 0x0030)

System Monitor Interrupt Status Registerは、System Monitorの割り込みステータスレジスタです。 それぞれのビットは"1"をセットすると、割り込みをクリアする事ができます。

SEM Controllerの異常を示すビット (bit 9、bit 10、bit 11) は、"1"をセットすると割り込みをクリアする事はできますが、SEM Controllerの異常が取り除かれるわけではないため、システムの再起動を行う必要があります。

Table 28. System Monitor Interrupt Status Registerビットフィールド
bit Symbol Field Description R/W

31:5

-

Reserved

Reserved

-

11

SEM_HTIMEOUTINT

SEM Heartbeat Timeout Interrupt

SEM Controllerの Heartbeat信号が Timeoutしたときにセットされる割り込みビットです。SEM Controllerが出力する Heartbeat信号が SEM Heartbeat Timeout Registerで設定するクロック数アサートされなかった時セットされます。

R/WC

10

SEM_HALTEDINT

SEM Halted Interrupt

SEM Controllerが Fatal Errorにより Haltしたときにセットされる割り込みビットです。SEM Current State Registerの全ての有効ビットがセットされたとき、この割り込みがセットされます。

R/WC

9

SEM_UNCORRECTINT

SEM Uncorrectable Interrupt

SEM Controllerが訂正不能なエラーを検出したときセットされる割り込みビットです。この割り込みがセットされたとき、SEM Controllerは IDLEステートに遷移し コンフィギュレーションメモリの監視を停止します。

R/WC

8

SEM_ECORRECTINT

SEM Error Correction Interrupt

SEM Controllerがエラーを訂正したときセットされる割り込みビットです。

R/WC

7

PLL_UNLOCKINT

PLL Unlock Interrupt

PLLが異常により Unlockしたときセットされる割り込みビットです。

R/WC

6:5

-

Reserved

Reserved

-

4

UCLK2_STOPINT

User Clock 2 Stop Interrupt

User Clock 2が異常により停止したときセットされる割り込みビットです。

R/WC

3

UCLK1_STOPINT

User Clock 1 Stop Interrupt

User Clock 1が異常により停止したときセットされる割り込みビットです。

R/WC

2

ULPICLK_STOPINT

ULPI Clock Stop Interrupt

ULPI Clockが異常により停止したときセットされる割り込みビットです。

R/WC

1

MAXICLK_STOPINT

Main AXI Clock Stop Interrupt

Main AXI Clockが異常により停止したときセットされる割り込みビットです。

R/WC

0

SYSCLK_STOPINT

System Clock Stop Interrupt

System Clockが異常により停止したときセットされる割り込みビットです。

R/WC

System Monitor Interrupt Enable Register (Offset 0x0034)

System Monitor Interrupt Enable Registerは、System Monitorが監視するイベントを割り込み出力信号に通知するか設定するためのレジスタです。

Table 29. System Monitor Interrupt Enable Registerビットフィールド
bit Symbol Field Description R/W

31:5

-

Reserved

Reserved

-

11

SEM_HTIMEOUTENB

SEM Heartbeat Timeout Interrupt Enable

SEM_HTIMEOUTINTイベントが発生した時、割り込み信号を発生させるかどうかを設定します。

R/W

10

SEM_HALTEDENB

SEM Halted Interrupt Enable

SEM_HALTEDINTイベントが発生した時、割り込み信号を発生させるかどうかを設定します。

R/W

9

SEM_UNCORRECTENB

SEM Uncorrectable Interrupt Enable

SEM_UNCORRECTINTイベントが発生した時、割り込み信号を発生させるかどうかを設定します。

R/W

8

SEM_ECORRECTENB

SEM Error Correction Interrupt Enable

SEM_ECORRECTINTイベントが発生した時、割り込み信号を発生させるかどうかを設定します。

R/W

7

PLL_UNLOCKENB

PLL Unlock Interrupt Enable

PLL_UNLOCKINTイベントが発生した時、割り込み信号を発生させるかどうか設定します。

R/W

6:5

-

Reserved

Reserved

-

4

UCLK2_STOPENB

User Clock 2 Stop Interrupt Enable

UCLK2_STOPINTイベントが発生した時、割り込み信号を発生させるかどうか設定します。

R/W

3

UCLK1_STOPENB

User Clock 1 Stop Interrupt Enable

UCLK1_STOPINTイベントが発生した時、割り込み信号を発生させるかどうか設定します。

R/W

2

ULPICLK_STOPENB

ULPI Clock Stop Interrupt Enable

ULPICLK_STOPINTイベントが発生した時、割り込み信号を発生させるかどうかを設定します。

R/W

1

MAXICLK_STOPENB

Main AXI Clock Stop Interrupt Enable

MAXICLK_STOPINTイベントが発生した時、割り込み信号を発生させるかどうかを設定します。

R/W

0

SYSCLK_STOPENB

System Clock Stop Interrupt Enable

SYSCLK_STOPINTイベントが発生した時、割り込み信号を発生させるかどうかを設定します。

R/W

SEM Controller State Register (0ffset 0x0040)

SEM Controller State Registerは SC-OBC-A1 FPGAに実装する、SEM Controllerのステートを示すレジスタです。

セットされているビットを確認する事により、ソフトウェアは SEM Controllerがどのような状況にあるか把握する事ができます。 また、Currentステートと Previousステートを比較する事によって、ステートの遷移を把握する事ができます。

Currentステート、Previousステートの全てのビットが Highにセットされているとき、SEM Controllerに重大なエラーが起きた事を示します。 また、全てのビットが Lowにクリアされているとき、SEM Controllerは IDLE状態である事を示します。

このレジスタはPower On Resetのみでリセットされ、システムリセットでは初期化が行われません。 そのため、Bootloaderから Flight Softwareに切り替わるタイミングでもリセットされません。 一方、System Monitor Interrupt Status Registerはシステムリセットにより割り込みイベントがクリアされます。 そのため、Flight Softwareが起動したときに、このレジスタの値を読み出し、SEMが正常動作している事を確認してください。

Table 30. SEM Controller State Registerビットフィールド
bit Symbol Field Description R/W

31:21

-

Reserved

Reserved

-

20

SEM_PREINJECT

SEM Previous Injection State

SEM Controllerの前のステートがエラー挿入ステートだった事を示します。

RO

19

SEM_PRECLASSIFIC

SEM Previous Classification State

SEM Controllerの前のステートが分類ステートだった事を示します。

RO

18

SEM_PRECORRECT

SEM Previous Correction State

SEM Controllerの前のステートが訂正ステートだった事を示します。

RO

17

SEM_PREOBSERVE

SEM Previous Oveservation State

SEM Controllerの前のステートが監視ステートだった事を示します。

RO

16

SEM_PREINIT

SEM Previous Initilize State

SEM Controllerの前のステートが初期化ステートだった事を示します。

RO

15:5

-

Reserved

Reserved

-

4

SEM_CURINJECT

SEM Current Error Injection State

SEM Controllerがエラー挿入ステートである事を示します。このビットのみが Highにセットされているとき、SEM Controllerはエラー挿入ステートです。

RO

3

SEM_CURCLASSIFIC

SEM Current Classification State

SEM Controllerが分類ステートである事を示します。このビットのみが Highにセットされているとき、SEM Controllerは分類ステートです。

RO

2

SEM_CURCORRECT

SEM Current Correction State

SEM Controllerが訂正ステートである事を示します。このビットのみが Highにセットされているとき、SEM Controllerは訂正ステートです。

RO

1

SEM_CUROBSERVE

SEM Current Oveservation State

SEM Controllerが監視ステートである事を示します。このビットのみが Highにセットされているとき、SEM Controllerは監視ステートです。

RO

0

SEM_CURINIT

SEM Current Initilize State

SEM Controllerが初期化ステートである事を示します。このビットのみが Highにセットされているとき、SEM Controllerは初期化ステートです。 このビットは FPGAが動作を開始した後に 1度だけ発生する初期化の間アクティブになります。

RO

SEM Error Correction Count Register (Offset 0x0044)

SEM Error Correction Count Registerは、SEM Controllerが行ったエラー訂正数をカウントします。

このレジスタはPower On Resetのみでリセットされ、システムリセットでは初期化が行われません。 そのため、Bootloaderから Flight Softwareに切り替わる時にはリセットされず、SEM Controllerのエラーは累積のエラーを示します。

Table 31. SEM Error Correction Count Registerビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

SEMCCOUNT

SEM Correction Count

SEM Controllerが訂正したエラーの数を保持します。このレジスタに書き込みを行うと、書き込む値によらずカウント値が 0にクリアされます。

R/WC

SEM Heartbeat Timeout Register (Offset 0x0048)

SEM Heartbeat Timeout Registeは SEM Controllerが出力する Heartbeat信号の Timeout時間を設定するレジスタです。 AMD (旧 Xilinx) の SEM Controller (v4.1)では、Heartbeat信号のアサート間隔は 150クロックと規定されており、本レジスタの値は修正する必要はありません。

このレジスタはPower On Resetのみでリセットされ、システムリセットでは初期化が行われません。 そのため、Bootloaderから Flight Softwareに切り替わる時にはリセットされません。

Table 32. SEM Heartbeat Timeout Registerビットフィールド
bit Symbol Field Description R/W

31:8

-

Reserved

Reserved

-

7:0

HTIMEOUT

Heartbeat Timeout Value

SEM Controllerが出力する Heartbeat信号の受信Timeout時間を設定します。SEM Controllerのステートが、監視ステートのとき このレジスタに設定されるカウント値まで Heartbeat信号がアサートされないとき、SEM Heartbeat Timeout割り込みを発生させます。

R/W

SEM Error Injection Command Register 1/2 (Offset 0x0050/0x0054)

SEM Error Injection Command Register は、SEM Controller のエラー挿入機能を使用するためのレジスタです。 このレジスタを使用し、SEM Controllerのエラー挿入インターフェースにコマンドを入力する事により、エラー挿入機能を使用する事ができます。

このレジスタは試験専用レジスタであり、FPGA インプリ時のコンフィギュレーションにより、無効化する事ができます。

SEM Controller へのコマンド送信は、SEM Error Injection Command Register 2 への書き込みをきっかけに行われます。 そのため、SEM Error Injection Command Register 1 への書き込みは、必ず SEM Error Injection Command Register 2 の書き込み前に行ってください。

このレジスタはPower On Resetのみでリセットされ、システムリセットでは初期化が行われません。 そのため、Bootloaderから Flight Softwareに切り替わる時にはリセットされません。

Table 33. SEM Error Injection Command Register 1ビットフィールド
bit Symbol Field Description R/W

31:0

EINJECT1

Error Injection 1

SEM Controllerのエラー挿入インターフェースにコマンドを入力するためのフィールドです。このフィールドにはエラー挿入コマンドの Bit 31:0 を設定します。

R/W

Table 34. SEM Error Injection Command Register 2ビットフィールド
bit Symbol Field Description R/W

31:8

-

Reserved

Reserved

-

7:0

EINJECT2

Error Injection 2

SEM Controllerのエラー挿入インターフェースにコマンドを入力するためのフィールドです。このフィールドにはエラー挿入コマンドの Bit 39:32 を設定します。このフィールドをセットすると SEM Error Injection 1 の設定値と合わせ SEM Controllerにエラーコマンドが送信されます。

R/W

XADC Register Window (Offset 0x1000-1FFF)

XADC Register Fieldは、SC-OBC-A1 FPGAに搭載されている AMD (旧 Xilinx) の ADCモジュールとのアクセスを行うための領域です。

XADCは AMD (旧 Xilinx) 7シリーズ FPGAに搭載される ADCモジュールです。 XADCには 12 bit、毎秒 1 Mサンプルの ADCとオンチップセンサーが含まれています。 SC-OBC-A1 FPGAでは、XADCのレジスタを読み出す事により、FPGAのダイの温度と入力電源の監視を行う事ができます。

XADCの詳細は AMD (旧 Xilinx) のドキュメント (UG480: 7シリーズ FPGAおよび Zynq-7000 All Programmable SoC XADCデュアル 12ビット 1 MPSPS アナログ-デジタルコンバーター ユーザーズガイド)を参照してください。

XADCのレジスタにアクセスするためには、ベースアドレスを 0x4F041000とし Bit 11:4に 対象となるXADCのレジスタアドレスを設定する事で行えます。 Status Registerにアクセスするためのレジスタアドレスを以下に示します。

Offset Name Description

0x1000

Temperature Status

オンチップ温度センサーの測定結果が格納されます。Bit 15:4の 12 Bitが温度センサーの伝達関数に対応します。

0x1010

VCCINT Status

オンチップVCCINT電圧モニターの測定結果が格納されます。Bit 15:4の 12 Bitが電圧センサーの伝達関数に対応します。

0x1020

VCCAUX Status

オンチップVCCAUX電圧モニターの測定結果が格納されます。Bit 15:4の 12 Bitが電圧センサーの伝達関数に対応します。

0x1060

VCCBRAM Status

オンチップVCCBRAM電圧モニターの測定結果が格納されます。Bit 15:4の 12 Bitが電圧センサーの伝達関数に対応します。

0x1200

Max Temperature

電源投入または最後に XADCをリセットしてから記録された最大温度測定値が格納されます。

0x1210

Max VCCINT

電源投入または最後に XADCをリセットしてから記録された最大VCCINT測定値が格納されます。

0x1220

Max VCCAUX

電源投入または最後に XADCをリセットしてから記録された最大VCCAUX測定値が格納されます。

0x1230

Max VCCBRAM

電源投入または最後に XADCをリセットしてから記録された最大VCCBRAM測定値が格納されます。

0x1240

Min Temperature

電源投入または最後に XADCをリセットしてから記録された最小温度測定値が格納されます。

0x1250

Min VCCINT

電源投入または最後に XADCをリセットしてから記録された最小VCCINT測定値が格納されます。

0x1260

Min VCCAUX

電源投入または最後に XADCをリセットしてから記録された最小VCCAUX測定値が格納されます。

0x1270

Min VCCBRAM

電源投入または最後に XADCをリセットしてから記録された最小VCCBRAM測定値が格納されます。

System Monitorの XADC Register Windowからは、XADCのすべてのレジスタ領域にアクセスする事ができますが、アラーム機能は現状実装されておりません。

BHM Initialization Access Control Register (Offset 0x2000)

BHM Initialization Access Control Registerは、OBC Moduleに実装するセンサーの初期化に関する制御を行うためのレジスタです。 Board Health Monitorは、このレジスタを制御することによって、センサーに対し初期化のためのレジスタアクセスを実行します。

Initialization Requestビットを "1"にセットすると、Initialization Enableビットが "1"にセットされているセンサーに初期化を行います。 Initialization RequestビットとInitialization Enableビットは、同時にセットすることができます。

センサーに設定する初期値は、RTL設計時にVerilogパラメータで指定する事ができます。

Table 35. BHM Initialization Access Control Register ビットフィールド
bit Symbol Field Description R/W

31:17

-

Reserved

Reserved

-

16

BHM_INITREQ

Initialization Request

OBC Moduleに実装するセンサーの初期化を開始するためのビットです。このビットに"1"をセットすると、初期化を開始します。Initialization Enableがセットされている全てのセンサーの初期化が完了すると、このビットは自動的に "0"にクリアされます。

R/W

15:5

-

Reserved

Reserved

-

4

BHM_TEMP3INITEN

Temperature Sensor 3 Initialization Enable

Temperature Sensor 3 の初期化を有効化するためのビットです。0: Temperature Sensor 3 Initialization Disable 1: Temperature Sensor3 Initialization Enable

R/W

3

BHM_TEMP2INITEN

Temperature Sensor 2 Initialization Enable

Temperature Sensor 2 の初期化を有効化するためのビットです。0: Temperature Sensor 2 Initialization Disable 1: Temperature Sensor2 Initialization Enable

R/W

2

BHM_TEMP1INITEN

Temperature Sensor 1 Initialization Enable

Temperature Sensor 1 の初期化を有効化するためのビットです。0: Temperature Sensor 1 Initialization Disable 1: Temperature Sensor1 Initialization Enable

R/W

1

BHM_CVM2INITEN

Current Voltage Monitor 2 Initialization Enable

Current Voltage Monitor 2 の初期化を有効化するためのビットです。0: Current Voltage Monitor 2 Initialization Disable 1: Current Voltage Monitor2 Initialization Enable

R/W

0

BHM_CVM1INITEN

Current Voltage Monitor 1 Initialization Enable

Current Voltage Monitor 1 の初期化を有効化するためのビットです。0: Current Voltage Monitor 1 Initialization Disable 1: Current Voltage Monitor1 Initialization Enable

R/W

BHM Access Control Register (Offset 0x2004)

BHM Access Control Registerは、OBC Moduleに実装するセンサーからのセンサーデータの自動読み出しに関する設定を行うためのレジスタです。

対象のセンサーの Monitor Enableビットを "1"にセットしておくと、GPTMRモジュールに実装する Hardware Schedulerから タイミングパルスを受信するたびに、対応するセンサーからデータを読み出します。

Table 36. BHM Access Control Register ビットフィールド
bit Symbol Field Description R/W

31:5

-

Reserved

Reserved

-

4

BHM_TEMP3MONIEN

Temperature Sensor 3 Monitor Enable

Temperature Sensor 3からセンサーデータを読み出すための設定を行うビットです。 このビットが "1"にセットされている時に Hardware Schedulerからタイミングパルスを受信すると、Temperature Sensor 3から温度データを読み出します。BHM_TEMP3I2CERR 割り込みが発生した場合、このビットは自動的に"0"にクリアされます。 0: Temperature Sensor 3 Monitor Disable 1: Temperature Sensor 3 Monitoring Enable

R/W

3

BHM_TEMP2MONIEN

Temperature Sensor 2 Monitor Enable

Temperature Sensor 2からセンサーデータを読み出すための設定を行うビットです。 このビットが "1"にセットされている時に Hardware Schedulerからタイミングパルスを受信すると、Temperature Sensor 2から温度データを読み出します。BHM_TEMP2I2CERR 割り込みが発生した場合、このビットは自動的に"0"にクリアされます。 0: Temperature Sensor 2 Monitor Disable 1: Temperature Sensor 2 Monitoring Enable

R/W

2

BHM_TEMP1MONIEN

Temperature Sensor 1 Monitor Enable

Temperature Sensor 1からセンサーデータを読み出すための設定を行うビットです。 このビットが "1"にセットされている時に Hardware Schedulerからタイミングパルスを受信すると、Temperature Sensor 1から温度データを読み出します。BHM_TEMP1I2CERR 割り込みが発生した場合、このビットは自動的に"0"にクリアされます。 0: Temperature Sensor 1 Monitor Disable 1: Temperature Sensor 1 Monitoring Enable

R/W

1

BHM_CVM2MONIEN

Current Voltage Monitor 2 Monitor Enable

Current Voltage Monitor 2からセンサーデータを読み出すための設定を行うビットです。このビットが "1"にセットされている時に Hardware Schedulerからタイミングパルスを受信すると、Current Voltage Monitor 2からシャント電圧とバス電圧データを読み出します。BHM_CVM2I2CERR 割り込みが発生した場合、このビットは自動的に"0"にクリアされます。 0: Current Voltage Monitor 2 Monitor Disable 1: Current Voltage Monitor2 Monitoring Enable

R/W

0

BHM_CVM1MONIEN

Current Voltage Monitor 1 Monitor Enable

Current Voltage Monitor 1からセンサーデータの読み出すための設定を行うビットです。このビットが "1"にセットされている時に Hardware Schedulerからタイミングパルスを受信すると、Current Voltage Monitor 1からシャント電圧とバス電圧データを読み出します。BHM_CVM1I2CERR 割り込みが発生した場合、このビットは自動的に "0"にクリアされます。0: Current Voltage Monitor 1 Monitor Disable 1: Current Voltage Monitor1 Monitoring Enable

R/W

BHM Interrupt Status Register (Offset: 0x2010)

BHM Interrupt Status Registerは、Board Health Monitorの割り込みステータスレジスタです。 それぞれのビットは "1"をセットすると、割り込みをクリアする事ができます。

Table 37. BHM Interrupt Status Register ビットフィールド
bit Symbol Field Description R/W

31:19

-

Reserved

Reserved

-

18

BHM_TEMPALERT

Temperature Sensor Alert Detect

温度センサーから Alert信号を受信したことを示すビットです。OBC Module上に実装される、いずれかの温度センサーが Alert信号をアサートした時、本ビットが"1"にセットされます。

R/WC

17

BHM_CVMWARN

Current Voltage Monitor Warning Alert Detect

Current Voltage Monitorから Warning Alert信号を受信したことを示すビットです。OBC Module上に実装される、いずれかの Current Voltage Monitorが Warning信号をアサートした時、本ビットが"1"にセットされます。

R/WC

16

BHM_CVMCRIT

Current Voltage Monitor Critical Alert Detect

Current Voltage Monitorから Critical Alert信号を受信したことを示すビットです。OBC Module上に実装される、いずれかの Current Voltage Monitorが Critical信号をアサートした時、本ビットが"1"にセットされます。

R/WC

15:14

-

Reserved

Reserved

-

13

BHM_SWI2CERR

Software I2C Error

ソフトウェア指示によるセンサーへのアクセスにおいてエラーが発生したことを示すビットです。BHM Retry Count Setting Registerに設定されているリトライ回数を超えるエラーが連続で発生した場合に、本ビットが "1"にセットされます。

R/WC

12

BHM_TEMP3I2CERR

Temperature Sensor 3 I2C Error

Temperature Sensor 3 へのアクセスにおいてエラーが発生した事を示すビットです。センサーの初期化とデータ読み出しのどちらのエラーも本ビットに通知されます。BHM Retry Count Setting Registerに設定されているリトライ回数を超えるエラーが連続で発生した場合に、本ビットが "1"にセットされます。

R/WC

11

BHM_TEMP2I2CERR

Temperature Sensor 2 I2C Error

Temperature Sensor 2 へのアクセスにおいてエラーが発生した事を示すビットです。センサーの初期化とデータ読み出しのどちらのエラーも本ビットに通知されます。BHM Retry Count Setting Registerに設定されているリトライ回数を超えるエラーが連続で発生した場合に、本ビットが "1"にセットされます。

R/WC

10

BHM_TEMP1I2CERR

Temperature Sensor 1 I2C Error

Temperature Sensor 1 へのアクセスにおいてエラーが発生した事を示すビットです。センサーの初期化とデータ読み出しのどちらのエラーも本ビットに通知されます。BHM Retry Count Setting Registerに設定されているリトライ回数を超えるエラーが連続で発生した場合に、本ビットが "1"にセットされます。

R/WC

9

BHM_CVM2I2CERR

Current Voltage Monitor2 I2C Error

Current Voltage Monitor 2 へのアクセスにおいてエラーが発生した事を示すビットです。センサーの初期化とデータ読み出しのどちらのエラーも本ビットに通知されます。BHM Retry Count Registerに設定されているリトライ回数を超えるエラーが連続で発生した場合に、本ビットが "1"にセットされます。

R/WC

8

BHM_CVM1I2CERR

Current Voltage Monitor1 I2C Error

Current Voltage Monitor 1 へのアクセスにおいてエラーが発生した事を示すビットです。センサーの初期化とデータ読み出しのどちらのエラーも本ビットに通知されます。BHM Retry Count Registerに設定されているリトライ回数を超えるエラーが連続で発生した場合に、本ビットが "1"にセットされます。

R/WC

7:2

-

Reserved

Reserved

-

1

BHM_SWACCEND

Software Access End

ソフトウェア指示によるセンサーへの I2Cアクセスが完了した事を示すビットです。センサーのレジスタへのデータ書き込み または、読み出しが完了した時、本ビットが "1"にセットされます。

R/WC

0

BHM_INITACCEND

Initialization Access End

センサーの初期化が完了した事を示すビットです。BHM Initialization Access Control RegisterのInitialization Requestをセットした後に、Initialization Enableビットがセットされている全てのセンサーの初期化が完了した時、本ビットが "1"にセットされます。

R/WC

BHM Interrupt Enable Register (Offset: 0x2014)

BHM Interrupt Enable Registerは、Board Health Monitorの割り込みイベントを割り込み信号に通知する設定を行うためのレジスタです。

本レジスタのビットが "1"にセットされている時、その割り込み要因に対応する Interrupt Status Registerのビットが "1"にセットされると、割り込み信号がアサートします。

Table 38. Board Health Interrupt Enable Register ビットフィールド
bit Symbol Field Description R/W

31:19

-

Reserved

Reserved

-

18

BHM_TEMPALERTENB

Temperature Sensor Alert Detect Enable

BHM_TEMPALERTイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

17

BHM_CVMWARNENB

Current Voltage Monitor Warning Alert Detect Enable

BHM_CVMWARNイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

16

BHM_CVMCRITENB

Current Voltage Monitor Critical Alert Detect Enable

BHM_CVMCRITイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

15:14

-

Reserved

Reserved

-

13

BHM_SWI2CERRENB

Software I2C Access Error Enable

BHM_SWI2CERRイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

12

BHM_TEMP3I2CERRENB

Temperature Sensor3 Auto I2C Access Error Enable

BHM_TEMP3I2CERRイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

11

BHM_TEMP2I2CERRENB

Temperature Sensor2 Auto I2C Access Error Enable

BHM_TEMP2I2CERRイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

10

BHM_TEMP1I2CERRENB

Temperature Sensor1 Auto I2C Access Error Enable

BHM_TEMP1I2CERRイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

9

BHM_CVM2I2CERRENB

Current Voltage Monitor2 Auto I2C Access Error Enable

BHM_CVM2I2CERRイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

8

BHM_CVM1I2CERRENB

Current Voltage Monitor1 Auto I2C Access Error Enable

BHM_CVM1I2CERRイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

7:2

-

Reserved

Reserved

-

1

BHM_SWACCENDENB

Software Access End Enable

BHM_SWACCENDイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

0

BHM_INITACCENDENB

Initialization Access End Enable

BHM_INITACCENDイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

BHM VDD_1V0 Shunt Voltage Monitor Register (Offset 0x2020)

BHM VDD_1V0 Shunt Voltage Monitor Registerは、VDD_1V0 電源ドメインの Shunt Voltageを読み出すためのレジスタです。

BHM Shunt Voltage Monitor Registerに格納されるデータは、Current Voltage Monitor INA3221-Q1の Shunt Voltage Registerからの取得データです。 Shunt Voltageの実効データは Bit 15:3に格納されます。 Bit 2:0は ALL 0が格納されます。

Table 39. BHM VDD_1V0 Shunt Voltage Monitor Register ビットフィールド
bit Symbol Field Description R/W

31

BHM_1V0SNTVNUPD

VDD_1V0 Shunt Voltage Not Updated

センサーデータの更新状態を示すビットです。このビットが "1"にセットされている時、BHM_1V0SNTVフィールドが前回の読み出し時から更新されていない事を示します。BHMがセンサーからデータを読み出した時、このビットは "0"にクリアされ、BHM_1V0SNTV を読み出したときこのビットは"1"にセットされます。また、リセット解除後にセンサーデータが取得されていない状態でも、このビットは "1"を示します。

RO

30:16

-

Reserved

Reserved

-

15:0

BHM_1V0SNTV

VDD_1V0 Shunt Voltage Monitor

VDD_1V0 電源ドメインのシャント電圧を読み出すためのフィールドです。シャント電圧の実効データは Bit 15:3に格納されます。

RO

BHM VDD_1V0 Bus Voltage Monitor Register (Offset 0x2024)

BHM VDD_1V0 Bus Voltage Monitor Registerは、VDD_1V0 電源ドメインの Bus Voltageを読み出すためのレジスタです。

BHM Bus Voltage Monitor Registerに格納されるデータは、Current Voltage Monitor INA3221-Q1の Bus Voltage Registerからの取得データです。 Bus Voltageの実効データは Bit 15:3に格納されます。 Bit 2:0は ALL 0が格納されます。

Table 40. BHM VDD_1V0 Bus Voltage Monitor Register ビットフィールド
bit Symbol Field Description R/W

31

BHM_1V0BUSVNUPD

VDD_1V0 Bus Voltage Not Updated

センサーデータの更新状態を示すビットです。このビットが "1"にセットされている時、BHM_1V0BUSVフィールドが前回の読み出し時から更新されていない事を示します。BHMがセンサーからデータを読み出した時、このビットは "0"にクリアされ、BHM_1V0BUSV を読み出したときこのビットは"1"にセットされます。また、リセット解除後にセンサーデータが取得されていない状態でも、このビットは "1"を示します。

RO

30:16

-

Reserved

Reserved

-

15:0

BHM_1V0BUSV

VDD_1V0 Bus Voltage Monitor

VDD_1V0 電源ドメインのバス電圧を読み出すためのフィールドです。バス電圧の実効データは Bit 15:3に格納されます。

RO

BHM VDD_1V8 Shunt Voltage Monitor Register (Offset 0x2028)

BHM VDD_1V8 Shunt Voltage Monitor Registerは、VDD_1V8 電源ドメインの Shunt Voltageを読み出すためのレジスタです。

Table 41. BHM VDD_1V8 Shunt Voltage Monitor Register ビットフィールド
bit Symbol Field Description R/W

31

BHM_1V8SNTVNUPD

VDD_1V8 Shunt Voltage Not Updated

センサーデータの更新状態を示すビットです。このビットが "1"にセットされている時、BHM_1V8SNTVフィールドが前回の読み出し時から更新されていない事を示します。BHMがセンサーからデータを読み出した時、このビットは "0"にクリアされ、BHM_1V8SNTV を読み出したときこのビットは"1"にセットされます。また、リセット解除後にセンサーデータが取得されていない状態でも、このビットは "1"を示します。

RO

30:16

-

Reserved

Reserved

-

15:0

BHM_1V8SNTV

VDD_1V8 Shunt Voltage Monitor

VDD_1V8 電源ドメインのシャント電圧を読み出すためのフィールドです。シャント電圧の実効データは Bit 15:3に格納されます。

RO

BHM VDD_1V8 Bus Voltage Monitor Register (Offset 0x202C)

BHM VDD_1V8 Bus Voltage Monitor Registerは、VDD_1V8 電源ドメインの Bus Voltageを読み出すためのレジスタです。

Table 42. BHM VDD_1V8 Bus Voltage Monitor Register ビットフィールド
bit Symbol Field Description R/W

31

BHM_1V8BUSVNUPD

VDD_1V8 Bus Voltage Not Updated

センサーデータの更新状態を示すビットです。このビットが "1"にセットされている時、BHM_1V8BUSVフィールドが前回の読み出し時から更新されていない事を示します。BHMがセンサーからデータを読み出した時、このビットは "0"にクリアされ、BHM_1V8BUSV を読み出したときこのビットは"1"にセットされます。また、リセット解除後にセンサーデータが取得されていない状態でも、このビットは "1"を示します。

RO

30:16

-

Reserved

Reserved

-

15:0

BHM_1V8BUSV

VDD_1V8 Bus Voltage Monitor

VDD_1V8 電源ドメインのバス電圧を読み出すためのフィールドです。バス電圧の実効データは Bit 15:3に格納されます。

RO

BHM VDD_3V3 Shunt Voltage Monitor Register (Offset 0x2030)

BHM VDD_3V3 Shunt Voltage Monitor Registerは、VDD_3V3 電源ドメインの Shunt Voltageを読み出すためのレジスタです。

Table 43. BHM VDD_3V3 Shunt Voltage Monitor Register ビットフィールド
bit Symbol Field Description R/W

31

BHM_3V3SNTVNUPD

VDD_3V3 Shunt Voltage Not Updated

センサーデータの更新状態を示すビットです。このビットが "1"にセットされている時、BHM_3V3SNTVフィールドが前回の読み出し時から更新されていない事を示します。BHMがセンサーからデータを読み出した時、このビットは "0"にクリアされ、BHM_3V3SNTV を読み出したときこのビットは"1"にセットされます。また、リセット解除後にセンサーデータが取得されていない状態でも、このビットは "1"を示します。

RO

30:16

-

Reserved

Reserved

-

15:0

BHM_3V3SNTV

VDD_3V3 Shunt Voltage Monitor

VDD_3V3 電源ドメインのシャント電圧を読み出すためのフィールドです。シャント電圧の実効データは Bit 15:3に格納されます。

RO

BHM VDD_3V3 Bus Voltage Monitor Register (Offset 0x2034)

BHM VDD_3V3 Bus Voltage Monitor Registerは、VDD_3V3 電源ドメインの Bus Voltageを読み出すためのレジスタです。

Table 44. BHM VDD_3V3 Bus Voltage Monitor Register ビットフィールド
bit Symbol Field Description R/W

31

BHM_3V3BUSVNUPD

VDD_3V3 Bus Voltage Not Updated

センサーデータの更新状態を示すビットです。このビットが "1"にセットされている時、BHM_3V3BUSVフィールドが前回の読み出し時から更新されていない事を示します。BHMがセンサーからデータを読み出した時、このビットは "0"にクリアされ、BHM_3V3BUSV を読み出したときこのビットは"1"にセットされます。また、リセット解除後にセンサーデータが取得されていない状態でも、このビットは "1"を示します。

RO

30:16

-

Reserved

Reserved

-

15:0

BHM_3V3BUSV

VDD_3V3 Bus Voltage Monitor

VDD_3V3 電源ドメインのバス電圧を読み出すためのフィールドです。バス電圧の実効データは Bit 15:3に格納されます。

RO

BHM VDD_3V3SYSA Shunt Voltage Monitor Register (Offset 0x2038)

BHM VDD_3V3SYSA Shunt Voltage Monitor Registerは、VDD_3V3SYSA 電源ドメインの Shunt Voltageを読み出すためのレジスタです。

Table 45. BHM VDD_3V3SYSA Shunt Voltage Monitor Register ビットフィールド
bit Symbol Field Description R/W

31

BHM_3V3SYSASNTVNUPD

VDD_3V3SYSA Shunt Voltage Not Updated

センサーデータの更新状態を示すビットです。このビットが "1"にセットされている時、BHM_3V3SYSASNTVフィールドが前回の読み出し時から更新されていない事を示します。BHMがセンサーからデータを読み出した時、このビットは "0"にクリアされ、BHM_3V3SYSASNTV を読み出したときこのビットは"1"にセットされます。また、リセット解除後にセンサーデータが取得されていない状態でも、このビットは "1"を示します。

RO

30:16

-

Reserved

Reserved

-

15:0

BHM_3V3SYSASNTV

VDD_3V3SYSA Shunt Voltage Monitor

VDD_3V3SYSA 電源ドメインのシャント電圧を読み出すためのフィールドです。シャント電圧の実効データは Bit 15:3に格納されます。

RO

BHM VDD_3V3SYSA Bus Voltage Monitor Register (Offset 0x203C)

BHM VDD_3V3SYSA Bus Voltage Monitor Registerは、VDD_3V3SYSA 電源ドメインの Bus Voltageを読み出すためのレジスタです。

Table 46. BHM VDD_3V3SYSA Bus Voltage Monitor Register ビットフィールド
bit Symbol Field Description R/W

31

BHM_3V3SYSABUSVNUPD

VDD_3V3SYSA Bus Voltage Not Updated

センサーデータの更新状態を示すビットです。このビットが "1"にセットされている時、BHM_3V3SYSABUSVフィールドが前回の読み出し時から更新されていない事を示します。BHMがセンサーからデータを読み出した時、このビットは "0"にクリアされ、BHM_3V3SYSABUSV を読み出したときこのビットは"1"にセットされます。また、リセット解除後にセンサーデータが取得されていない状態でも、このビットは "1"を示します。

RO

30:16

-

Reserved

Reserved

-

15:0

BHM_3V3SYSABUSV

VDD_3V3SYSA Bus Voltage Monitor

VDD_3V3SYSA 電源ドメインのバス電圧を読み出すためのフィールドです。バス電圧の実効データは Bit 15:3に格納されます。

RO

BHM VDD_3V3SYSB Shunt Voltage Monitor Register (Offset 0x2040)

BHM VDD_3V3SYSB Shunt Voltage Monitor Registerは、VDD_3V3SYSB 電源ドメインの Shunt Voltageを読み出すためのレジスタです。

Table 47. BHM VDD_3V3SYSB Shunt Voltage Monitor Register ビットフィールド
bit Symbol Field Description R/W

31

BHM_3V3SYSBSNTVNUPD

VDD_3V3SYSB Shunt Voltage Not Updated

センサーデータの更新状態を示すビットです。このビットが "1"にセットされている時、BHM_3V3SYSBSNTVフィールドが前回の読み出し時から更新されていない事を示します。BHMがセンサーからデータを読み出した時、このビットは "0"にクリアされ、BHM_3V3SYSBSNTV を読み出したときこのビットは"1"にセットされます。また、リセット解除後にセンサーデータが取得されていない状態でも、このビットは "1"を示します。

RO

30:16

-

Reserved

Reserved

-

15:0

BHM_3V3SYSBSNTV

VDD_3V3SYSB Shunt Voltage Monitor

VDD_3V3SYSB 電源ドメインのシャント電圧を読み出すためのフィールドです。シャント電圧の実効データは Bit 15:3に格納されます。

RO

BHM VDD_3V3SYSB Bus Voltage Monitor Register (Offset 0x2044)

BHM VDD_3V3SYSB Bus Voltage Monitor Registerは、VDD_3V3SYSB 電源ドメインの Bus Voltageを読み出すためのレジスタです。

Table 48. BHM VDD_3V3SYSB Bus Voltage Monitor Register ビットフィールド
bit Symbol Field Description R/W

31

BHM_3V3SYSBBUSVNUPD

VDD_3V3SYSB Bus Voltage Not Updated

センサーデータの更新状態を示すビットです。このビットが "1"にセットされている時、BHM_3V3SYSBBUSVフィールドが前回の読み出し時から更新されていない事を示します。BHMがセンサーからデータを読み出した時、このビットは "0"にクリアされ、BHM_3V3SYSBBUSV を読み出したときこのビットは"1"にセットされます。また、リセット解除後にセンサーデータが取得されていない状態でも、このビットは "1"を示します。

RO

30:16

-

Reserved

Reserved

-

15:0

BHM_3V3SYSBBUSV

VDD_3V3SYSB Bus Voltage Monitor

VDD_3V3SYSB 電源ドメインのバス電圧を読み出すためのフィールドです。バス電圧の実効データは Bit 15:3に格納されます。

RO

BHM VDD_3V3IO Shunt Voltage Monitor Register (Offset 0x2048)

BHM VDD_3V3IO Shunt Voltage Monitor Registerは、VDD_3V3IO 電源ドメインの Shunt Voltageを読み出すためのレジスタです。

Table 49. BHM VDD_3V3IO Shunt Voltage Monitor Register ビットフィールド
bit Symbol Field Description R/W

31

BHM_3V3IOSNTVNUPD

VDD_3V3IO Shunt Voltage Not Updated

センサーデータの更新状態を示すビットです。このビットが "1"にセットされている時、BHM_3V3IOSNTVフィールドが前回の読み出し時から更新されていない事を示します。BHMがセンサーからデータを読み出した時、このビットは "0"にクリアされ、BHM_3V3IOSNTV を読み出したときこのビットは"1"にセットされます。また、リセット解除後にセンサーデータが取得されていない状態でも、このビットは "1"を示します。

RO

30:16

-

Reserved

Reserved

-

15:0

BHM_3V3IOSNTV

VDD_3V3IO Shunt Voltage Monitor

VDD_3V3IO 電源ドメインのシャント電圧を読み出すためのフィールドです。シャント電圧の実効データは Bit 15:3に格納されます。

RO

BHM VDD_3V3IO Bus Voltage Monitor Register (Offset 0x204C)

BHM VDD_3V3IO Bus Voltage Monitor Registerは、VDD_3V3IO 電源ドメインの Bus Voltageを読み出すためのレジスタです。

Table 50. BHM VDD_3V3IO Bus Voltage Monitor Register ビットフィールド
bit Symbol Field Description R/W

31

BHM_3V3IOBUSVNUPD

VDD_3V3IO Bus Voltage Not Updated

センサーデータの更新状態を示すビットです。このビットが "1"にセットされている時、BHM_3V3IOBUSVフィールドが前回の読み出し時から更新されていない事を示します。BHMがセンサーからデータを読み出した時、このビットは "0"にクリアされ、BHM_3V3IOBUSV を読み出したときこのビットは"1"にセットされます。また、リセット解除後にセンサーデータが取得されていない状態でも、このビットは "1"を示します。

RO

30:16

-

Reserved

Reserved

-

15:0

BHM_3V3IOBUSV

VDD_3V3IO Bus Voltage Monitor

VDD_3V3IO 電源ドメインのバス電圧を読み出すためのフィールドです。バス電圧の実効データは Bit 15:3に格納されます。

RO

BHM Temperature 1-3 Monitor Register (Offset 0x2050 - 0x2058)

BHM Temperature 1-3 Monitor Registerは、Temperature Sensor 1-3の温度データを読み出すためのレジスタです。

BHM Temperature 1-3 Monitor Registerに格納されるデータは、温度センサー TMP175-Q1の Temperature Registerからの取得データです。 温度センサーの実効データは Bit 15:4に格納されます。 Bit 3:0は ALL 0が格納されます。

Table 51. BHM Temperature 1 Monitor Register ビットフィールド (Offset 0x2050)
bit Symbol Field Description R/W

31

BHM_TEMP1NUPD

Temperature 1 Not Updated

センサーデータの更新状態を示すビットです。このビットが "1"にセットされている時、BHM_TEMP1フィールドが前回の読み出し時から更新されていない事を示します。BHMがセンサーからデータを読み出した時、このビットは "0"にクリアされ、BHM_TEMP1 を読み出したときこのビットは"1"にセットされます。また、リセット解除後にセンサーデータが取得されていない状態でも、このビットは "1"を示します。

RO

30:16

-

Reserved

Reserved

-

15:0

BHM_TEMP1

Temperature 1 Monitor

Temperature Sensor 1から取得した温度データを読み出すためのフィールドです。温度センサーの実効データは Bit 15:4に格納されます。

RO

Table 52. BHM Temperature 2 Monitor Register ビットフィールド (Offset 0x2054)
bit Symbol Field Description R/W

31

BHM_TEMP2NUPD

Temperature 2 Not Updated

センサーデータの更新状態を示すビットです。このビットが "1"にセットされている時、BHM_TEMP2フィールドが前回の読み出し時から更新されていない事を示します。BHMがセンサーからデータを読み出した時、このビットは "0"にクリアされ、BHM_TEMP2 を読み出したときこのビットは"1"にセットされます。また、リセット解除後にセンサーデータが取得されていない状態でも、このビットは "1"を示します。

RO

30:16

-

Reserved

Reserved

-

15:0

BHM_TEMP2

Temperature 2 Monitor

Temperature Sensor 2から取得した温度データを読み出すためのフィールドです。温度センサーの実効データは Bit 15:4に格納されます。

RO

Table 53. BHM Temperature 3 Monitor Register ビットフィールド (Offset 0x2058)
bit Symbol Field Description R/W

31

BHM_TEMP3NUPD

Temperature 3 Not Updated

センサーデータの更新状態を示すビットです。このビットが "1"にセットされている時、BHM_TEMP3フィールドが前回の読み出し時から更新されていない事を示します。BHMがセンサーからデータを読み出した時、このビットは "0"にクリアされ、BHM_TEMP3 を読み出したときこのビットは"1"にセットされます。また、リセット解除後にセンサーデータが取得されていない状態でも、このビットは "1"を示します。

RO

30:16

-

Reserved

Reserved

-

15:0

BHM_TEMP3

Temperature 3 Monitor

Temperature Sensor 3から取得した温度データを読み出すためのフィールドです。温度センサーの実効データは Bit 15:4に格納されます。

RO

BHM Software Access Control Register (Offset 0x2060)

BHM Software Access Control Registerは、ソフトウェア指示により センサーの任意のレジスタにアクセスするための制御を行うレジスタです。

BHMは Software I2C Access Request (BHM_SWACCREQ)に "1"をセットすると、BHM_SWDEVSEL・BHM_SWREGADR・BHM_SWRWSELに設定された情報をもとにアクセスを行います。 BHM_SWACCREQと他の設定フィールドは、同時にセットすることができます。

BHM_SWRWSELに "0"を設定し、センサーへのライトアクセスを行う場合は、予め BHM Software Access Write Data Registerにライトデータを書き込んでおく必要があります。

Table 54. BHM Software Access Control Register ビットフィールド
bit Symbol Field Description R/W

31:25

-

Reserved

Reserved

-

24

BHM_SWACCREQ

Software I2C Access Request

Softwareによるセンサーへのアクセスを開始するためのリクエストビットです。このビットに"1"をセットするとセンサーアクセスを開始します。センサーへのアクセスが完了すると、このビットは自動的に "0"にクリアされます。

R/W

23:19

-

Reserved

Reserved

-

18:16

BHM_SWDEVSEL

Software I2C Access Device Select

Softwareによるセンサーへのアクセスを行う時のセンサーデバイスを選択するためのフィールドです。0x0: Current Voltage Monitor 1 0x1: Current Voltage Monitor 2 0x2: Temperature Sensor 1 0x3: Temperature Sensor 2 0x4: Temperature Sensor 3 0x5-0x7: 設定禁止

R/W

15:8

BHM_SWREGADR

Software I2C Access Register Address

Softwareによるセンサーへのアクセスを行う時のセンサーのレジスタのアドレスを設定するためのフィールドです。

R/W

7:1

-

Reserved

Reserved

-

0

BHM_SWRWSEL

Software I2C Access Read/Write Select

Softwareによるセンサーへのアクセスを行う時のアクセス方向 (リード/ライト)を設定するためのビットです。 0: Write Access 1: Read Access

R/W

BHM Software Access Write Data Register (Offset 0x2064)

BHM Software Access Write Data Registerは、ソフトウェア指示による I2Cアクセスにおいて、センサーに送信するデータを書き込むためのレジスタです。

Table 55. BHM Software Access Write Data Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

BHM_SWWRDATA

Software I2C Access Write Data

センサーに送信するデータを設定するフィールドです。

R/W

BHM Software Access Read Data Register (Offset 0x2068)

BHM Software Access Read Data Registerは、ソフトウェア指示による I2Cアクセスによってセンサーから受信したデータを読み出すためのレジスタです。

Table 56. BHM Software Access Write Data Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

BHM_SWRDDATA

Software I2C Access Read Data

センサーから受信したデータを読み出すためのフィールドです。

RO

BHM Prescaler Register (Offset 0x2080)

BHM Prescale Registerは、BHMがセンサーと行う I2Cの 通信タイミングを設定するためのレジスタです。

OBC Module上のセンサーとの通信は I2Cの Standard mode (100 Kbps)で行います。 このレジスタには、以下の計算値で設定される値を設定してください。

\[BHM\_CLKPSC = \frac{System\ Clock\ frequency [MHz]}{0.1} - 1\]
Table 57. BHM Prescale Setting Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

BHM_CLKPSC

I2C Prescale From System Clock

システムクロックで I2Cの 1周期を生成するカウント数を設定します。

R/W

BHM_CLKPDCの設定による I2C通信の各タイミングは、以下の式で計算できます。

\[START\ Hold\ Time(tHDSTA)[s] = System\ Clock\ period[s] \times \frac{BHM\_CLKPSC+1}{2}\]
\[STOP\ Setup\ Time(tSUSTO)[s] = System\ Clock\ period[s] \times \frac{BHM\_CLKPSC+1}{2}\]
\[Repeated\ START\ Setup\ Time(tSUSTA)[s] = System\ Clock\ period[s] \times \frac{BHM\_CLKPSC+1}{2}\]
\[SCL\ High\ Time(tHIGH)[s] = System\ Clock\ period[s] \times \frac{BHM\_CLKPSC+1}{2}-5\]
\[Data\ Hold\ Time(tHDDAT)[s] = System\ Clock\ period[s] \times 5\]
\[Data\ Setup\ Time(tSUDAT)[s] = System\ Clock\ period[s] \times \frac{BHM\_CLKPSC+1}{2}\]
\[SCL\ Low\ Time(tLOW)[s] = tHDDAT[s] + tSUDAT[s]\]
\[Bus\ Free\ Time(tBUF)[s] = System\ Clock\ period[s] \times \frac{BHM\_CLKPSC+1}{2}+5\]

システムクロックが 48MHz, 24MHzの場合において、I2Cを 100 kbpsに設定する場合の設定値と、I2Cのタイミングを以下に示します。

Standard-mode (100 kbps)通信時の BHM I2C Prescale Setting

Registerの設定値とI2Cタイミング (システムクロックのサイクル数)

Parameter System Clock=48MHz[default] System Clock=24MHz

SYSMON_BHMCLKPSC[15:0] 設定値

0x01DF [Divide by 480]

0x00EF [Divide by 240]

START Hold Timing (tHDSTA)

240 Cycle [5.00us]

120 Cycle [5.00us]

STOP Setup Timing (tSUSTO)

240 Cycle [5.00us]

120 Cycle [5.00us]

Repeated START Setup Timing (tSUSTA)

240 Cycle [5.00us]

120 Cycle [5.00us]

Clock High Timing (tHIGH)

235 Cycle [4.90us]

115 Cycle [4.79us]

Data Hold Timing (tHDDAT)

5 Cycle [0.10us]

5 Cycle [0.21us]

Data Setup Timing (tSUDAT)

240 Cycle [5.00us]

120 Cycle [5.00us]

Clock Low Timing (tLOW)

245 Cycle [5.10us]

125 Cycle [5.21us]

Bus Free Timing (tBUF)

245 Cycle [5.10us]

125 Cycle [5.21us]

BHM Retry Count Register (Offset 0x2084)

BHM Retry Count Registerは、BHMが行うセンサーへのアクセスにおける、リトライ回数の上限を設定するためのレジスタです。

BHMは I2Cバスの通信においてセンサーからアクノリッジが送信されてこない場合にバスエラーと認識します。 BHMはバスエラーが起こった場合、BHM_I2CACCCNTに設定された回数のリトライアクセスを行います。

I2Cアクセスが頻発する事により、BHM_I2CACCCNTに設定されたリトライを行ってもエラーが改善しなかった場合、BHMは I2Cアクセスを停止します。 このとき、BHM Access Control Registerの対象のセンサーの Enableビットを Disableに設定するとともに、BHM Interrupt Status Registerの対象のセンサーの I2C Access Errorビットをセットし、割り込みを発生します。

Table 58. BHM Retry Count Register ビットフィールド
bit Symbol Field Description R/W

31:8

-

Reserved

Reserved

-

7:0

BHM_I2CACCCNT

I2C Access Count

I2Cアクセスにおけるリトライ回数を設定するフィールドです。

R/W

BHM Access Status Register (Offset 0x20C0)

BHM Access Status Registerは、BHM機能が持つ I2Cバスの状態を示すレジスタです。

このレジスタの全てのビットが "0"を示す時、I2Cバスは Idle状態であることを示します。

Table 59. BHM Access Status Register ビットフィールド
bit Symbol Field Description R/W

31:6

-

Reserved

Reserved

-

5

BHM_SWBUSY

Software Access Busy

ソフトウェアからの指示により、BHMが いずれからのセンサーに対して行うアクセスの状態を示すビットです。

RO

4

BHM_TEMP3BUSY

Temperature Sensor3 Access Busy

BHMが Temperature Sensor 3に対して行う自動アクセスの状態を示すビットです。センサーの初期化時とデータ読み出し時に、このビットは "1"を示します。

RO

3

BHM_TEMP2BUSY

Temperature Sensor2 Access Busy

BHMが Temperature Sensor 2に対して行う自動アクセスの状態を示すビットです。センサーの初期化時とデータ読み出し時に、このビットは "1"を示します。

RO

2

BHM_TEMP1BUSY

Temperature Sensor1 Access Busy

BHMが Temperature Sensor 1に対して行う自動アクセスの状態を示すビットです。センサーの初期化時とデータ読み出し時に、このビットは "1"を示します。

RO

1

BHM_CVM2BUSY

Current Voltage Monitor2 Access Busy

BHMが Current Voltage Monitor 2に対して行う自動アクセスの状態を示すビットです。センサーの初期化時とデータの読み出し時に、このビットは "1"を示します。

RO

0

BHM_CVM1BUSY

Current Voltage Monitor1 Access Busy

BHMが Current Voltage Monitor 1に対して行う自動アクセスの状態を示すビットです。センサーの初期化時とデータの読み出し時に、このビットは "1"を示します。

RO

System Monitor IP Version Register (Offset: 0xF000)

System Monitor IP Version Registerは、System Monitorの IPコアバージョンを示すレジスタです。

Table 60. System Monitor IP Version Register ビットフィールド
bit Symbol Field Description R/W

31:24

SYSMON_MAJVER

System Monitor IP Major Version

System MonitorコアのMajor Versionを示します。

RO

23:16

SYSMON_MINVER

System Monitor IP Minor Version

System MonitorコアのMinor Versionを示します。

RO

15:0

SYSMON_PATVER

System Monitor IP Patch Version

System MonitorコアのPatch Versionを示します。

RO

General Purpose Timer

General Purpose Timerは、SC-OBC-A1 FPGAの運用時間の管理や、FPGA内の CPUや IPコアへのタイミング通知を行うためのタイマーモジュールです。 General Purpose Timerは、Global Timer・Software Interrupt Timer・Hardware Interrupt Timerと呼ばれる、3つの32bitアップカウンターで構成されています。

Global Timerは、FPGAのリセット解除から動作する Free Run Timerです。 リセットの解除後からの時刻を数えるために使われます。 Global Timerの最小時間は 0.0625秒であり、最大 268435455.9375秒(約 8年 186日)までカウントする事ができます。 Software Interrupt Timerと Hardware Interrupt Timerの最小時間は Prescalerにより設定する事ができます。

Global Timerと Software Interrupt Timerは、CPUに割り込みを発生させるタイマーとして使用します。 Global Timerは タイマーに対し 4つの比較チャネルを持っており、Software Timerは 8つの比較チャネルを持っています。

Hardware Interrupt Timerは、SC-OBC-A1 FPGAの内部のIPコアに対しイベントを通知する、Hardware Schedulerとして使用します。 Hardware Interrupt Timerは タイマーに対し 8つの比較チャネルを持っており、そのうち 7つを IPコアへのイベントトリガに使用する事ができます。

Hardware Interrupt Timerの出力チャネルと、接続されている IP Coreの対応を以下に示します。

Table 61. Hardware Interrupt Timerの割り込み出力
Output Compare Channel IP Core Function

1

None

Hardware Schedulerの周期を決めるタイマーとして使用

2

System Monitor (Hardware Health Monitor)

Current Voltage Monitorからのデータ読み出しアクセス要求

3

System Monitor (Hardware Health Monitor)

Temperature Sensorからのデータ読み出しアクセス要求

4-8

Reserved

-

レジスタ詳細

General Purpose Timerは、Base Address 0x4F05_0000に配置されています。

Table 62. General Purpose Timer メモリマップ
Offset Symbol Register Initial

0x0000

GPTMR_GTR

Global Timer Register

0x00000000

0x0004

GPTMR_TECR

Timer Enable Control Register

0x00000000

0x0008

GPTMR_SITRR

Software Interrupt Timer Remaining Register

0x00000000

0x000C

GPTMR_HITRR

Hardware Interrupt Timer Remaining Register

0x00000000

0x0010

GPTMR_GTSR

Global Timer Interrupt Status Register

0x00000000

0x0014

GPTMR_GTER

Global Timer Interrupt Enable Register

0x00000000

0x0020

GPTMR_GTOCR1

Global Timer Output Compare Register 1

0x00000000

0x0024

GPTMR_GTOCR2

Global Timer Output Compare Register 2

0x00000000

0x0028

GPTMR_GTOCR3

Global Timer Output Compare Register 3

0x00000000

0x002C

GPTMR_GTOCR4

Global Timer Output Compare Register 4

0x00000000

0x0100

GPTMR_SITCR

Software Interrupt Timer Control Register

0x00000000

0x0104

GPTMR_SITPR

Software Interrupt Timer Prescaler Register

0x00000000

0x0108

GPTMR_SITSR

Software Interrupt Timer Status Register

0x00000000

0x010C

GPTMR_SITER

Software Interrupt Timer Enable Register

0x00000000

0x0110

GPTMR_SITOCR1

Software Interrupt Timer Output Compare Register 1

0x00000000

0x0114

GPTMR_SITOCR2

Software Interrupt Timer Output Compare Register 2

0x00000000

0x0118

GPTMR_SITOCR3

Software Interrupt Timer Output Compare Register 3

0x00000000

0x011C

GPTMR_SITOCR4

Software Interrupt Timer Output Compare Register 4

0x00000000

0x0120

GPTMR_SITOCR5

Software Interrupt Timer Output Compare Register 5

0x00000000

0x0124

GPTMR_SITOCR6

Software Interrupt Timer Output Compare Register 6

0x00000000

0x0128

GPTMR_SITOCR7

Software Interrupt Timer Output Compare Register 7

0x00000000

0x012C

GPTMR_SITOCR8

Software Interrupt Timer Output Compare Register 8

0x00000000

0x0200

GPTMR_HITCR

Hardware Interrupt Timer Control Register

0x00000000

0x0204

GPTMR_HITPR

Hardware Interrupt Timer Prescaler Register

0x00000000

0x0210

GPTMR_HITOCR1

Hardware Interrupt Timer Output Compare Register 1

0x00000000

0x0214

GPTMR_HITOCR2

Hardware Interrupt Timer Output Compare Register 2

0x00000000

0x0218

GPTMR_HITOCR3

Hardware Interrupt Timer Output Compare Register 3

0x00000000

0x021C

GPTMR_HITOCR4

Hardware Interrupt Timer Output Compare Register 4

0x00000000

0x0220

GPTMR_HITOCR5

Hardware Interrupt Timer Output Compare Register 5

0x00000000

0x0224

GPTMR_HITOCR6

Hardware Interrupt Timer Output Compare Register 6

0x00000000

0x0228

GPTMR_HITOCR7

Hardware Interrupt Timer Output Compare Register 7

0x00000000

0x022C

GPTMR_HITOCR8

Hardware Interrupt Timer Output Compare Register 8

0x00000000

0xF000

GPTMR_VER

General Purpose Timer IP Version Register

-

Global Timer Register (Offset: 0x0000)

Global Timer Registerは、Global Timerの現在の値を示すレジスタです。

Global Timerは、SC-OBC-A1 FPGAの起動後に発生するシステムリセットの解除からカウントを開始するカウンターです。 このタイマーの値を読み出す事で起動後の時間を知る事ができます。

Global Timerの動作クロックは、FPGAに入力する原発クロックです。 そのため、システムがどんな状態であってもカウント動作を行います。

Timerの最小時間は、0.0625秒であり、最大 268435455.9375秒(約 8年186日)までカウントする事ができます。

Table 63. Global Timer Register ビットフィールド
bit Symbol Field Description R/W

31:4

GPTMR_GTINT

Global Timer Integer Field

Global Timerの整数部分を示すフィールドです。Bit 4が 20秒を示します。そのため、このフィールドは 1秒に 1回インクリメントされます。Bit 4: 20(1)秒 Bit 5: 21 (2)秒 Bit 6: 22 (4)秒 ・・・ Bit 31: 227 (134217728)秒 このフィールドは、システムの起動後 ソフトウェアによって書き換える事ができます。

R/W

3:0

GPTMR_GTFLOAT

Global Timer Float Field

Global Timerの小数部分を示すフィールドです。Bit 0が 2-4秒を示します。そのため、このフィールドは 0.0625秒に 1回インクリメントされます。 Bit 3: 2-1 (0.5)秒 Bit 2: 2-2 (0.25)秒 Bit 1: 2-3 (0.125)秒 Bit 0: 2-4 (0.0625)秒 このフィールドは、GPTMR_GTINTフィールドに書き込みがあった時 "0"にクリアされます。

RO

Timer Enable Control Register (Offset: 0x0004)

Timer Enable Control Registerは、Software Interrupt Timerと Hardware Interrupt Timerの動作を制御するレジスタです。

Table 64. Timer Enable Control Register ビットフィールド
bit Symbol Field Description R/W

31:2

-

Reserved

Reserved

-

1

GPTMR_HITEN

Hardware Interrupt Timer Enable

Hardware Interrupt Timerの動作設定を行います。 0: Hardware Interrupt Timer 無効 (停止) 1: Hardware Interrupt Timer 有効 (動作)

R/W

0

GPTMR_SITEN

Software Interrupt Timer Enable

Software Interrupt Timerの動作設定を行います。 0: Software Interrupt Timer 無効 (停止) 1: Software Interrupt Timer 有効 (動作)

R/W

Software Interrupt Timer Remaining Register (Offset: 0x0008)

Software Interrupt Timer Remaining Registerは Software Interrupt Timerの現在のカウント値を示すレジスタです。

Software Interrupt Timerの最小時間は、Software Interrupt Timer Prescaler Registerの設定値により決まります。

Table 65. Software Interrupt Timer Remaining Register ビットフィールド
bit Symbol Field Description R/W

31:0

GPTMR_SITCNT

Software Interrupt Timer Count

Software Interrupt Timerの現在のカウント値を示します。

RO

Hardware Interrupt Timer Remaining Register (Offset: 0x000C)

Hardware Interrupt Timer Remaining Registerは Hardware Interrupt Timerの現在のカウント値を示すレジスタです。

Hardware Interrupt Timerの最小時間は、Hardware Interrupt Timer Prescaler Registerの設定値により決まります。

Table 66. Hardware Interrupt Timer Remaining Register ビットフィールド
bit Symbol Field Description R/W

31:0

GPTMR_HITCNT

Hardware Interrupt Timer Count

Hardware Interrupt Timerの現在のカウント値を示します。

RO

Global Timer Interrupt Status Register (Offset: 0x0010)

Global Timer Interrupt Status Registerは、Global Timerの割り込みステータスを示すレジスタです。

Global Timerに起因する割り込みが発生した時、割り込み要因に対応するビットがセットされます。 それぞれのビットは "1"をセットすると、割り込みをクリアする事ができます。

Table 67. Global Timer Interrupt Status Register ビットフィールド
bit Symbol Field Description R/W

31:17

-

Reserved

Reserved

-

16

GPTMR_GTROVSTS

Global Timer Rollover Flag

Global Timerの Roll Overが発生した事を示すビットです。Global Timerがカウンター動作によって 0xFFFFFFFFから 0x0に戻ったとき "1"にセットされます。

R/WC

15:4

-

Reserved

Reserved

-

3

GPTMR_GTOCF4STS

Global Timer Output Compare Channel 4 Flag

Global Timer出力比較チャネル 4の比較イベントが発生した事を示すビットです。Global Timerのカウンター値と Global Timer Output Compare Register 4の値が一致したとき "1"にセットされます。

R/WC

2

GPTMR_GTOCF3STS

Global Timer Output Compare Channel 3 Flag

Global Timer出力比較チャネル 3の比較イベントが発生した事を示すビットです。Global Timerのカウンター値と Global Timer Output Compare Register 3の値が一致したとき "1"にセットされます。

R/WC

1

GPTMR_GTOCF2STS

Global Timer Output Compare Channel 2 Flag

Global Timer出力比較チャネル 2の比較イベントが発生した事を示すビットです。Global Timerのカウンター値と Global Timer Output Compare Register 2の値が一致したとき "1"にセットされます。

R/WC

0

GPTMR_GTOCF1STS

Global Timer Output Compare Channel 1 Flag

Global Timer出力比較チャネル 1の比較イベントが発生した事を示すビットです。Global Timerのカウンター値と Global Timer Output Compare Register 1の値が一致したとき "1"にセットされます。

R/WC

Global Timer Interrupt Enable Register (Offset: 0x0014)

Global Timer Interrupt Enable Registerは、Global Timerの動作において発生した割り込みイベントを割り込み出力信号に通知するか設定するためのレジスタです。

このレジスタで "1"にセットされた割り込みイネーブルビットと、Global Timer Interrupt Status Registerの対応する割り込みステータスビットが "1"にセットされた時、Global Timer割り込みを出力します。

Table 68. Global Timer Interrupt Enable Register ビットフィールド
bit Symbol Field Description R/W

31:17

-

Reserved

Reserved

-

16

GPTMR_GTROVENB

Global Timer Rollover Flag Enable

GPTMR_GTROVSTSイベントが発生した時に、割り込み信号を出力するかどうかを設定します。

R/W

15:4

-

Reserved

Reserved

-

3

GPTMR_GTOCF4ENB

Global Timer Output Compare Channel 4 Flag Enable

GPTMR_GTOCF4STSイベントが発生した時に、割り込み信号を出力するかどうかを設定します。

R/W

2

GPTMR_GTOCF3ENB

Global Timer Output Compare Channel 3 Flag Enable

GPTMR_GTOCF3STSイベントが発生した時に、割り込み信号を出力するかどうかを設定します。

R/W

1

GPTMR_GTOCF2ENB

Global Timer Output Compare Channel 2 Flag Enable

GPTMR_GTOCF2STSイベントが発生した時に、割り込み信号を出力するかどうかを設定します。

R/W

0

GPTMR_GTOCF1ENB

Global Timer Output Compare Channel 1 Flag Enable

GPTMR_GTOCF1STSイベントが発生した時に、割り込み信号を出力するかどうかを設定します。

R/W

Global Timer Output Compare Register 1-4 (Offset: 0x0020-0x002C)

Global Timer Output Compare Register 1-4は、Global Timerのタイマー出力値に対する比較イベントを生成するための設定レジスタです。

Global Timerは、出力比較を行うチャネルを 4つ持っています。 Global Timerのカウント値と、本レジスタの設定値が一致したときに、対応するチャネルの比較イベントを生成します。 このレジスタの値が "0"に設定されている場合、そのチャネルの出力比較機能は無効になります。

Global Timer Output Compare Register 1 ビットフィールド (Offset:

0x0020)

bit Symbol Field Description R/W

31:0

GPTMR_GTCOMP1

Global Timer Output Compare Channel 1 Value

出力比較チャネル 1の比較イベントを生成する Global Timerのカウント値を設定します。

R/W

Global Timer Output Compare Register 2 ビットフィールド (Offset:

0x0024)

bit Symbol Field Description R/W

31:0

GPTMR_GTCOMP2

Global Timer Output Compare Channel 2 Value

出力比較チャネル 2の比較イベントを生成する Global Timerのカウント値を設定します。

R/W

Global Timer Output Compare Register 3 ビットフィールド (Offset:

0x0028)

bit Symbol Field Description R/W

31:0

GPTMR_GTCOMP3

Global Timer Output Compare Channel 3 Value

出力比較チャネル 3の比較イベントを生成する Global Timerのカウント値を設定します。

R/W

Global Timer Output Compare Register 4 ビットフィールド (Offset:

0x002C)

bit Symbol Field Description R/W

31:0

GPTMR_GTCOMP4

Global Timer Output Compare Channel 4 Value

出力比較チャネル 4の比較イベントを生成する Global Timerのカウント値を設定します。

R/W

Software Interrupt Timer Control Register (Offset: 0x0100)

Software Interrupt Timer Control Registerは、Software Interrupt Timerの制御方法を指定するレジスタです。

このレジスタは、Timer Enable Control Registerの GPTMR_SITENビットをセットする前に設定する必要があります。

Table 69. Software Interrupt Timer Control Register ビットフィールド
bit Symbol Field Description R/W

31:5

-

Reserved

Reserved

-

4

GPTMR_SITSWR

Software Interrupt Timer Software Reset

Software Interrupt Timerのソフトウェアリセットを行うためのビットです。このビットに"1"を書き込むと、Software Interrupt Timerに関連する以下レジスタのリセットを行います。 - Software Interrupt Timer Remaining Register(GPTMR_SITRR) - Software Interrupt Timer Control Register(GPTMR_SITCR) - Software Interrupt Timer Prescaler Register(GPTMR_SITPR) - Software Interrupt Timer Status Register(GPTMR_SITSR) - Software Interrupt Timer Enable Register(GPTMR_SITER) - Software Interrupt Timer Output Compare Register 1-8(GPTMR_SITOCR1-8) リセットが完了すると、このビットは"0"に戻ります。

R/W

3:2

-

Reserved

Reserved

-

1

GPTMR_SITRUNMD

Software Interrupt Timer Run Mode Select

出力比較チャネル 1で比較イベントが発生した時の Software Interrupt Timerの動作モードを設定します。0: Restartモード 1: Free Runモード Restartモードは、出力比較チャネル 1で比較イベントが発生した時、Software Interrupt Timerのカウント値を "0"にリセットするモードです。Software Interrupt Timerは 0に戻った後、カウント動作を再開します。Free Runモードは、出力比較チャネル 1で比較イベントが発生した時、Software Interrupt Timerのカウント値をクリアせずカウントを続けるモードです。Software Interrupt Timerが 0xFFFFFFFFになると、Roll Overしカウンターは 0に戻ります。

R/W

0

GPTMR_SITENBMD

Software Interrupt Timer Enable Mode Select

Timer Enable Control Registerの GPTMR_SITENビットがセットされた時の Software Interrupt Timerの値を設定します。0: 前回のカウント値からカウントを再開 1: カウント値を 0にクリアしカウントを開始

R/W

Software Interrupt Timer Prescaler Register (Offset: 0x0104)

Software Interrupt Timer Prescaler Registerは、Software Interrupt TimerのPrescalerを設定するためのレジスタです。

Software Interrupt Timerは、24 MHzのクロックで動作します。 このレジスタには、Software Interrupt Timerをカウントアップするための、クロックサイクル数を設定します。

このレジスタは、Timer Enable Control Registerの GPTMR_SITENビットをセットする前に設定する必要があります。

Table 70. Software Interrupt Timer Prescaler Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

GPTMR_SITPSC

Software Interrupt Timer Prescale

Software Interrupt Timerをカウントアップするための動作クロックに対するサイクル数を設定します。

R/W

GPTMR_SITPSCに設定する値は、Software Interrupt Timerの動作クロック周波数 (24 MHz)とカウンターのカウントアップ間隔から、以下の計算で算出することができます。

\[GPTMR\_SITPSC = 24 \times 10^6 \times Software\ Interrupt\ Timer\ Countup\ Interval[s] -1\]

Software Interrupt Timer Status Register (Offset: 0x0108)

Software Interrupt Timer Status Registerは、Software Interrupt Timerの割り込みステータスを示すレジスタです。

Software Interrupt Timerに起因する割り込みが発生した時、割り込み要因に対応するビットがセットされます。 それぞれのビットは "1"をセットすると、割り込みをクリアする事ができます。

Table 71. Software Interrupt Timer Status Register ビットフィールド
bit Symbol Field Description R/W

31:17

-

Reserved

Reserved

-

16

GPTMR_SITROVSTS

Software Interrupt Timer Rollover Flag

Software Interrupt TimerのRoll Overが発生した事を示すビットです。Software Interrupt Timerがカウンター動作によって 0xFFFFFFFFから 0x0に戻ったときに本ビットが"1"にセットされます。

R/WC

15:8

-

Reserved

Reserved

-

7

GPTMR_SITOCF8STS

Software Interrupt Timer Output Compare Channel 8 Flag

Software Interrupt Timer出力比較チャネル8の比較イベントが発生した事を示すビットです。Software Interrupt Timerのカウンター値と Software Interrupt Timer Output Compare Register 8の値が一致したときに "1"にセットされます。

R/WC

6

GPTMR_SITOCF7STS

Software Interrupt Timer Output Compare Channel 7 Flag

Software Interrupt Timer出力比較チャネル7の比較イベントが発生した事を示すビットです。Software Interrupt Timerのカウンター値と Software Interrupt Timer Output Compare Register 7の値が一致したときに "1"にセットされます。

R/WC

5

GPTMR_SITOCF6STS

Software Interrupt Timer Output Compare Channel 6 Flag

Software Interrupt Timer出力比較チャネル6の比較イベントが発生した事を示すビットです。Software Interrupt Timerのカウンター値と Software Interrupt Timer Output Compare Register 6の値が一致したときに "1"にセットされます。

R/WC

4

GPTMR_SITOCF5STS

Software Interrupt Timer Output Compare Channel 5 Flag

Software Interrupt Timer出力比較チャネル5の比較イベントが発生した事を示すビットです。Software Interrupt Timerのカウンター値と Software Interrupt Timer Output Compare Register 5の値が一致したときに "1"にセットされます。

R/WC

3

GPTMR_SITOCF4STS

Software Interrupt Timer Output Compare Channel 4 Flag

Software Interrupt Timer出力比較チャネル4の比較イベントが発生した事を示すビットです。Software Interrupt Timerのカウンター値と Software Interrupt Timer Output Compare Register 4の値が一致したときに "1"にセットされます。

R/WC

2

GPTMR_SITOCF3STS

Software Interrupt Timer Output Compare Channel 3 Flag

Software Interrupt Timer出力比較チャネル3の比較イベントが発生した事を示すビットです。Software Interrupt Timerのカウンター値と Software Interrupt Timer Output Compare Register 3の値が一致したときに "1"にセットされます。

R/WC

1

GPTMR_SITOCF2STS

Software Interrupt Timer Output Compare Channel 2 Flag

Software Interrupt Timer出力比較チャネル2の比較イベントが発生した事を示すビットです。Software Interrupt Timerのカウンター値と Software Interrupt Timer Output Compare Register 2の値が一致したときに "1"にセットされます。

R/WC

0

GPTMR_SITOCF1STS

Software Interrupt Timer Output Compare Channel 1 Flag

Software Interrupt Timer出力比較チャネル1の比較イベントが発生した事を示すビットです。Software Interrupt Timerのカウンター値と Software Interrupt Timer Output Compare Register 1の値が一致したときに "1"にセットされます。

R/WC

Software Interrupt Timer Enable Register (Offset: 0x010C)

Software Interrupt Timer Enable Registerは、Software Interrupt Timerの動作において発生した割り込みイベントを割り込み出力信号に通知するか設定するためのレジスタです。

このレジスタで "1"にセットされた割り込みイネーブルビットと、Software Interrupt Timer Status Registerの対応する割り込みステータスビットが "1"にセットされた時、Software Interrupt Timerの割り込みを出力します。

Table 72. Software Interrupt Timer Enable Register ビットフィールド
bit Symbol Field Description R/W

31:17

-

Reserved

Reserved

-

16

GPTMR_SITROVENB

Software Interrupt Timer Rollover Flag Enable

GPTMR_SITROVSTSイベントが発生した時に、割り込み信号を出力するかどうかを設定します。

R/W

15:8

-

Reserved

Reserved

-

7

GPTMR_SITOCF8ENB

Software Interrupt Timer Output Compare Channel 8 Flag Enable

GPTMR_SITOCF8STSイベントが発生した時に、割り込み信号を出力するかどうかを設定します。

R/W

6

GPTMR_SITOCF7ENB

Software Interrupt Timer Output Compare Channel 7 Flag Enable

GPTMR_SITOCF7STSイベントが発生した時に、割り込み信号を出力するかどうかを設定します。

R/W

5

GPTMR_SITOCF6ENB

Software Interrupt Timer Output Compare Channel 6 Flag Enable

GPTMR_SITOCF6STSイベントが発生した時に、割り込み信号を出力するかどうかを設定します。

R/W

4

GPTMR_SITOCF5ENB

Software Interrupt Timer Output Compare Channel 5 Flag Enable

GPTMR_SITOCF5STSイベントが発生した時に、割り込み信号を出力するかどうかを設定します。

R/W

3

GPTMR_SITOCF4ENB

Software Interrupt Timer Output Compare Channel 4 Flag Enable

GPTMR_SITOCF4STSイベントが発生した時に、割り込み信号を出力するかどうかを設定します。

R/W

2

GPTMR_SITOCF3ENB

Software Interrupt Timer Output Compare Channel 3 Flag Enable

GPTMR_SITOCF3STSイベントが発生した時に、割り込み信号を出力するかどうかを設定します。

R/W

1

GPTMR_SITOCF2ENB

Software Interrupt Timer Output Compare Channel 2 Flag Enable

GPTMR_SITOCF2STSイベントが発生した時に、割り込み信号を出力するかどうかを設定します。

R/W

0

GPTMR_SITOCF1ENB

Software Interrupt Timer Output Compare Channel 1 Flag Enable

GPTMR_SITOCF1STSイベントが発生した時に、割り込み信号を出力するかどうかを設定します。

R/W

Software Interrupt Timer Output Compare Register 1-8 (Offset: 0x0110-0x012C)

Software Interrupt Timer Output Compare Register 1-8は、Software Interrupt Timerのタイマー出力値に対する比較イベントを生成するための設定レジスタです。

Software Interrupt Timerは、出力比較を行うチャネルは 8つ持っています。 Software Interrupt Timerのカウント値と、本レジスタの設定値が一致したとき、対応するチャネルの比較イベントを生成します。 レジスタの値が "0"に設定されている場合、そのチャネルの出力比較機能は無効になります。

Software Interrupt Timer Output Compare Register 1 ビットフィールド

(Offset: 0x0110)

bit Symbol Field Description R/W

31:0

GPTMR_SITCOMP1

Software Interrupt Timer Output Compare Channel 1 Value

出力比較チャネル 1の比較イベントを生成する Software Interrupt Timerのカウント値を設定します。

R/W

Software Interrupt Timer Output Compare Register 2 ビットフィールド

(Offset: 0x0114)

bit Symbol Field Description R/W

31:0

GPTMR_SITCOMP2

Software Interrupt Timer Output Compare Channel 2 Value

出力比較チャネル 2の比較イベントを生成する Software Interrupt Timerのカウント値を設定します。

R/W

Software Interrupt Timer Output Compare Register 3 ビットフィールド

(Offset: 0x0118)

bit Symbol Field Description R/W

31:0

GPTMR_SITCOMP3

Software Interrupt Timer Output Compare Channel 3 Value

出力比較チャネル 3の比較イベントを生成する Software Interrupt Timerのカウント値を設定します。

R/W

Software Interrupt Timer Output Compare Register 4 ビットフィールド

(Offset: 0x011C)

bit Symbol Field Description R/W

31:0

GPTMR_SITCOMP4

Software Interrupt Timer Output Compare Channel 4 Value

出力比較チャネル 4の比較イベントを生成する Software Interrupt Timerのカウント値を設定します。

R/W

Software Interrupt Timer Output Compare Register 5 ビットフィールド

(Offset: 0x0120)

bit Symbol Field Description R/W

31:0

GPTMR_SITCOMP5

Software Interrupt Timer Output Compare Channel 5 Value

出力比較チャネル 5の比較イベントを生成する Software Interrupt Timerのカウント値を設定します。

R/W

Software Interrupt Timer Output Compare Register 6 ビットフィールド

(Offset: 0x0124)

bit Symbol Field Description R/W

31:0

GPTMR_SITCOMP6

Software Interrupt Timer Output Compare Channel 6 Value

出力比較チャネル 6の比較イベントを生成する Software Interrupt Timerのカウント値を設定します。

R/W

Software Interrupt Timer Output Compare Register 7 ビットフィールド

(Offset: 0x0128)

bit Symbol Field Description R/W

31:0

GPTMR_SITCOMP7

Software Interrupt Timer Output Compare Channel 7 Value

出力比較チャネル 7の比較イベントを生成する Software Interrupt Timerのカウント値を設定します。

R/W

Software Interrupt Timer Output Compare Register 8 ビットフィールド

(Offset: 0x012C)

bit Symbol Field Description R/W

31:0

GPTMR_SITCOMP8

Software Interrupt Timer Output Compare Channel 8 Value

出力比較チャネル 8の比較イベントを生成する Software Interrupt Timerのカウント値を設定します。

R/W

Hardware Interrupt Timer Control Register (Offset: 0x0200)

Hardware Interrupt Timer Control Registerは、Hardware Interrupt Timerの制御方法を指定するレジスタです。

このレジスタは、Timer Enable Control Registerの GPTMR_HITENビットをセットする前に設定する必要があります。

Table 73. Hardware Interrupt Timer Control Register ビットフィールド
bit Symbol Field Description R/W

31:30

GPTMR_HITOPMD8

Hardware Interrupt Timer Output Compare Channel 8 Operation Mode Select

出力比較チャネル 8で比較イベントが発生した時の Hardware Interrupt信号の動作モードを定義するフィールドです。接続相手の IPコア仕様に合わせ設定する必要があります。0b00: 割り込みを無効にします。 0b01: トグル形式で割り込みを出力します。 0b10: パルス形式の割り込みを出力します。 0b11: ハンドシェイク形式の割り込みを出力します。

R/W

29:28

GPTMR_HITOPMD7

Hardware Interrupt Timer Output Compare Channel 7 Operation Mode Select

出力比較チャネル 7で比較イベントが発生した時の Hardware Interrupt信号の動作モードを定義するフィールドです。接続相手の IPコア仕様に合わせ設定する必要があります。0b00: 割り込みを無効にします。 0b01: トグル形式で割り込みを出力します。 0b10: パルス形式の割り込みを出力します。 0b11: ハンドシェイク形式の割り込みを出力します。

R/W

27:26

GPTMR_HITOPMD6

Hardware Interrupt Timer Output Compare Channel 6 Operation Mode Select

出力比較チャネル 6で比較イベントが発生した時の Hardware Interrupt信号の動作モードを定義するフィールドです。接続相手の IPコア仕様に合わせ設定する必要があります。0b00: 割り込みを無効にします。 0b01: トグル形式で割り込みを出力します。 0b10: パルス形式の割り込みを出力します。 0b11: ハンドシェイク形式の割り込みを出力します。

R/W

25:24

GPTMR_HITOPMD5

Hardware Interrupt Timer Output Compare Channel 5 Operation Mode Select

出力比較チャネル 5で比較イベントが発生した時の Hardware Interrupt信号の動作モードを定義するフィールドです。接続相手の IPコア仕様に合わせ設定する必要があります。0b00: 割り込みを無効にします。 0b01: トグル形式で割り込みを出力します。 0b10: パルス形式の割り込みを出力します。 0b11: ハンドシェイク形式の割り込みを出力します。

R/W

23:22

GPTMR_HITOPMD4

Hardware Interrupt Timer Output Compare Channel 4 Operation Mode Select

出力比較チャネル 4で比較イベントが発生した時の Hardware Interrupt信号の動作モードを定義するフィールドです。接続相手の IPコア仕様に合わせ設定する必要があります。0b00: 割り込みを無効にします。 0b01: トグル形式で割り込みを出力します。 0b10: パルス形式の割り込みを出力します。 0b11: ハンドシェイク形式の割り込みを出力します。

R/W

21:20

GPTMR_HITOPMD3

Hardware Interrupt Timer Output Compare Channel 3 Operation Mode Select

出力比較チャネル 3で比較イベントが発生した時の Hardware Interrupt信号の動作モードを定義するフィールドです。接続相手の IPコア仕様に合わせ設定する必要があります。0b00: 割り込みを無効にします。 0b01: トグル形式で割り込みを出力します。 0b10: パルス形式の割り込みを出力します。 0b11: ハンドシェイク形式の割り込みを出力します。

R/W

19:18

GPTMR_HITOPMD2

Hardware Interrupt Timer Output Compare Channel 2 Operation Mode Select

出力比較チャネル 2で比較イベントが発生した時の Hardware Interrupt信号の動作モードを定義するフィールドです。接続相手の IPコア仕様に合わせ設定する必要があります。0b00: 割り込みを無効にします。 0b01: トグル形式で割り込みを出力します。 0b10: パルス形式の割り込みを出力します。 0b11: ハンドシェイク形式の割り込みを出力します。

R/W

17:16

GPTMR_HITOPMD1

Hardware Interrupt Timer Output Compare Channel 1 Operation Mode Select

出力比較チャネル 1で比較イベントが発生した時の Hardware Interrupt信号の動作モードを定義するフィールドです。接続相手の IPコア仕様に合わせ設定する必要があります。0b00: 割り込みを無効にします。 0b01: トグル形式で割り込みを出力します。 0b10: パルス形式の割り込みを出力します。 0b11: ハンドシェイク形式の割り込みを出力します。

R/W

15:5

-

Reserved

Reserved

-

4

GPTMR_HITSWR

Hardware Interrupt Timer Hardware Reset

Hardware Interrupt Timerのソフトウェアリセットを行うためのビットです。このビットに "1"を書き込むと、Hardware Interrupt Timerに関連する以下のレジスタのリセットを行います。 - Hardware Interrupt Timer Remaining Register(GPTMR_HITRR) - Hardware Interrupt Timer Control Register(GPTMR_HITCR) - Hardware Interrupt Timer Prescaler Register(GPTMR_HITPR) - Hardware Interrupt Timer Output Compare Register 1-8(GPTMR_HITOCR1-8) リセットが完了すると、このビットは "0"に戻ります。

R/W

3:2

-

Reserved

Reserved

-

1

GPTMR_HITRUNMD

Hardware Interrupt Timer Run Mode Select

出力比較チャネル 1で比較イベントが発生した時の Hardware Interrupt Timerの動作モードを設定します。0: Restartモード 1: Free Runモード Restartモードは、出力比較チャネル 1で比較イベントが発生した時、Hardware Interrupt Timerのカウント値を "0"にリセットするモードです。Hardware Interrupt Timerは 0に戻った後、カウント動作を再開します。Free Runモードは、出力比較チャネル 1で比較イベントが発生した時、Hardware Interrupt Timerのカウント値をクリアせずカウントを続けるモードです。Hardware Interrupt Timerが 0xFFFFFFFFになると、Roll Overしカウンターは 0に戻ります。

R/W

0

GPTMR_HITENBMD

Hardware Interrupt Timer Enable Mode Select

Timer Enable Control Registerの GPTMR_HITENビットがセットされた時の Hardware Interrupt Timerの値を設定します。 0: 前回のカウント値からカウントを再開 1: 値を 0にクリアしカウントを開始

R/W

Hardware Interrupt Timer Prescaler Register (Offset: 0x0204)

Hardware Interrupt Timer Prescaler Registerは、Hardware Interrupt Timerの Prescalerを設定するためのレジスタです。

Hardware Interrupt Timerは、24 MHzのクロックで動作します。 このレジスタには、Hardware Interrupt Timerをカウントアップするための、クロックサイクル数を設定します。

このレジスタは、Timer Enable Control Registerの GPTMR_HITENビットをセットする前に設定する必要があります。

Table 74. Hardware Interrupt Timer Prescaler Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

GPTMR_HITPSC

Hardware Interrupt Timer Prescale

Hardware Interrupt Timerがカウントアップするための動作クロックに対するサイクル数を設定します。

R/W

GPTMR_HITPSCに設定する値は、Hardware Interrupt Timerの動作クロック周波数 (24 MHz)とカウンターのカウントアップ間隔から、以下の計算で算出することができます。

\[GPTMR\_HITPSC = 24 \times 10^6 \times Hardware\ Interrupt\ Timer\ Countup\ Interval[s] -1\]

Hardware Interrupt Timer Output Compare Register 1-8 (Offset: 0x0210-0x022C)

Hardware Interrupt Timer Output Compare Register 1-8は、Hardware Interrupt Timerのタイマー出力値に対する比較イベントを生成するための設定レジスタです。

Hardware Interrupt Timerは、出力比較を行うチャネルを 8つ持っています。 Hardware Interrupt Timerのカウント値と、本レジスタの設定値が一致したとき、対応するチャネルの比較イベントを生成します。 このレジスタの値が "0"に設定されている場合、そのチャネルの出力比較機能は無効になります。

Hardware Interrupt Timer Output Compare Register 1 ビットフィールド

(Offset: 0x0210)

bit Symbol Field Description R/W

31:0

GPTMR_HITCOMP1

Hardware Interrupt Timer Output Compare Channel 1 Value

出力比較チャネル 1の比較イベントを生成する Hardware Interrupt Timerのカウント値を設定します。

R/W

Hardware Interrupt Timer Output Compare Register 2 ビットフィールド

(Offset: 0x0214)

bit Symbol Field Description R/W

31:0

GPTMR_HITCOMP2

Hardware Interrupt Timer Output Compare Channel 2 Value

出力比較チャネル 2の比較イベントを生成する Hardware Interrupt Timerのカウント値を設定します。

R/W

Hardware Interrupt Timer Output Compare Register 3 ビットフィールド

(Offset: 0x0218)

bit

Symbol

Field

Description

R/W

31:0

GPTMR_HITCOMP3

Hardware Interrupt Timer Output Compare Channel 3 Value

出力比較チャネル 3の比較イベントを生成する Hardware Interrupt Timerのカウント値を設定します。

R/W

Hardware Interrupt Timer Output Compare Register 4 ビットフィールド

(Offset: 0x021C)

bit Symbol Field Description R/W

31:0

GPTMR_HITCOMP4

Hardware Interrupt Timer Output Compare Channel 4 Value

出力比較チャネル 4の比較イベントを生成する Hardware Interrupt Timerのカウント値を設定します。

R/W

Hardware Interrupt Timer Output Compare Register 5 ビットフィールド

(Offset: 0x0220)

bit Symbol Field Description R/W

31:0

GPTMR_HITCOMP5

Hardware Interrupt Timer Output Compare Channel 5 Value

出力比較チャネル 5の比較イベントを生成する Hardware Interrupt Timerのカウント値を設定します。

R/W

Hardware Interrupt Timer Output Compare Register 6 ビットフィールド

(Offset: 0x0224)

bit Symbol Field Description R/W

31:0

GPTMR_HITCOMP6

Hardware Interrupt Timer Output Compare Channel 6 Value

出力比較チャネル 6の比較イベントを生成する Hardware Interrupt Timerのカウント値を設定します。

R/W

Hardware Interrupt Timer Output Compare Register 7 ビットフィールド

(Offset: 0x0228)

bit Symbol Field Description R/W

31:0

GPTMR_HITCOMP7

Hardware Interrupt Timer Output Compare Channel 7 Value

出力比較チャネル 7の比較イベントを生成する Hardware Interrupt Timerのカウント値を設定します。

R/W

Hardware Interrupt Timer Output Compare Register 8 ビットフィールド

(Offset: 0x022C)

bit Symbol Field Description R/W

31:0

GPTMR_HITCOMP8

Hardware Interrupt Timer Output Compare Channel 8 Value

出力比較チャネル 8の比較イベントを生成する Hardware Interrupt Timerのカウント値を設定します。

R/W

General Purpose Timer IP Version Register (Offset: 0xF000)

General Purpose Timer IP Version Registerは、General Purpose Timerの IPコアバージョンを示すレジスタです。

Table 75. General Purpose Timer IP Version Register ビットフィールド
bit Symbol Field Description R/W

31:24

GPTMR_MAJVER

General Purpose Timer IP Major Version

General Purpose TimerコアのMajor Versionを示します。

RO

23:16

GPTMR_MINVER

General Purpose Timer IP Minor Version

General Purpose TimerコアのMinor Versionを示します。

RO

15:0

GPTMR_PATVER

General Purpose Timer IP Patch Version

General Purpose TimerコアのPatch Versionを示します。

RO

HRMEM (High-reliability Memory)

HRMEM (High-reliability Memory)は、SC-OBC Module A1に実装される SRAMにアクセスを行うメモリコントローラモジュールです。

HRMEMのメモリ空間は、Address 0x00000000をベースとする 4 MByteの領域に配置されており、CPU SubSystemの CPU Local Busを通じアクセスされます。 また、Main AXI Bus Systemに接続されるAXIバスからアクセスが可能なミラーアドレスが、Base Address 0x60000000に配置されています。

HRMEMは SC-OBC-A1 FPGAのシステムにおいて、CPUが使用するメインメモリとして動作します。 そのため、SC-OBC-A1 FPGAに実装する CPUが効率的に動作できるよう、SRAMへのアクセスを最適化する機能が実装されています。

HRMEMは SRAMからのデータ読み出し時に 1 bit ECCエラーの発生を検出すると、エラーを修復する機能を持っています。 また、メモリスクラビング機能を持ち、SRAMの全領域のデータに対し定期的なエラーチェックとエラーの修復を行います。

レジスタ詳細

HRMEMはデータを格納する Address 0x00000000からの 4 MByte空間とは別に、HRMEMを制御するために使用するレジスタが配置されています。 HRMEMのレジスタは、Base Address 0x40500000に配置されています。

Table 76. HRMEM Register アドレスマップ
Offset Symbol Register Initial

0x0000

HRMEM_ECCCOLENR

ECC Error Collect Enable Register

0x00000001

0x0008

HRMEM_MEMSCRCTRLR

Memory Scrubing Control Register

0x06FF0001

0x0010

HRMEM_INTSTR

HRMEM Interrupt Status Register

0x00000000

0x0014

HRMEM_INTENR

HRMEM Interrupt Enable Register

0x00000000

0x0020

HRMEM_ECC1ERRCNTR

1Bit ECC Error Count Register

0x00000000

0x0028

HRMEM_ECDISCNTR

ECC Correct Data Discard Count Register

0x00000000

0x002C

HRMEM_ERRCNTCLRR

Error Count Clear Register

0x00000000

0x0030

HRMEM_ECCERRADMR

ECC Error Address Monitor Register

0x00000000

0x0070

HRMEM_PFEMDCTLR

Prefetch Mode Control Register

0x00000001

0x0074

HRMEM_SPEPFENR

Special Prefetch Enable Register

0x00000000

0x0080

HRMEM_SPEPFADRSETR1

Special Prefetch Address Setting Register 1

0x00000000

0x0084

HRMEM_SPEPFADRSETR2

Special Prefetch Address Setting Register 2

0x00000000

0xF000

HRMEM_VER

HRMEM IP Version Register

-

ECC Error Collect Enable Register (Offset: 0x0000)

ECC Error Collect Enable Registerは、1bit ECCエラー検出時にメモリの修復のため訂正データの書き戻す機能を設定するためのレジスタです。 このレジスタのEnableにすると、訂正データの書き戻し機能が有効になります。

Table 77. ECC Error Collect Enable Register ビットフィールド
bit Symbol Field Description R/W

31:1

-

Reserved

Reserved

-

0

ECCCOLEN

ECC Error Collect Enable

メモリ修復機能のEnable設定を行います。0: メモリ修復機能 OFF 1: メモリ修復機能 ON

R/W

Memory Scrubing Control Register (Offset: 0x0008)

Memory Scrubing Control Registerは、メモリスクラビング機能の設定を行うためのレジスタです。 このレジスタのMemory Scrubing EnableをONにすると、SRAMの全フィールドの定期的な読み出し行い書き込まれたデータのチェックを行います。

メモリスクラビング機能は、SRAMの全領域のデータに対し定期的なエラーチェックを行う機能です。 メモリスクラビング機能により検出したデータのエラーを修復する場合には、メモリ修復機能 (ECC Error Collect Enable Registerの ECCCOLENビット)も有効にする必要があります。

MEMSCRCYCはメモリスクラビングのための メモリ読み出しが発生する間隔を設定します。 MEMSCRCYCの初期値は 1791に設定されています。 この値は、およそ 1分でメモリの全領域を検査できる設計値になっています。

Table 78. Memory Scrubing Control Register ビットフィールド
bit Symbol Field Description R/W

31:16

MEMSCRCYC

Memory Scrubing Cycle

メモリスクラビングによる読み出しアクセスの間隔を設定するビットです。設定はシステムクロックのサイクル数で設定します。0: 設定禁止 1: 1 サイクル 2: 2 サイクル … 65535: 65535 サイクル 初期状態では、1791 Cycle間隔に設定されています。

R/W

15:9

-

Reserved

Reserved

-

8

COLFSRDSTPB

Memory Scrubing Arbitration Enable

エラー修復データ FIFOが Full状態での メモリスクラビング制御方法を設定するビットです。本ビットが 0の時、エラー修復データ FIFOが Fullになるとメモリスクラビング機能を停止します。また、本ビットが 1の時、エラー修復データ FIFOが Fullになってもメモリスクラビング機能が停止しません。新しく検出したエラーの修復データは破棄します。

R/W

7:1

-

Reserved

Reserved

-

0

MEMSCRBEN

Memory Scrubing Enable

メモリスクラビング機能の Enable設定を行います。0: メモリスクラビング機能 OFF 1: メモリスクラビング機能 ON

R/W

HRMEM Interrupt Status Register (Offset: 0x0010)

HRMEM Interrupt Status Registerは、HRMEMの割り込みステータスレジスタです。 それぞれのビットは"1"をセットすると、割り込みをクリアする事ができます。

Table 79. HRMEM Interrupt Status Register ビットフィールド
bit Symbol Field Description R/W

31:18

-

Reserved

Reserved

-

17

ATRDE1ERR

Auto Read Access 1bit ECC Error

メモリスクラビング機能により SRAMの読み出しアクセスが行われた時に、1 bit ECC Errorを検出すると本ビットが"1"にセットされます。E1ERRINTビットの割り込みクリアを行うことで、本ビットの状態もクリアされます。

RO

16

BUSRDE1ERR

AHB/AXI Bus Read Access 1bit ECC Error

AHB/AXI Busからのリードアクセスが行われた時に、1 bit ECC Errorを検出すると本ビットが"1"にセットされます。E1ERRINTビットの割り込みクリアを行うことで、本ビットの状態もクリアされます。

RO

15:9

-

Reserved

Reserved

-

8

ECDISINT

ECC Correct Data Discard

1 bit ECCエラー検出時、エラー修復データを破棄すると本ビットが "1"にセットされます。

R/WC

7:1

-

Reserved

Reserved

-

0

E1ERRINT

1bit ECC Error

1 bit ECC Errorを検出すると本ビットが"1"にセットされます。

R/WC

HRMEM Interrupt Enable Register (Offset: 0x0014)

HRMEM Interrupt Enable Registerは、HRMEMの動作において発生した割り込みイベントを割り込み出力信号に通知するか設定するためのレジスタです。

Table 80. HRMEM Interrupt Enable Register ビットフィールド
bit Symbol Field Description R/W

31:9

-

Reserved

Reserved

-

8

ECDISINTENB

ECC Correct Data Discard Enable

ECDISINTイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

7:1

-

Reserved

Reserved

R/W

0

E1ERRINTENB

1bit ECC Error Enable

E1ERRINTイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

1Bit ECC Error Count Register (Offset: 0x0020)

1Bit ECC Error Count Registerは、1Bit ECCエラー検出回数を示すレジスタです。 1 Bit ECCエラーを検出するたびに該当するカウンターをインクリメントします。

カウンターが上限である 0xFFFFに達すると停止します。 このカウンターのクリアは、Error Count Clear Registerによって行います。

Table 81. 1Bit ECC Error Count Register ビットフィールド
bit Symbol Field Description R/W

31:16

ATRDE1ERRCNT

Auto Read Access 1bit ECC Error Counter

メモリスクラビング機能による 読み出しアクセスが行われた時に検出した 1 bit ECCエラーの検出回数を読み出すためのフィールドです。

RO

15:0

BUSRDE1ERRCNT

AHB/AXI Bus Read Access 1bit ECC Error Counter

AHB/AXI Busよりリードアクセスが行われた時に検出した 1 bit ECCエラーの検出回数を読み出すためのフィールドです。

RO

ECC Correct Data Discard Count Register (Offset: 0x0028)

ECC Correct Data Discard Count Registerは、エラー修復データの破棄回数を表示するカウンターレジスタです。 エラー修復データを破棄するたびに、本カウンターをインクリメントします。

カウンターが上限である 0xFFFFに達すると停止します。 このカウンターのクリアは、Error Count Clear Registerによって行います。

Table 82. ECC Correct Data Discard Count Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

ECDISCNT

ECC Correct Data Discard Counter

エラー修復データを破棄した回数を読み出すためのフィールドです。

RO

Error Count Clear Register (Offset: 0x002C)

Error Count Clear Registerは、1 Bit ECC Errorカウンター、ECC Correct Data Discardカウンターをクリアするためのレジスタです。

Table 83. Error Count Clear Register ビットフィールド
bit Symbol Field Description R/W

31:1

-

Reserved

Reserved

-

0

ECNTCLR

Error Count Clear

1 Bit ECC Errorカウンター、ECC Correct Data Discardカウンターをクリアするためのビットです。本ビットを 1にセットすると、1 Bit ECC Errorカウンター、ECC Correct Data Discardカウンターをクリアする事ができます。本ビットの 0の書き込みは何も影響しません。

WO

ECC Error Address Monitor Register (Offset: 0x0030)

ECC Error Address Monitor Registerは、ECC Errorを検出したアドレスを表示するためのレジスタです。

最後にECC Errorを検出したSRAMのアドレスが表示されます。 AHB/AXI Busからのリードアクセスが バス幅の 32 bitに対し Unalignedだった場合でも、32 bit境界のアドレスが表示されます。 また、AXI Busからの読み出しにおいて、ECC Errorを検出した場合、ミラーアドレスである 0x60xxxxxxではなく、メモリの実アドレスである 0x00xxxxxxのアドレスで表示されます。

Table 84. ECC Error Address Monitor Register ビットフィールド
bit Symbol Field Description R/W

31:22

-

Reserved

Reserved

-

21:0

ECCERRADR

ECC Error Address

1Bit ECC Errorを検出したアドレスを示します。

RO

Prefetch Mode Control Register (Offset: 0x0070)

Prefetch Mode Control Registerは、Prefetch機能を設定するためのレジスタです。

Prefetch機能が有効の場合は、PFMDCTLビットの設定により Prefetchの対象として設定されている要因のリードアクセスが発生すると SRAMから Prefetch Bufferにデータを先読みします。 Prefetch Bufferへのデータの先読みは、リードアクセスが発生したアドレスから 8 word境界までのデータを格納します。 Prefetchされたアドレス範囲に Prefetchの対象として設定されているリードアクセスがあった場合 SRAMへのデータアクセスは行わず Prefetch Bufferに格納されたデータを返す事でメモリアクセスのパフォーマンスを向上します。

Table 85. Prefetch Mode Control Register ビットフィールド
bit Symbol Field Description R/W

31:2

-

Reserved

Reserved

-

1:0

PFMDCTL

Prefetch Mode Control

Prefetch機能を設定します。 bit[0]: Instruction fetchにおける Prefetch機能の有効/無効設定. bit[1]: Dataアクセスにおける Prefetch機能の有効/無効設定. 1: 設定有効. 0: 設定無効

R/W

Special Prefetch Enable Register (Offset: 0x0074)

Special Prefetch Enable Registerは、特定のアドレスに対する Prefetch機能を設定するためのレジスタです。

Special Prefetch Enableビットの設定により、特定のアドレスの Prefetch機能が有効になっている場合、Prefetchの対象として設定されている要因のリードアクセスにより読み出されるアドレスが、Special Prefetch Address Setting Registerに設定されている ベースアドレスと一致した場合、そのアクセスを Prefetch対象と判定します。 Prefetch対象のアクセスが発生した場合、アクセスの発生したアドレスから 8 word境界までのデータを SRAMから Prefetch Bufferに先読みします。 Prefetchされたアドレス範囲にリードアクセスがあった場合 SRAMへのデータアクセスは行わず Prefetch Bufferに格納されたデータを返す事でメモリアクセスのパフォーマンスを向上します。

Special Pregetch Bufferに格納されたデータは、他のアドレスの リードアクセスにより更新される事は無く、指定されたアドレスの Prefetchデータを保持し続ける事ができます。 特定アドレスに対する Prefetch機能は 2つのベースアドレスを設定する事ができます。

CPUから頻繁に読み出されるアドレスがある場合、この機能を使用するとパフォーマンスを向上させる事ができます。 Prefetch Bufferに格納されているデータに書き込みを行うと、Prefetch Bufferのデータはフラッシュされてしまうため、書き込みが多く発生するアドレスに この機能を使用しても効果は少なくなってしまいます。

尚、Prefetch Mode Control Registerの PFMDCTLフィールドが 2’b00に設定されている場合、本レジスタの設定は無効となります。

Table 86. Special Prefetch Enable Register ビットフィールド
bit Symbol Field Description R/W

31:2

-

Reserved

Reserved

-

1:0

SPPFENB

Special Prefetch Enable

専用アドレスのPrefetch機能を設定します。 2b00: Special Prefetch未使用 2b01: Special Prefetch1のみ使用 2b10: Special Prefetch2のみ使用 2b11: Special Prefetch1/2双方使用

R/W

Special Prefetch Address Setting Register 1 (Offset: 0x0080)

Special Prefetch Address Setting Register 1は、Special Prefetch Buffer 1に Prefetchするアドレスを設定するためのレジスタです。

Special Prefetch Enable Registerの SPPFENB[0]ビットが 1に設定されている場合、本レジスタの設定が有効となります。

Table 87. Special Prefetch Address Setting Register 1 ビットフィールド
bit Symbol Field Description R/W

31:22

-

Reserved

Reserved

-

21:5

SPPFADR1

Special Prefetch Address 1

Special Prefetch Buffer 1に Prefetchするデータのベースアドレスを設定します。

R/W

4:0

-

Reserved

Reserved

-

Special Prefetch Address Setting Register 2 (Offset: 0x0084)

Special Prefetch Address Setting Register 2は、Special Prefetch Buffer 2に Prefetchするアドレスを設定するためのレジスタです。

Special Prefetch Enable Registerの SPPFENB[1]ビットが 1に設定されている場合、本レジスタの設定が有効となります。

Table 88. Special Prefetch Address Setting Register 2 ビットフィールド
bit Symbol Field Description R/W

31:22

-

Reserved

Reserved

-

21:5

SPPFADR2

Special Prefetch Address 2

Special Prefetch Buffer2にPrefetchするデータのベースアドレスを設定します。

R/W

4:0

-

Reserved

Reserved

-

HRMEM IP Version Register (Offset: 0xF000)

HRMEM IP Version Registerは、HRMEM IPコアのバージョン管理レジスタです。

Table 89. HRMEM IP Version Register ビットフィールド
bit Symbol Field Description R/W

31:24

HRMEMMAJVER

HRMEM IP Major Version

HRMEMコアのMajor Versionを示します。

RO

23:16

HRMEMMINVER

HRMEM IP Minor Version

HRMEMコアのMinor Versionを示します。

RO

15:0

HRMEMPATVER

HRMEM IP Patch Version

HRMEMコアのPatch Versionを示します。

RO

QSPI Controller

QSPI Controllerは、SC OBCモジュールに搭載するメモリとSPIプロトコルによる通信を行うためのモジュールです。 QSPI Controllerは、Single SPIモード, Dual SPIモード, Quad SPIモードに対応しており、メモリとの高速な通信を行う事ができます。

SC OBCモジュールには、FPGAの Configurationデータを格納するためのNOR Flashメモリ (Configuration Flash Memory)と、運用データを格納するための NOR Flashメモリ (Data Store Flash Memory)及び FRAMが搭載されています。 これに対し QSPI Controllerは 3個搭載されています。 また、各メモリは冗長化の目的で 2個ずつ搭載されています。

QSPI Controllerとメモリの構成を以下に示します。

qspi_controller_structure
Figure 12. QSPI Controllerと メモリの接続構成

SC OBCモジュールに実装される メモリの型番は以下の通りです。 各メモリの仕様については、ベンダーからリリースされている Datasheetを参照してください。

Memory 用途 Vendor Part Number SC OBC搭載数

Configuration Flash Memory

FPGA Configurationデータの格納

infineon (旧Cypress)

S25FL256L

2 個

Data Store Flash Memory

運用データの格納

infineon (旧Cypress)

S25FL256L

2 個

FRAM

運用データの格納

infineon (旧Cypress)

CY15B104QSN

2 個

QSPI Controllerは、各メモリにアクセスするため 3個搭載されています。 各コアは以下のアドレスに配置されています。

Table 90. QSPI Controller アドレスの割り当て
Target Base Address

Configuration Flash Memory

0x4000_0000

Data Store Memory

0x4010_0000

FRAM

0x4020_0000

レジスタ詳細

QSPI Controllerには以下のレジスタが実装されています。

Table 91. QSPI Controller Register メモリマップ
Offset Symbol Register Initial

0x0000

QSPI_ACR

QSPI Access Control Register

0x00000000

0x0004

QSPI_TDR

QSPI TX Data Register

0x00000000

0x0008

QSPI_RDR

QSPI RX Data Register

0x00000000

0x000C

QSPI_ASR

QSPI Access Status Register

0x00000000

0x0010

QSPI_FIFOSR

QSPI FIFO Status Register

0x00000000

0x0014

QSPI_FIFORR

QSPI FIFO Reset Register

0x00000000

0x0020

QSPI_ISR

QSPI Interrupt Status Register

0x00000000

0x0024

QSPI_IER

QSPI Interrupt Enable Register

0x00000000

0x0030

QSPI_CCR

QSPI Clock Control Register

0x00000000

0x0034

QSPI_DCMSR

QSPI Data Capture Mode Setting Register

0x00000000

0x0038

QSPI_FTLSR

QSPI FIFO Threshold Level Setting Register

0x00000000

0xF000

QSPI_VER

QSPI Controller IP Version Register

-

QSPI Access Control Register (Offset 0x0000)

QSPI Access Control Registerは、SPIアクセスにおける SS信号、I/Oモードを制御するためのレジスタです。

Data Store Memoryと FRAMの制御を行う QSPI Controllerは、2つのメモリへのアクセスの切り替えを SPISSCTLビットで行います。 メモリへのアクセスを開始するときは、SPISSCTLを 0b01または 0b10に設定し、アクセス対象の SS信号をアサートします。 SPISSCTLを 0b11に設定することは禁止です。

Configuration Flash Memoryを制御する QSPI Controllerは、SS信号が 1本しか接続されておらず、OBCモジュールの基板上でセレクトされています。 そのため、Configuration Flash Memoryへアクセスを行う場合は、アクセスするメモリに関わらず SPISSCTLを 0b01にセットします。 Configuration Flash Memoryのメモリ選択は、System Registerの Configuration Flash Memory Registerの設定により行うことができます。 詳細は、System Registerの「Configuration Flash Memory Register」の章を参照してください。

Table 92. QSPI Access Control Register ビットフィールド
bit Symbol Field Description R/W

31:18

-

Reserved

Reserved

-

17:16

SPIIOMODE

SPI I/O Mode

SPIアクセスにおけるI/Oモードを設定します。 2b00: Standard(Single)-IO SPIモード 2b01: Dual-IO SPIモード 2b10: Quad-IO SPIモード 2b11: 設定禁止

R/W

15:2

-

Reserved

Reserved

-

1:0

SPISSCTL

SPI CS Control

Chip Select信号の制御をするためのフィールドです。0b00: CS信号をネゲート 0b01: メモリ 1の CS信号をアサート 0b10: メモリ 2の CS信号をアサート 0b11: 禁止

R/W

QSPI TX Data Register (Offset 0x0004)

QSPI TX Data Registerは、SPIデバイスにデータを送信するためのレジスタです。

SPIデバイスへのデータ送信は TX FIFOを介し行います。

SPIデバイスにデータを送信する場合、QSPI TX Data Registerの SPITXDATAフィールドに書き込みを行います。 このレジスタにデータを書き込むと、書き込みデータは TX FIFOに格納されます。 TX FIFOは送信データを最大16 Byte格納できます。 TX FIFOに格納されたデータは、書き込まれた順番ですぐに SPIデバイスに送信されます。

SPIデバイスが要求するダミーサイクルは、このレジスタに書き込みを行うことによって、SPIクロックを出力させ生成します。

Table 93. QSPI TX Data Register ビットフィールド
bit Symbol Field Description R/W

31:8

-

Reserved

Reserved

-

7:0

SPITXDATA

SPI Tx Data

TX FIFOに格納する送信データを書き込みます。このレジスタに書き込んだデータはTX FIFOに格納され、書き込まれた順番ですぐに送信されます。

WO

QSPI RX Data Register (Offset 0x0008)

QSPI RX Data Registerは、SPIデバイスからのデータ受信制御と、RX FIFOからの受信データの読み出しを行うためのレジスタです。

SPIデバイスからのデータ受信は RX FIFOを介して行います。

SPIデバイスからデータを受信する場合、QSPI RX Data Registerの SPIRXDATAフィールドに書き込みアクセスを行います。 このレジスタに書き込む値は何も影響しません。 SPIRXDATAビットの書き込みが行われると、SPIデバイスに対し SPIクロックが送信され、SPIデバイスはそのクロックに同期しデータを出力します。 SPIデバイスの出力データは、RX FIFOに格納されます。 RX FIFOは 最大 16 Byteのデータを格納する事ができます。

RX FIFOに格納されたデータを読み出す場合、QSPI RX Data Registerの SPIRXDATAフィールドに読み出しアクセスを行います。 データは SPIデバイスから出力された順に読み出されます。

QSPI Data Capture Mode Setting Registerの DTCAPTビットが"1" にセットされている時、SPIRXDATAフィールドの書き込み時だけではなく、QSPI TX Data Registerの書き込み時も、RX FIFOにデータが格納されます。 この時 RX FIFOに格納されているデータは SPITXDATAに書き込んだデータ (SPIに出力されているデータ)となります。

Table 94. QSPI RX Data Register ビットフィールド
bit Symbol Field Description R/W

31:8

-

Reserved

Reserved

-

7:0

SPIRXDATA

SPI Rx Data

このレジスタへの書き込み時は、SPIクロックを送信しデバイスからのデータ受信を行います。このレジスタの読み出し時は、RX FIFOに格納されたデータが古い順に読み出されます。

R/W

QSPI Access Status Register (Offset 0x000C)

QSPI Access Status Registerは、QSPI Controllerの実行ステータスを確認するためのレジスタです。

QSPI Controllerは、QSPI TX Data Regsiterへの書き込み、QSPI Rx Data Registerへの書き込み、QSPI Access Control Registerの SPI SS Controlレジスタの書き込み時に Busy状態となり、SPIが未使用状態になると Idle状態に戻ります。

Table 95. QSPI Access Status Register ビットフィールド
bit Symbol Field Description R/W

31:1

-

Reserved

Reserved

-

0

SPIBUSY

SPI Status Busy

QSPI Controllerの実行ステータスを表示します。 0: Idle状態 1: Busy状態

RO

QSPI FIFO Status Register (Offset 0x0010)

QSPI FIFO Status Registerは、TX FIFO/RX FIFOの状態を示すレジスタです。

Table 96. QSPI FIFO Status Register ビットフィールド
bit Symbol Field Description R/W

31:21

-

Reserved

Reserved

-

20:16

TXFIFOCAP

TX FIFO Capacity

TX FIFOに格納されているデータ量を示すフィールドです。

RO

15:5

-

Reserved

Reserved

-

4:0

RXFIFOCAP

RX FIFO Capacity

RX FIFOに格納されているデータ量を示すフィールドです。

RO

QSPI FIFO Reset Register (Offset 0x0014)

QSPI FIFO Reset Registerは、TX FIFO/RX FIFOのリセット制御(データ消去)を行うためのレジスタです。 何らかの理由によりFIFOのクリアを行いたい場合にこのレジスタを使用します。

Table 97. QSPI FIFO Reset Register ビットフィールド
bit Symbol Field Description R/W

31:17

-

Reserved

Reserved

-

16

TXFIFORST

TX FIFO Reset

本ビットに1をセットすると、TX FIFOがクリアされデータが消去されます。

WO

15:1

-

Reserved

Reserved

-

0

RXFIFORST

RX FIFO Reset

本ビットに1をセットすると、RX FIFOがクリアされデータが消去されます。

WO

QSPI Interrupt Status Register (Offset: 0x0020)

QSPI Interrupt Status Registerは、QSPI Controllerの割り込みステータスレジスタです。 全ての割り込みビットは ”1"をセットするとクリアする事ができます。

Table 98. QSPI Interrupt Status Register ビットフィールド
bit Symbol Field Description R/W

31:27

-

Reserved

Reserved

-

26

TXFIFOUTH

TX FIFO Under Threshold

TX FIFOに格納されたデータが設定した閾値を下回った事を示すビットです。TX FIFOに格納されるデータ量が QSPI FIFO Threshold Level Setting Registerの TXFIFOUTHLフィールドよりも少なくなった場合に本ビットがセットされます。

R/WC

25

TXFIFOOVF

TX FIFO Overflow

TX FIFOの Overflowが発生したことを示すビットです。TX FIFOが Fullの状態で QSPI TX Data Registerに書き込みを行うと本ビットがセットされます。

R/WC

24

TXFIFOUDF

TX FIFO Underflow

TX FIFOの Underflowが発生したことを示すビットです。この割り込みは通常の状態で発生する事はありません。この割り込みが発生した場合は、本モジュールをリセットしてください。

R/WC

23:19

-

Reserved

Reserved

-

18

RXFIFOOTH

RX FIFO Over Threshold

RX FIFOに格納されたデータが設定した閾値を上回った事を示すビットです。RX FIFOに格納されるデータ量が QSPI FIFO Threshold Level Setting Registerの RXFIFOOTHLフィールドよりも多くなった場合に本ビットがセットされます。

R/WC

17

RXFIFOOVF

RX FIFO Overflow

RX FIFOの Overflowが発生したことを示すビットです。RX FIFOが Fullの状態でデータ受信を行うと本ビットがセットされます。

R/WC

16

RXFIFOUDF

RX FIFO Underflow

RX FIFOの Underflowが発生したことを示すビットです。RX FIFOが Emptyの状態で QSPI RX Data Registerの読み出しを行うと本ビットがセットされます。

R/WC

15:1

-

Reserved

Reserved

-

0

SPICTRLDN

SPI Control Done

SPI制御が完了した事を示すビットです。QSPI Controllerの実行ステータス(QSPI Access Status Register: SPI Status Busyビット)が BusyからIdleに変化した時、本ビットが 1にセットされます。

R/WC

QSPI Interrupt Enable Register (Offset: 0x0024)

QSPI Interrupt Enable Registerは、QSPI Controllerの割り込みイベントを割り込み信号に通知する設定を行うためのレジスタです。

Table 99. QSPI Interrupt Enable Register ビットフィールド
bit Symbol Field Description R/W

31:27

-

Reserved

Reserved

-

26

TXFIFOUTHEMB

TX FIFO Under Threshold Enable

TXFIFOUTHイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

25

TXFIFOOVFEMB

TX FIFO Overflow Enable

TXFIFOOVFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

24

TXFIFOUDFEMB

TX FIFO Underflow Enable

TXFIFOUDFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

23:19

-

Reserved

Reserved

-

18

RXFIFOOTHEMB

RX FIFO Over Threshold Enable

RXFIFOOTHイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

17

RXFIFOOVFEMB

RX FIFO Overflow Enable

RXFIFOOVFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

16

RXFIFOUDFEMB

RX FIFO Underflow Enable

RXFIFOUDFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

15:1

-

Reserved

Reserved

-

0

SPIBUSYDNEMB

SPI Status Busy Done Enable

SPIBUSYDNイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

QSPI Clock Control Register (Offset 0x0030)

QSPI Clock Control Registerは、SPIクロックの周波数、極性、位相設定を制御するためのレジスタです。

Table 100. QSPI Clock Control Register ビットフィールド
bit Symbol Field Description R/W

31:21

-

Reserved

Reserved

-

20

SCKPOL

SPI Clock Polarity

SPIクロックのクロック極性(CPOL)を設定します。0: Idle時のクロックを Low Levelとする 1: Idle時のクロックを High Levelとする

R/W

19:17

-

Reserved

Reserved

-

16

SCKPHA

SPI Clock Phase

SPIクロックのクロック位相(CPHA)を設定します。0: Data sampling: Rise Edge / Data Shift: Fall Edge 1: Data sampling: Fall Edge / Data Shift: Rise Edge

R/W

15:12

-

Reserved

Reserved

-

11:0

SCKDIV

SPI Clock Divide

システムクロックに対するSPIクロックの分周数を設定します。本フィールドに0(最小値)をセットした場合、SPI Clockはシステムクロックを2分周した周波数で動作します。

R/W

SPIクロックの周波数(fSCLK)は、システムクロック(fSYS)と SCKDIVの設定により以下のように計算されます。

\[fSCLK[MHz] = \frac{fSYS[MHz]}{2(SCKDIV+1)}\]

QSPI Data Capture Mode Setting Register (Offset 0x0034)

QSPI Data Capture Mode Setting Registerは、RX FIFOにデータを取り込む条件を設定するためのレジスタです。 このレジスタをセットすることで、QSPI RX Data Registerへの書き込みアクセスを行った時だけではなく、QSPI TX Data Registerへの書き込みを行った時もデータの取り込みを行う事ができます。 これにより SPIデバイスへの「送信フェーズ」「ダミーフェーズ」を含めた全てのフェーズのデータを取り込むことができます。

Table 101. QSPI Data Capture Mode Setting Register ビットフィールド
bit Symbol Field Description R/W

31:1

-

Reserved

Reserved

-

0

DTCAPT

Data Capture

RX FIFOにデータを取り込む条件を設定します。0: QSPI RX Data Registerの書き込み時のみ 1: QSPI TX Data Registerと QSPI RX Data Registerの両方の書き込み時

R/W

QSPI FIFO Threshold Level Setting Register (Offset 0x0038)

QSPI FIFO Threshold Level Setting Registerは、TX FIFO/RX FIFOのデータ量に応じた割り込み出力を行うための設定レジスタです。

Table 102. QSPI FIFO Threshold Level Setting Register ビットフィールド
bit Symbol Field Description R/W

31:21

-

Reserved

Reserved

-

20:16

TXFIFOUTHL

TX FIFO Under Threshold Level

TXFIFOUTH割り込みを発生させる TX FIFOのデータ格納量の閾値を設定するためのフィールドです。本フィールドに 0または最大値を設定した場合 TXFIFOUTHは無効となり、割り込みは発生しません。

R/W

15:5

-

Reserved

Reserved

-

4:0

RXFIFOOTHL

RX FIFO Over Threshold Level

RXFIFOOTH割り込みを発生させる RX FIFOのデータ格納料の閾値を設定するためのフィールドです。本フィールドに 0または最大値を設定した場合 RXFIFOOTHは無効となり、割り込みは発生しません。

R/W

QSPI Controller IP Version Register (Offset: 0xF000)

QSPI Controller IPコアバージョンの管理レジスタです。

Table 103. QSPI Controller IP Version Register ビットフィールド
bit Symbol Field Description R/W

31:24

MAJVER

QSPI Controller IP Major Version

QSPI ControllerコアのMajor Versionです。

RO

23:16

MINVER

QSPI Controller IP Minor Version

QSPI ControllerコアのMinor Versionです。

RO

15:0

PATVER

QSPI Controller IP Patch Version

QSPI ControllerコアのPatch Versionです。

RO

QSPIアクセス手順

この章では、Infineon製Flash Memory 「S25FL256L」を例に、QSPI Controllerによる Flashメモリの書き込み, 読み出しを行うための手順を説明します。

データ書き込み操作手順例

本章では、Quad Page ProgramコマンドによるFlash Memoryへのデータ書き込みの手順を説明します。 CPOL=0、CPHA=0に設定した時のSPI Interface波形と手順を以下に示します。

quad_page_program_acc_seq
Figure 13. Quad Page Program アクセス波形

以下の手順は、メモリ 1にアクセスする場合のレジスタ設定例を示しています。 Configuration Flash Memoryを除き、メモリ 2にアクセスする場合は、QSPI Access Control Registerの SPISSCTLを 0x01から 0x02に置き換えて下さい。

A

QSPI Access Control Registerを設定します。 SPI I/O Modeは Standard(Single)-IO SPIモード、SPI SS Controlは"1"とするため、0x00000001を書き込みます。 書き込み後、SPI_CS信号がアクティブ状態(Low level)に変化します。

B

QSPI TX Data Registerに 1 ByteのInstruction(Quad Page Program: 0x32)と 3 Byteの Addressを書き込みます。 QSPI TX Data Registerに書き込まれたデータからSPIデバイスに順次送信されます。

C

Bで書き込んだ全てのデータの送信完了後に、QSPI Access Control Registerに0x00020001を書き込み、SPI I/O ModeをQuad-IO SPIモードに変更します。

D

Flash MemoryへのWriteデータをQSPI TX Data Registerに書き込み、データ送信を行います。TX FIFOは送信するデータを最大16Byteまで格納することができます。 TX FIFOの容量を超えるサイズのデータを送信する場合は、TX FIFOが OverflowしないようQSPI TX Data Registerへの書き込み間隔を調整する必要があります。 TX_FIFOのデータ格納量のステータスは、QSPI FIFO Status RegisterやTX_FIFO関連の割り込み要因により確認することができます。

E

Dで書き込んだ全てのデータの送信完了後に、QSPI Access Control Registerに0x0000_0000を書き込みSPICS信号をインアクティブ状態(High level)に変化させ、SPIアクセスを終了します。

CからD時の遷移を除いた全てのフェーズの切り替わりには、QSPI Controllerの実行ステータスを確認し、必ずIdle状態となってから次の操作を実行する必要があります。 実行ステータスの確認方法は以下の2通りがあります。

  • QSPI Access Status Registerの監視

  • SPICTRLDN割り込みの検出

QSPI Controllerの実行ステータスがBusyの状態で次の操作が実行された場合、SPIアクセスは不適切なフォーマットで転送される可能性があります。

データ読み出し操作手順例

本章では、Quad I/O ReadコマンドによるFlash Memoryからのデータ読み出しの手順を説明します。 CPOL=0、CPHA=0に設定した時のSPI Interfaceの波形と手順を以下に示します。

quad_io_read_acc_seq
Figure 14. Quad I/O Read アクセス波形

以下の手順は、メモリ 1にアクセスする場合のレジスタ設定例を示しています。 Configuration Flash Memoryを除き、メモリ 2にアクセスする場合は、QSPI Access Control Registerの SPISSCTLを 0x01から 0x02に置き換えて下さい。

A

QSPI Access Control Registerを設定します。 SPI I/O ModeはStandard(Single)-IO SPIモード、SPI SS Controlは1とするため、0x00000001を書き込みます。 書き込み後、SPI_CS信号がアクティブ状態 (Low level)に変化します。

B

QSPI TX Data Registerに 1 ByteのInstruction(Quad I/O Read:0xEB)を書き込みます。

C

Bで書き込んだデータの送信完了後に、QSPI Access Control Registerに0x00020001を書き込み、SPI I/O ModeをQuad-IO SPIモードに変更します。

D

QSPI TX Data Registerに 3 Byteの Address、1 Byteの Modeを 1 Byte単位で書き込み、TX FIFOに格納します。 QSPI TX Data Registerに書き込まれたデータからSPIデバイスに順次送信されます。 続けて、QSPI RX Data Registerに 4 Byte分の書き込みを行います。 この操作を行うことで、8 Cycleのダミーサイクル区間で IO信号を入力モードにして SPIクロックを駆動します。

E

QSPI RX Data Registerの読み出しを 4 Byte分行い、ダミーサイクル区間に RX FIFOに格納されたデータの読み出しを行います。 ダミーサイクル区間に格納されたデータは全て無効なデータであるため破棄してください。 4 Byte分全ての無効データの読み出しを行った後に、 QSPI RX Data Registerに書き込みを行い Flash Memoryからの Readデータを RX FIFOに格納します。 受信データはQSPI RX Data Registerを読み出すことにより受信順に取得されます。 RX FIFOは受信したデータを最大16Byteまで格納できます。 RX FIFOの容量を超えるサイズのデータを受信する場合は、RX FIFOが OverflowしないようQSPI TX Data Registerの書き込みと読み出しの順序を考慮する必要があります。 RX_FIFOのデータ格納量のステータスは、QSPI FIFO Status RegisterやRX_FIFO関連の割り込み要因により確認することができます。

F

Eで受信した全てのデータ読み出しの完了後に、QSPI Access Control Registerに0x00000000を書き込みSPI_CS信号をインアクティブ状態 (High level)に変化させ、SPIアクセスを終了します。

Data Write Operation時と同様、CからD時を除いた全てのフェーズの切り替わり時には、QSPI Controllerの実行ステータスを確認し、必ずIdle状態となってから次の操作を実行する必要があります。

CAN Controller

CAN Controllerは、 ISO 11898-1, CAN2.0A および CAN2.0Bに準拠した CAN通信 IPコアです。 1 Mbpsのビットレートをサポートしています。

レジスタ詳細

CAN Controllerは、Base Address 0x4040_0000に配置されています。

Table 104. CAN Controller Register メモリマップ
Offset Symbol Register Initial

0x0000

CAN_ENR

CAN Enable Register

0x00000000

0x0008

CAN_TQPR

CAN Time Quantum Prescaler Register

0x00000000

0x000C

CAN_BTSR

CAN Bit Timing Setting Register

0x00000000

0x0010

CAN_ECNTR

CAN Error Count Register

0x00000000

0x0018

CAN_STSR

CAN Status Register

0x00000000

0x0020

CAN_ISR

CAN Interrupt Status Register

0x00000000

0x0024

CAN_IER

CAN Interrupt Enable Register

0x00000000

0x0030

CAN_TMR1

CAN TX Message Register1

0x00000000

0x0034

CAN_TMR2

CAN TX Message Register2

0x00000000

0x0038

CAN_TMR3

CAN TX Message Register3

0x00000000

0x003C

CAN_TMR4

CAN TX Message Register4

0x00000000

0x0040

CAN_THPMR1

CAN TX High Priority Message Register1

0x00000000

0x0044

CAN_THPMR2

CAN TX High Priority Message Register2

0x00000000

0x0048

CAN_THPMR3

CAN TX High Priority Message Register3

0x00000000

0x004C

CAN_THPMR4

CAN TX High Priority Message Register4

0x00000000

0x0050

CAN_RMR1

CAN RX Message Register1

0x00000000

0x0054

CAN_RMR2

CAN RX Message Register2

0x00000000

0x0058

CAN_RMR3

CAN RX Message Register3

0x00000000

0x005C

CAN_RMR4

CAN RX Message Register4

0x00000000

0x0060

CAN_AFER

CAN Acceptance Filter Enable Register

0x00000000

0x0070

CAN_AFIMR1

CAN Acceptance Filter ID Mask Register1

0x00000000

0x0074

CAN_AFIVR1

CAN Acceptance Filter ID Value Register1

0x00000000

0x0090

CAN_AFIMR2

CAN Acceptance Filter ID Mask Register2

0x00000000

0x0094

CAN_AFIVR2

CAN Acceptance Filter ID Value Register2

0x00000000

0x00B0

CAN_AFIMR3

CAN Acceptance Filter ID Mask Register3

0x00000000

0x00B4

CAN_AFIVR3

CAN Acceptance Filter ID Value Register3

0x00000000

0x00D0

CAN_AFIMR4

CAN Acceptance Filter ID Mask Register4

0x00000000

0x00D4

CAN_AFIVR4

CAN Acceptance Filter ID Value Register4

0x00000000

0x00F0

CAN_FIFORR

CAN FIFO and Buffer Reset Register

0x00000000

0x0100

CAN_STMCR

CAN Self Test Mode Control Register

0x00000000

0x0200

CAN_PSLMCR

CAN PHY Sleep Mode Control Register

0x00000000

0xF000

CAN_VER

CAN Controller IP Version Register

-

CAN Enable Register (Offset 0x0000)

CAN Enable Registerは、CAN通信におけるEnable設定を行うレジスタです。

CAN_ENが Disableの時、CAN Controllerは CANバスに Recessive (High level)を出力し、メッセージの送受信を行いません。 CAN_ENが Enableになると、CANバス上に連続する 11bitの Recessiveを 1回検出した後にエラーアクティブ状態となり、メッセージの送受信が可能となります。

Table 105. CAN Enable Register ビットフィールド
bit Symbol Field Description R/W

31:1

-

Reserved

Reserved

-

0

CAN_EN

CAN Enable

CAN通信のEnableを設定します。0: Disable 1: Enable

R/W

CAN Time Quantum Prescaler Register (Offset 0x0008)

CAN Time Quantum Prescaler Registerは、Time Quantum Clock周期の設定を行うレジスタです。 このレジスタは、CAN Enable Registerの CAN_ENビットが "0"の時のみ書き込みが可能です。

Table 106. CAN Time Quantum Prescaler Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

CAN_TQPSET

Time Quantum Cycle

Time Quantum Clockの時間(Tq)を設定します。この設定は、CANクロックのサイクル数を設定します。CANクロックは システムクロックの周波数によらず、常に 24 MHzです。

R/W

Time Quantum Clock(Tq)に設定する値は、次の式で計算できます。

\[Tq[s] = CANクロック\ period[s] \times \left(CAN\_TQPSET+1\right)\]

CAN Bit Timing Setting Register (Offset 0x000C)

CAN Bit Timing Setting Registerは、サンプリングや同期制御に必要なビット時間の設定を行うレジスタです。 このレジスタは、CAN Enable Registerの CAN_ENビットが "0"の時のみ書き込みが可能です。

Table 107. CAN Bit Timing Setting Register ビットフィールド
bit Symbol Field Description R/W

31:9

-

Reserved

Reserved

-

8:7

CAN_SJW

Synchronization Jump Width

同期ジャンプ幅の最大時間(Tsjw)を設定します。このフィールドには、Tqのサイクル数を設定します。

R/W

6:4

CAN_TS2

Time Segment 2

Phase Segment2の時間(Tts2)を設定します。このフィールドには、Tqのサイクル数を設定します。

R/W

3:0

CAN_TS1

Time Segment 1

Phase Segment1の時間(Tts1)を設定します。このフィールドには、Tqのサイクル数を設定します。

R/W

Phase Segment1(Tts1)、Phase Segment2(Tts2)、同期ジャンプ幅(Tsjw)に設定する値は、次の式で計算できます。

\[Tts1[s] = Tq[s] \times \left(CAN\_TS1+1\right)\]
\[Tts2[s] = Tq[s] \times \left(CAN\_TS2+1\right)\]
\[Tsjw[s] = Tq[s] \times \left(CAN\_SJW+1\right)\]

CAN Error Count Register (Offset: 0x0010)

CAN Error Count Registerは、CAN通信におけるエラーの検出回数を表示するレジスタです。 エラー検出時に、カウンターをエラー要因に応じ決められた数のインクリメントを行います。

Transmit Error Counter 及び Receive Error Counterは、以下の条件でリセットされます。

  • CAN Enable Registerの CAN_ENビットに "0"が書き込まれた時

  • CAN Controllerが Bus OFF状態になってから 11Bitの Recessiveビットを 128回検出した時

Table 108. CAN Error Count Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:8

CAN_RXECNT

Receive Error Counter

受信エラーをカウントする 8bitのカウンタです。

RO

7:0

CAN_TXECNT

Transmit Error Counter

送信エラーをカウントする 8bitのカウンタです。

RO

CAN Status Register (Offset: 0x0018)

CAN Status Registerは、CAN Controllerのステータスを表示するレジスタです。

Table 109. CAN Status Register ビットフィールド
bit Symbol Field Description R/W

31:8

-

Reserved

Reserved

-

7

CAN_RXFFL

RX FIFO Full

RX FIFOの Full状態を示すビットです。0: RX FIFOは Not Full状態 1: RX FIFOは Full状態

RO

6

CAN_TXFFL

TX FIFO Full

TX FIFOの Full状態を示すビットです。0: TX FIFOは Not Full状態 1: TX FIFOが Full状態

RO

5

CAN_TXHBFL

TX High Priority Buffer Full

TX High Priority Bufferの Full状態を示すビットです。0: TX High Priority Bufferは Not Full状態 1: TX High Priority BufferはFull状態

RO

4

CAN_TXFNEP

TX FIFO Not Empty

TX FIFOの Empty状態を示すビットです。0: TX FIFOは Empty状態 1: TX FIFOは Not Empty状態

RO

3:2

CAN_ESTS

Error Status

Errorステータスを示すビットです。0b00: CAN_EN Disable 0b01: Error Active状態 0b10: Error Passive状態 0b11: Bus OFF状態

RO

1

CAN_EWRN

Error Warning

Error Warningステータスを示すビットです。Transmit Error Counterまたは Receive Error Counterが 96以上の値を示すとき、Error Warning状態と認識します。0: 非Error Warning状態 1: Error Warning状態

RO

0

CAN_BBUSY

Bus Busy

CANバスのステータスを示すビットです。0: Bus Idle状態 または CAN_ENが Disable状態 1: Bus Busy状態 (CANバスの通信が行われている状態)

RO

CAN Interrupt Status Register (Offset: 0x0020)

CAN Interrupt Status Registerは、CAN Controllerの動作における割り込みステータスレジスタです。 それぞれのビットは 1をセットすると、該当の割り込みをクリアする事ができます。

Table 110. CAN Interrupt Status Register ビットフィールド
bit Symbol Field Description R/W

31:14

-

Reserved

Reserved

-

13

CAN_BUSOFF

Bus Off

Bus Offが発生したことを示すビットです。送信エラーカウント値が 255を超える状態を検出した場合に本ビットが "1"にセットされます。

R/WC

12

CAN_ACKER

ACK Error

ACK Errorが発生したことを示すビットです。データフレーム、リモートフレームの送信中に ACK Slotビットで Recessive ("1")を検出した場合に本ビットが "1"にセットされます。

R/WC

11

CAN_BITER

BIT Error

BIT Errorが発生したことを示すビットです。送信中の値と異なる受信値を検出した場合に本ビットが "1"にセットされます。

R/WC

10

CAN_STFER

Stuff Error

Stuff Errorが発生したことを示すビットです。受信中に CANバス上で同一の値を連続 6回検出した場合に本ビットが "1"にセットされます。

R/WC

9

CAN_FMER

Form Error

Form Errorが発生したことを示すビットです。受信中フレームの固定フィールド内で異なる Formatを検出した場合に本ビットが "1"にセットされます。

R/WC

8

CAN_CRCER

CRC Error

CRC Errorが発生したことを示すビットです。受信したデータフレーム、リモートフレームの CRC値の期待不一致を検出した場合に本ビットが "1"にセットされます。

R/WC

7

CAN_RXFOVF

RX FIFO Overflow

RX FIFOの Overflowが発生したことを示すビットです。RX FIFO容量を超えるメッセージを受信した場合に本ビットが "1"にセットされます。

R/WC

6

CAN_RXFUDF

RX FIFO Underflow

RX FIFOの Underflowが発生したことを示すビットです。RX FIFOが Empty状態の時に、CAN RX Message Registerから読み出しを行った場合に本ビットが "1"にセットされます。

R/WC

5

CAN_RXFVAL

RX FIFO Data Valid

RX FIFOにデータが格納されていることを示すビットです。RX FIFOが Not Empty状態となった場合に本ビットが "1"にセットされます。本ビットはクリアしても RX FIFOが Empty状態になるまで、セットされます。RX FIFOに複数のメッセージが格納されている場合、CAN RX Message Registerを読み出した時に、このビットがセットされます。

R/WC

4

CAN_RCVDN

CAN Message Receive Done

新しいメッセージを受信した事を示すビットです。データフレームまたはリモートフレームを正常に受信し、RX FIFOへの受信メッセージの格納が完了した時、本ビットが "1"にセットされます。

R/WC

3

CAN_TXFOVF

TX FIFO Overflow

TX FIFOの Overflowが発生したことを示すビットです。TX FIFO容量を超えるメッセージを CAN TX Message Registerにメッセージを書き込んだ場合、本ビットが "1"にセットされます。

R/WC

2

CAN_TXHBOVF

TX High Priority Buffer Overflow

TX High Priority Bufferの Overflowが発生したことを示すビットです。TX High Priority Bufferにメッセージが格納されている状態で CAN TX High Priority Message Registerにメッセージを書き込んだ場合、本ビットが "1"にセットされます。

R/WC

1

CAN_ARBLST

CAN Arbitration Lost

送信メッセージの Arbitration Lostが発生した事を示すビットです。データフレーム、リモートフレームの送信中に他ノードとの送信競合が発生し、調停制御により送信を停止した時、本ビットが "1"にセットされます。

R/WC

0

CAN_TRNSDN

CAN Message Transmit Done

メッセージを送信した事を示すビットです。データフレームまたはリモートフレームの送信が正常に完了した時、本ビットが "1"にセットされます。

R/WC

CAN Interrupt Enable Register (Offset: 0x0024)

CAN Interrupt Enable Registerは、CAN Controllerの動作において発生した割り込みイベントを割り込み出力信号に通知するか設定するためのレジスタです。

Table 111. CAN Interrupt Enable Register ビットフィールド
bit Symbol Field Description R/W

31:14

-

Reserved

Reserved

-

13

CAN_BUSOFFENB

Bus Off Enable

CAN Controllerの動作においてCAN_BUSOFFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

12

CAN_ACKERENB

ACK Error Enable

CAN Controllerの動作においてCAN_ACKERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

11

CAN_BITERENB

BIT Error Enable

CAN Controllerの動作においてCAN_BITERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

10

CAN_STFERENB

Stuff Error Enable

CAN Controllerの動作においてCAN_STFERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

9

CAN_FMERENB

Form Error Enable

CAN Controllerの動作においてCAN_FMERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

8

CAN_CRCERENB

CRC Error Enable

CAN Controllerの動作においてCAN_CRCERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

7

CAN_RXFOVFENB

RX FIFO Overflow Enable

CAN Controllerの動作においてCAN_RXFOVFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

6

CAN_RXFUDFENB

RX FIFO Underflow Enable

CAN Controllerの動作においてCAN_RXFUDFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

5

CAN_RXFVALENB

RX FIFO Data Valid Enable

CAN Controllerの動作においてCAN_RXFVALイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

4

CAN_RCVDNENB

CAN Message Receive Done Enable

CAN Controllerの動作においてCAN_RCVDNイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

3

CAN_TXFOVFENB

TX FIFO Overflow Enable

CAN Controllerの動作においてCAN_TXFOVFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

2

CAN_TXHBOVFENB

TX High Priority Buffer Overflow Enable

CAN Controllerの動作においてCAN_TXHBOVFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

1

CAN_ARBLSTENB

CAN Arbitration Lost Enable

CAN Controllerの動作においてCAN_ARBLSTイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

0

CAN_TRNSDNENB

CAN Message Transmit Done Enable

CAN Controllerの動作においてCAN_TRNSDNイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

CAN TX Message Register 1 (Offset 0x0030)

CAN TX Message Register 1は、送信する CANフレームのメッセージ識別子 (IDR)を TX FIFOに書き込むためのレジスタです。

Table 112. CAN TX Message Register 1 ビットフィールド
bit Symbol Field Description R/W

31:21

CAN_TXID1

TX Standard Message ID

ID[28:18]を TX FIFOに書き込むためのフィールドです。標準フレーム、拡張フレームの両方の送信時に使用されます。

WO

20

CAN_TXSRTR

TX Standard Remote Transmission Request

RTR、SRRビットを TX FIFOに書き込むためのビットです。標準フレーム、拡張フレームの両方の送信時に使用されます。- RTR(標準フレーム): 0: データフレーム 1: リモートフレーム - SRR(拡張フレーム): 1に設定する必要があります。

WO

19

CAN_TXIDE

TX Identifier Extension

IDEビットを TX FIFOに書き込むためのビットです。標準フレーム、拡張フレームの両方の送信時に使用されます。0: 標準フレーム 1: 拡張フレーム

WO

18:1

CAN_TXID2

TX Extended Message ID

ID[17:0]を TX FIFOに書き込むためのフィールドです。拡張フレーム送信時のみ使用されます。CAN_TXIDEビットを "0"に設定した場合、このフィールドに書き込んだデータは使用されません。

WO

0

CAN_TXERTR

TX Extended Remote Transmission Request

拡張フレーム送信でのみ使用されるRTRビット値を設定します。0: データフレーム 1: リモートフレーム CAN_TXIDEビットを0に設定した場合は、このビットの書き込み値は使用されません。

WO

CAN TX Message Register 2 (Offset 0x0034)

CAN TX Message Register 2は、送信する CANフレームのデータ長コード (DLC)を TX FIFOに書き込むためのレジスタです。

Table 113. CAN TX Message Register 2 ビットフィールド
bit Symbol Field Description R/W

31:4

-

Reserved

Reserved

-

3:0

CAN_TXDLC

TX Data Length Code

DCL[3:0]を TX FIFOに書き込むためのフィールドです。標準フレーム、拡張フレームの両方の送信時に使用されます。このフィールドには データフレームの送信 Byte数や リモートフレームの送信時に要求するデータの Byte数を設定します。設定可能な値は 0〜8です。

WO

CAN TX Message Register 3 (Offset 0x0038)

CAN TX Message Register 3は、CANのデータフレームを送信する場合において、データフィールドの Byte 0から Byte 3 (Data Word 1)を書き込むためのレジスタです。 データフレームを送信しない場合でも、このレジスタは書き込みを行う必要があります。 データフレームを送信しない場合は、この値に書き込む値は無効であるため、どんな値を書き込んでも構いません。

Table 114. CAN TX Message Register 3 ビットフィールド
bit Symbol Field Description R/W

31:24

CAN_TXDB0

TX Data Byte 0

データフィールドの Byte 0を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 1以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。

WO

23:16

CAN_TXDB1

TX Data Byte 1

データフィールドの Byte 1を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 2以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。

WO

15:8

CAN_TXDB2

TX Data Byte 2

データフィールドの Byte 2を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 3以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。

WO

7:0

CAN_TXDB3

TX Data Byte 3

データフィールドの Byte 3を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 4以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。

WO

CAN TX Message Register 4 (Offset 0x003C)

CAN TX Message Register 4は、CANのデータフレームを送信する場合において、データフィールドの Byte 4から Byte 7 (Data Word 2)を書き込むためのレジスタです。 データフレームを送信しない場合でも、このレジスタは書き込みを行う必要があります。 データフレームを送信しない場合は、この値に書き込む値は無効であるため、どんな値を書き込んでも構いません。

Table 115. CAN TX Message Register 4 ビットフィールド
bit Symbol Field Description R/W

31:24

CAN_TXDB4

TX Data Byte 4

データフィールドの Byte 4を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 5以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。

WO

23:16

CAN_TXDB5

TX Data Byte 5

データフィールドの Byte 5を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 6以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。

WO

15:8

CAN_TXDB6

TX Data Byte 6

データフィールドの Byte 6を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 7以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。

WO

7:0

CAN_TXDB7

TX Data Byte 7

データフィールドの Byte 7を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 8以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。

WO

CAN TX High Priority Message Register 1 (Offset 0x0040)

CAN TX High Priority Message Register 1は、高優先で送信する CANフレームのメッセージ識別子 (IDR)を TX FIFOに書き込むためのレジスタです。

CAN TX High Priority Message Register 1、2、3、4にデータを書き込むと、TX FIFOに格納されているデータの有無に関わらず、優先して CAN TX High Priority Message Registerに書き込まれたデータが CANフレームとして送信されます。 このRegisterの仕様は CAN TX Message Register 1と同じです。

Table 116. CAN TX High Priority Message Register 1 ビットフィールド
bit Symbol Field Description R/W

31:21

CAN_TXHPID1

TX High Priority Standard Message ID

ID[28:18]を TX FIFOに書き込むためのフィールドです。標準フレーム、拡張フレームの両方の送信時に使用されます。

WO

20

CAN_TXHPSRTR

TX High Priority Standard Remote Transmission Request

RTR、SRRビットを TX FIFOに書き込むためのビットです。標準フレーム、拡張フレームの両方の送信時に使用されます。- RTR(標準フレーム): 0: データフレーム 1: リモートフレーム - SRR(拡張フレーム): 1に設定する必要があります。

WO

19

CAN_TXHPIDE

TX High Priority Identifier Extension

IDEビットを TX FIFOに書き込むためのビットです。標準フレーム、拡張フレームの両方の送信時に使用されます。0: 標準フレーム 1: 拡張フレーム

WO

18:1

CAN_TXHPID2

TX High Priority Extended Message ID

ID[17:0]を TX FIFOに書き込むためのフィールドです。拡張フレーム送信時のみ使用されます。CAN_TXIDEビットを "0"に設定した場合、このフィールドに書き込んだデータは使用されません。

WO

0

CAN_TXHPERTR

TX High Priority Extended Remote Transmission Request

拡張フレーム送信でのみ使用されるRTRビット値を設定します。0: データフレーム 1: リモートフレーム CAN_TXIDEビットを0に設定した場合は、このビットの書き込み値は使用されません。

WO

CAN TX High Priority Message Register 2 (Offset 0x0044)

CAN TX High Priority Message Register 2は、高優先で送信する CANフレームのデータ長コード (DLC)を TX FIFOに書き込むためのレジスタです。

CAN TX High Priority Message Register 1、2、3、4にデータを書き込むと、TX FIFOに格納されているデータの有無に関わらず、優先して CAN TX High Priority Message Registerに書き込まれたデータが CANフレームとして送信されます。 このRegisterの仕様は CAN TX Message Register 2と同じです。

Table 117. CAN TX High Priority Message Register 2 ビットフィールド
bit Symbol Field Description R/W

31:4

-

Reserved

Reserved

-

3:0

CAN_TXHPDLC

TX High Priority Data Length Code

DCL[3:0]を TX FIFOに書き込むためのフィールドです。標準フレーム、拡張フレームの両方の送信時に使用されます。このフィールドには データフレームの送信 Byte数や リモートフレームの送信時に要求するデータの Byte数を設定します。設定可能な値は 0〜8です。

WO

CAN TX High Priority Message Register 3 (Offset 0x0048)

CAN TX High Priority Message Register 3は、CANのデータフレームを送信する場合において、データフィールドの Byte 0から Byte 3 (Data Word 1)を書き込むためのレジスタです。

データフレームを送信しない場合でも、このレジスタは書き込みを行う必要があります。 データフレームを送信しない場合は、この値に書き込む値は無効であるため、どんな値を書き込んでも構いません。

CAN TX High Priority Message Register 1、2、3、4にデータを書き込むと、TX FIFOに格納されているデータの有無に関わらず、優先して CAN TX High Priority Message Registerに書き込まれたデータが CANフレームとして送信されます。 このRegisterの仕様は CAN TX Message Register 3と同じです。

Table 118. CAN TX High Priority Message Register 3 ビットフィールド
bit Symbol Field Description R/W

31:24

CAN_TXHPDB0

TX High Priority Data Byte 0

データフィールドの Byte 0を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 1以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。

WO

23:16

CAN_TXHPDB1

TX High Priority Data Byte 1

データフィールドの Byte 1を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 2以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。

WO

15:8

CAN_TXHPDB2

TX High Priority Data Byte 2

データフィールドの Byte 2を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 3以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。

WO

7:0

CAN_TXHPDB3

TX High Priority Data Byte 3

データフィールドの Byte 3を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 4以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。

WO

CAN TX High Priority Message Register 4 (Offset 0x004C)

CAN TX High Priority Message Register 4は、CANのデータフレームを送信する場合において、データフィールドの Byte 4から Byte 7 (Data Word 2)を書き込むためのレジスタです。

データフレームを送信しない場合でも、このレジスタは書き込みを行う必要があります。 データフレームを送信しない場合は、この値に書き込む値は無効であるため、どんな値を書き込んでも構いません。

CAN TX High Priority Message Register 1、2、3、4にデータを書き込むと、TX FIFOに格納されているデータの有無に関わらず、優先して CAN TX High Priority Message Registerに書き込まれたデータが CANフレームとして送信されます。 このRegisterの仕様は CAN TX Message Register 4と同じです。

Table 119. CAN TX High Priority Message Register4 ビットフィールド
bit Symbol Field Description R/W

31:24

CAN_TXHPDB4

TX High Priority Data Byte 4

データフィールドの Byte 4を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 5以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。

WO

23:16

CAN_TXHPDB5

TX High Priority Data Byte 5

データフィールドの Byte 5を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 6以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。

WO

15:8

CAN_TXHPDB6

TX High Priority Data Byte 6

データフィールドの Byte 6を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 7以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。

WO

7:0

CAN_TXHPDB7

TX High Priority Data Byte 7

データフィールドの Byte 7を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 8以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。

WO

CAN RX Message Register 1 (Offset 0x0050)

CAN RX Message Register 1は、受信した CANフレームのメッセージ識別子 (IDR)を RX FIFOから読み出すためのレジスタです。

Table 120. CAN RX Message Register1 ビットフィールド
bit Symbol Field Description R/W

31:21

CAN_RXID1

RX Standard Message ID

受信した標準フレーム または、拡張フレームの ID[28:18]フィールドを RX FIFOから読み出すためのフィールドです。

RO

20

CAN_RXSRTR

RX Standard Remote Transmission Request

受信した標準フレームの RTRビット または、拡張フレームの SRRビットを RX FIFOから読み出すためのビットです。- 標準フレーム 0: データフレーム 1: リモートフレーム - 拡張フレーム: 1が読み出されます

RO

19

CAN_RXIDE

RX Identifier Extension

受信した標準フレーム または、拡張フレームの IDEビットを RX FIFOから読み出すためのビットです。0: 標準フレーム 1: 拡張フレーム

RO

18:1

CAN_RXID2

RX Extended Message ID

受信した拡張フレームの ID[17:0]フィールドを RX FIFOから読み出すためのフィールドです。標準フレームの場合は、0が読み出されます。

RO

0

CAN_RXERTR

RX Extended Remote Transmission Request

受信した拡張フレームの RTRビットを RX FIFOから読み出すためのビットです。0: データフレーム 1: リモートフレーム 標準フレームの場合は、0が読み出されます。

RO

CAN RX Message Register 2 (Offset 0x0054)

CAN RX Message Register 2は、受信した CANフレームの受信データ長コード (DLC)を RX FIFOから読み出すためのレジスタです。

Table 121. CAN RX Message Register 2 ビットフィールド
bit Symbol Field Description R/W

31:4

-

Reserved

Reserved

-

3:0

CAN_RXDLC

RX Data Length Code

受信した標準フレーム または、拡張フレームの DLC[3:0]フィールドを RX FIFOから読み出すためのフィールドです。このフィールドから読み出される値は、リモートフレームの受信時を除き CAN RX Message Register 3、4に格納されたデータの有効 Byte数を示します。

RO

CAN RX Message Register 3 (Offset 0x0058)

CAN RX Message Register 3は、受信した CANフレームのデータフィールドの Byte 0から Byte 3 (Data Word 1)を RX FIFOから読み出すためのレジスタです。

データフレームを受信していない場合でも、このレジスタは読み出しを行う必要があります。 データフレームを受信していない場合、読み出される値は無効であるため破棄してください (読み出し値は 0となります)。

Table 122. CAN RX Message Register 3 ビットフィールド
bit Symbol Field Description R/W

31:24

CAN_RXDB0

RX Data Byte 0

データフィールドの Byte 0を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 1以上を示す時、このフィールドのデータは有効データとなります。

RO

23:16

CAN_RXDB1

RX Data Byte 1

データフィールドの Byte 1を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 2以上を示す時、このフィールドのデータは有効データとなります。

RO

15:8

CAN_RXDB2

RX Data Byte 2

データフィールドの Byte 2を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 3以上を示す時、このフィールドのデータは有効データとなります。

RO

7:0

CAN_RXDB3

RX Data Byte 3

データフィールドの Byte 3を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 4以上を示す時、このフィールドのデータは有効データとなります。

RO

CAN RX Message Register4 (Offset 0x005C)

CAN RX Message Register 4は、受信した CANフレームのデータフィールドの Byte 4から Byte 7 (Data Word 2)を RX FIFOから読み出すためのレジスタです。

データフレームを受信していない場合でも、このレジスタは読み出しを行う必要があります。 データフレームを受信していない場合、読み出される値は無効であるため破棄してください (読み出し値は 0となります)。

Table 123. CAN RX Message Register 4 ビットフィールド
bit Symbol Field Description R/W

31:24

CAN_RXDB4

RX Data Byte 4

データフィールドの Byte 4を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 5以上を示す時、このフィールドのデータは有効データとなります。

RO

23:16

CAN_RXDB5

RX Data Byte 5

データフィールドの Byte 5を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 6以上を示す時、このフィールドのデータは有効データとなります。

RO

15:8

CAN_RXDB6

RX Data Byte 6

データフィールドの Byte 6を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 7以上を示す時、このフィールドのデータは有効データとなります。

RO

7:0

CAN_RXDB7

RX Data Byte 7

データフィールドの Byte 7を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 8以上を示す時、このフィールドのデータは有効データとなります。

RO

CAN Acceptance Filter Enable Register (Offset 0x0060)

CAN Acceptance Filter Enable Registerは、CAN Acceptance Filterの設定を行うレジスタです。 このレジスタは、CAN Enable Registerの CAN_ENビットが "0"の時のみ書き込みが可能です。

Table 124. CAN Acceptance Filter Enable Register ビットフィールド
bit Symbol Field Description R/W

31:4

-

Reserved

Reserved

-

3

CAN_UAF4

Use Acceptance Filter4

Acceptance Filter 4の使用有無を設定するためのビットです。このビットが "1"に設定されている時、CAN Acceptance Filter ID Value Register 4と CAN Acceptance Filter ID Mask Register 4の設定値が Acceptance Filterとして使用されます。

R/W

2

CAN_UAF3

Use Acceptance Filter3

Acceptance Filter 3の使用有無を設定するためのビットです。このビットが "1"に設定されている時、CAN Acceptance Filter ID Value Register 3と CAN Acceptance Filter ID Mask Register 3の設定値が Acceptance Filterとして使用されます。

R/W

1

CAN_UAF2

Use Acceptance Filter2

Acceptance Filter 2の使用有無を設定するためのビットです。このビットが "1"に設定されている時、CAN Acceptance Filter ID Value Register 2と CAN Acceptance Filter ID Mask Register 2の設定値が Acceptance Filterとして使用されます。

R/W

0

CAN_UAF1

Use Acceptance Filter1

Acceptance Filter 1の使用有無を設定するためのビットです。このビットが "1"に設定されている時、CAN Acceptance Filter ID Value Register 1と CAN Acceptance Filter ID Mask Register 1の設定値が Acceptance Filterとして使用されます。

R/W

CAN Acceptance Filter ID Mask Register 1 (Offset 0x0070)

CAN Acceptance Filter ID Mask Register 1は、CAN Acceptance Filter 1で受信フレームとの比較を行うフィールドを設定するためのレジスタです。 このレジスタで "1"がセットされたビットは、受信フレームとの比較対象となります。

このレジスタは、CAN Enable Registerの CAN_ENビットが "0"の時のみ書き込みが可能です。

Table 125. CAN Acceptance Filter ID Mask Register1 ビットフィールド
bit Symbol Field Description R/W

31:21

CAN_ID1AFM1

Standard Message ID Mask 1

CAN Acceptance Filter 1において、標準フレーム または、拡張フレームの ID[28:18]フィールドのうち比較に使用するビットを設定するためのフィールドです。

R/W

20

CAN_SRTRAFM1

Standard Remote Transmission Request Mask 1

CAN Acceptance Filter 1において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットを比較に使用するかを設定するためのビットです。

R/W

19

CAN_IDEAFM1

Identifier Extension Mask 1

CAN Acceptance Filter 1において、標準フレーム または、拡張フレームの IDEビットを比較に使用するかを設定するためのビットです。

R/W

18:1

CAN_ID2AFM1

Extended Message ID Mask 1

CAN Acceptance Filter 1において、拡張フレームの ID[17:0]フィールドのうち比較に使用するビットを設定するためのフィールドです。

R/W

0

CAN_ERTRAFM1

Extended Remote Transmission Request Mask 1

CAN Acceptance Filter 1において、拡張フレームの RTRビットを比較に使用するかを設定するためのビットです。

R/W

CAN Acceptance Filter ID Value Register 1 (Offset 0x0074)

CAN Acceptance Filter ID Value Register 1は、Acceptance Filter 1で受信フレームとの比較を行う値を設定するためのレジスタです。 CAN Acceptance Filter ID Mask Register 1で "1"がセットされているビットが、受信フレームと CAN Acceptance FIlter ID Value Register 1の間で一致した場合、その受信フレームが RX FIFOに格納されます。 従って、CAN Acceptance Filter ID Mask Register 1でセットされていないビットは、フィルターの対象となりません。

このレジスタは、CAN Enable Registerの CAN_ENビットが "0"の時のみ書き込みが可能です。

Table 126. CAN Acceptance Filter ID Value Register1 ビットフィールド
bit Symbol Field Description R/W

31:21

CAN_ID1AFV1

Standard Message ID Value 1

CAN Acceptance Filter 1において、標準フレーム または、拡張フレームの ID[28:18]フィールドのフィルター値を設定するためのフィールドです。

R/W

20

CAN_SRTRAFV1

Standard Remote Transmission Request Value 1

CAN Acceptance Filter 1において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットのフィルター値を設定するためのビットです。

R/W

19

CAN_IDEAFV1

Identifier Extension Value 1

CAN Acceptance Filter 1において、標準フレーム または、拡張フレームの IDEビットのフィルター値を設定するためのビットです。

R/W

18:1

CAN_ID2AFV1

Extended Message ID Value 1

CAN Acceptance Filter 1において、拡張フレームの ID[17:0]フィールドのフィルター値を設定するためのフィールドです。

R/W

0

CAN_ERTRAFV1

Extended Remote Transmission Request Value 1

CAN Acceptance Filter 1において、拡張フレームの RTRビットのフィルター値を設定するためのビットです。

R/W

CAN Acceptance Filter ID Mask Register 2 (Offset 0x0090)

CAN Acceptance Filter ID Mask Register 2は、CAN Acceptance Filter 2で受信フレームとの比較を行うフィールドを設定するためのレジスタです。 このレジスタで "1"がセットされたビットは、受信フレームとの比較対象となります。

このレジスタは、CAN Enable Registerの CAN_ENビットが "0"の時のみ書き込みが可能です。

Table 127. CAN Acceptance Filter ID Mask Register 2 ビットフィールド
bit Symbol Field Description R/W

31:21

CAN_ID1AFM2

Standard Message ID Mask 2

CAN Acceptance Filter 2において、標準フレーム または、拡張フレームの ID[28:18]フィールドのうち比較に使用するビットを設定するためのフィールドです。

R/W

20

CAN_SRTRAFM2

Standard Remote Transmission Request Mask 2

CAN Acceptance Filter 2において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットを比較に使用するかを設定するためのビットです。

R/W

19

CAN_IDEAFM2

Identifier Extension Mask 2

CAN Acceptance Filter 2において、標準フレーム または、拡張フレームの IDEビットを比較に使用するかを設定するためのビットです。

R/W

18:1

CAN_ID2AFM2

Extended Message ID Mask 2

CAN Acceptance Filter 2において、拡張フレームの ID[17:0]フィールドのうち比較に使用するビットを設定するためのフィールドです。

R/W

0

CAN_ERTRAFM2

Extended Remote Transmission Request Mask 2

CAN Acceptance Filter 2において、拡張フレームの RTRビットを比較に使用するかを設定するためのビットです。

R/W

CAN Acceptance Filter ID Value Register 2 (Offset 0x0094)

CAN Acceptance Filter ID Value Register 2は、Acceptance Filter 2で受信フレームとの比較を行う値を設定するためのレジスタです。 CAN Acceptance Filter ID Mask Register 2で "1"がセットされているビットが、受信フレームと CAN Acceptance FIlter ID Value Register 2の間で一致した場合、その受信フレームが RX FIFOに格納されます。 従って、CAN Acceptance Filter ID Mask Register 2でセットされていないビットは、フィルターの対象となりません。

このレジスタは、CAN Enable Registerの CAN_ENビットが "0"の時のみ書き込みが可能です。

Table 128. CAN Acceptance Filter ID Value Register 2 ビットフィールド
bit Symbol Field Description R/W

31:21

CAN_ID1AFV2

Standard Message ID Value 2

CAN Acceptance Filter 2において、標準フレーム または、拡張フレームの ID[28:18]フィールドのフィルター値を設定するためのフィールドです。

R/W

20

CAN_SRTRAFV2

Standard Remote Transmission Request Value 2

CAN Acceptance Filter 2において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットのフィルター値を設定するためのビットです。

R/W

19

CAN_IDEAFV2

Identifier Extension Value 2

CAN Acceptance Filter 2において、標準フレーム または、拡張フレームの IDEビットのフィルター値を設定するためのビットです。

R/W

18:1

CAN_ID2AFV2

Extended Message ID Value 2

CAN Acceptance Filter 2において、拡張フレームの ID[17:0]フィールドのフィルター値を設定するためのフィールドです。

R/W

0

CAN_ERTRAFV2

Extended Remote Transmission Request Value 2

CAN Acceptance Filter 2において、拡張フレームの RTRビットのフィルター値を設定するためのビットです。

R/W

CAN Acceptance Filter ID Mask Register 3 (Offset 0x00B0)

CAN Acceptance Filter ID Mask Register 3は、CAN Acceptance Filter 3で受信フレームとの比較を行うフィールドを設定するためのレジスタです。 このレジスタで "1"がセットされたビットは、受信フレームとの比較対象となります。

このレジスタは、CAN Enable Registerの CAN_ENビットが "0"の時のみ書き込みが可能です。

Table 129. CAN Acceptance Filter ID Mask Register 3 ビットフィールド
bit Symbol Field Description R/W

31:21

CAN_ID1AFM3

Standard Message ID Mask 3

CAN Acceptance Filter 3において、標準フレーム または、拡張フレームの ID[28:18]フィールドのうち比較に使用するビットを設定するためのフィールドです。

R/W

20

CAN_SRTRAFM3

Standard Remote Transmission Request Mask 3

CAN Acceptance Filter 3において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットを比較に使用するかを設定するためのビットです。

R/W

19

CAN_IDEAFM3

Identifier Extension Mask 3

CAN Acceptance Filter 3において、標準フレーム または、拡張フレームの IDEビットを比較に使用するかを設定するためのビットです。

R/W

18:1

CAN_ID2AFM3

Extended Message ID Mask 3

CAN Acceptance Filter 3において、拡張フレームの ID[17:0]フィールドのうち比較に使用するビットを設定するためのフィールドです。

R/W

0

CAN_ERTRAFM3

Extended Remote Transmission Request Mask 3

CAN Acceptance Filter 3において、拡張フレームの RTRビットを比較に使用するかを設定するためのビットです。

R/W

CAN Acceptance Filter ID Value Register 3 (Offset 0x00B4)

CAN Acceptance Filter ID Value Register 3は、Acceptance Filter 3で受信フレームとの比較を行う値を設定するためのレジスタです。 CAN Acceptance Filter ID Mask Register 3で "1"がセットされているビットが、受信フレームと CAN Acceptance FIlter ID Value Register 3の間で一致した場合、その受信フレームが RX FIFOに格納されます。 従って、CAN Acceptance Filter ID Mask Register 3でセットされていないビットは、フィルターの対象となりません。

このレジスタは、CAN Enable Registerの CAN_ENビットが "0"の時のみ書き込みが可能です。

Table 130. CAN Acceptance Filter ID Value Register 3 ビットフィールド
bit Symbol Field Description R/W

31:21

CAN_ID1AFV3

Standard Message ID Value 3

CAN Acceptance Filter 3において、標準フレーム または、拡張フレームの ID[28:18]フィールドのフィルター値を設定するためのフィールドです。

R/W

20

CAN_SRTRAFV3

Standard Remote Transmission Request Value 3

CAN Acceptance Filter 3において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットのフィルター値を設定するためのビットです。

R/W

19

CAN_IDEAFV3

Identifier Extension Value 3

CAN Acceptance Filter 3において、標準フレーム または、拡張フレームの IDEビットのフィルター値を設定するためのビットです。

R/W

18:1

CAN_ID2AFV3

Extended Message ID Value 3

CAN Acceptance Filter 3において、拡張フレームの ID[17:0]フィールドのフィルター値を設定するためのフィールドです。

R/W

0

CAN_ERTRAFV3

Extended Remote Transmission Request Value 3

CAN Acceptance Filter 3において、拡張フレームの RTRビットのフィルター値を設定するためのビットです。

R/W

CAN Acceptance Filter ID Mask Register 4 (Offset 0x00D0)

CAN Acceptance Filter ID Mask Register 4は、CAN Acceptance Filter 4で受信フレームとの比較を行うフィールドを設定するためのレジスタです。 このレジスタで "1"がセットされたビットは、受信フレームとの比較対象となります。

このレジスタは、CAN Enable Registerの CAN_ENビットが "0"の時のみ書き込みが可能です。

Table 131. CAN Acceptance Filter ID Mask Register 4 ビットフィールド
bit Symbol Field Description R/W

31:21

CAN_ID1AFM3

Standard Message ID Mask 4

CAN Acceptance Filter 4において、標準フレーム または、拡張フレームの ID[28:18]フィールドのうち比較に使用するビットを設定するためのフィールドです。

R/W

20

CAN_SRTRAFM3

Standard Remote Transmission Request Mask 4

CAN Acceptance Filter 4において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットを比較に使用するかを設定するためのビットです。

R/W

19

CAN_IDEAFM3

Identifier Extension Mask 4

CAN Acceptance Filter 4において、標準フレーム または、拡張フレームの IDEビットを比較に使用するかを設定するためのビットです。

R/W

18:1

CAN_ID2AFM3

Extended Message ID Mask 4

CAN Acceptance Filter 4において、拡張フレームの ID[17:0]フィールドのうち比較に使用するビットを設定するためのフィールドです。

R/W

0

CAN_ERTRAFM3

Extended Remote Transmission Request Mask 4

CAN Acceptance Filter 4において、拡張フレームの RTRビットを比較に使用するかを設定するためのビットです。

R/W

CAN Acceptance Filter ID Value Register 4 (Offset 0x00D4)

CAN Acceptance Filter ID Value Register 4は、Acceptance Filter 3で受信フレームとの比較を行う値を設定するためのレジスタです。 CAN Acceptance Filter ID Mask Register 4で "1"がセットされているビットが、受信フレームと CAN Acceptance FIlter ID Value Register 3の間で一致した場合、その受信フレームが RX FIFOに格納されます。 従って、CAN Acceptance Filter ID Mask Register 4でセットされていないビットは、フィルターの対象となりません。

このレジスタは、CAN Enable Registerの CAN_ENビットが "0"の時のみ書き込みが可能です。

Table 132. CAN Acceptance Filter ID Value Register 4 ビットフィールド
bit Symbol Field Description R/W

31:21

CAN_ID1AFV4

Standard Message ID Value 4

CAN Acceptance Filter 4において、標準フレーム または、拡張フレームの ID[28:18]フィールドのフィルター値を設定するためのフィールドです。

R/W

20

CAN_SRTRAFV4

Standard Remote Transmission Request Value 3

CAN Acceptance Filter 4において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットのフィルター値を設定するためのビットです。

R/W

19

CAN_IDEAFV4

Identifier Extension Value 4

CAN Acceptance Filter 4において、標準フレーム または、拡張フレームの IDEビットのフィルター値を設定するためのビットです。

R/W

18:1

CAN_ID2AFV4

Extended Message ID Value 4

CAN Acceptance Filter 4において、拡張フレームの ID[17:0]フィールドのフィルター値を設定するためのフィールドです。

R/W

0

CAN_ERTRAFV4

Extended Remote Transmission Request Value 4

CAN Acceptance Filter 4において、拡張フレームの RTRビットのフィルター値を設定するためのビットです。

R/W

CAN FIFO and Buffer Reset Register (Offset 0x00F0)

CAN FIFO and Buffer Reset Registerは、TX FIFO, RX FIFO, TX High Priority Bufferのリセットを行うためのレジスタです。 何らかの理由により FIFOおよび Bufferのクリアを行いたい場合にこのレジスタを使用します。

Table 133. CAN FIFO and Buffer Reset Register ビットフィールド
bit Symbol Field Description R/W

31:18

-

Reserved

Reserved

-

17

CAN_TXHPBRST

TX High Priority Buffer Reset

TX High Priority Bufferをリセットするためのビットです。本ビットに "1"をセットすると TX High Priority Bufferをリセットします。

WO

16

CAN_TXFIFORST

TX FIFO Reset

TX FIFOをリセットするためのビットです。本ビットに "1"をセットすると TX FIFOをリセットします。

WO

15:1

-

Reserved

Reserved

-

0

CAN_RXFIFORST

RX FIFO Reset

RX FIFOをリセットするためのビットです。本ビットに "1"をセットすると RX FIFOをリセットします。

WO

CAN Self Test Mode Control Register (Offset 0x0100)

CAN Self Test Mode Control Registerは、CAN Controllerの Self Testを行うための、デバッグ用レジスタです。

Self Test Modeを Enableにすることで、自送信フレームに対する受信動作の有効化と返信 ACK確認の停止制御が行われ、CANバスを使用した Loopback動作が可能となります。

このレジスタは、CAN Enable Registerの CAN_ENビットが "0"の時のみ書き込みが可能です。

Table 134. CAN Self Test Mode Control Register ビットフィールド
bit Symbol Field Description R/W

31:1

-

Reserved

Reserved

-

0

CAN_STM

Self Test Mode

CAN通信の Self Test Modeを設定します。0: Self Test Mode Disable 1: Self Test Mode Enable

R/W

CAN PHY Sleep Mode Control Register (Offset 0x0200)

CAN PHY Sleep Mode Control Registerは、OBC Module上に実装される CAN Tranceverの動作を制御するためのレジスタです。

Sleep Modeを Enableにすると、CAN Transceiverの送受信回路を OFF (低消費電力状態)にすることができます。

このレジスタは、CAN Enable Registerの CAN_ENビットが "0"の時のみ書き込みが可能です。

Table 135. CAN PHY Sleep Mode Control Register ビットフィールド
bit Symbol Field Description R/W

31:1

-

Reserved

Reserved

-

0

CAN_PSLM

PHY Sleep Mode

CAN Transceiverの Sleep Modeを設定します。0: Sleep Mode Disable 1: Sleep Mode Enable

R/W

CAN Controller IP Version Register (Offset: 0xF000)

CAN Controller IPのバージョン管理用レジスタです。

Table 136. CAN Controller IP Version Register ビットフィールド
bit Symbol Field Description R/W

31:24

CAN_MAJVER

CAN Controller IP Major Version

CAN Controller IPの Major Versionを示します。

RO

23:16

CAN_MINVER

CAN Controller IP Minor Version

CAN Controller IPの Minor Versionを示します。

RO

15:0

CAN_PATVER

CAN Controller IP Patch Version

CAN Controller IPの Patch Versionを示します。

RO

CANアクセス手順

この章では、CAN Controllerを使用するために必要な、ソフトウェアによる設定および確認手順の例について説明します。 ※各レジスタの詳細は、CAN Controllerの"レジスタ詳細"の章を参照してください。

初期設定操作手順例

CAN Controllerの起動後に行う必要がある初期設定の手順について説明します。

can_init_config_seq
Figure 15. 初期設定フロー

1: CAN Time Quantum Prescaler Registerに Time Quantum Clock周期の設定を行います。ここで設定した値に1を加算した数のクロックサイクル数が、Time Quantum Clock周期として設定されます。

2: CAN Bit Timing Setting Registerに Time Segment 1、 Time Segment 2、Synchronization Jump Width周期の設定を行います。ここで設定した値に1を加算した数の Tq数が、各区間の周期として設定され、1ビットの周期、受信ビットのサンプリングポイント、再同期の最大ジャンプ幅が決定されます。

受信メッセージのアクセプタンスフィルタリングを使用する場合は、必要なフィルタ数に応じて、CAN Acceptance Filter ID Mask Register 1、2、3、4、CAN Acceptance Filter ID Value Register 1、2、3、4、CAN Acceptance Filter Enable Registerの設定(3: ~ 5:)を行います。

3: 使用するフィルタ数の CAN Acceptance Filter ID Mask Registerに受信メッセージと比較に使用するビット設定します。受信メッセージが標準フレームだった場合は、ID2[17:0]、ERTRフィールドのフィルタリング設定は無視されます。

4: 使用するフィルタ数のCAN Acceptance Filter ID Value Registerに受信メッセージのフィルター値を設定します。CAN Acceptance Filter ID Mask Registerに設定した比較対象ビットが CAN Acceptance Filter ID Value Registerの値と一致しない場合、受信したメッセージは RX FIFOへ格納しません。

5: CAN Acceptance Filter Enable Registerに使用する Acceptance Filterを設定します。CAN Acceptance Filter ID Register 1の設定を使用する場合は CAN_UAF1ビット_、CAN Acceptance Filter ID Register 2の設定を使用する場合は CAN_UAF2ビット_、CAN Acceptance Filter ID Register 3の設定を使用する場合は CAN_UAF3ビット_、CAN Acceptance Filter ID Register 4の設定を使用する場合は CAN_UAF4ビットを_ "1"に設定します。

6: 必要に応じて CAN Interrupt Enable Registerの割り込みステータスのイネーブルビットを "1"に設定します。

7: CAN Enable Registerの CAN_ENビットを_ "1"に設定し、CAN通信を開始(CAN Busへ接続)します。

  1. ビットタイミングの設定

    CAN通信における 1ビット時間は、Time Segment (Tq)の単位で分割された、Sync Segment、Time Segment 1、Time segment 2の 3つのセグメントフェーズの Total時間によって決まります。

    Time Segment (Tq)の周期は CAN Time Quantum Prescaler Registerの TQPSETフィールドに CANクロックのクロックサイクル数を設定します。 Time Segment 1、Time segment 2の長さは、CAN Bit Timing Setting Registerの TS1、TS2フィールドに Tqサイクル数を設定します。 Sync Segmentの長さは Tq 1Cycle固定です。

    送信ビットの遷移はTime segment 2と Sync Segmentの間で行われます。 受信ビットのサンプリングは Time segment 1とTime segment 2の間で行われるため、Time segment 1の時間と Time segment 2の時間の比率によりサンプリングポイントを調整します。

    例として、TQPSET[15:0]=0x0003、TS1[3:0]=0x5、TS2[2:0]=0x2にレジスタ設定した時に生成されるビットタイミングを以下に示します。

    can_gen_bit_timing
    Figure 16. ビットタイミング生成

    SC_OBCFPGAでは_、CANクロックの周波数は24MHz固定となります。 ビットタイミング設定値の一例として、ビットレートを 1Mbps、サンプリングポイントを 75%、同期ジャンプ幅の最大時間を 4Tqサイクルする場合の各レジスタの設定値は、CAN Time Quantum Prescaler Registerが 0x0000_0001_ (TQPSET=0x1)、CAN Bit Timing Setting Registerが 0x0000_01A7_ (TS1=0x7, TS2=0x2, SWJ=0x3)となります。

    制限事項:Bit Stream Processorモジュールでのフレーム処理に必要な時間として、Time segment 2の長さは、必ず CANクロックの 3Cycle以上となるように設定する必要があります。

TX FIFOを使用するフレーム送信操作手順例

TX_FIFOを使用したメッセージ送信の手順について説明します_。

can_trans_txf_seq
Figure 17. TX FIFOを使用するフレーム送信フロー

1: CAN Interrupt Enable Registerの TRNSDNENBビットを "1"に設定します。必要に応じて使用する他の割り込みステータスのイネーブルビットもあわせて設定します。

2: CAN Status Registerの TXFFLビットが "0"の場合は送信メッセージを TX FIFOに書き込むことが出来ます。 TXFFLビットが "1"の状態の時は TX FIFOが Full状態であるため、新たな送信メッセージを書き込む場合は TX FIFOが Not Full状態になるまで待つ必要があります。

3: CAN TX Message Register 1へ送信メッセージの Standard Message ID (ID1[10:0]), Standard Remote Transmission Request (SRTR), Identifier Extension (IDE), Extended Message ID (ID2[17:0]), Extended Remote Transmission Request (ERTR)フィールドの設定を行います。 標準フレームを送信する場合はIDEビットを "0"に、拡張フレームを送信する場合は SRTRビットと IDEビットをそれぞれ "1"に設定する必要があります。 標準フレームを送信する場合は、ID2フィールド、ERTRビットに設定した値は使用されません。

4: CAN TX Message Register 2へ送信メッセージのData Length Code (DLC)フィールドの設定を行います。

5: CAN TX Message Register 3へ送信メッセージの Byte 0から Byte 3までの データフィールドの設定を行います。 リモートフレームまたは DLCフィールドを 0Byteに設定したデータフレームを送信する場合でもこのレジスタに書き込みを行う必要がありますが、書き込まれた値自体は使用されません。

6: CAN TX Message Register 4へ送信メッセージの Byte 4から Byte 7までの データフィールドの設定を行います。 リモートフレームまたは DLCフィールドを 4Byte以下に設定したデータフレームを送信する場合でもこのレジスタに書き込みを行う必要がありますが、書き込まれた値自体は使用されません。

CAN TX Message Register 1~4全ての書き込みが行われると、CANバスが Idle状態の時にメッセージの送信を開始します。 TX FIFOは最大 64のメッセージを格納することができ、FIFOが Fullになるまで送信するメッセージを続けて書き込む事が出来ます。

7: 割り込み信号 CAN_INTがアサートした後_、CAN Interrupt Status Registerの TRNSDNビットが "1"にセットされていることを確認することで、メッセージ送信が完了したことを知ることができます。

8: メッセージ送信完了の確認後に、CAN Interrupt Status Registerの TRNSDNビットに "1"を書き込んでから、TRNSDNビットがクリアされたことを確認します。

他の送信メッセージを TX_FIFOに設定した場合は_、同様の手順でメッセ―ジ送信の完了の度に繰り返し割り込みの確認を行うことで、全てのメッセージの送信が完了したことを知ることができます。 TX_FIFOに未送信のメッセージが残っていないかは_、CAN Status Registerの TXFNEPビットが "0"になっていることで確認することができます。

CAN TX Message Register 1~4は、CAN Enable Registerの CAN_ENビットが_ "0"の状態でも書き込む事が出来ます。この場合、メッセージの送信は CAN_ENビットに_ "1"が書き込まれた後に行われます。

  1. TX Message Priority Management

    CAN Controllerでは、TX Message Priority Management機能により、TX FIFOに複数のメッセージが格納されている時に優先度の高い送信メッセージから順に送信を行います。

    動作の一例を含めた、TX Message Priority Management機能の構成を以下に示します。

    can_tx_prio_mgmt
    Figure 18. TX Message Priority Management Function

    送信メッセージの送信順序は、TX FIFOのメッセージ格納位置を優先順位に並べて管理する Priority Management Tableで管理されます。

    AXI BusからCAN TX Message Registerへの書き込みが行われると、TX FIFOの空いている位置へ送信メッセージを格納し、Priority検索が開始されます。

    Priority検索の概要は以下の通りです。

    1. Priority検索が未了の送信メッセージの IDR Fieldのデータを TX FIFOから読み出します。

    2. Priority検索が完了している最も優先度の高い送信メッセージの IDR Fieldのデータを TX FIFOから読み出します。

    3. Aの読み出し値と Bの読み出し値の比較を行います。

      D. 比較した結果、Aの読み出し値の方がBの読み出し値より小さかった場合は、Priority Management Tableへ、Bのメッセージの一つ上の優先位置に Aのメッセージの TX_FIFO格納位置の_ Entryを行い、Priority検索を終了します。 逆に、Aの読み出し値の方が Bの読み出し値より大きかった場合は、Bで読み出したデータの一つ下の優先度の送信メッセージの IDR Fieldのデータを TX FIFOから読み出し、Aの読み出し値との比較を行います。 この動作を、Aの値の方が小さい比較結果が得られるか、Priority管理テーブルにEntryされている全てのデータとの比較が終わるまで繰り返し行います。

      CANバスには、メッセージの送信を開始する時点で、Priority管理テーブルに Entryされている高優先の送信メッセージから順に TX FIFOから読み出され送信されます。 但し、TX High Priority Bufferに送信メッセージが格納されている場合は、TX High Priority Bufferの格納メッセージを最優先で送信します。

TX High Priority Bufferを使用するフレーム送信操作手順例

TX High Priority Bufferを使用したメッセージ送信の手順について説明します。 TX High Priority Bufferに書き込まれたメッセージは、TX FIFO内のメッセージよりも優先して送信されます。

can_trans_txhb_seq
Figure 19. TX High Priority Bufferを使用するフレーム送信フロー

CAN Status Registerの TXHBFLビットが "0"の場合は送信メッセージを TX High Priority Bufferに書き込むことが出来ます。 TXHBFLビットが "1"の状態の時は TX High Priority Bufferが Full状態であるため、新たな送信メッセージを書き込む場合は TX High Priority Bufferが Not Full状態になるまで待つ必要があります。 TX High Priority Bufferは 1つのメッセージのみ格納することができます。

TX High Priority Bufferを使用する場合は、CAN TX High Priority Message Register 1~4へメッセージを書き込みます。 書き込みを行う手順やフォーマットは TX_FIFO_ (CAN TX Message Register 1~4)と同様です。

メッセージの送信完了も TX FIFOのメッセージ送信時と同様、TRNSDNビットの割り込みにより知ることができます。 他の送信メッセージを TX_FIFOに設定した場合も_、同様の手順でメッセ―ジ送信の完了の度に繰り返し割り込みの確認を行うことで、全てのメッセージの送信が完了したことを知ることができます。

CAN TX High Priority Message Register 1~4は、CAN Enable Registerの CAN_ENビットが_ "0"の状態でも書き込む事が出来ます。 この場合、メッセージの送信は CAN_ENビットに_ "1"が書き込まれた後に行われます。

フレーム受信操作手順例

メッセージ受信の手順について説明します。

can_rcv_rxf_seq
Figure 20. フレーム受信フロー

1: CAN Interrupt Enable Registerの RCVDNENBビットと RXFVALENBビットを "1"に設定します。 必要に応じて使用する他の割り込みステータスのイネーブルビットもあわせて設定します。

2: メッセージの受信が完了すると、割り込み信号 CAN_INTがアサートし_、CAN Interrupt Status Registerの RCVDNビットと RXFVALビットが"1"にセットされます。

3: CAN RX Message Register 1から受信メッセージの Standard Message ID (ID1[10:0])、Standard Remote Transmission Request (SRTR)、Identifier Extension (IDE)、Extended Message ID (ID2[17:0])、 Extended Remote Transmission Request (ERTR)フィールドを読み出します。 標準フレームを受信した場合は IDEビットが "0"に、拡張フレームを受信した場合は IDEビットに "1"が表示されます。標準フレームを受信した場合は、ID2フィールド、ERTRビットからは全て 0が読み出されます。

4: CAN RX Message Register 2から受信メッセージの Data Length Code (DLC)フィールドを読み出します。

5: CAN RX Message Register 3から受信メッセージの Byte 0から Byte 3までのデータフィールドを読み出します。 リモートフレームまたは データ長が 0 Byteのデータフレームを受信した場合でもこのレジスタの読み出しを行う必要がありますが、読み出したデータは無効データであるため破棄してください。

6: CAN RX Message Register 4から受信メッセージの Byte 4から Byte 7までの データフィールドを読み出します。 リモートフレームまたはデータ長が 4 Byte以下のデータフレームを受信した場合でもこのレジスタの読み出しを行う必要がありますが、読み出したデータは無効データであるため破棄してください。

7: 受信メッセージの確認完了後に、CAN Interrupt Status Registerの RCVDNビットと RXFVALビットに "1"を書き込みます。

8: CAN Interrupt Status Registerを読み出し、RCVDNビットと RXFVALビットがクリアされたことを確認します。 RXFVALビットがクリアされていない場合は、他の受信メッセージが RX FIFOに格納されていることを示します。 RX FIFOは最大 64個のメッセージを格納することができ、FIFOが Emptyになるまで受信したメッセージを続けて読み出すことが出来ます。

新しいメッセージの受信を待つ場合は、RCVDNビットの割り込みによりメッセージを受信したことを知ることができます。

CAN RX Message Register 1~4は、CAN Enable Registerの CAN_ENビットが_ "0"の状態でも読み出す事が出来ます。 但し、この時は新しいメッセージの受信は行われません。

AHB UART Lite

AHB UART Liteは、UART通信を行うためのモジュールです。 このモジュールはコンソール出力など簡易なシリアルデータの送受信を行うことを目的としているため、フロー制御を行う機能は持っていません。

レジスタ詳細

AHB UARTコアは、システムに 7個実装されています。 このうち 6個は、標準イメージにおいて、ユーザーが設計する Mission Bus Systemに実装されています。

Table 137. AHB UART Lite Base Address
IP Core Base Address Comment

UART Lite (Console I/F)

0x4F01_0000

UART Lite 1

0x5000_0000

Implemented in Mission Bus System

UART Lite 2

0x5001_0000

Implemented in Mission Bus System

UART Lite 3

0x5002_0000

Implemented in Mission Bus System

UART Lite 4

0x5003_0000

Implemented in Mission Bus System

UART Lite 5

0x5004_0000

Implemented in Mission Bus System

UART Lite 6

0x5005_0000

Implemented in Mission Bus System

Table 138. AHB UART Lite Registerメモリマップ
Offset Symbol Register Initial

0x0000

UARTL_RXFIFOR

Rx FIFO Register

0x00000000

0x0004

UARTL_TXFIFOR

Tx FIFO Register

0x00000000

0x0008

UARTL_STATR

Status Register

0x00000004

0x000C

UARTL_CTRLR

Control Register

0x00000000

0x0010

UARTL_UBRSR

UART Baudrate Setting Register

0x000001A0

0xF000

UARTL_VER

AHB UART Lite IP Version Register

-

Rx FIFO Register (Offset 0x0000)

Rx FIFO Registerは、UARTの受信データを読み出すためのレジスタです。

Rx FIFOは受信したデータを 1 Byte単位で最大 16エントリまで格納できます。

Table 139. Rx FIFO Register ビットフィールド
bit Symbol Field Description R/W

31:8

-

Reserved

Reserved

-

7:0

RXDATA

UART Rx Data

受信したデータを Rx FIFOから読み出すためのレジスタです。
UART受信した順に 1 Byteずつ読み出されます。

RO

Tx FIFO Register (Offset 0x0004)

Tx FIFO Registerは、UARTの送信データを書き込むためのレジスタです。

書き込みデータは Tx FIFOに格納され、書き込み後直ちに送信を開始します。 Tx FIFOは送信するデータを 1 Byte単位で最大 16エントリまで格納できます。

Table 140. Tx FIFO Register ビットフィールド
bit Symbol Field Description R/W

31:8

-

Reserved

Reserved

-

7:0

TXDATA

UART Tx Data

送信データを Tx FIFOに書き込むためのレジスタです。
このTx FIFOに書き込みが行われると、ただちにUARTの送信が開始されます。

WO

Status Register (Offset 0x0008)

Status Registerは、AHB UART Liteの Errorや FIFOのステータスを確認するためのレジスタです。

Control Registerの INTENACTLが "1"にセットされている時、RXFIFOVALビット・TXFIFOEMPビット・RXUNDERRUNERRビット・TXOVERRUNERRビットのいずれかが "0"から "1"に変化するたびに CPUに対しエッジ割り込みが出力されます。

Table 141. Status Register ビットフィールド
bit Symbol Field Description R/W

31:10

-

Reserved

Reserved

-

9

TXOVERRUNERR

Tx FIFO Overrun Error

Tx FIFOが Fullの時に Tx FIFO Registerに書き込んだことにより Tx FIFOで Overrunエラーが発生したことを示すビットです。このビットは 読み出すとクリアされます。
0: Tx FIFO Overrunエラー未発生
1: Tx FIFO Overrunエラー発生
Tx FIFO Overrunエラー発生時の書き込みデータは無効となり、Tx FIFOに格納されません。

RC

8

RXUNDERRUNERR

Rx FIFO Underrun Error

Rx FIFOが Emptyの時に Rx FIFO Registerを読み出したことにより Rx FIFOで Underrunエラーが発生したことを示すビットです。このビットは 読み出すとクリアされます。
0: Rx FIFO Underrunエラー未発生
1: Rx FIFO Underrunエラー発生
Rx FIFO Underrunエラー発生時の Rx FIFO Registerからは無効データが読み出されます。

RC

7

PRTYERR

Parity Error

受信したUARTフレームでParityエラーが発生したことを示すビットです。このビットは読み出すとクリアされます。
0: Parityエラー未発生
1: Parityエラー発生
このビットはUARTがParity無しで設定されている場合はアサートしません。

RC

6

FRAMEERR

Frame Error

受信したUARTフレームで Frameエラーが発生したことを示すビットです。このビットは 読み出すとクリアされます。
0: Frameエラー未発生
1: Frameエラー発生
Frameエラー発生時の受信データは無効となり、Rx FIFOに格納されません。

RC

5

RXOVERRUNERR

Rx FIFO Overrun Error

Rx FIFOが Fullの時に UART受信したことにより Rx FIFOで Overrunエラーが発生したことを示すビットです。このビットは 読み出すとクリアされます。
0: Rx FIFO Overrunエラー未発生
1: Rx FIFO Overrunエラー発生
Rx FIFO Overrunエラー発生時の受信データは無効となり、Rx FIFOに格納されません。

RC

4

INTENAMON

Int Enabled Monitor

割り込み通知ステータスを示します。Control Registerの INTENACTLが "1"にセットされている時、このビットは "1"になります。
0: 割り込み通知は無効
1: 割り込み通知は有効

RO

3

TXFIFOFULL

Tx FIFO Full

Tx FIFOのFull状態を示します。
0: Tx FIFOは Full状態でない
1: Tx FIFOは Full状態

RO

2

TXFIFOEMP

Tx FIFO Empty

Tx FIFOのEmpty状態を示します。
0: Tx FIFOは Empty状態でない
1: Tx FIFOは Empty状態

RO

1

RXFIFOFULL

Rx FIFO Full

Rx FIFOのFull状態を示します。
0: Rx FIFOは Full状態でない
1: Rx FIFOはFull状態

RO

0

RXFIFOVAL

Rx FIFO Valid Data

Rx FIFOの有効データ格納状態を示します。
0: Rx FIFOにデータ無し
1: Rx FIFOにデータ有り

RO

Control Register (Offset 0x000C)

Control Registerは、Tx FIFO/Rx FIFOのリセット制御と割り込み通知の設定を行うためのレジスタです。

Table 142. Control Register ビットフィールド
bit Symbol Field Description R/W

31:5

-

Reserved

Reserved

-

4

INTENACTL

Int Enable Control

AUB UART Liteの割り込み通知の有無を設定します。
0: 割り込み通知を無効にする
1: 割り込み通知を有効にする

WO

3:2

-

Reserved

Reserved

-

1

RXFIFORST

Reset Rx FIFO

このビットは Rx FIFOをクリアするためのビットです。このビットに1を書き込むと Rx FIFOをリセットします。

WO

0

TXFIFORST

Reset Tx FIFO

このビットは Tx FIFOをクリアするためのビットです。このビットに1を書き込むと Tx FIFOをリセットします。

WO

UART Baudrate Setting Register (Offset 0x0010)

UART Baudrate Setting Registerは、UART通信のボーレートを設定するためのレジスタです。

この設定では、UARTの 1ビットの幅がシステムクロックの何サイクルで生成するかを設定します。 そのため、System Register.System Clock Control Registerの CLKMODEの設定を変更し、システムクロックの周波数が変わると設定しなおす必要があります。

レジスタの設定値はシステムクロックの周期と、設定するボーレートから以下のように計算することができます。

\[ UDIVSET= \frac{1}{baudrate\[bps\] \times SYSCLK period\[s\]} -1\]
Table 143. UART Baudrate Setting Register ビットフィールド
bit Symbol Field Description R/W

15:0

UDIVSET

UART Divider Setting

UART通信のボーレートを設定するためのフィールドです。

R/W

AHB UART Lite IP Version Register (Offset: 0xF000)

AHB UART Lite IPのバージョン管理用レジスタです。

Table 144. AHB UART Lite IP Version Register ビットフィールド
bit Symbol Field Description R/W

31:24

MAJVER

AHB UART Lite IP Major Version

AHB UART LiteコアのMajor Versionです。

RO

23:16

MINVER

AHB UART Lite IP Minor Version

AHB UART LiteコアのMinor Versionです。

RO

15:0

PATVER

AHB UART Lite IP Patch Version

AHB UART LiteコアのPatch Versionです。

RO

I2C Controller

I2C Controllerは、I2C通信を行うためのモジュールです。

I2C Controllerは、システムに 4個実装されています。 このうち 2個は、標準イメージにおいて、ユーザーが設計する Mision Bus Systemに実装されています。

残りの 2個は、SC-OBC-A1 FPGAの標準機能として実装されているものです。

SC-OBC-A1 FPGAは、SC-OBC Module A1の基板上に実装されるセンサーにアクセスするための I2C Interface (Internal I2C)と、基板外の I2Cデバイスにアクセスするための I2C Interface (External I2C)を持っています。 このうち External I2Cは I2C Controllerの制御によって通信を実現します。 Internal I2Cの制御は、System Monitorに搭載されている Board Health Monitor機能により、簡単なレジスタアクセスのみでセンサーデータを取得することができます。 Board Health Monitor機能に関する詳細は、「System Monitor」の章を参照してください。

レジスタ詳細

I2C Controllerは以下のベースアドレスに配置されています。

Table 145. I2C Controller Base Address
IP Core Base Address Comment

External I2C

0x4F03_0000

I2C Controller 1

0x5006_0000

Implemented in Mission Bus System

I2C Controller 2

0x5007_0000

Implemented in Mission Bus System

Table 146. I2C Controller Register アドレスマップ
Offset Symbol Register Initial

0x0000

I2CM_ENR

I2C Enable Register

0x00000000

0x0004

I2CM_TXFIFOR

I2C TX FIFO Register

0x00000000

0x0008

I2CM_RXFIFOR

I2C RX FIFO Register

0x00000000

0x000C

I2CM_BSR

I2C Bus Status Register

0x00000000

0x0010

I2CM_ISR

I2C Interrupt Status Register

0x00000000

0x0014

I2CM_IER

I2C Interrupt Enable Register

0x00000000

0x0018

I2CM_FIFOSR

I2C FIFO Status Register

0x00000000

0x001C

I2CM_FIFORR

I2C FIFO Reset Register

0x00000000

0x0020

I2CM_FTLSR

I2C FIFO Threshold Level Setting Register

0x00000000

0x0024

I2CM_SCLTSR

I2C SCL Timeout Setting Register

0x00000000

0x0030

I2CM_THDSTAR

I2C START Hold Timing Setting Register

0x000000EF

0x0034

I2CM_TSUSTOR

I2C STOP Setup Timing Setting Register

0x000000EF

0x0038

I2CM_TSUSTAR

I2C Repeated START Setup Timing Setting Register

0x00000117

0x003C

I2CM_THIGHR

I2C Clock High Timing Setting Register

0x000000E5

0x0040

I2CM_THDDATR

I2C Data Hold Timing Setting Register

0x00000013

0x0044

I2CM_TSUDATR

I2C Data Setup Timing Setting Register

0x000000E5

0x0048

I2CM_TBUFR

I2C Bus Free Timing Setting Register

0x00000117

0x004C

I2CM_TBSMPLR

I2C Bus Sampling Timing Setting Register

0x00000000

0x0050

I2CM_BFSR

I2C Bus Filter Setting Register

0x0000002F

0xF000

I2CM_VER

I2C Controller IP Version Register

-

I2C Enable Register (Offset 0x0000)

I2C Enable Registerは、I2C ControllerのEnable設定を行うレジスタです。

EnableがOFFの時は、I2C ControllerはI2C Busに接続される FPGAのBufferを HiZ状態とし、一切の送受信を行いません。 EnableをONにすると、I2C BusがIdle状態の時に送受信が可能となります。

Table 147. I2C Enable Register ビットフィールド
bit Symbol Field Description R/W

31:1

-

Reserved

Reserved

-

0

I2CM_EN

I2C Enable

I2C ControllerのEnable設定を行います。0: Enable OFF 1: Enable ON

R/W

I2C TX FIFO Register (Offset 0x0004)

I2C TX FIFO Registerは、I2Cデバイスへ送信するデータや、送受信データのフォーマットを設定するためのレジスタです。

レジスタに書き込む値は、転送状況によって変わります。

転送開始の 1 Byte目は、I2CM_TXDATAフィールドの ビット7:1に 通信する I2Cデバイスのデバイスアドレスを書き込み、ビット0に R/W情報として 次の転送サイクルが 送信モードの場合は"0", 受信モードの場合は"1"を書き込みます。 ここで書き込まれた 8ビットのデータは MSB側から順にそのまま I2Cバスに出力されます。

1 Byte目にビット0に書き込まれた R/W情報によって、送信モード(R/W: 0)となる場合、2 Byte目以降は I2CM_TXDATAに転送データを書き込みます。 送信モードの場合、I2CM_TXDATAの書き込みと同時に I2CM_STOPか I2CM_RESTARTが "1"に書き込まれるまで転送が継続します。 I2CM_TXDATAと共に I2CM_STOPが"1"に書き込まれた場合は、データ送信の完了後に STOP Conditionが送信され、I2CM_TXDATAと共に I2CM_RESTARTが"1"に書き込まれた場合は、データ送信の完了後に Repeated START Conditionが送信されます。 この状態になると、次の送信は 1 Byte目の送信状態に戻ります。

1 Byte目にビット0に書き込まれた R/W情報によって、受信モード(R/W: 1)となる場合、2 Byte目の I2CM_TXDATAには受信データの Byte数を書き込みます。 この時、書き込む受信データの Byte数は、「実際に受信する Byte数 - 1」の値を設定します。 また、最終Byteとなるデータの受信後に STOP Conditionまたは Repeated START Conditionを送信するため、I2CM_STOPか I2CM_RESTARTのどちらかのビットを"1"にセットします。

本レジスタの設定については「I2C通信操作手順例」も参照してください。

Table 148. I2C TX FIFO Register ビットフィールド
bit Symbol Field Description R/W

31:10

-

Reserved

Reserved

-

9

I2CM_RESTART

I2C Repeated START Condition

最終 Byteの転送完了後に I2C BusにRepeated START Conditionを送信する場合にセットするビットです。最終Byteの送受信後にRepeated START Conditionを挿入する場合は、このビットを"1"にセットします。

WO

8

I2CM_STOP

I2C STOP Condition

最終 Byteの転送完了後に I2C BusにSTOP Conditionを送信する場合にセットするビットです。最終Byteの送受信後にSTOP Conditionを送信する場合は、このビットを"1"にセットします。

WO

7:0

I2CM_TXDATA

I2C Tx Data

I2Cの送信データを設定します。このレジスタの書き込みデータは、送信モードでは送信データ, 受信モードでは 受信データ Byte数となります。

WO

I2C RX FIFO Register (Offset 0x0008)

I2C RX FIFO Registerは、I2Cデバイスから受信したデータを読み出すためのレジスタです。

I2Cデバイスから受信データは RX FIFOに格納されます。 RX FIFOは 16 Byte実装されており、このレジスタを読み出す事で RX FIFOに格納されたデータを 1 Byteずつデータを読み出す事ができます。

Table 149. I2C RX FIFO Register ビットフィールド
bit Symbol Field Description R/W

31:8

-

Reserved

Reserved

-

7:0

I2CM_RXDATA

I2C Rx Data

I2Cデバイスから受信したデータを読み出すためのフィールドです。

RO

I2C Bus Status Register (Offset 0x000C)

I2C Bus Status Registerは、I2C Busのステータスを確認するためのレジスタです。 I2C_SELFBUSY,I2C_OTHERBUSYビットがともに"0"を示す時、I2C BusがIdle状態であることを示します。

Table 150. I2C Bus Status Register ビットフィールド
bit Symbol Field Description R/W

31:2

-

Reserved

Reserved

-

1

I2CM_OTHERBUSY

I2C Bus Busy by Other Communication

同一I2C Busのバス状態を示すビットです。他のマスターデバイスがI2C通信中の時、このビットは"1"を示します。このビットはI2C EnableがOFFの状態でも機能します。

RO

0

I2CM_SELFBUSY

I2C Bus Busy by Self Communication

I2C ControllerのI2Cバス状態を示すビットです。自身のI2C ControllerがI2C通信中、このビットは"1"を示します。

RO

I2C Interrupt Status Register (Offset: 0x0010)

I2C Interrupt Status Registerは、I2C Controllerの割り込みステータスレジスタです。 それぞれのビットは"1"をセットすると、割り込みをクリアする事ができます。

Table 151. I2C Interrupt Status Register ビットフィールド
bit Symbol Field Description R/W

31:13

-

Reserved

Reserved

-

12

I2CM_SCLTO

I2C SCL Timeout

通信中のSCL Timeoutが発生した事を示すビットです。I2CデバイスによるSCLのクロックストレッチ機能等により、通信中にSCLがLoとなっている時間が I2C SCL Timeout Setting RegisterのI2CM_SCLTOPRODフィールドの設定値を超えたとき本ビットが"1"にセットされます。

R/WC

11

I2CM_RXFIFOUDF

I2C RX FIFO Underflow

RX FIFOの Underflowが発生したことを示すビットです。RX FIFOが Emptyの時に、I2C RX FIFO Registerの読み出しが行われたとき、本ビットが"1"にセットされます。

R/WC

10

I2CM_TXFIFOOVF

I2C TX FIFO Overflow

TX FIFOの Overflowが発生したことを示すビットです。TX FIFOが Fullの時に、I2C TX FIFO Registerへの書き込みを行ったとき、本ビットが"1"にセットされます。

R/WC

9

I2CM_BITER

I2C BIT Error

BIT Errorが発生したことを示すビットです。Lowレベルのビットを送信した時に、異なるレベルが検出された場合に本ビットが"1"にセットされます。BIT Errorを検出すると、I2C Controllerは以降のデータ送信を停止し、STOP Conditionを送信してからI2C EnableをOffにしてIdle状態に戻ります。

R/WC

8

I2CM_ACKER

I2C ACK Error

ACK Errorが発生したことを示すビットです。送信中に ACKビットでLowレベルが検出出来なかった場合に本ビットが"1"にセットされます。ACK Errorを検出すると、I2C Controllerは以降のデータ送信を停止し、STOP Conditionを送信してからI2C EnableをOffにしてIdle状態に戻ります。

R/WC

7:6

-

Reserved

Reserved

-

5

I2CM_RXFIFOOTH

I2C RX FIFO Over Threshold

RX FIFOに格納されるデータが閾値を上回ったことを示すビットです。データ量が I2C FIFO Threshold Level Setting Registerの I2CM_RXFIFOOTHLフィールドの設定値より多くなった場合に本ビットが"1"にセットされます。

R/WC

4

I2CM_TXFIFOUTH

I2C TX FIFO Under Threshold

TX FIFOに格納されるデータが閾値を下回ったことを示すビットです。データ量が I2C FIFO Threshold Level Setting Registerの I2CM_TXFIFOUTHLフィールドの設定値より少なくなった場合に本ビットが"1"にセットされます。

R/WC

3:2

-

Reserved

Reserved

-

1

I2CM_ARBLST

I2C Arbitration Lost

送信中にArbitration Lostが発生した事を示すビットです。送信中に他の I2C Masterと送信が競合したことによる調停制御で送信を停止した場合、本ビットが"1"にセットされます。Arbitration Lostを検出すると、I2C Controllerは I2C EnableをOffにしてIdle状態に戻ります。

R/WC

0

I2CM_COMP

I2C Complete

I2C ControllerによるI2C通信が正常に完了した事を示すビットです。I2C通信の正常完了で I2C BusにSTOP Conditionを送信した時、本ビットが"1”にセットされます。Arbitration LostやError検出によるSTOP Conditionの送信時には本ビットはセットされません。

R/WC

I2C Interrupt Enable Register (Offset: 0x0014)

I2C Interrupt Enable Registerは、I2C Controllerの割り込みイベントを割り込み信号に通知する設定を行うためのレジスタです。

Interrupt Enable Registerのビットが "1"にセットした時、その割り込み要因に対応する Interrupt Status Registerのビットが "1"にセットされた時、レベル割り込みが出力します。

Table 152. I2C Interrupt Enable Register ビットフィールド
bit Symbol Field Description R/W

31:13

-

Reserved

Reserved

-

12

I2CM_SCLTOENB

I2C SCL Timeout Enable

I2CM_SCLTOイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

11

I2CM_RXFIFOUDFENB

I2C RX FIFO Underflow Enable

I2CM_RXFIFOUDFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

10

I2CM_TXFIFOOVFENB

I2C TX FIFO Overflow Enable

I2CM_TXFIFOOVFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

9

I2CM_BITERENB

I2C BIT Error Enable

I2CM_BITERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

8

I2CM_ACKERENB

I2C ACK Error Enable

I2CM_ACKERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

7:6

-

Reserved

Reserved

-

5

I2CM_RXFIFOOTHENB

I2C RX FIFO Over Threshold Enable

I2CM_RXFIFOOTHイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

4

I2CM_TXFIFOUTHENB

I2C TX FIFO Under Threshold Enable

I2CM_TXFIFOUTHイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

3:2

-

Reserved

Reserved

-

1

I2CM_ARBLSTENB

I2C Arbitration Lost Enable

I2CM_ARBLSTイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

0

I2CM_COMPENB

I2C Complete Enable

I2CM_COMPイベントが発生した時に割り込み信号を発生させるかどうかを設定します。

R/W

I2C FIFO Status Register (Offset 0x0018)

I2C FIFO Status Registerは、TX FIFO/RX FIFOに格納されているデータ量を読み出すためのレジスタです。

Table 153. I2C FIFO Status Register ビットフィールド
bit Symbol Field Description R/W

31:21

-

Reserved

Reserved

-

20:16

I2CM_RXFIFOCAP

I2C RX FIFO Capacity

RX FIFOに格納されているデータ量を示すフィールドです。

RO

15:5

-

Reserved

Reserved

-

4:0

I2CM_TXFIFOCAP

I2C TX FIFO Capacity

TX FIFOに格納されているデータ量を示すフィールドです。

RO

I2C FIFO Reset Register (Offset 0x001C)

I2C FIFO Reset Registerは、TX FIFO/RX FIFOのリセットを行うためのレジスタです。 何らかの理由によりFIFOのクリアを行いたい場合にこのレジスタを使用します。

Table 154. I2C FIFO Reset Register ビットフィールド
bit Symbol Field Description R/W

31:17

-

Reserved

Reserved

-

16

I2CM_RXFIFORST

I2C RX FIFO Reset

RX FIFOをリセットするためのビットです。本ビットに"1"をセットすると、RX FIFOがリセットされデータが消去されます。

WO

15:1

-

Reserved

Reserved

-

0

I2CM_TXFIFORST

I2C TX FIFO Reset

TX FIFOをリセットするためのビットです。本ビットに"1"をセットすると、TX FIFOがリセットされデータが消去されます。

WO

I2C FIFO Threshold Level Setting Register (Offset 0x0020)

I2C FIFO Threshold Level Registerは、TX FIFO/RX FIFOのデータ量に応じた割り込み出力を行うための設定レジスタです。

Table 155. I2C FIFO Threshold Level Setting Register ビットフィールド
bit Symbol Field Description R/W

31:21

-

Reserved

Reserved

-

20:16

I2CM_RXFIFOOTHL

I2C RX FIFO Over Threshold Level

I2CM_RXFIFOOTH割り込みを発生させるRX FIFOのデータ格納量の閾値を設定するためのフィールドです。本フィールドに 0または最大値を設定した場合 I2CM_RXFIFOOTHは無効となり、割り込みは発生しません。

R/W

15:5

-

Reserved

Reserved

-

4:0

I2CM_TXFIFOUTHL

I2C TX FIFO Under Threshold Level

I2CM_TXFIFOUTH割り込みを発生させるTX FIFOのデータ格納量の閾値を設定するためのフィールドです。本フィールドに 0または最大値を設定した場合 I2CM_TXFIFOUTHは無効となり、割り込みは発生しません。

R/W

I2C SCL Timeout Setting Register (Offset 0x0024)

I2C SCL Timeout Setting Registerは、SCL Timeout割り込み発生させるための SCL Timeout時間を設定するレジスタです。

Table 156. I2C SCL Timeout Setting Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

I2CM_SCLTOPROD

I2C SCL Timeout Period

I2CM_SCLTO割り込みを発生させる SCL Low期間を設定するためのフィールドです。このフィールドには、1 us単位の Timeout時間を設定します。本フィールドを0に設定した場合は I2CM_SCLTOは無効となり、割り込みは発生しません。

R/W

I2C START Hold Timing Setting Register (Offset 0x0030)

I2C START Hold Timing Setting Registerは、I2C規格における START/Repeated START Conditionの Hold時間を設定するためのレジスタです。 このレジスタは、I2C Enable RegisterのI2CM_ENビットが"0"の時のみ書き込みが可能です。

Table 157. I2C START Hold Timing Setting Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

I2CM_THDSTA

I2C START Hold Time

START ConditionのHold時間を設定するフィールドです。このフィールドはシステムクロックのサイクル数によってタイミングを設定します。

R/W

レジスタ設定によるSTART Hold Time(tHDSTA)は、次の式で計算できます。

\[tHDSTA [s] = System\ Clock\ period\ [s] \times \left(I2CM\_THDSTA +1\right)\]

このレジスタの設定を行う場合は「I2Cタイミングパラメータの設定」も参照してください。

I2C STOP Setup Timing Setting Register (Offset 0x0034)

I2C STOP Setup Timing Setting Registerは、I2C規格における STOP ConditionのSetup時間を設定するためのレジスタです。 このレジスタは、I2C Enable RegisterのI2CM_ENビットが"0"の時のみ書き込みが可能です。

Table 158. I2C STOP Setup Timing Setting Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

I2CM_TSUSTO

I2C STOP Setup Time

STOP ConditionのSetup時間を設定するフィールドです。このフィールドはシステムクロックのサイクル数によってタイミングを設定します。

R/W

レジスタ設定によるSTOP Setup Time(tSUSTO)は、次の式で計算できます。

\[tSUSTO [s] = System\ Clock\ period\ [s] \times \left(I2CM\_TSUSTO +1\right)\]

マルチマスター構成となる場合、または、クロックストレッチ機能を持った I2Cデバイスと接続して通信する場合、このレジスタは"0x3"以上に設定してください。

このレジスタの設定を行う場合は「I2Cタイミングパラメータの設定」も参照してください。

I2C Repeated START Setup Timing Setting Register (Offset 0x0038)

I2C Repeated START Setup Timing Setting Registerは、I2C規格における Repeated START ConditionのSetup時間を設定するためのレジスタです。 このレジスタは、I2C Enable RegisterのI2CM_ENビットが"0"の時のみ書き込みが可能です。

Table 159. I2C Repeated START Setup Timing Setting Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

I2CM_TSUSTA

I2C Repeated START Setup Time

Repeated START ConditionのSetup時間を設定するフィールドです。このフィールドはシステムクロックのサイクル数によってタイミングを設定します。

R/W

レジスタ設定によるRepeated START Setup Time(tSUSTA)は、次の式で計算できます。

\[tSUSTA [s] = System\ Clock\ period\ [s] \times \left(I2CM\_TSUSTA +1\right)\]

マルチマスター構成となる場合、または、クロックストレッチ機能を持った I2Cデバイスと接続して通信する場合、このレジスタは 0x3以上に設定してください。

このレジスタの設定を行う場合は「I2Cタイミングパラメータの設定」も参照してください。

I2C Clock High Timing Setting Register (Offset 0x003C)

I2C Clock High Timing Setting Registerは、I2C規格における SCLのHigh時間を設定するレジスタです。 このレジスタは、I2C Enable RegisterのI2CM_ENビットが"0"の時のみ書き込みが可能です。

Table 160. I2C Clock High Timing Setting Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

I2CM_THIGH

I2C SCL High period

SCLのHigh時間を設定するフィールドです。このフィールドはシステムクロックのサイクル数によってタイミングを設定します。

R/W

レジスタ設定によるSCLのHigh時間(tHIGH)は、次の式で計算できます。

\[tHIGH\ [s] = System\ Clock\ period\ [s] \times \left(I2CM\_THIGH +1\right)\]

このレジスタは必ず"0x4"以上に設定する必要があります。

このレジスタの設定を行う場合は「I2Cタイミングパラメータの設定」も参照してください。

I2C Data Hold Timing Setting Register (Offset 0x0040)

I2C Data Hold Timing Setting Registerは、I2C規格における データのHold時間を設定するためのレジスタです。 このレジスタは、I2C Enable RegisterのI2CM_ENビットが"0"の時のみ書き込みが可能です。

Table 161. I2C Data Hold Timing Setting Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

I2CM_THDDAT

I2C Data Hold Time

データのHold時間を設定するフィールドです。このフィールドはシステムクロックのサイクル数によって設定します。

R/W

レジスタ設定によるData Hold Time(tHDDAT)は、次の式で計算できます。

\[tHDDAT\ [s] = System\ Clock\ period\ [s] \times \left(I2CM\_THDDAT +1\right)\]

マルチマスター構成となる場合、または、クロックストレッチ機能を持った I2Cデバイスと接続して通信する場合、このレジスタは"0x3"以上に設定してください。

このレジスタの設定を行う場合は「I2Cタイミングパラメータの設定」も参照してください。

I2C Data Setup Timing Setting Register (Offset 0x0044)

I2C Data Setup Timing Setting Registerは、I2C規格における データのSetup時間を設定するためのレジスタです。 このレジスタは、I2C Enable RegisterのI2CM_ENビットが"0"の時のみ書き込みが可能です。

Table 162. I2C Data Setup Timing Setting Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

I2CM_TSUDAT

I2C Data Setup Time

データのSetup時間を設定するフィールドです。このフィールドはシステムクロックのサイクル数によって設定します。

R/W

レジスタ設定によるData Setup Time(tSUDAT)は、次の式で計算できます。

\[tSUDAT\ [s] = System\ Clock\ period\ [s] \times \left(I2CM\_TSUDAT +1\right)\]

また、SCLのLow時間(tLOW)は、Data Hold TimeとData Setup Timeの和により決定されます。

\[tLOW\ [s] = tHDDAT\ [s] + tSUDAT\ [s]\]

このレジスタの設定を行う場合は「I2Cタイミングパラメータの設定」も参照してください。

I2C Bus Free Timing Setting Register (Offset 0x0048)

I2C Bus Free Timing Setting Registerは、I2C規格における ConditionとSTART Condition間のBus開放時間を設定するためのレジスタです。 このレジスタは、I2C Enable RegisterのI2CM_ENビットが"0"の時のみ書き込みが可能です。

Table 163. I2C Bus Free Timing Setting Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

I2CM_TBUF

I2C Bus Free Time

I2C Busの開放時間を設定するフィールドです。このフィールドはシステムクロックのサイクル数によって設定します。

R/W

レジスタ設定によるBus Free Time(tBUF)は、次の式で計算できます。

\[tBUF\ [s] = System\ Clock\ period\ [s] \times \left(I2CM\_TBUF +1\right)\]

このレジスタの設定を行う場合は「I2Cタイミングパラメータの設定」も参照してください。

I2C Bus Sampling Timing Setting Register (Offset 0x004C)

I2C Bus Sampling Timing Setting Registerは、受信データのサンプリングタイミングを設定するためのレジスタです。

SCLの立ち上がりタイミングを起点として、このレジスタに設定した遅延時間後に SDA信号のサンプリングを行います。 このレジスタは、I2C Enable RegisterのI2CM_ENビットが"0"の時のみ書き込みが可能です。

Table 164. I2C Bus Sampling Timing Setting Register ビットフィールド
bit Symbol Field Description R/W

31:16

-

Reserved

Reserved

-

15:0

I2CM_SMPLDLY

I2C Sampling Delay

SDAをサンプリングするタイミングを設定するフィールドです。このフィールドはシステムクロックのサイクル数によって設定します。

R/W

レジスタ設定によるSDAのサンプリング遅延時間は、次の式で計算できます。

\[SDA Sampling Delay\ [s] = System\ Clock\ period\ [s] \times I2CM\_SMPLDLY\]

I2C Bus Filter Setting Register (Offset 0x0050)

I2C Bus Filter Setting Registerは、I2C Bus信号の入力信号のフィルタ時間を設定するためのレジスタです。

I2C Busから入力される信号は、このレジスタで設定された値で動作するデジタルフィルターを介して後段に信号を伝えます。 フィルタ時間は、I2C規格で定められる「SDA信号と SCL信号の立ち上がり時間 (tr)」、「SDA信号と SCL信号の立ち下がり時間 (tf)」値を元に設定します。

Table 165. I2C Bus Filter Setting Register ビットフィールド
bit Symbol Field Description R/W

31:8

-

Reserved

Reserved

-

7:0

I2CM_FLTCYC

I2C Filtering Time

SDA, SCL信号のレベルが 遷移するときのフィルタリング時間を設定するフィールドです。このフィールドはシステムクロックのサイクル数によって設定します。

R/W

I2CM_FLTCYCの値は、以下の計算で算出される値を設定します。 計算結果の小数点以下は切り上げた値を設定してください。

\[I2CM\_FLTCYC = System Clock Frequency [MHz] \times Filter Timing [us] - 1\]

このレジスタの設定を行う場合は「I2Cタイミングパラメータの設定」も参照してください。

I2C Controller IP Version Register (Offset: 0xF000)

I2C Controller IPコアバージョンの管理レジスタです。

Table 166. I2C Controller IP Version Register ビットフィールド
bit Symbol Field Description R/W

31:24

MAJVER

I2C Controller IP Major Version

I2C ControllerコアのMajor Versionを示します。

RO

23:16

MINVER

I2C Controller IP Minor Version

I2C ControllerコアのMinor Versionを示します。

RO

15:0

PATVER

I2C Controller IP Patch Version

I2C ControllerコアのPatch Versionを示します。

RO

I2Cアクセス手順

この章では、I2C Controllerを使用するための、レジスタの制御手順を説明します。

初期設定操作手順例

I2C Controllerの初期設定の手順について説明します。

i2cm_init_config_seq
Figure 21. 初期設定フロー

I2C ControllerのTiming Parameterは、システムクロックが 48 MHz、Standard-mode(ビットレート:100Kb/s)でのI2C通信に合わせて初期設定がされています。システムクロックが 48 MHz、Fast-mode(ビットレート:400Kb/s)で通信を行う場合はタイミングパラメータの設定変更を省略し、手順例8から設定を進めることが出来ます。それ以外の場合は、タイミングパラメータの設定変更(手順例1~7)を行う必要があります。

手順例 1〜8のタイミングパラメータの設定順序に制限は無いため、この手順と異なる順序で設定しても問題ありません。タイミングパラメータ設定の詳細や、各モードにおける設定例については「I2Cタイミングパラメータの設定」を参照してください。

  1. I2C START Hold Timing Setting Registerの設定を行います。

  2. I2C STOPSetup Timing Setting Registerの設定を行います。

  3. I2C Repeated START Setup Timing Setting Registerの設定を行います。

  4. I2C Clock High Timing Setting Registerの設定を行います。

  5. I2C Data Hold Timing Setting Registerの設定を行います。

  6. I2C Data Setup Timing Setting Registerの設定を行います。

  7. I2C Bus Free Timing Setting Registerの設定を行います。

  8. I2C Bus Filter Setting Registerの設定を行います。

  9. I2C Interrupt Enable Registerの使用する割り込みステータスのイネーブルビットを"1"に設定します。

  10. I2C Enable RegisterのI2CM_ENビットを"1"に設定し、I2C Controllerを有効化します。

I2Cタイミングパラメータの設定

I2C ControllerによるI2C通信タイミングは、以下のレジスタ設定により決まります。

  • I2C START Hold Timing Setting Register: START ConditionおよびRepeatedSTART ConditionのHold時間

  • I2C STOP Setup Timing Setting Register: STOP ConditionのSetup時間

  • I2C Repeated START Setup Timing Setting Register: Repeated START ConditionのSetup時間

  • I2C Clock High Timing Setting Register: I2Cクロック(SCL)のHigh期間

  • I2C Data Hold Timing Setting Register: I2Cデータ(SDA)のHold時間

  • I2C Data Setup Timing Setting Register: I2Cデータ(SDA)のSetup時間

  • I2C Bus Free Timing Setting Register: STOP ConditionからSTART Condition間のBus Free時間

初期状態ではシステムクロック 48 MHz、Standard-mode(100Kb/s)で通信を行う場合のタイミングに設定されています。接続する I2Cデバイスが対応する通信レートやモードに応じ変更することが出来ます。

各タイミングパラメータの設定により生成される、I2C Controllerのタイミングを以下に示します。

i2cm_timing
Figure 22. I2Cバスタイミング
i2cm_timing_repsta
Figure 23. I2Cバスタイミング(Repeated Start)

I2Cクロック(SCL)のLow期間(tLOW)は、I2Cデータ(SDA)のSetup/Hold時間 (I2CM_TSUDAT, I2CM_THDDAT) の Total 時間となります。I2C通信の1ビットは、I2Cクロック(SCL)のHigh期間(I2CM_THIGH)と I2Cクロック(SCL)のLow期間(tLOW)のTotal時間となります。

システムクロックが96MHz, 48MHz, 24MHzにおいて、Standard-mode(100Kb/s)、Fast-mode(400Kb/s)、Fast-mode Plus(1Mb/s)で通信する場合の、タイミングパラメータ設定値の例を以下にします。

Table 167. I2C Controller タイミングパラメータの設定例 (システムクロック 96 MHz)
Parameter Standard-mode(100Kb/s) Fast-mode(400Kb/s) Fast-mode Plus(1Mb/s)

I2CM_THDSTA[15:0]

0x01DF(5us)

0x0063(1.04us)

0x0027(0.42us)

I2CM_TSUSTO[15:0]

0x01DF(5us)

0x0063(1.04us)

0x0027(0.42us)

I2CM_TSUSTA[15:0]

0x022F(5.83us)

0x0063(1.04us)

0x0027(0.42us)

I2CM_THIGH[15:0]

0x01CB(4.79us)

0x0072(1.20us)

0x002D(0.48us)

I2CM_THDDAT[15:0]

0x0027(0.42us)

0x0009(0.10us)

0x0003(0.04us)

I2CM_TSUDAT[15:0]

0x01CB(4.79us)

0x0072(1.20us)

0x002D(0.48us)

I2CM_TBUF[15:0]

0x022F(5.83us)

0x008B(1.46us)

0x0037(0.58us)

I2CM_FLTCYC[7:0]

0x5F(1000ns)

0x1C(302ns)

0x0B(125ns)

Table 168. I2C Controller タイミングパラメータの設定例 (システムクロック 48 MHz)
Parameter Standard-mode(100Kb/s)[default] Fast-mode(400Kb/s) Fast-mode Plus(1Mb/s)

I2CM_THDSTA[15:0]

0x00EF(5us)

0x0031(1.04us)

0x0013(0.42us)

I2CM_TSUSTO[15:0]

0x00EF(5us)

0x0031(1.04us)

0x0013(0.42us)

I2CM_TSUSTA[15:0]

0x0117(5.83us)

0x0031(1.04us)

0x0013(0.42us)

I2CM_THIGH[15:0]

0x00E5(4.79us)

0x0039(1.21us)

0x0015(0.46us)

I2CM_THDDAT[15:0]

0x0013(0.42us)

0x0004(0.10us)

0x0003(0.08us)

I2CM_TSUDAT[15:0]

0x00E5(4.79us)

0x0039(1.21us)

0x0015(0.46us)

I2CM_TBUF[15:0]

0x0117(5.83us)

0x0045(1.46us)

0x001B(0.58us)

I2CM_FLTCYC[7:0]

0x2F(1000ns)

0x0E(312ns)

0x05(125ns)

Table 169. I2C Controller タイミングパラメータの設定例 (システムクロック 24 MHz)
Parameter Standard-mode(100Kb/s) Fast-mode(400Kb/s) Fast-mode Plus(1Mb/s)

I2CM_THDSTA[15:0]

0x0077(5us)

0x0018(1.04us)

0x0009(0.42us)

I2CM_TSUSTO[15:0]

0x0077(5us)

0x0018(1.04us)

0x0009(0.42us)

I2CM_TSUSTA[15:0]

0x008B(5.83us)

0x0018(1.04us)

0x0009(0.42us)

I2CM_THIGH[15:0]

0x0072(4.79us)

0x001B(1.17us)

0x0009(0.42us)

I2CM_THDDAT[15:0]

0x0009(0.42us)

0x0003(0.17us)

0x0003(0.17us)

I2CM_TSUDAT[15:0]

0x0072(4.79us)

0x001B(1.17us)

0x0009(0.42us)

I2CM_TBUF[15:0]

0x008B(5.83us)

0x0022(1.46us)

0x000D(0.58us)

I2CM_FLTCYC[7:0]

0x17(1000ns)

0x07(333ns)

0x02(125us)

制限事項:

  1. データ処理に必要な時間として、I2C Clock High Timing Setting Register(I2CM_THIGH)の設定値は、必ず0x0004以上となるように設定してください。

  2. マルチマスター構成となる場合、または クロックストレッチ機能を持ったI2Cデバイスと接続して通信する場合、以下のレジスタの設定値は、I2Cクロックの同期処理に必要な時間を確保するため0x0003以上となるように設定する必要があります。

    • I2C STOP Setup Timing Setting Register(I2CM_TSUSTO)

    • I2C Repeated START Setup Timing Setting Register(I2CM_TSUSTA)

    • I2C Data Hold Timing Setting Register(I2CM_THDDAT)

I2C通信操作手順例

この章では、I2C通信を行うための I2C Controllerのレジスタ制御手順を説明します。

I2C Controllerは、マルチマスターに対応する実装のため、I2C Controllerと I2Cバスを切り離す機能と、I2C Busを監視する機能を持っています。この仕様により、I2C Enable RegisterのI2CM_ENビットが"1"で、且つ I2C BusがIdle状態の時のみ I2C通信を開始することができます。 I2CM_ENビットが"0"、または、I2C BusがIdle状態でない場合は、I2C TX FIFO Registerにデータが書き込まれても I2C通信を開始せず、I2CM_ENビットが"1"、かつ、I2C BusがIdle状態になるまで Waitします。

これ以降のレジスタアクセス手順は、I2CM_ENビットが "1"で I2C Busが Idle状態である事を前提に記載しています。

データ書き込み操作手順

本章では I2Cデバイスへのデータ書き込みを行う場合の手順を説明します。

I2Cデバイスへデータ書き込みを行う場合の I2C Busの波形を以下に示します。

i2cm_write_acc_seq
Figure 24. I2C書き込みアクセス波形
  • A: TX FIFO(I2C TX FIFO RegisterのI2CM_TXDATAフィールド)の Bit7-1に I2Cデバイスのアドレスと Bit0(R/Wビット)に"0"(送信モード)を書き込みます。 I2C ControllerはI2C書き込み動作を開始し、I2C BusにStart Condition, TX FIFOに書き込まれたアドレス, R/Wビットの順に送信します。 データ送信後の次のサイクルは I2Cデバイスからの ACK受信を行います。

  • B: 送信するデータを送信順に 1Byte単位でTX FIFOに書き込みます。 書き込みが完了したデータから、順次 I2C Busに送信されます。 なお、I2Cデバイスからの ACK受信は 1 Byte毎に毎回行います。

  • C: 最終 Byteの送信データを TX FIFOに書き込む時、同時に I2C TX FIFO RegisterのI2CM_STOPビットに"1"をセットします。 I2C Controllerは、最終 Byteのデータ送信と ACK受信の完了後に、I2C BusにSTOP Conditionを送信し、I2C Interrupt Status Registerの I2CM_COMP割り込みをセットして、書き込み動作を完了します。

具体的な例として、I2Cデバイスのアドレス 0x67に、0x89, 0xAB, 0xCD, 0xEFのデータを書き込む場合には、I2C TX FIFO Registerに以下の書き込みを行います。

  1. Register Write, Address Offset: 0x0004, Write Data: 0x000000CE

  2. Register Write, Address Offset: 0x0004, Write Data: 0x00000089

  3. Register Write, Address Offset: 0x0004, Write Data: 0x000000AB

  4. Register Write, Address Offset: 0x0004, Write Data: 0x000000CD

  5. Register Write, Address Offset: 0x0004, Write Data: 0x000001EF

TX FIFOの容量を超えるサイズのデータを送信する場合は、TX FIFOがOverflowしないよう書き込み間隔を調整する必要があります。 TX FIFOのデータ格納量のステータスは、I2C FIFO Status Registerや TX FIFO関連の割り込みにより、ソフトウェアから確認することができます。 I2C書き込み動作中に、I2CM_STOPビットがセットされない状態でTX FIFOが Emptyとなった場合、I2C通信を一時停止します。 この時、TX FIFOに送信データが書き込まれると、I2C通信を再開します。

次にRepeated Start Conditionを使用した書き込みアクセスの手順を説明します。 この手順はデバイスアドレスとは別にレジスタアドレスを持つ I2Cデバイスとの通信時などで使用します。

i2cm_write_acc_seq_repsta
Figure 25. Repeated Startを使用したI2C書き込みアクセス波形
  • A: 前の手順と同様に TX FIFOのBit7-1に I2Cデバイスのアドレス、Bit0(R/Wビット)に"0"(送信モード)を書き込みます。

  • B: TX FIFOに 送信データの書き込み(ここではI2Cデバイスのレジスタアドレスとします)と同時に、I2C TX FIFO RegisterのI2CM_RESTARTビットに"1"をセットします。 I2C Controllerはレジスタアドレスの送信後のACK受信が完了すると、Repeated Start Conditionを送信します。

  • C: Aの手順と同様、再度TX FIFOのBit7-1に I2Cデバイスのアドレスと、Bit0(R/Wビット)に"0"(送信モード)を書き込みます。

  • D: 送信するデータを 1 Byte単位で送信順にTX FIFOに書き込みます。

  • E: 最終 Byteの送信データを TX FIFOに書き込む時、同時にI2C TX FIFO Registerの I2CM_STOPビットに"1"をセットします。

具体的な例として、アドレス 0x67のI2Cデバイスのレジスタアドレス 0xFEに、0xDC、0xBA、0x98、0x76、0x54のデータを書き込む場合には、I2C TX FIFO Registerに以下の書き込みを行います。

  1. Register Write, Address Offset: 0x0004, Write Data: 0x000000CE

  2. Register Write, Address Offset: 0x0004, Write Data: 0x000002FE

  3. Register Write, Address Offset: 0x0004, Write Data: 0x000000CE

  4. Register Write, Address Offset: 0x0004, Write Data: 0x000000DC

  5. Register Write, Address Offset: 0x0004, Write Data: 0x000000BA

  6. Register Write, Address Offset: 0x0004, Write Data: 0x00000098

  7. Register Write, Address Offset: 0x0004, Write Data: 0x00000076

  8. Register Write, Address Offset: 0x0004, Write Data: 0x00000154

データ読み出し操作手順

本章では I2Cデバイスからのデータ読み出しを行う場合の手順を説明します。

I2Cデバイスからデータ読み出しを行う場合の I2C Busの波形を以下に示します。

i2cm_read_acc_seq
Figure 26. I2C読み出しアクセス波形
  • A: TX FIFO(I2C TX FIFO RegisterのI2CM_TXDATAフィールド)のBit7-1に I2Cデバイスのアドレス7と、Bit0(R/Wビット)に"1"を書き込みます。 I2C ControllerはI2C読み出し動作を開始し、I2C BusにStart Condition送信後、TX FIFOに書き込まれたアドレスとR/Wビットを送信します。 データ送信後の次のサイクルは I2Cデバイスからの ACK受信を行います。

  • B: 受信するデータのByte数から 1を引いた値をTX FIFOに書き込みます。 この時、同時に I2C TX FIFO RegisterのI2CM_STOPビットに"1"をセットします。 TX FIFOに設定されたByte数分のデータ受信を行い、受信データを RX FIFOへ格納します。 なお、I2Cデバイスから 1 Byteのデータを受信するたびに I2Cデバイスへの ACK送信を行います。

  • C: I2C Controllerは、最終 Byteのデータ受信後 NACKを送信し、I2C BusにStop Conditionを送信します。 また同時に、I2C Interrupt Status RegisterのI2CM_COMP割り込みをセットして、読み出し動作を完了します。

    I2C Controllerは、最終 Byteのデータ送信と ACK受信の完了後に、I2C BusにSTOP Conditionを送信し、I2C Interrupt Status Registerの I2CM_COMP割り込みをセットして、書き込み動作を完了します。

具体的な例として、I2Cデバイスのアドレス 0x67から 4 Byteのデータ読み出す場合は、I2C TX FIFO Registerに以下の書き込みを行います。

  1. Register Write, Address Offset: 0x0004, Write Data: 0x000000CF

  2. Register Write, Address Offset: 0x0004, Write Data: 0x00000103

受信データはI2C RX FIFO Registerを読み出すことにより取得できます。 I2C読み出し動作中に、設定したByte数のデータ受信が完了しない状態で RX FIFOが Fullとなった場合、I2C通信を一時停止します。 この時、RX FIFOから受信データが読み出されると、I2C通信を再開します。 RX FIFOの容量を超えるサイズのデータを受信する場合は、RX FIFOのサイズを考慮し RX FIFOから定期的にデータ読み出す必要があります。 RX_FIFOのデータ格納量のステータスは、I2C FIFO Status Registerや RX_FIFO関連の割り込みにより、ソフトウェアから確認することができます。

次にRepeated Start Conditionを使用した読み出しアクセスの手順を説明します。 この手順はデバイスアドレスとは別にレジスタアドレスを持つ場合や、10ビットアドレスの I2Cデバイスとの通信時に使用します。

i2cm_read_acc_seq_repsta
Figure 27. Repeated Startを使用したI2C読み出しアクセス波形
  • A: 前の手順と同様に、TX FIFOのBit7-1に I2Cデバイスのアドレス、Bit0(R/Wビット)に"0"(送信モード)を書き込みます。

  • B: TX FIFOに送信データの書き込み(ここではI2Cデバイスのレジスタアドレスとします)と同時に、I2C TX FIFO RegisterのI2CM_RESTARTビットに"1"をセットします。 I2C Controllerはレジスタアドレスの送信後のACK受信が完了すると、Repeated Start Conditionを送信します。

  • C: TX FIFOのBit7-1に I2Cデバイスのアドレスと、Bit0(R/Wビット)に"1"を書き込みます。

  • D: 受信するデータの Byte数から 1を引いた値のTX FIFOに書き込みます。この時 同時にI2C TX FIFO RegisterのI2CM_STOPビットに"1"をセットします。

具体的な例として、アドレス 0x67のI2Cデバイスのレジスタアドレス 0xFEから 5 Byteのデータ読み出しを行いたい場合は、I2C TX FIFO Registerに以下の書き込みを行います。

  1. Register Write, Address Offset: 0x0004, Write Data: 0x000000CE

  2. Register Write, Address Offset: 0x0004, Write Data: 0x000002FE

  3. Register Write, Address Offset: 0x0004, Write Data: 0x000000CF

  4. Register Write, Address Offset: 0x0004, Write Data: 0x00000104

AXI SPI LogicCORE

AXI SPI は、SPI転送を行うためのIPコアです。 このコアは標準イメージにおいて、ユーザーが設計する Mission Bus Systemに実装されています。

採用するIPコアの正式名称は AXI Quad SPI LogicCORE IPですが、Single SPIモードでのみ動作する事ができます。

このコアは以下のアドレスに配置されています。

Table 170. AXI SPI Base Address
IP Core Base Address

AXI SPI

0x5008_0000

IPコアの詳細やレジスタの仕様については、AMD (旧Xilinx)が提供する PG153 AXI Quad SPI LogicCORE IP Product Guideを参照してください。

AXI SPIに設定されているパラメータは以下の通りです。

Table 171. AXI SPIパラメータ設定
Parameter Value Description

Enable XIP Mode

0

エンハンストモード (XIP Mode disable)

Enable Performance Mode

0

レガシモード (AXI4-Lite I/F)

SPI Mode

0

スタンダード SPI

Transaction Width

8

8bit単位による SPI転送

Frequency Ratio

2

SCK出力が外部 SPIクロック入力の 2分周 (4.8MHz)

No. of Slaves

3

スレーブデバイス数: 3

Enable Master Mode

1

マスター SPIモード

Slave Device

0

対応するスレーブデバイスの種類: Mixed

FIFO Depth

16

FIFOの深さ: 16

Enable STARTUP Primitive

0

STARTUPプリミティブ: 未使用

Enable Async Clock Mode

1

AXIクロック入力と外部 SPIクロック入力が非同期

AXI GPIO LogicCORE

AXI GPIO は、General Purpose IOコアです。 このコアは標準イメージにおいて、ユーザーが設計する Mission Bus Systemに実装されています。

このコアは以下のアドレスに配置されています。

Table 172. AXI GPIO Base Address
IP Core Base Address

AXI GPIO

0x5009_0000

IPコアの詳細やレジスタの仕様については、AMD (旧Xilinx)が提供する PG144 ACI GPIO LogicCore IP Product Guideを参照してください。

AXI GPIOに設定されているパラメータは以下の通りです。

Table 173. AXI GPIOパラメータ設定
Parameter Value Description

GPIO Width

16

GPIOチャネルのビット幅

Enable Interrupt

1

割り込み機能: 有効

User IOに接続されている GPIOは 10bitですが、レジスタの制御ビットと User IOのピン番号が一致するよう設計されています。 そのため、AXI GPIOの bit 5:0は無効です。


1. CPUとして Cortex-M3を採用するシステムでは、この設定は禁止です