Comments
Description
Transcript
PicoBlaze IPコアで 8051マイクロプロセッサをエミュレーション
PicoBlaze IPコアで 8051マイクロプロセッサをエミュレーション Lance Roman / President, Roman-Jones, Inc. [email protected] Brad Fayette / Senior Software Engineer, Roman-Jones, Inc. [email protected] 従来のマイクロプロセッサ機能をザイリンクスFPGAに組み込む コストが約1ドルのIntelTM 8051マイクロプロセッサをFPGA ●小型 − 従来の8051インプリメンテーションのFPGAロジック に組み込もうとすると、10ドル相当のFPGAファブリックが必要 は1,100∼1,600スライスでしたが、PicoBlaze 8051プロセ になってしまいます。これを避けるには、どのような方法があるで ッサに必要なスライスはわずか76枚です。エミュレーション・ しょう。 ハードウェアに必要なのが77スライス。さらに2個のタイマと4 エミュレーションがその答えです。Roman-Jones社は、ソフト モード・シリアル・ポートに158スライスで、合計は311スラ ウェア・エミュレーションを使用することにより、ザイリンクスの イスです。これは、他社競合製品に比べて2/3以上のFPGAファ 8ビット・ソフトコアPicoBlaze TM (PB)プロセッサ上に構築す る新しいタイプの8051プロセッサコアを開発しました。この“新 ブリックの削減にあたります。 ●高速 − 毎秒130万命令(1.3 MIPS)を実行するPB8051は、 しい”PB8051は、レガシ・パーツの性能を損なうことなく、競 12MHzで動作する従来の8051(1MIPS)よりも高速です。 合他社のソフトコア・インプリメンテーションより70%以上も小 これに対し、40MHzで動作するDallasバージョンは5MIPS、 さいサイズを実現しています。PB8051は、エミュレーションに 従来のFPGAインプリメンテーションでは8MIPSですが、これ よって作成されたザイリンクスAllianceCORETMマイクロプロセッ らはPB8051の3倍以上のFPGAファブリックを使用していま サです。 す。PicoBlazeプロセッサ自体は、80MHzのクロックを使用し て実に40MIPSという速度で動作します。 8051というレガシ技術 ●ソフトウェアに高い親和性 − 現在使用しているソフトウェア開 Intel 8051マイクロプロセッサ・ファミリは、恐らく最も広く 発ツールでCコードやアセンブラ・コードを記述し、プログラム 使用されているアーキテクチャの1つで、依然として多くのエンベ を作成することができます。また、27C512 EPROMのレガ デット・アプリケーションの中心的位置を占めており、今後もしば らくの間は使用され続けるでしょう。多くの設計者は、過去のプロ シ・オブジェクトを実行することもできます。 ●簡単なハードウェア − VHDLやVerilogTMハードウェア記述言 ジェクトのレガシ・コードを使用したり、他の人々は新しいコード 語を使用して8051タイプ・コアのインスタンスを作成すること を作成したりしてこれに対応しています。 ができます。接続が必要なのは、ブロックRAMかオフチップ・ 8051のアーキテクチャは、ASICファブリック用に設計されて いるため、これをFPGA用に使用するのは効率的とは言えず、余分 なロジックを必要とする割に大した性能を得ることはできません。 FPGAにマイクロプロセッサを組み込めば、この古い8051製品 の設計を変更して旧式化を防ぎ、コストとコンポーネント数を削減 するともに、全体的な性能を向上させることができます。 FPGA組み込みのこの新しいPB8051デザインを採用すれば、 プログラムROMだけです。 ●低コスト − PB8051は 、 手 続 き の 簡 単 な ザ イ リ ン ク ス SignOnce IPライセンス契約により495ドルで提供します。 この「新しい」PB8051は、レガシ・パーツの性能を損な うことなく、競合他社のソフトウェア・インプリメンテー ションより70%以上も小さいサイズを実現しています。 現在ある自社のソフトウェアツールと、馴染みのあるアーキテク チャの両方を生かして、完成されたデザインを迅速にインプリメン トすることができます。FPGAに組み込まれたPB8051は、細か い要求に合わせてカスタマイズすることができます。 エミュレーション8051のアーキテクチャ 図1に示すように、エミュレーション・プロセッサのアーキテク チャは、複数の要素で構成されています。各要素は個別に設計され たものですが、これらすべてがまとまって1つの役割を果たします。 プロセッサのエミュレーション プログラマの多くははソフトウェア開発の手法として、長年にわ たりマイクロプロセッサ・エミュレーションを使用してきました。 PicoBlazeプラットフォーム PicoBlazeホスト・プロセッサはエミュレーション・システムの エミュレーションを使用すれば、ターゲット・ハードウェア上でテ 心臓部であり、PB8051エミュレーション・プロセッサコアの ストを行う前に、開発プラットフォーム上でコードを記述しテスト アーキテクチャを決定する部分です。このホストプロセッサは、以 することができます。 下の要素で構成されています。 ターゲット・マイクロプロセッサのアーキテクチャ自体が、 FPGAリソースの効率的なインプリメンテーションと効率的な使用 に適していない場合も、この方法が有用です。 PB8051エミュレーション・プロセッサには以下の特長があり ます。 ●PicoBlazeコードROM − 8051の命令をエミュレーションす るためのソフトウェア・コードを格納するブロックROMです。 ●内部アドレス/バス − PicoBlazeのペリフェラルバスは256バ イトのアドレス空間で、PicoBlazeのI/O命令によりアクセスさ れます。PicoBlazeプロセッサは、このバスによってRAM、エ 3-1 図1 PB8051ブロック図 1K x 16 ブロックROM エミュレーション プログラムコード 256 x 8 命令 デコードROM 割り込み RST_8051 PicoBlaze 8051 エミュレーション・ ペリフェラル データ WR RD PSEN 256 x 8 ブロックRAM INSTR_FETCH EXT_BUS_START アドレスデコード、データ、信号 EXT_BUS_HOLD SERIAL0_PRE12 アドレス シリアルポート SERIAL2_PRE32 P1_IN[7:0] アドレス デコード P1_OUT[7:0] P3_IN[7:0] アドレスデコード、データ、信号 P3_OUT[7:0] TIME_PRE EXT_DATA_IN[7:0] タイマ EXT_DATA_OUT[7:0] CLK EXT_ADDRESS[15:0] 内部アドレス データバス RST ROM_ADDRESS[15:0] ROM_DATA[7:0] ミュレーション・ペリフェラル、タイマ、シリアルポートとのイ ェアでインプリメントするほうが効率的です。クロックのプリス ンターフェイスをとります。このバスはコア内部にあり、ユーザ ケール入力は、これらの機能をエミュレーション・システムとは からは見えない形になっています。 無関係なクロックレートで実行できるような形で提供されます。 ●エミュレーション・ペリフェラル − ソフトウェアだけですべて のエミュレーション・タスクを実行できるわけではありません PicoBlazeエミュレーション・ソフトウェア が、一定の用途における性能要求は満たしています。実行に時間 実際のエミュレーションを行うPicoBlazeコードは、1K x 16 がかかるタスクや実行パスがクリティカルな場合、あるいはその のブロックROMに保存されます。エミュレーション・プログラム 両方の場合は、特別なハードウェアがPicoBlazeコードによるタ は、PicoBlazeアッセンブラ・コードで無駄のないように慎重に作 スク実行を支援します。 成されており、速度と効率の面で最適化が図られています。 その端的な例が、8051アキュムレータ・パリティを反映する PSW(Program Status Word)レジスタのパリティビットです。 この機能は8051命令を1つ実行するごとに実行しなければなりま せんが、実行にはPicoBlaze命令サイクルの数個分の時間がかかり ます。したがって、この機能はハードウェアで実行されます。 ●命令デコードROM − これは非常に重要なエミュレーション・ ペリフェラルで、8051命令をデコードし、PicoBlazeルーチン の位置やエミュレーション・パラメータを設定するために使用し ます。 分かれています。 ●命令フェッチ − 8051プログラム・メモリ(64Kbサイズ)か ら次の命令をフェッチするために、8051バスサイクルをシミュ レーションします。プログラム・メモリには、オンチップ・ブ ロックRAMかオフチップEPROM(27C256など)を使用し ます。 ●命令デコード − フェッチした命令をデコードして、アドレシン グ・モードとオペレーションを決定します。 ●オペランドのフェッチ ● アドレス・デコード − かなりの数のエミュレーション・ペリ フェラル・ハードウェアが、PicoBlazeペリフェラル・バスの単 純なアドレス・デコードとして使用されています。このアドレス 空間はPicoBlazeプロセッサ専用で、8051アプリケーションか らは隔離された存在になっています。 ●ブロックRAM このエミュレーション・プログラムは、いくつかのセグメントに − 8051の内部RAMといくつかの8051レジス − アドレシング・モードによっては、プ ログラム・メモリ、内部RAM、外部RAMなどからの命令用に追 加オペランドをフェッチします。 ●命令実行 − 命令は、必要なオペレーションを行い、影響を受け る8051 PSWフラグを含めて、エミュレーションされたレジス タの内容を更新します。 ●割り込みのスキャン − この機能は、割り込みが保留状態になっ タ用として、256バイトを使用できます。このブロックRAMへ ていないかどうかを判定し、保留状態になっているものがあれば は、8051命令を使用してアクセス可能です。 それを実行します。必要な場合は、エミュレーションされたすべ ● シリアルポートとタイマ − 実際の8051タイマとマルチモー ての命令終了時に割り込みウインドウを作成します。 ド・シリアルポートの機能は、ソフトウェアではなく、ハードウ 3-2 PicoBlazeコードに加え、PicoBlazeのリスト(.LOGファイル) PB8051は、トップレベル・デザイン用のコンポーネントとし からROMテーブルに読み込まれたシンボルの処理にはJavaTMソフ てインスタンシェートされます。8051プログラムをオンチップ・ トウェア・ユーティリティを使用します。これらの.LOGファイル ブロックRAM内に置くかオフチップEPROM内に置くかは、ユー は、8051オペコードのデコードに使用します。 ザが決定します。ペリフェラルは、P1/P3ポートラインか、外部 このプログラムは、Xilinx CORE Generator TM システムが アドレスバスおよびデータバスに接続することができます。アドレ PicoBlazeコードROMを作成するために使用する.COEファイルも スおよびデータラインは、便宜上プログラム用とデータ用で別のメ 作成します。これらすべての操作は、PB8051との統合を行う設 モリ空間に分けられていますので、従来のマルチプレクサ回路は不 計者に対しては透過的に行われます。 要です。 ユーザ・バックエンド・インターフェイス は、EXT_BUS_HOLDを“low”に設定して、クロックスピード 8051プログラムも含め、デザイン全体をFPGAで実現する場合 PB8051にハードウェア的な雰囲気を付与しているのは、ユー で動作させる利点をフルに生かせるようにしてください。外付 ザ・バックエンド・インターフェイスです。ユーザはこのインター EPROMや低速ペリフェラルを使用する場合は、 フェイスを介し、ユーザのロジック・デザインとエミュレーション EXT_BUS_HOLDを“high”にアサートすることにより、待機ス された8051プロセッサのインターフェイスを行うことができま テートを挿入できます。参考デザインの1つに、待機ステートを作 す。このバックエンド・インターフェイスはエミュレーション・ペ 成するものが含まれています。 リフェラルの一部で、PicoBlazeプラットフォームによって制御さ れます。 8051プロセッサ・ファミリにはポート、ファンクション、機能、 ザイリンクス・インプリメンテーションに関する考慮事項 ザイリンクス・インプリメンテーションに関しては、PB8051 ピンアウトなどに関して多くの変形バージョンがありますが、バッ デザイン・ネットリストをプロジェクト・ディレクトリに置き、そ クエンド・インターフェイスがこれと同じ役割を果たします。 れをユーザのVHDLまたはVerilogデザインのコンポーネントとし PB8051は、8051からROMを取り除いた汎用型の8031に似た てインスタンシェートする以外に考慮すべき点はありません。その バックエンド・インターフェイスを備えています。 他のことは、ISEソフトウェアがすべて処理します。ISEスケマ Roman-Jones社は、使用しないシリアルポートの削除や12C ティック・キャプチャ(回路図入力)を使用することもできます。 ポートの追加による80C652のエミュレーションなど、8051に 対するユーザのニーズを正確に反映することができるように、バッ クエンド・インターフェイスのカスタマイズを行っています。 シミュレーションについて PB8051のビヘイビア・シミュレーション・モデルが付属して おり、 (デザインの残りの部分とともに)任意のシミュレータに追 PB8051にハードウェア的な雰囲気を付与しているのは、 加することができます。ModeltechおよびAldecTMシミュレータ ユーザ・バックエンド・インターフェイスです。ユーザは、 での正常動作も確認済みです。配置・配線やタイミング・シミュ このインターフェイスを介し、ユーザのロジック・デザイン レーションの実行後は、通常の設計フローに従って作業を進めるこ とエミュレーションされた8051プロセッサのインターフェ とができます。 イスを行うことができます。 ユーザは、8051の命令実行フローをシミュレーション波形で確 認することができます。これにより、ビヘイビア・デバッグを直接 的かつ高速に、しかも容易に行うことが可能です。サンプルの波形 PB8051を使用した設計 ファイルを含む参照テストベンチも用意されています。 PB8051には参考デザインやザイリンクスの統合ソフトウェア 設計(ISE)プロジェクトの例が付属しているので、ユーザ・デザ インに容易に組み込むことができます。 8051ソフトウェアに関する検討 ユーザがいつも使用している方法で8051プログラムを作成する 場合は、使い慣れているCコンパイラ、またはアッセンブラとリン ハードウェアに関する検討 カ(必要時)を使用して、EPROM書込みに使用するのと同じ 図1に、ユーザ・バックエンド・インターフェイスで使用可能な Intel Hexフォーマット・ファイルを作成します。また、ソフト 信号名を示します。VHDLまたはVerilogテンプレートには正確な ウェア・コードに関する限り、PB8051と通常の8051とはよく 信号名が使用されています。その多くは8051を扱う設計者にとっ 似ているので、既存のHexファイルを使用することも可能です。 て馴染みの深いものですが、一部には以下のような新しいタイプの 8051ソフトウェアをオンチップ・ブロックRAMに格納するため ものが含まれています。 のデザインには、Intel Hexから.COEへの変換ユーティリティが含 ●カウンティングとボーレートを設定するためにタイマとシリアル ポートで使用するプリスケール(pre-scale) まれています。オンチップでプログラムを格納すれば、最大限の高 性能化が達成できます。 ●外部メモリ空間の読み出し/書き込みのための、1クロック幅の 読み出し/書き込みストローブ信号。また、8051コード・メモ リのプログラム・ストア・イネーブル(PSEN)用のストローブ 信号もあります。 ●1システムクロック・サイクルで完了できない外部メモリサイク テストとデバッグに関する検討 デザインのテストとデバッグを高速かつ容易に行うためには、デ ザインツールの使用をお勧めします。最も便利なツールは、 ModeltechやAldecなどのHDLシミュレータ・プログラムです。 ルに対して待機ステートを挿入するために使用する、バスのス ほとんどの問題やバグは、ビヘイビア・レベルで解決することがで タート信号とホールド信号。 きます。インタラクティブ(対話方式)なデバッグには、ザイリン クスのChipScopeTM統合ロジック・アナライザが最も優れたツー 3-3 ルとして定評があります。現在のところ、PB8051に使用できる ソースコード・デバッガツールはありません。 設計者の習熟曲線 8051ソフトウェア/ハードウェアデザインとFPGAデザインを 統合するにあたっては、両者についてある程度の知識が必要です。 PB8051コアは、容易に使用・統合できるようにデザインされて います。 ユーザには、8051のハードウェアに関する理解と、ソフトウェ ア開発ツールによる8051コード作成の経験が求められます。 PB8051を使用した基本的な設計フローは、パッケージ化された 通常のプロセッサ・フローと同じです。 PB8051をザイリンクス・デバイスに組み込むことは、ザイリン クスのCORE Generatorツールを使用してIPコア・インスタンス を作成するのとほとんど同じです。さらに、ユーザがVHDLや Verilogなどの言語の使用に慣れていて、ザイリンクス・デザイン について数例の経験があれば申し分ありません。 結 論 PB8051の例で示したように、マイクロプロセッサをFPGAに エミュレーションで組み込むことは、機能をすべてハードウェアで デザインする手法に代わる有力な方法です。FPGAファブリックを 節減できると言う利点は、部品コストの削減にもつながります。 PB8051プロセッサをデザインに組み込めば、ペリフェラルと 8051マイクロインターフェイスの両方をFPGAに組み込むことが できるので、コンポーネント数が削減され、ボード・デバッグが容 易になり、ノイズ低減、両者の最適性能を実現することができます。 PB8051マイクロコントローラの詳細については、www.romanjones.com/rj2/PB8051Microcontroller.htmをご覧ください。 3-4