高速マイクロファミリから超高速フラッシュマイクロコントローラへのアプリケーションの移植

要約

高速マイクロコントローラ(DS80C310/DS80C320/DS80C323/DS8xC520)を使用する古い8051設計を新しい超高速フラッシュマイクロコントローラ(DS89C430/DS89C450)にアップグレードする数多くの理由があります。アップグレードする動機には、高性能化、追加の機能とペリフェラル、内蔵フラッシュメモリのフレキシビリティがあります。このアプリケーションノートは、この2つのマイクロコントローラファミリのいくつかの重要な違いについて検討し、高速デバイスから超高速デバイスへのアップグレード方法について説明します。

概要

マキシムの高速マイクロコントローラファミリには、8051のオリジナルのマシンサイクル当り12クロックの速度に比べ、マシンサイクル当り4クロックの高速レートで命令を実行する多種多様な8051マイクロコントローラがあります。DS80C310などの一部の高速マイクロコントローラは、外付けプログラムメモリから完全に動作し、DS87C520/DS83C520などは、内蔵EPROMまたはROMプログラムメモリを搭載しています。これらの高速デバイスはすべて、既存の8051マイクロコントローラとピンコンパチブルであるため、大部分の場合、高速化されたデバイスにドロップインし、マイナーなソフトウェア調整を単に行うことによって、設計をアップグレードすることができます。

同様に、超高速フラッシュマイクロコントローラは、高速マイクロコントローラ設計用のドロップインアップグレードとして使用することができます。DS89C430/DS89C450を含むこれらの新しいパワフル化したマイクロコントローラは、拡張された内蔵プログラムフラッシュメモリ(最大64kB)、およびオリジナル8051設計よりも最大12倍の速度向上のシングルクロックサイクルで命令を実行可能な再設計された超高速マイクロコントローラコアという、重要な改善を提供します。

このアプリケーションノートは、高速マイクロコントローラから超高速フラッシュデバイスにアップグレードする方法について検討します。また、この記事は、設計のアップグレード時に考慮すべき機能セット、ピン配置詳細、およびSFR変更における違いについても概略しています。

一般参考文献

