1.2 FX2の内部ブロックFX2の内部ブロックは図1のようになっています.USB2.0対応のトランシーバ,CPUコア,8.5Kバイトのメモリ,4KバイトのエンドポイントFIFOなどに加えて,GPIFと呼ばれる簡易ステートマシンや,I2Cコントローラなどが内蔵されています.次に,各ブロックについて見ていきましょう.
● USBトランシーバ USB2.0はUSB1.1の上位互換なので,USB2.0対応のハイスピード(480Mbps)のデバイスは,ホストがUSB1.1ならばUSB1.1のフルスピード(12Mbps)デバイスとして動作します.このため,FX2内部にも1.1(フルスピード)対応のトランシーバと2.0(ハイスピード)対応のトランシーバの両方が内蔵されています. ● USBコントローラ USBコントローラは当然のことながら,USB1.1のフルスピードとUSB2.0のハイスピードの両方をサポートしています. FXシリーズと同様に,FX2もCPUのリセット制御や,内蔵SRAMへのアクセスなどの権利の主導権はUSBコントローラ側が握っています.またUSBコントローラが8051の助けを借りることなく,USBデバイスとして動作可能であるという点もFXシリーズと同様の大きな特徴です. ブート手順もFXシリーズと同様で,USBコントローラがシリアルROMの先頭バイトをチェックし,IDに応じた動作を行います. ・先頭バイトがC0h このときにはシリアルROMから,ベンダID,プロダクトID,デバイスIDがシリアルROMに格納されているので,それぞれシリアルROMから読み出して,そのIDを使って起動します.CPU(8051)はリセットは解除されませんが,USBコントローラが単独でUSBデバイスリクエスト処理を行うので,ホスト側からは通常のUSBデバイスとして認識されます. ・先頭バイトがC2h このとき,シリアルROMには8051が実行するためのプログラムが格納されます.ベンダIDやデバイスIDなども同じように格納される領域は決められているのですが,これらの値は実際には使われません. シリアルROMの内容はデバイス内部のSRAM(全部で8.5Kバイト)にダウンロードされ,格納が終了するとCPUのリセットが解除され,CPUはSRAM上に展開されたプログラムを実行します. ・先頭バイトがそれ以外,またはシリアルROMが存在しない USBコントローラは,デフォルトのチップベンダのIDを使って起動します. ・ベンダID:04B4h チップベンダから提供されているFX2開発サポートツールであるEZ-USBコントロールパネルなどを使うためには,このIDで起動している必要があります. ● 8051CPUコア FX2内蔵の8051コアは,最高48MHzで動作します.命令コードはオリジナルの8051と完全に互換性がありますが,1マシンサイクルがオリジナルでは12クロックを要するのに対して,FX2内蔵CPUコアは4クロックと1/3で済んでいる点が異なります. 命令実行に必要なマシンサイクル数は数値演算命令(DIV,MULなどは除く),論理演算,データ転送など,多くの命令でが命令バイト数と一致しています.つまり1バイト命令は1マシンサイクル(4クロック)で,2バイト命令は2マシンサイクル(8クロック)かかるものが大半です. ● 内蔵RAM FX2のメモリマップは図2のようになっています.FX2には8.5KバイトのSRAMが内蔵されていますが,このうち0.5KバイトはE000h〜E1FFhの領域で,データ専用,残り8Kバイト分はメインRAMと呼ばれ,データとプログラム領域の両方に使うことができます. メインRAM領域は,1FFFH番地以下の部分に配置されています.ただし,8051ファミリCPUの特徴として,汎用レジスタやフラグ類,特殊レジスタ類がメモリ空間の下位256バイトまでの領域(0000h〜00FFh)に配置されるので,この領域の取り扱いには注意が必要です. とくに8051の場合,0080h〜00FFhの領域はSFR(スペシャルファンクションレジスタ)と汎用データメモリで共用されており,どちらをアクセスするかはアドレッシングモードによって切り替わるという,多少変わったアーキテクチャになっています.8051対応のCコンパイラでも,この点には配慮されていて,たとえば_sfrのようなキーワードを変数宣言の先頭に付けることで,SFR領域へのアクセスを行うようなコード生成がなされます. ● I2Cコントローラ I2CバスはFX2が起動時に動作モードを決めたり,プログラムを読み込んで内蔵SRAMにプログラムを転送するためのシリアルROM(ブート用シリアルROM)を接続するほか,市販のI2Cバスデバイスを接続する目的にも使用可能です. I2Cバスではアドレスが3ビットあるので,論理上は8デバイスまで接続可能ということになりますが,このうちブート用のシリアルROMはアドレス001hを使用しています.これ以外のアドレスはユーザー側で任意に使うことができます. ちなみに,チップベンダが提供しているFX2デベロップメントキットではPCF8574(Philips)というI2Cバス対応のディジタル入出力デバイスを使ってLEDやスイッチを接続することで,汎用I/Oポートを使わずに実現しています.
今月号特集トップページへ戻る Copyright 2003 桑野雅彦 |