System Register
System Registerは、SC-OBC-A1 FPGAのシステム制御を司るレジスタで構成されるモジュールです。
レジスタ詳細
System Registerは、Base Address 0x4F00_0000に配置されています。
| Offset | Symbol | Register | Initial |
|---|---|---|---|
0x0000 |
SYSREG_CODEMSEL |
Code Memory Select Register |
0x00000001 |
0x0004 |
SYSREG_SYSCLKCTL |
System Clock Control Register |
0x00000001 |
0x0008 |
SYSREG_PLLINFO |
PLL Information 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度だけ制御する事を想定しています。
| bit | Symbol | Field | Description | R/W |
|---|---|---|---|---|
31:16 |
ITCMENPKC |
Protect Keycode |
ITCMENビットの書き込みプロテクトフィールドです。 |
WO |
15:1 |
- |
Reserved |
Reserved |
- |
0 |
ITCMEN |
ITCM Enable |
メモリ空間のアドレス0x00000000にマッピングされるメモリを選択します。 |
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)の設定は禁止です。
| bit | Symbol | Field | Description | R/W |
|---|---|---|---|---|
31:2 |
- |
Reserved |
Reserved |
- |
1:0 |
CLKMODE |
CLKMODE Control |
システムのクロックモードを制御します。設定値とクロック周波数の関係は "CLKMODE設定と PLL状態 及び クロック周波数の関係"を参照してください。 |
R/W |
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 Information Register (Offset 0x0008)
PLL Information Registerは、システムクロックの設定状況を示すレジスタです。 ソフトウェアはこのレジスタの値から、現在のシステムクロックの周波数を計算する事ができます。
| bit | Symbol | Field | Description | R/W |
|---|---|---|---|---|
31:16 |
PLLMULT |
PLL Multiple Rate |
システムクロックを生成するPLLの現在の逓倍率を示すフィールドです。 |
RO |
15:0 |
PLLDIV |
PLL Divide Rate |
システムクロックを生成するPLLの現在の分周率を示すフィールドです。 |
RO |
システムクロック周波数は PLL Information Registerから読み出した値を使い以下の式で計算する事ができます。
Configuration Flash Memory Register (Offset 0x0010)
Configuration Flash Memory Registerは SC-OBC-A1 Moduleに実装される 2つの Configuration Flash Memory (NOR FLash Memory)に関する制御を行うためのレジスタです。
| 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"にクリアされている時のみ、このビットが有効になります。 |
R/W |
3:1 |
- |
Reserved |
Reserved |
- |
0 |
CFGMEMOWNER |
Configuration Flash Memory Owner |
Configuration Flash Memoryの選択をレジスタによって選択するか、QSPIコアによって選択するかを決定するフィールドです。 |
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 Registerの Boot History Status Registerの値を読み出すことができます。 起動後に このレジスタを読み出す事で、マルチブート機能によって Configurationした FPGAの起動状態を読み出す事ができます。
| 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を示します。 |
RO |
8 |
VALID_1 |
Status 1 Valid |
Boot Status 0が有効である事を示します。Fallbackしたとき、このビットはセットされます。
0: 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を示します。 |
RO |
0 |
VALID_0 |
Status 0 Valid |
Boot 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が実行されます。
| 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命令を実行してください。
| 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の状態を設定します。 |
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ビットが変更された時に発行されるシステムリセットでは、このレジスタはクリアされません。
| bit | Symbol | Field | Description | R/W |
|---|---|---|---|---|
31:0 |
SPAD1 |
Scratchpad 1 |
32bitのScratchpadフィールドです。 |
R/W |
| bit | Symbol | Field | Description | R/W |
|---|---|---|---|---|
31:0 |
SPAD2 |
Scratchpad 2 |
32bitのScratchpadフィールドです。 |
R/W |
| bit | Symbol | Field | Description | R/W |
|---|---|---|---|---|
31:0 |
SPAD3 |
Scratchpad 3 |
32bitのScratchpadフィールドです。 |
R/W |
| 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コアバージョンの管理レジスタです。
| 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を示します。
| 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の値を知る事ができます。
| bit | Symbol | Field | Description | R/W |
|---|---|---|---|---|
31:7 |
DNALSB |
Device DNA LSB side |
Device DNAの bit 31:7が格納されるレジスタです。 |
RO |
6:0 |
- |
Reserved |
Reserved |
- |
| bit | Symbol | Field | Description | R/W |
|---|---|---|---|---|
31:0 |
DNAMSB |
Device DNA MSB side |
Device DNAの bit 63:32が格納されるレジスタです。 |
RO |