次の各デバイスの一般プログラミングガイドラインについては、「高速マイクロコントローラのユーザガイド(High-Speed Microcontroller User's Guide)」(PDF)を参照してください。

次の各デバイスの一般プログラミングガイドラインについては、「超高速マイクロコントローラのユーザガイド(Ultra-High-Speed Flash Microcontroller User's Guide)」(PDF)を参照してください。

基本デバイス機能

表1. デバイス機能の比較

機能 DS80C310 DS80C320
DS80C323
DS87C520
DS83C520
DS89C430
DS89C450
マシンサイクル当りクロック 4 4 4 1
動作電圧範囲(V) 4.5 to 5.5 4.25 to 5.5 (DS80C320)
2.7 to 5.5 (DS80C323)
4.5 to 5.5 4.5 to 5.5
クロックレート(MHz、max) 33 33 (DS80C320)
18 (DS80C323)
33 33
命令実行時間(ns、min) 121 121 (DS80C320)
222 (DS80C323)
121 30
水晶逓倍器       √ (x2 or x4)
リング発振器  
内蔵プログラムメモリ None None 16kB 16kB (DS89C430)
64kB (DS89C450)
内蔵レジスタメモリ(バイト) 256 256 256 256
内蔵MOVXメモリ None None 1kB 1kB
シリアルポート(UART) 1 2 2 2
外部割込み 6 6 6 6
ポート端子(バスアクティブ) 16 16 16 16
ポート端子(max) 16 16 32 32
タイマー/カウンタ Three/16-bit Three/16-bit Three/16-bit Three/16-bit
ウォッチドッグ  
デュアルデータポインタ
自動インクリメント/デクリメント      
ストップモード
パワーオンリセット
パワーフェイル割込み  

デバイスのピン配置図

表2. デバイスピン配置の違い

DIP PLCC TQFP DS80C310 DS80C320
DS80C323
DS87C520
DS83C520
DS89C430
DS89C450
1 2 40 P1.0 (T2) P1.0 (T2) P1.0 (T2) P1.0 (T2)
2 3 41 P1.1 (T2EX) P1.1 (T2EX) P1.1 (T2EX) P1.1 (T2EX)
3 4 42 P1.2 P1.2 (RXD1) P1.2 (RXD1) P1.2 (RXD1)
4 5 43 P1.3 P1.3 (TXD1) P1.3 (TXD1) P1.3 (TXD1)
5 6 44 P1.4 (INT2) P1.4 (INT2) P1.4 (INT2) P1.4 (INT2)
6 7 1 P1.5 (nINT3) P1.5 (nINT3) P1.5 (nINT3) P1.5 (nINT3)
7 8 2 P1.6 (INT4) P1.6 (INT4) P1.6 (INT4) P1.6 (INT4)
8 9 3 P1.7 (nINT5) P1.7 (nINT5) P1.7 (nINT5) P1.7 (nINT5)
9 10 4 RST RST RST RST
10 11 5 P3.0 (RXD0) P3.0 (RXD0) P3.0 (RXD0) P3.0 (RXD0)
11 13 7 P3.1 (TXD0) P3.1 (TXD0) P3.1 (TXD0) P3.1 (TXD0)
12 14 8 P3.2 (nINT0) P3.2 (nINT0) P3.2 (nINT0) P3.2 (nINT0)
13 15 9 P3.3 (nINT1) P3.3 (nINT1) P3.3 (nINT1) P3.3 (nINT1)
14 16 10 P3.4 (T0) P3.4 (T0) P3.4 (T0) P3.4 (T0)
15 17 11 P3.5 (T1) P3.5 (T1) P3.5 (T1) P3.5 (T1)
16 18 12 P3.6 (nWR) P3.6 (nWR) P3.6 (nWR) P3.6 (nWR)
17 19 13 P3.7 (nRD) P3.7 (nRD) P3.7 (nRD) P3.7 (nRD)
18 20 14 XTAL2 XTAL2 XTAL2 XTAL2
19 21 15 XTAL1 XTAL1 XTAL1 XTAL1
20 22, 23 16, 17 GND GND GND GND
1 39 GND N/C (can be connected to GND if desired) GND GND
21 24 18 A8 (P2.0) A8 (P2.0) A8 (P2.0) A8 (P2.0)
22 25 19 A9 (P2.1) A9 (P2.1) A9 (P2.1) A9 (P2.1)
23 26 20 A10 (P2.2) A10 (P2.2) A10 (P2.2) A10 (P2.2)
24 27 21 A11 (P2.3) A11 (P2.3) A11 (P2.3) A11 (P2.3)
25 28 22 A12 (P2.4) A12 (P2.4) A12 (P2.4) A12 (P2.4)
26 29 23 A13 (P2.5) A13 (P2.5) A13 (P2.5) A13 (P2.5)
27 30 24 A14 (P2.6) A14 (P2.6) A14 (P2.6) A14 (P2.6)
28 31 25 A15 (P2.7) A15 (P2.7) A15 (P2.7) A15 (P2.7)
29 32 26 nPSEN nPSEN nPSEN nPSEN
30 33 27 ALE ALE ALE ALE/nPROG
31 35 29 nEA nEA nEA nEA
32 36 30 AD7 AD7 AD7 (P0.7) AD7 (P0.7)
33 37 31 AD6 AD6 AD6 (P0.6) AD6 (P0.6)
34 38 32 AD5 AD5 AD5 (P0.5) AD5 (P0.5)
35 39 33 AD4 AD4 AD4 (P0.4) AD4 (P0.4)
36 40 34 AD3 AD3 AD3 (P0.3) AD3 (P0.3)
37 41 35 AD2 AD2 AD2 (P0.2) AD2 (P0.2)
38 42 36 AD1 AD1 AD1 (P0.1) AD1 (P0.1)
39 43 37 AD0 AD0 AD0 (P0.0) AD0 (P0.0)
40 44 38 VCC (+5V) VCC +5V (DS80C320)
VCC +3V (DS80C323)
VCC (+5V) VCC (+5V)
12 6 N/C N/C N/C VCC (+5V)
34 28 N/C N/C N/C GND

デバイスレジスタ

表3. SFRマップの比較

Address DS80C310 DS80C320
DS80C323
DS87C520
DS83C520
DS89C430
DS89C450
80h P0 P0
81h SP SP SP SP
82h DPL DPL DPL DPL
83h DPH DPH DPH DPH
84h DPL1 DPL1 DPL1 DPL1
85h DPH1 DPH1 DPH1 DPH1
86h DPS DPS DPS DPS
87h PCON PCON PCON PCON
88h TCON TCON TCON TCON
89h TMOD TMOD TMOD TMOD
8Ah TL0 TL0 TL0 TL0
8Bh TL1 TL1 TL1 TL1
8Ch TH0 TH0 TH0 TH0
8Dh TH1 TH1 TH1 TH1
8Eh CKCON CKCON CKCON CKCON
90h P1 P1 P1 P1
91h EXIF EXIF EXIF EXIF
96h CKMOD
98h SCON SCON0 SCON0 SCON0
99h SBUF SBUF0 SBUF0 SBUF0
9Dh ACON
A0h P2 P2 P2 P2
A8h IE IE IE IE
A9h SADDR0 SADDR0 SADDR0 SADDR0
AAh SADDR1 SADDR1 SADDR1
B0h P3 P3 P3 P3
B1h IP1
B8h IP IP IP IP0
B9h SADEN0 SADEN0 SADEN0 SADEN0
BAh SADEN1 SADEN1 SADEN1
C0h SCON1 SCON1 SCON1
C1h SBUF1 SBUF1 SBUF1
C2h ROMSIZE ROMSIZE
C4h PMR PMR
C5h STATUS STATUS STATUS STATUS
C7h TA TA TA
C8h T2CON T2CON T2CON T2CON
C9h T2MOD T2MOD T2MOD T2MOD
CAh RCAP2L RCAP2L RCAP2L RCAP2L
CBh RCAP2H RCAP2H RCAP2H RCAP2H
CCh TL2 TL2 TL2 TL2
CDh TH2 TH2 TH2 TH2
D0h PSW PSW PSW PSW
D5h FCNTL
D6h FDATA
D8h WDCON WDCON WDCON WDCON
E0h ACC ACC ACC ACC
E8h EIE EIE EIE EIE
F0h B B B B
F1h EIP1
F8h EIP EIP EIP EIP0

表4. SFR機能の違い
SFR Bit(s) Differences
P0 DS8xC520/DS89C430/DS89C450 only; controls Port 0 pins.
DPS 4 (AID) DS89C430/DS89C450 only; controls the autoincrement/decrement function for the active data pointer.
5 (TSL) DS89C430/DS89C450 only; enables automatic toggling between data pointers after certain opcodes.
6 (ID0) DS89C430/DS89C450 only; controls the effect of INC DPTR (increment or decrement) on DPTR.
7 (ID1) DS89C430/DS89C450 only; controls the effect of INC DPTR (increment or decrement) on DPTR1.
PCON 4 (OFDE) DS89C430/DS89C450 only; crystal oscillator fail detection enable.
5 (OFDF) DS89C430/DS89C450 only; crystal oscillator fail detection flag.
CKCON 7 (WD1)
6 (WD0)
On all devices except the DS80C310; these bits control the watchdog timer period.
EXIF 0 (BGS) On all devices except the DS80C310; this bit enables/disables the bandgap reference during stop mode.
1 (RGSL) On all devices except the DS80C310; this bit controls execution from the ring oscillator during the crystal warmup period.
2 (RGMD) On all devices except the DS80C310; this flag indicates the current clock source (ring or crystal).
3 DS8xC520 (XT/nRG); selects the ring oscillator or crystal as the desired clock source.
DS89C430/DS89C450 (CKRY); indicates that the crystal oscillator or crystal multiplier has completed its warmup period.
CKMOD 3 (T0MH) DS89C430/DS89C450 only; allows Timer 0 to run directly from the system clock (clock/1).
4 (T1MH) DS89C430/DS89C450 only; allows Timer 1 to run directly from the system clock (clock/1).
5 (T2MH) DS89C430/DS89C450 only; allows Timer 2 to run directly from the system clock (clock/1).
ACON 5 (PAGES0)
6 (PAGES1)
DS89C430/DS89C450 only; selects the page-mode configuration for external bus operations.
7 (PAGEE) DS89C430/DS89C450 only; enables page mode (as opposed to the standard 8051 expanded bus mode) for external bus operations.
IE 6 (ES1) On all devices except the DS80C310; this bit enables/disables the serial port 1 interrupt.
SADDR1 On all devices except the DS80C310; this register controls the slave address for serial port 1.
IP1 DS89C430/DS89C450 only; this register combines with the settings in IP0/IP to provide four priority-level settings for each interrupt (as opposed to two settings with IP only).
SADEN1 On all devices except the DS80C310; this register sets the slave address mask for serial port 1.
SCON1 On all devices except the DS80C310; this register controls mode settings for serial port 1.
SBUF1 On all devices except the DS80C310; this register provides the input/output buffer for serial port 1.
ROMSIZE 2:0 (RMS2:0) DS8xC520/DS89C430/DS89C450 only; selects the range of on-chip EPROM/flash that maps into program space.
3 (PRAME) DS89C430/DS89C450 only; enables/disables mapping of the 1kB internal RAM into program space.
PMR 1:0 (DME1:0) DS8xC520/DS89C430/DS89C450 only; controls mapping of internal data memory into data space.
2 DS8xC520 (ALEOFF); when set to 1, disables ALE during on-board memory access.
DS89C430/DS89C450 (ALEON); when set to 0, disables ALE during on-board memory access.
3 DS8xC520 (XTOFF); when set to 1, disables the crystal oscillator (must run from ring).
DS89C430/DS89C450 (4X/n2X); sets the mode for the crystal multiplier.
4 (CTM) DS89C430/DS89C450 only; when set to 1, enables the crystal multiplier.
5 (SWB) DS8xC520/DS89C430/DS89C450 only; when set to 1, enables automatic switchback mode.
7:6 (CD1:0) DS8xC520/DS89C430/DS89C450 only; controls the clock division or multiplier mode. Note that the available settings are different on the DS8xC520/DS89C430/DS89C450.
STATUS 0 (SPRA0) DS8xC520/DS89C430/DS89C450 only; indicates that a character is currently being received on serial port 0.
1 (SPTA0) DS8xC520/DS9C430/DS89C450 only; indicates that a character is currently being transmitted on serial port 0.
2 (SPRA1) DS8xC520/DS89C430/DS89C450 only; indicates that a character is currently being received on serial port 1.
3 (SPTA0) DS8xC520/DS89C430/DS89C450 only; indicates that a character is currently being transmitted on serial port 1.
4 (XTUP) DS8xC520 only; indicates whether the crystal oscillator has completed its warmup cycle.
5 (LIP) DS80C320/DS80C323/DS8xC520 only; indicates that a low-priority interrupt is currently being serviced.
6 (HIP) DS80C320/DS80C323/DS8xC520 only; indicates that a high-priority interrupt is currently being serviced.
7 (PIP) DS80C320/DS80C323/DS8xC520 only; indicates that a power-fail priority interrupt is currently being serviced.
7:5 (PIS2:0) DS89C430/DS89C450 only; indicates that the priority level of the interrupt is being serviced.
TA On all except the DS80C310; controls the Timed Access register protection mechanism.
WDCON 0 (RWT) On all devices except the DS80C310; resets the watchdog timer.
1 (EWT) On all devices except the DS80C310; enables/disables the watchdog timer.
2 (WTRF) On all devices except the DS80C310; indicates that a watchdog timer reset has occurred.
3 (WDIF) On all devices except the DS80C310; indicates that a watchdog timer interrupt has occurred.
4 (PFI) On all devices except the DS80C310; indicates that a power-fail interrupt has occurred.
5 (EPFI) On all devices except the DS80C310; enables/disables the power-fail interrupt.
6 (POR) On all devices; indicates that a power-on reset has occurred.
7 (SMOD_1) On all devices except the DS80C310; enables/disables baud-rate doubling mode for serial port 1.
EIE 4 (EWDI) On all devices except the DS80C310; enables/disables interrupts from the watchdog timer.
EIP 3:0 (PX5:2) On all devices except the DS89C430/DS89C450; sets high/low priority for external interrupts 2, 3, 4, and 5.
4 (PWDI) DS80C320/DS80C323/DS8xC520 only; sets high/low priority for the watchdog timer interrupt.
EIP1, EIP0 DS89C430/DS89C450 only; these registers set priority levels 0–3 for the watchdog timer interrupt and external interrupts 2, 3, 4, and 5.

シングルサイクル実行

超高速DS89C430/DS89C450プロセッサは、シングルサイクル命令の実行にシングルクロックのみを必要とし、DS80C310/DS80C320/DS80C323/DS8xC520より4倍の速度向上を達成します。これらの後者の高速マイクロコントローラは、1マシンサイクルを実行するのに4個のクロックを必要とします。クロック速度のこの違いは、高速デバイスをDS89C430/DS89C450と単純に置換すると、同じ水晶周波数で最大4倍の実行速度に増加する結果になります。

不揮発性メモリ

DS80C310/DS80C320/DS80C323は、プログラマブルな内蔵コードメモリを搭載していないため、コードストレージ用の外付けメモリが必要となります。DS8xC520は、16kBのプログラムEPROMを搭載することによって、このメモリ方式を改善しています。

DS80C310/DS80C320/DS80C323からDS89C430/DS89C450に移植する場合、外付けROM、フラッシュ、またはEPROMメモリに保存されたアプリケーションコードは、超高速プロセッサの内蔵フラッシュメモリに再割当てすることができます。DS89C430は、DS8xC520と同じ大きさの内蔵プログラムメモリ(16kB)を搭載しているため、DS8xC520に格納された任意のアプリケーションを変更なしでDS89C430に収めることができます。外付けプログラムメモリに格納されたアプリケーションは、プログラムメモリを64kBより大きく拡大するためにポート端子のバンキングを使用してしない限り、DS89C450の64kB内蔵フラッシュメモリに収まります。

最後に、DS89C430/DS89C450は標準8051多重化アドレスバス方式もサポートしているため、外部コードおよびプログラムメモリも、必要に応じてアプリケーションで使用することができます。

シリアルブートローダ

DS8xC520は内蔵EPROMプログラムメモリを搭載していますが、内蔵EPROMのインシステムまたはインアプリケーションプログラミング(IAP)を用意していません。EPROMをロードするためにスタンドアロンプログラマが使用される必要があり、再プログラムを発生させるには、DS8xC520が残りのシステムから排除(または電気的に絶縁)される必要があります(ただし、ユーザローダをDS8xC520上に実装することは可能で、この場合、外部プログラム、データEPROM、または不揮発RAMをアプリケーション制御の下でリロードすることができます。詳細については、アプリケーションノート102「Using the High-Speed Microcontroller as a Bootstrap Loader」を参照)。

DS89C430/DS89C450は、シリアルブートローダ機能を内蔵することによって、このプログラミングプロセスを改善しています。この機能は、簡易なASCIIベースのプロトコルを使用することによって、プログラムメモリをリロードすることができます。シリアルブートローダは、マイクロコントローラの内蔵ROMに実装されているため、コード領域はこの機能によって使用されていません。さらに、FCNTLおよびFDATAレジスタは、IAP用に使用することができ、フラッシュの各部分は消去可能で、ユーザ制御の下に再書込みが可能です。

GPIOポート0

DS89C430/DS89C450 (DS8xC520と同様)は、必要に応じて、外付けコードまたはデータメモリなしで動作することができます。各8ポート0端子(多重化バスがアクティブのときAD[7:0]として動作)は、汎用I/O (GPIO)として使用することができます。その他のI/O端子には、外付けバスが使用されない場合に汎用に再利用可能な8個のポート2端子(P2[7:0])、P3.6 (nWR)端子、およびP3.7 (nRD)端子があります。

ただし、ポート2およびポート3端子と異なり、ポート0端子はオープンドレイン出力ドライバを使用します。これは、これらの端子が出力として動作する場合は、プルアップ抵抗を使用する必要があることを意味します。ポート0端子が入力(外部駆動)として使用される場合、プルアップ抵抗は不要です。

1分周タイマークロック

DS89C430/DS89C450上のCKMODレジスタは、システムクロックからじかに3個のタイマー(タイマー0、タイマー1、およびタイマー2)を駆動する能力を追加します(標準の4分周および12分周と対照)。この高速選択モード(ビットT0MH、T1MH、およびT2MHによって制御)は、次のリセットをディセーブルすることをデフォルトにし、DS80C310/DS80C320/DS80C323/DS8xC520用に記述されたコードとコンパチブルなタイマーにします。

水晶逓倍器

DS89C430/SD89C450は、内蔵水晶逓倍器を備え、水晶周波数を2倍または4倍にブーストすることができます。これは、5MHz水晶を5MHz、10MHz、または20MHzクロックを生成するために使用することができることを意味します。

5レベルの割込み優先順位

DS89C430/DS89C450は、プログラマブル割込み優先順位方式を拡大し、任意の外部割込み、タイマー割込み、シリアルポート割込み、またはウォッチドッグ割込みに0 (最低)~3 (最高非パワーフェイル優先順位)のユーザ定義優先順位レベルを割り当てることができます。最高優先順位レベルであるレベル4は、パワーフェイル割込み用に予約されています。このシステムは、DS80C310/DS80C320/DS80C323/DS8xC520で使用される低/高プログラマブル優先順位方式と下位互換性があります。

電源について

処理電力の増大によって、DS89C430/DS89C450は、高速ファミリのマイクロコントローラより高い電源要件を持っています。アクティブモードの最大水晶周波数の場合、DS89C430/DS89C450は最大110mA (75mA、typ)の消費電流を供給することができます。そのため、DS89C430/DS89C450にアップグレードする場合、各消費電力は高速設計の電源回路に変更する必要があります。詳細については、このデバイスのデータシートを参照してください。

ディジタルノイズについて

超高速フラッシュマイクロコントローラの改善された性能は、コアの再設計の結果で、マシンサイクル時間を低減し、内蔵スイッチング速度を大幅に増加しています。このため、システム設計者は、超高速フラッシュマイクロコントローラが高速マイクロコントローラをじかに置き換えたときディジタルノイズの多少の増加に気づく可能性があります。システム設計者は、性能におけるこの増加が各設計にどんな影響があるか(ある場合)を調査する必要があります。場合によっては、マイクロコントローラに追加のバイパスコンデンサを追加するか、何らか別のフィルタリング方法を適用してディジタルノイズを低減する必要が出てきます。

ソフトウェアタイミングループ

ソフトウェアループを使用して高精度タイミングを生成するアプリケーションコードは、高速マイクロコントローラから超高速デバイスへの移行時に調整する必要がある場合があります。ただし、このタイプのタイミングループは、ケースバイケースで検査する必要があります。 DS89C430/DS89C450に移行した場合、すべての命令が最大4倍の速度向上を示すわけではないためです。たとえば、「ADD A, R0」は、任意の高速マイクロコントローラ上では4クロックサイクルで実行し、DS89C430/DS89C450 (4倍の速度向上)上では1クロックサイクルで実行し、命令「ADD A, @R0」は高速デバイス上の4サイクルからDS89C430/DS89C450上の2サイクル(2倍の速度向上)に移行します。詳細については、「高速マイクロコントローラのユーザガイド(High-Speed Microcontroller User's Guide)」および「超高速マイクロコントローラのユーザガイド (Ultra-High-Speed Flash Microcontroller User's Guide)」の両方の「Instruction Timing」の項を参照してください。