EZ-USBの特徴

 EZ-USBは,8051をCPUコアにしたUSBターゲット用のコントローラICです.AN2100ファミリは表1に示すとおり,数多くの種類があります.第2章で解説するFLEX10KE評価ボードに搭載されているのはAN2131Sです.

 CPUコアは24MHzで動作します.エンドポイントはコントロールエンドポイントを含めて32個あり,CPUバスは外部には出ておらず,I/Oピンは汎用I/Oポート専用です.本章では,EZ-USBと表記した場合,とくに断らない限りAN2131Sのことを示すことにします.

 EZ-USBの簡単な内部ブロックを図1に示します.8051はかなり古い歴史のある8ビットの1チップマイコンで,非常にシンプルでユニークなアーキテクチャをもったプロセッサです.ちょっとした機器への組み込みなどには扱いやすいこともあり,8051をベースにしたコアをもつ1チップマイコンが数多く存在します.

〔図1〕 EZ-USBの内部ブロック図




● 8051/8052のアーキテクチャ
 8051は,CPUコアに加えて,I/Oポートや割り込みコントローラ,タイマ/カウンタ,シリアルポート,ローカルメモリ(ROM/RAM)などを内蔵しています.EZ-USBのメモリマップを図2に示します.

〔図2〕EZ-USBのメモリマップ




  8051の場合,コード(プログラム用)メモリと内部データメモリ,外部データメモリを明確に区別します.外部バスでも,コードメモリアクセスなのかデータアクセスなのかを区別します.このため,たとえばコード領域に定数を配置してそこをリードするような場合には通常のMOV命令は使用できません.MOV命令では,同じアドレスにあるデータメモリへのアクセスとなってしまうためです.このため,8051ではMOVCという専用命令を追加して,このような使い方に対処しています.

内部RAMは8051の場合0000h〜007Fhの128バイトあり,0080h〜00FFhの128バイト分の領域がSFR(Special Function Registers)という,各種I/O制御用のレジスタ用となっています.8051から派生した8052では,このレジスタ領域と同じアドレスにデータRAMが重なってきています.

 直接メモリ番地を指定するダイレクトアクセス(MOV A,7FHなど)のときにはSFRがアクセスされ,レジスタ間接アクセス(MOV A,@R0など)の場合にはメモリの方のアクセスになります.プログラム格納用の内蔵ROMは8051の場合4Kバイト(0000h〜0FFFh),8052の場合には8Kバイト(0000h〜1FFFh)を内蔵しています.

 EZ-USBはこの8051/8052のアーキテクチャをベースとして,USBコントローラを内蔵させたものです.ただ,後でふれるとおり,EZ-USBの場合にはROMを内蔵しておらず,RAMしかないので,内蔵SRAMをプログラム用として使います.EZ-USBの内部SRAMは,4Kバイトまたは8Kバイトとなっており,今回の評価ボードに使用されているAN2131Sには,8KバイトのSRAMが内蔵されています.

● USBコントローラとCPUの関係
 EZ-USB内蔵のUSBコントローラが,Am186CUUSBN9602と大きく異なるのは,EZ-USBが電源投入直後からすぐにUSBデバイスとして稼働できるという点にあります.

 USBN9602は単独のUSBコントローラなので,外部に接続したマイコンによって初期化などを行う必要があります.また,Am186CUにしても,内部のCPUコア(80186相当)が外部メモリから読み込んだプログラムを実行して,内蔵のUSBコントローラを初期化するまでは,ホストとの間ではいっさいコミュニケーションが行われません.あくまでもUSBコントローラはCPUに接続された周辺デバイスの一つという考えからすれば,当然の設計といえるでしょう(図3).

 ところが,EZ-USBの場合,それ自身が一つのデバイスとして動作可能なインテリジェントなものになっているのです.しかも,通常のUSBデバイスによりUSBターゲットシステムを構成する場合は,CPUが主導権を握っていてUSBコントローラを初期化するという形をとります.しかし,EZ-USBの場合には,USBコントローラがCPUのリセット信号を握っており,CPU内部のメモリにもUSBコントローラがアクセスできるようになっているのです(図4).

〔図3〕通常のUSBコントローラとCPU
〔図4〕EZ-USBのUSBインターフェース構成

● プログラムの起動方法
 また,通常CPUが実行されるプログラムはROMに格納されて,電源投入後はそこに書かれたプログラムを実行するわけですが,EZ-USBの場合,CPUが実行するプログラム領域もすべてRAMになっています.このRAM領域にUSBコントローラがプログラムをダウンロードして,CPUのリセットを解除するというのがEZ-USBの設計思想なのです.

 プログラムをどこからダウンロードするかですが,I2Cバスに接続されたシリアルROMからダウンロードするのが一般的ですが,EZ-USBの場合はさらにUSB上から,つまりUSBホストシステムからダウンロードすることもできます.この,USB経由のダウンロードをサポートしたという点が,EZ-USBの大きな特徴といえるでしょう(図5).

〔図5〕USB経由のダウンロード




 この電源投入後に稼働するUSBコントローラは,USBデバイスとして認識されるためのUSBの標準リクエストを受け付けることができるほか,ベンダ定義のリクエストコマンドとしてホストとEZ-USB内部のメモリ空間との間のデータのダウンロード/アップロード機能が組み込まれています.

● 8051はメモリマップドI/O
 8051の場合,I/O空間というものがなく,内部レジスタはすべてメモリ空間に割り付けられています.このため,ダウンロード機能を使ってレジスタに任意の値を書き込むこともできます.

 EZ-USBに接続されるホスト側では,このことを利用してプログラムのダウンロードが終わった後にレジスタを操作してCPUのリセット解除する(CPUCSレジスタの8051RESビットを‘0’にする)ことで,CPUをスタートさせることができるわけです.

 つまり,EZ-USBは「USBコントローラ内蔵1チップマイコン」というよりも「USB(またはシリアルROM)経由でプログラムをダウンロードして動かすCPU(8051)」と見たほうがよいでしょう.

● USB経由でプログラムをダウンロードできるマイコン学習システム
 USBコントローラを内蔵しているからといって,必ずしもUSBを活用したシステムを作らなければならないということはありません.

 マイコン学習システムというものを考えた場合,ROMエミュレータやROMモニタ,ICEなどを使って開発したプログラムをクロス開発環境からダウンロードする仕組みが必要になります.

 EZ-USBには,ホスト側からマイコンのRAM領域にプログラムをダウンロードして,そこから実行を開始する機能がチップそのものにはじめから組み込まれているわけです.また,ホスト環境がWindowsであれば,EZ-USBの開発メーカーであるサイプレスのホームページから,Windows版USB経由ダウンロードプログラム(もちろん,ダウンロード以外にもいろいろな機能がある)を,誰でもダウンロードして使用することが可能です.

 つまり,USB側は単なる「ソフトウェアダウンロード・ポート」として使用し,ユーザーの作成するプログラムにはUSBを制御するコードをいっさい含まないという使い方も可能です(図6).

〔図6〕CPUスタンドアロン動作


  

 このとき非常に便利なところは,USBコントローラがCPUのリセット権をもったままなので,CPUが暴走してもUSB経由でリセットをかけて再起動ができるということでしょう.普通のUSBターゲットデバイス単体ではこういう芸当はできません.

 もちろん,CPUがUSBコントローラの制御権を取ってデバイスリクエストやエンドポイントなど,すべてをCPUが処理するようにもできます.これは,普通のCPU+USBコントローラとまったく同じ状態です.


◆ はじめに
◆ EZ-USBの特徴

◆ EZ-USBの三つの起動モード

◆ EZ-USBのエンドポイント構成
◆ EZ-USBの割り込み処理

コラム サイプレス製USBコントローラの系譜

1月号特集トップページへ戻る


Copyright 2001 桑野 雅彦