JP2000284945A - デジタル機器及びその開発方法 - Google Patents

デジタル機器及びその開発方法

Info

Publication number
JP2000284945A
JP2000284945A JP11086484A JP8648499A JP2000284945A JP 2000284945 A JP2000284945 A JP 2000284945A JP 11086484 A JP11086484 A JP 11086484A JP 8648499 A JP8648499 A JP 8648499A JP 2000284945 A JP2000284945 A JP 2000284945A
Authority
JP
Japan
Prior art keywords
code
hardware
fpga
software
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP11086484A
Other languages
English (en)
Inventor
Shirohisa Chiba
城久 千葉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Priority to JP11086484A priority Critical patent/JP2000284945A/ja
Publication of JP2000284945A publication Critical patent/JP2000284945A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 CPU及び、FPGA等のプログラミング可
能なハードウェアを同時に備えたデジタル機器におい
て、部品点数を少なくし、製造コストを低くする。ま
た、開発に際し、設計情報の管理を容易にし、開発環境
の統合化を図る。 【構成】 CPU及び、FPGA等のプログラミング可
能なハードウェアが動作の際に必要とするソフトウェア
・コード、及びハードウェア(FPGA)・コードは、
機器内部の同一のメモリ領域上に共存して保存する。こ
のデジタル機器の開発には、トップダウン設計法を採用
し、開発の初期段階(上流)において決定されたデジタ
ル機器の機能を、上流でソフトウェア、ハードウェアの
区別なく設計を行い、下流において最終的にCPU用の
ソフトウェア・コードとFPGA用のハードウェア・コ
ードとを融合した(一体化した)形で生成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、CPU及び、FP
GA(Field Programmable Gate Array)、PLD(Pro
grammable Logic Device)等のプログラミング可能なハ
ードウェアを同時に搭載し、これらによって内部動作の
コントロールを行うデジタル機器、及び、これを開発す
るための開発方法に関し、特に開発段階において、CP
Uが動作するのに必要とするソフトウェア・コードと、
プログラミング可能なハードウェアが動作するのに必要
とするハードウェア・コードとを融合した(一体化し
た)形で生成するようにした開発方法に関する。
【0002】
【従来の技術】図8は、CPU4及び、FPGA、PL
D等のプログラミング可能なハードウェア6を同時に搭
載し、これらによって内部動作のコントロールを行うデ
ジタル機器3の従来例について、その内部構成を示す図
である。この従来例においては、CPU4と、プログラ
ミング可能なハードウェア6として、FPGAが搭載さ
れている。ソフトウェア・コード1は、CPU4がどの
ように動作するかが決められた命令やそれに伴うデータ
の集合であり、これは当該デジタル機器3のソフトウェ
ア用メモリ5の中に保存されている。CPU4は、ソフ
トウェア用メモリ5からソフトウェア・コード1を逐次
読み出して、その読み出した内容に従って動作するか、
もしくは、別のメモリにソフトウェア・コード1を置き
直して、そこから逐次実行していく場合もある。ハード
ウェア・コード(FPGAコード)2は、FPGA、P
LD等のプログラミング可能なハードウェア6がどのよ
うな回路になるか(すなわちどのように動作するか)が
決められた設計図であり、これは当該デジタル機器3の
プログラミング可能なハードウェア用メモリ(FPGA
用メモリ)7の中に保存されている。リセット直後に一
度だけ、FPGA6は、このFPGA用メモリ7からこ
のFPGAコード2を読み出して、内部の回路を、その
読み出した内容に従って構成する。以降は、この構成の
回路で動作を開始する。
【0003】図9は、従来の開発方法を用いてデジタル
機器を開発する様子を示す図であり、開発者の指定した
機能を、計算機がハードウェアとソフトウェアに自動的
に振り分け、それぞれのソース・コードを生成している
様子を示している。このような構成の製品を開発する場
合、図9のような、従来の開発方法においても、トップ
ダウン設計法の一種として、開発段階の初期(上流)で
特にソフトウェア・ハードウェアの区別なく機能の設計
を行い9、下流においては計算機がその割り当てを最適
に決定し10,11,12,13、ソフトウェア・ソー
ス・コード14、ハードウェア・ソース・コード15を
それぞれ自動生成する手法が提案されている。しかしな
がらこの手法においては、ハードウェアとソフトウェア
が平行して開発できるのはこの段階までであって、ここ
から先は、次のように別々の開発過程を経る。
【0004】図10のように、ソフトウェアに関して
は、コンパイラを使って生成されたソースコード16を
コンパイルし、CPU18が実行可能なソフトウェア・
オブジェクト・コード17を得る。以降、「オブジェク
ト・コード」という言葉は、説明のため、ソースコード
と区別する意味で使用する。この明細書で使用している
「ハードウェア・コード」、「ソフトウェア・コード」
とは、このオブジェクト・コードのことを指している。
ハードウェアに関しては、ソフトウェアとは別に、コン
パイラを使って、ハードウェア(FPGA)ソース・コ
ード19をコンパイルし、FPGA21がサポートする
ハードウェア・オブジェクト・コード20を生成する。
【0005】また、いったん開発が終了して、動作検証
(以下、テストという)、及び問題が生じた場合の原因
の究明と修正(以下、デバッグという)を行う場合に
も、ソフトウェアとハードウェアでは、別々に行い、同
時には行うことができない。ソフトウェアは、ハードウ
ェアが完成するまではテスト及びデバッグは実行できな
いし、ハードウェアは、実際の動作を想定してシミュレ
ーションを行うが、実際にソフトウェアと連携して動作
をしているときのような厳密な条件でテスト及びデバッ
グはしない。
【0006】
【発明が解決しようとする課題】以上のような、従来の
方式において、このような製品を構成する場合には、ソ
フトウェア・コード用には、ソフトウェア・コード用メ
モリ(CPUによる読み出し用)、ハードウェア・コー
ド用にはハードウェア・コード用メモリ(FPGAによ
る読み出し用)を用意する必要があり、部品点数も増
え、製造コストが高くなる。また、FPGA自身に、汎
用のメモリからデータを読み出したり、汎用のメモリに
データを書き込んだりする機能がなく、FPGA用のデ
ータを保存しておくメモリを、汎用品のものにすること
ができなかったため、専用のメモリを用意する必要があ
り、部品単体としてのコストが高かった。
【0007】さらに、上記問題点が仮に解決できて、ハ
ードウェア・コードとソフトウェア・コードを同一の汎
用メモリに保存することができたとしても、読み出しの
際にハードウェア・コードとソフトウェア・コードを切
り分ける方法をどうするのかが課題であった。このよう
な構成の製品を開発する場合においても、従来において
は、最終的に生成されるハードウェア・コードとソフト
ウェア・コードは別々であるので、コードを間違って使
ってしまうこともあり、その管理も別々に行われなけれ
ばならなかった。
【0008】また、いったん開発が終了して、動作検証
(テスト)、及び、問題が生じた場合の原因の究明と修
正(デバッグ)を行う場合にも、ソフトウェアとハード
ウェアは、別々にこれを行う。ソフトウェアは、ハード
ウェアが完成するまではテスト及びデバッグは実行でき
ず、ハードウェアは、実際の動作を想定してシミュレー
ションを行うが、実際にソフトウェアと連携して動作を
しているときのような厳密な条件でテスト及びデバッグ
はできないので、実際にソフトウェアとハードウェアを
組み合わせて動作させたときに初めて、問題が生じるこ
とが少なくなかった。
【0009】
【課題を解決するための手段】請求項1に記載の発明
は、CPU及びFPGA等のプログラミング可能なハー
ドウェアを備え、これらによって内部動作のコントロー
ルを行うデジタル機器において、前記CPUが動作する
際に必要とするソフトウェア・コードと、前記FPGA
等のプログラミング可能なハードウェアが動作する際に
必要とするハードウェア・コードが、機器内部の、同一
のメモリ領域上に共存して保存されていることを特徴と
する。
【0010】請求項2に記載の発明は、請求項1に記載
のデジタル機器において、前記FPGA等のプログラミ
ング可能なハードウェア自身には、初めからDMA(ダ
イレクト・メモリ・アクセス)機能を有していることを
特徴とする。
【0011】請求項3に記載の発明は、請求項1または
2に記載のデジタル機器において、前記同一のメモリ領
域内に前記ソフトウェア・コードとハードウェア・コー
ドの2つのコードを保存する際、一方のコードを先頭番
地からアドレスの大きくなる方向へ書き込み、他方のコ
ードを逆に最終番地からアドレスの小さくなる方向へ書
き込むことを特徴とする。
【0012】請求項4に記載の発明は、請求項1乃至3
のいずれかに記載のデジタル機器において、前記CPU
及び前記FPGA等のプログラミング可能なハードウェ
アのそれぞれが、前記ソフトウェア・コードとハードウ
ェア・コードを振り分ける際に、前記CPU及び前記F
PGA等のプログラミング可能なハードウェアが直接関
与せず、コード分離器が前記振り分けを行うことを特徴
とする。
【0013】請求項5に記載の発明は、請求項1乃至4
のいずれかに記載のデジタル機器装置において、前記C
PUが初めにソフトウェア・コードを前記メモリ領域か
ら読み出し、その後CPUがハードウェア・コードを読
み出し、前記FPGA等のプログラミング可能なハード
ウェアに対し出力することを特徴とする。
【0014】請求項6に記載の発明は、請求項1に記載
のデジタル機器において、前記FPGA等のプログラミ
ング可能なハードウェアは、デバッグ用の機能を有して
いることを特徴とする。
【0015】請求項7に記載の発明は、請求項6に記載
のデジタル機器において、前記デバッグ機能を有するF
PGA等のプログラミング可能なハードウェアから出力
される信号を参照したり、逆に信号を入力したりするた
めのインタフェースを備えていることを特徴とする。
【0016】請求項8に記載の発明は、CPU及びFP
GA等のプログラミング可能なハードウェアを備え、こ
れらによって内部動作のコントロールを行うデジタル機
器の開発方法において、ソフトウェア・ツール等からな
る開発システムが、前記CPUが動作の際に必要とする
ソフトウェア・コードと、前記FPGA等のプログラミ
ング可能なハードウェアが動作の際に必要とするハード
ウェア・コードとを一体で生成することを特徴とする。
【0017】請求項9に記載の発明は、請求項8に記載
の開発方法において、前記一体で生成されるソフトウェ
ア・コードとハードウェア・コードには、デジタル機器
が動作をするために必要な情報だけでなく、テスト及び
デバッグ用のコードを付加して生成することを特徴とす
る。
【0018】請求項10に記載の発明は、請求項9に記
載の開発方法において、開発したデジタル機器の動作検
証や動作に問題が生じた場合の原因を究明するに際し、
開発対象の実機を実際に動作させるのではなく、実機の
動作を計算機上等でシミュレーションすることができる
機能を有することを特徴とする。
【0019】請求項11に記載の発明は、請求項10に
記載の開発方法において、開発段階の上流でソフトウェ
ア,ハードウェアの区別なく機能の設計を行い、下流で
計算機がその割り当てを最適に決定するトップダウン設
計法を採用した開発方法において、実機の動作を計算機
上でシミュレーションし、該シミュレーション結果に基
づきソフトウェア部分によって実現する機能と、ハード
ウェア部分によって実現する機能の切り分けを、自動的
に行うことを特徴とする。
【0020】請求項12に記載の発明は、請求項11に
記載の開発方法において、上記シミュレーション結果に
基づくハードウェア部分、ソフトウェア部分の切り分け
を、実機のシミュレーション結果から得られた、実機の
処理能力を基準に行うことを特徴とする。
【0021】請求項13に記載の発明は、請求項11に
記載の開発方法において、上記シミュレーション結果に
基づくハードウェア部分、ソフトウェア部分の切り分け
を、実機のシミュレーション結果から得られた、各部分
のコードサイズを基準に行うことを特徴とする。
【0022】
【発明の実施の形態】以下、本発明の実施の形態を、実
施例に基づいて説明する。図1は、本発明の第1の実施
例によるデジタル機器25のブロック図を示す。この構
造においては、CPU26、共有メモリ27、プログラ
ミング可能なハードウェアとしてFPGA28が、同一
のバス29の上で接続されている。CPU26が使用す
るソフトウェア・コード23と、プログラミング可能な
ハードウェア(FPGA)28が使用するハードウェア
(FPGA)コード24が、複合コード22として、1
つの共有メモリ27の中に保存されている(インストー
ルされている)。
【0023】共有メモリ27には、図2のように、ソフ
トウェア・コード23は上から(この共有メモリ27の
アドレスの小さい方から大きい方へと)、FPGAコー
ド24は下から(この共有メモリ27のアドレスの大き
い方から小さい方へと)、書き込まれている。もちろ
ん、このような各コードの保存位置のレイアウトは一例
であって、他のレイアウトを採用しても、それは本発明
の実施例の範囲内のものである。
【0024】このデジタル機器25の動作は次の通りで
ある。図1において、いま電源が入ると、初めにFPG
A28は共有メモリ27から自分のFPGAコード24
を読み込む。読み込みは、図2において、共有メモリ2
7の、FPGAコード24を、一番下の方から、上の方
に(アドレスが最終番地からだんだん小さくなる方向
に)読み込んでいく。なお、FPGAは、はじめからD
MA(ダイレクト・メモリ・アクセス)機能を有してい
るようにすれば、CPUの介在なしに直接共有メモリか
らFPGAコード24を高速に読み込むことができる。
読み込みを完了したら、FPGA28は読み込んだFP
GAコード24をもとに自分の回路状況を設定し、論理
回路として動作する。以降は、また改めて電源を入れ直
したりするまで、このFPGAコード24を読み直した
りすることはない。次に、CPU26が動作を開始する
と、CPU26は、同じ共有メモリ27から、今度は逆
に、一番上の方から、下の方に向かって(アドレスが先
頭番地からだんだん大きくなる方向に)読み込んでい
く。
【0025】また、この各コードの保存位置に関わら
ず、同じ構造のままで、次のような方法を取ることもで
きる。この場合の動作を図1に基づいて説明する。電源
が入ると、今度は先にCPU26が動作を開始する。C
PU26は、共有メモリ27からソフトウェア・コード
23を読み出して、逐次実行していく。図3のように、
そのソフトウェア・コード23の中には、図1のFPG
A28に対して、FPGAコード24を入力するという
プログラムと、入力をする対象のFPGAコード24の
データまでが含まれている。CPU26から見る限り、
実際にはすべてがソフトウェア・コードであることに注
意されたい。いま、CPU26がこの手順を実行する
と、CPU26は、ソフトウェア・コード23の中に含
まれているFPGAコード24のデータを読み出し、こ
れをFPGA28に対して出力する。FPGA28に対
するFPGAコード24のデータの書き込みが終了する
と、FPGA28はそのFPGAコード24に基づく論
理回路として動作を開始する。
【0026】図4は、本発明の第2の実施例によるデジ
タル機器30のブロック図を示す。この構造において
も、CPU31が使用するソフトウェア・コード36
と、FPGA34が使用するFPGAコード37が、複
合コードとして、1つの共有メモリ33の中に保存され
ている点と、CPU31と、FPGA34が同一のバス
35の上に接続されている点は、図1に示した第1の実
施例と同様である。ただし、この構造においては、図5
に示すように、共有メモリ33とバス35との間に、コ
ード分離器32が追加されている点が異なる。このコー
ド分離器32は、バス35に接続されていて、ソフトウ
ェア・コード36とFPGAコード37を分離する役割
を持っている。従って、CPU31がソフトウェア・コ
ード36にアクセスしたり、FPGA34がFPGAコ
ード37にアクセスするには、まずこの分離器32にア
クセスする必要がある。
【0027】この第2の実施例のデジタル機器30の動
作は次の通りである。図5は、コード分離器32と共有
メモリ33との間の情報のやり取りの様子を示す。い
ま、電源が入ると、FPGA34は、あたかも通常のメ
モリにアクセスしているかのように、このコード分離器
32に対して、FPGAコード37の読み出しを行う。
このコード分離器32は、読み出しの要求がFPGA3
4からあったことを確認して、FPGA用のコード37
を共有メモリ33から読み出し、FPGA34に対して
出力する。FPGAコード37がすべて、FPGA34
に読み込まれたら、FPGA34は動作を開始する。C
PU31も同様に、このコード分離器32に対して、ソ
フトウェア・コード36の読み出しを行う。ここでも、
読み出しの要求がCPU31からあったことを確認し
て、CPU用のコードを共有メモリ33から読み出し、
CPU31に対して出力する。CPU31は読み出した
ソフトウェア・コード36からの命令に基づいて、動作
を継続する。
【0028】図6は、本発明において実現するデジタル
機器の開発方法を示す概念図である。開発の対象は、C
PU43及び、FPGA等のプログラミング可能なハー
ドウェア44を同時に搭載し、これらによって内部動作
のコントロールを行っているデジタル機器における、こ
のCPUが動作の際に必要とするソフトウェア・コード
と、このプログラミング可能なハードウェアが動作の際
に必要とするハードウェア・コードである。ここでは、
開発の初期段階である上流では特にソフトウェア・ハー
ドウェアの区別なく設計を行い、初期段階に続く下流に
おいては計算機がその割り当てを最適に決定しソフトウ
ェア・コード、ハードウェア・コードをそれぞれ自動生
成する手法を採用する。
【0029】いま、開発システムのユーザ(開発者)が
機能を決定する。次に、開発システムが、自動的に、ユ
ーザが決定した機能をソフトウェアの役割38とハード
ウェアの役割39への振り分けを行う。また、それぞ
れ、原始コードとして、ソフトウェアのソースコード4
0、ハードウェアのソースコード41が生成される。こ
こまでは、図9と同じく、従来通りの手法である。特別
な場合として、ソフトウェアとハードウェアを同時に記
述できる言語を使用するなどして、この時点でもソフト
ウェアとハードウェアは同一のソースコードなどの設計
資源であっても良い。いうまでもなく、この場合も、本
発明の実施例の範囲内である。
【0030】本発明の開発方法は、このソフトウェアの
ソースコード40、ハードウェアのソースコード41の
両方に対応しており、ソフトウェアのソースコード4
0、ハードウェアのソースコード41はそれぞれ、同時
にコンパイルすることができる。ソフトウェアのオブジ
ェクト・コードとハードウェアのオブジェクト・コード
は、別々に生成されるのではなく、一体のオブジェクト
・コード42となって生成される。言いかえれば、本発
明の開発方法によると、ユーザが開発対象の機能を決定
すれば、その後は機械的に処理され、ソフトウェア・ハ
ードウェアの情報が一体となった、ただ1つのオブジェ
クト・コードが生成される。この自動的な過程において
は、ユーザから見ればブラックボックスとして機能して
おり、ユーザは何もすることなく、ユーザの指定した機
能のうち、どの部分がソフトウェアで実現するのか、逆
に、どの部分がハードウェアで実現するのかをまったく
気にすることなく、開発が進んでいくことになる。
【0031】本発明の開発方法の実施例で用いられる、
ソフトウェア・ツール等からなる開発システムは、図3
に示すようなソフトウェア・コード23とハードウェア
・コード24とが同一のメモリ領域上に共存して保存さ
れている一体化コードを生成するものとする。この開発
システムは、次のツール群によって構成される。すべ
て、ソフトウェアによって実現されていて、パソコンの
ようなホスト上で実行することができる。この場合も、
これらのツールは、ソフトウェアによって実現されてい
るものとする。
【0032】はじめに、ユーザの決定した機能を、ハー
ドウェア,ソフトウェアに振り分ける最適化ツールAで
ある。これにより生成されるものは、最適な記述方法に
よって、データの形式は変わってくることが予想される
が、例としては、フローチャート等が挙げることができ
る。次に、それぞれに振り分けられた機能(フローチャ
ート)からソースコードを生成するソースコード生成ツ
ールBである。これにより生成されるものはソースコー
ドである。このソースコードを記述している言語も、タ
ーゲットによって最適なものが選択されるが、具体的に
は、C言語及び、HDLを挙げることができる。次に、
ソースコードをコンパイルしてそれぞれのオブジェクト
・コードを生成するコンパイラ・ツールCがある。これ
らのオブジェクト・コードは、対象となるFPGA,C
PUが直接実行するもので、この形式は、これらの種別
に依存する。
【0033】最後に、これらのコードを再度一体化させ
るツールDがある。ここでは、図3に示す形でハードウ
ェア・コードとソフトウェア・コードを一体化させよう
としている。ソフトウェアのデータの一部として、ハー
ドウェア・コードを内包し、CPUがFPGAにこのハ
ードウェア・コードを入力する手法である。
【0034】ハードウェア部分に関して、コンパイラに
よって生成されたハードウェア・オブジェクト・コード
を、データとして用意しておく。次に、ソフトウェア部
分に関して、この時点ではコンパイラにかけられていな
いものとする。ここで、CPUがこのデータをFPGA
に入力するソフトウェア・モジュールが必要になるが、
これをこの開発システムが作成し、このデジタル機器の
初期化を行うソフトウェアの一部として、付け加える。
データは、このソフトウェアの一部として決まった位置
(アドレス)に添付されるものとする。このようにソフ
トウェアの中にあるハードウェア・コードデータの位置
(アドレス)は明らかであるので、CPUは初期化の際
に、開発システムが付け加えたFPGAデータ入力モジ
ュールを用いて、このデータをFPGAに入力すること
ができる。以上のようにして、ハードウェア・コード
と、ソフトウェア・コードを、一体化して生成すること
ができる。
【0035】次に、生成された各コードをもとに、実機
の動作のシミュレーションを行う。これは、開発システ
ム上で(主に計算機上などで)、計算によって実機の動
作の様子を求めるものであって、実機を用意して、実際
にコードを組み込んで動作させるのではない。動作をシ
ミュレーションすることによって、まず、実際の動作状
態の確認を、実機を組み立てることなく、従って開発の
初期段階で行うことができ、設計上の問題点を比較的早
期に発見することができる。また、動作状態をこの段階
で確認し、その際得られた、実機の処理能力(実機の動
作スピード)や、コスト(コードの大きさ)等の情報
を、今後に反映にすることができる。
【0036】ここで、シミュレーションを通じて、製品
の要求仕様に対して、実機の動作スピードに不安がある
ことと、FPGAコードの大きさにまだ余裕があること
がわかったとする。一般に、ソフトウェアによる処理
と、ハードウェアによる処理は、スピードとコストにお
いてトレードオフの関係にある。ソフトウェアは、ハー
ドウェアよりも部品点数を必要としない分、コストがか
からないが、処理が遅くなる傾向がある。また逆に、ハ
ードウェアは、処理が速いが、その部品点数分、コスト
が高くなる。この場合、FPGAコードのサイズがあま
り大きくなりすぎると、FPGAをより大規模なものに
交換する必要が生じる。先程のシミュレーションの結果
明らかになった上記の問題点を解決するために、ソフト
ウェア・ハードウェアの振り分けを再度行う。問題点
は、実機の処理能力が十分でないことであって、FPG
Aコードの大きさにまだ余裕があることがわかっている
ので、振り分けは、ソフトウェアの負担を減らし、逆に
ハードウェアの負担を増やす方向で行う。これは、ソフ
トウェア・ハードウェアの振り分けを、処理能力を基準
に行っているものである。逆の場合もあって、処理能力
は要求に対して十分でありながら、今後の拡張を考える
と、FPGAコードのサイズが大きすぎるという場合に
は、ハードウェアの負担を減らし、ソフトウェアの負担
を増やすことになる。この場合には、ソフトウェア・ハ
ードウェアの振り分けを、コードサイズを基準に行って
いるものである。
【0037】図7は、本発明の開発方法による、製品の
動作検証(テスト)や、動作に問題が出た場合の原因究
明(デバッグ)の様子を示す概念図である。図7による
と、説明のためにハードウェア・コード45とソフトウ
ェア・コード48はまったくの別々のように示されてい
るが、言うまでもなく、これは、図6における一体のオ
ブジェクト・コード42として、一体で生成されるもの
である。
【0038】ここで、このFPGA51に対して、ある
条件の入力があった場合に、そのFPGA51の機能を
停止させて、同時に、その入力があったことと、そのと
きのFPGA51内部の状態を外部に通知させ、また、
その時点での、CPU56が使用しているメモリ上のデ
ータを参照したい、と考えているものとする。
【0039】まず、FPGA51に対して、どのような
条件で停止するのか、通知する必要がある。本発明の開
発方法で生成されたハードウェア・コード45には、動
作に必要なもの以外にも、この動作検証の際に必要な情
報が含まれている。以降、この明細書の中では、説明の
ために、この情報のことをハードウェア・デバッグ・コ
ード47と呼ぶことにする。また、このハードウェア・
デバッグ・コード47でない、本来動作のために必要な
ハードウェア・コードを、ハードウェア・動作コード4
6と呼ぶことにする。ここでは、その停止させたい入力
条件を、ハードウェア・デバッグ・コード47として、
ハードウェア・コード45の中に含ませている。いま、
この両方が含まれたハードウェア・コード45が、FP
GA51に入力されたとすると、FPGA51は、どの
ような条件で停止するべきであるのか、この時点で知る
ことになる。ここで、動作の検証のために、ユーザがこ
の製品の動作を開始させる。
【0040】次に、この条件をFPGA51が検知しな
ければならない。このFPGA51には、実際の動作に
必要な通常論理部分52だけでなく、デバッグ用の機能
53も搭載されている。この場合には、常にFPGA自
身の入力を監視して、ある条件の場合に通常論理部分5
2に対して停止を指令し、また、外部にもこれを通知す
る機能を持っている。注意されたいのは、この機能は、
FPGA自身のプログラミング機能よってユーザが設計
することで実現したものでもよく、また、逆に、ユーザ
が設計できない部分、すなわち、初めから備わっている
機能によって実現したものであってもよい点である。後
者の場合においては、FPGA51の一部の端子は、初
めから機能が固定であることになる。
【0041】停止条件が発生した場合の動作は、次のよ
うになる。このデバッグ用の機能53が、いま、停止条
件の入力があったことを検知したとすると、この機能は
直ちにFPGA自身の通常論理部分52に停止を指令
し、また、FPGAの外部に対して、停止条件が発生し
たことを通知する。この回路においては、FPGA51
のデバッグ機能出力端子のうちの1つの端子54が、C
PU56のインタラプト入力端子55に接続されてい
る。停止条件が発生した場合、CPU56は、このイン
タラプト入力端子55から入力を受ける。ソフトウェア
・コード48においても、同様に、基本動作に必要な部
分と、動作検証の際に必要な情報が含まれている。この
ソフトウェア・デバッグ・コード50の情報から、上記
インタラプト入力は、停止条件が発生したことを示すこ
とを知る。CPU56は続けてこのソフトウェア・デバ
ッグ・コード50によって、メモリからデータを読み出
す。
【0042】この開発システムには、このような動作検
証時に使用する、CPU58の情報や、FPGA51の
情報を読み取るツール58が装備されている。以降はこ
れをデバッグ・ツールと呼ぶことにする。CPUは、読
み出したデータを、このデバッグ・ツール58を通じて
ユーザに通知する。上記の停止条件が発生したら、FP
GA51のデバッグ機能53によりデバッグ用の出力端
子59から、内部状態を示す情報を出力する。例えば、
FPGA内部のレジスタの値や、内部論理回路でどんな
信号がやり取りされているか等の情報を出力する。
【0043】また、この回路ではコネクタ57が設けら
れており、このコネクタ57からこのデバッグ情報を取
り込むことができる。デバッグ・ツール58側で、この
コネクタ57からの出力を監視している。このデバッグ
・ツール58は、このコネクタ57から出力されるデバ
ッグ情報の形式に対応しており、この開発システムを用
いるユーザは、この停止条件が発生したとき、このFP
GAの内部状態がどうなっているのかを確認、分析し
て、動作の検証を行うことができる。
【0044】
【発明の効果】以上の説明から明らかなように、請求項
1の発明においては、ハードウェア・コードとソフトウ
ェア・コードとを同じメモリ領域を共有することによっ
て、それぞれのコード別にメモリを用意する必要がな
く、デジタル機器を製造する上で部品点数を減らすこと
ができ、コストダウン、生産性や信頼性等の向上につな
がる。
【0045】請求項2の発明においては、FPGA等の
プログラミング可能なハードウェアが初めからDMA
(ダイレクト・メモリ・アクセス)機能を備えているの
でFPGA等が初めから汎用のメモリに対する読み出し
・書き込みが可能となり、また、使用するハードウェア
・コードの保存に汎用のメモリを使用することが可能と
なるので、デジタル機器を製造する上で、価格の低い部
品を使用でき、コストダウンになる。
【0046】請求項3の発明においては、同一のメモリ
領域内でハードウェア・コードとソフトウェア・コード
の2つのコードを保存する際、一方のコードを先頭番地
からアドレスの大きくなる方向へ書き、また他方のコー
ドを逆に最終番地からアドレスの小さくなる方向へ書き
込むことによって、両方のコードがメモリ領域を有効活
用することができ、また、両方のコードの開始番地がど
こにあるのかわからないということがなく、一意に求め
ることができる。
【0047】請求項4の発明においては、同一のメモリ
領域上の保存されているコードをCPU及びFPGA等
のプログラミング可能なハードウェアFPGAに振り分
ける際に、CPU及びFPGA等のプログラミング可能
なハードウェアが直接関与せず、別のコード分離器がこ
の振り分けを行うことによって、CPU及びFPGA等
のプログラミング可能なハードウェアは、それぞれ、自
分用のコードがどこにあるのか、また、どういう構造に
なっているのか関係がなく、このコードの配置を変更し
た場合に、影響がCPU及びFPGA等のプログラミン
グ可能なハードウェアに及ばないので、設計者はこれら
のことに関係なく設計ができる。
【0048】請求項5の発明においては、同一のメモリ
領域上にそれぞれの動作コードが保存されているデジタ
ル機器において、CPUが初めにソフトウェア・コード
をそのメモリ領域から読み出し、その後にハードウェア
・コードを、CPU自身が読み出して、FPGA等のプ
ログラミング可能なハードウェアに対し入力すること
で、CPU自身がソフトウェア・コードを読み出すだけ
でなく、ハードウェア・コードも読み出す管理をするこ
とで、FPGAが読み出すハードウェア・コード専用の
メモリがそもそも必要でなくなり、このような製品を構
成する上で、部品点数を減らすことができ、コストダウ
ン、生産性や信頼性等の向上につながる。
【0049】請求項6の発明においては、FPGA等の
プログラミング可能なハードウェア自身に、デバッグ用
の機能が装備されていることで、自分自身の動作を常に
監視することができ、このハードウェアが、想定されて
いない動作をした場合などでも、これを直ちに検知する
ことができ、問題の特定を早めることができる。
【0050】請求項7の発明においては、このようなデ
ジタル機器で、デバッグ機能を持つFPGA等のプログ
ラミング可能なハードウェアから出力される信号を参照
したり、逆に信号を入力したりするためのコネクタを装
備していることで、この開発システムを用いるユーザー
は、このFPGAの内部状態がどうなっているのかを直
接確認、分析できるので、動作の検証をより厳密に行う
ことができる。
【0051】請求項8の発明においては、このようなデ
ジタル機器を開発する際、トップダウン設計の一種とし
て、開発段階の初期(上流)では特にソフトウェア・ハ
ードウェアの区別なく設計を行い、下流においては計算
機がその割り当てを最適に決定しソフトウェア・コー
ド、ハードウェア・コードをそれぞれ自動生成する手法
を取る場合、ソフトウェア・ツール等からなる開発シス
テムが、ソフトウェア・コード、ハードウェア・コード
を一体で生成することで、ユーザが開発対象の機能を決
定すれば、その後は機械的に処理され、ソフトウェア、
ハードウェアの情報が一体となった、ただ1つのオブジ
ェクト・コードが生成され、従って、この自動的な過程
においては、ユーザから見ればブラックボックスとして
機能しており、ユーザは何もすることなく、ユーザの指
定した機能のうち、どの部分がソフトウェアで実現する
のか、逆に、どの部分がハードウェアで実現するのかを
まったく気にすることなく、開発を進めることができ
る。また、別々に生成する場合より、そのコードの管理
が容易になり、コードの使い方を間違ってしまうことも
なく、開発時の信頼性が向上する。
【0052】請求項9の発明においては、このようなデ
ジタル機器を開発するための、ソフトウェア・ツール等
の開発システムが生成する、ソフトウェア・コード及び
ハードウェア・コードが一体になったコードに、その機
器が動作をするために必要な情報だけでなく、テスト及
びデバッグ用のコードを付加して生成することにより、
FPGA等のプログラミング可能なハードウェアに対し
て、どのようなテストをするのか動作検証などの設定が
できるようになる。
【0053】請求項10の発明においては、請求項9の
開発システムにおいて、開発対象の実機を実際に動作さ
せるのではなく、実機の動作を計算機上等でシミュレー
ションすることができる機能を有することで、実機を組
み立てて、実際に動作させることなく、計算によっての
み動作の様子を確認することができるので、開発のコス
トを下げることができ、また、問題点を開発の早期に発
見することができる。
【0054】請求項11の発明においては、請求項10
の開発システムにおいて、トップダウン設計法の一種と
して、開発段階の初期(上流)で特にソフトウェア・ハ
ードウェアの区別なく機能の設計を行い、下流において
は計算機がその割り当てを最適に決定する手法を取る開
発システムが、上記動作シミュレーション結果に基づ
き、ソフトウェア部分によって実現する機能と、ハード
ウェア部分によって実現する機能の切り分けを、自動で
行うことで、機能の振り分けの際に、ユーザがその判断
に必要な知識及び経験が必要でなくなり、誤りや漏れが
なくなる。
【0055】請求項12の発明においては、請求項11
の開発システムにおいて、上記シミュレーション結果に
基づくハードウェア部分、ソフトウェア部分の切り分け
を実機のシミュレーション結果から得られた、実機の処
理能力を基準に行うことで、実機に対して十分な処理速
度を確保することができる。
【0056】請求項13の発明においては、請求項11
の開発システムにおいて、上記シミュレーションに基づ
くハードウェア部分、ソフトウェア部分の切り分けを実
機のシミュレーション結果から得られた、各部分のコー
ドサイズを基準に行うことから、実機に対して十分なコ
ードサイズの余裕を確保しておくことができ、今後の拡
張などにその分の余裕を回すことができる。
【図面の簡単な説明】
【図1】本発明の第1の実施例のデジタル機器の構成を
示す図である。
【図2】共有メモリのメモリ構成を示す図である。
【図3】共有メモリの異なるメモリ構成を示す図であ
る。
【図4】本発明の第2の実施例のデジタル機器の構成を
示す図である。
【図5】コード分離器によるコードの読み分けの様子を
示す図である。
【図6】本発明のデジタル機器の開発方法において、生
成された各ソースコードを、一体のオブジェクト・コー
ドとして出力する様子を示す図である。
【図7】本発明のデジタル機器の開発方法において、テ
スト及びデバッグの様子を示す図である。
【図8】従来の技術によるCPU及びFPGAを搭載す
るデジタル機器の構成を示す図である。
【図9】従来の開発システムを用いた開発方法におい
て、開発者が指定した機能をハードウェアとソフトウェ
アに自動的に振り分け、それぞれのソースコードを生成
する様子を示す図である。
【図10】従来の開発システムを用いた開発方法におい
て、これまで生成されたハードウェアとソフトウェアの
それぞれのソースコードを、別々に処理している様子を
表す図である。
【符号の説明】
1,23,36,48…ソフトウェア・コード、2,2
4,37,45…ハードウェア(FPGA)・コード、
3,25,30…デジタル機器、4,18,26,3
6,31,43,56…CPU、5…ソフト用メモリ、
6,21,28,34,44,51…FPGA、7…F
PGA用メモリ、8,29,35…バス、9…機能イメ
ージ、10,11…大まかに分割された機能、12,3
8…ソフトウェアによって実現する機能、13,39…
ハードウェアによって実現する機能、14,16…ソフ
トのソースコード、15,19…ハードのソースコー
ド、20…ハードウェア・オブジェクト・コード、17
…ソフトウェア・オブジェクト・コード、22,42…
一体化されたコード、27,33…共有メモリ、32…
コード分離器、40…ソフトウェア・ソース・コード、
41…ハードウェア・ソース・コード、46…ハードウ
ェア・動作・コード、47…ハードウェア・デバッグ・
コード、49…ソフトウェア・動作・コード、50…ソ
フトウェア・デバッグ・コード、52…FPGA通常論
理機能、53…FPGAデバッグ機能、54,59…デ
バッグ情報出力端子、55…外部インタラプト入力端
子、57…コネクタ、58…デバッグ・ツール。

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 CPU及びFPGA等のプログラミング
    可能なハードウェアを備え、これらによって内部動作の
    コントロールを行うデジタル機器において、前記CPU
    が動作する際に必要とするソフトウェア・コードと、前
    記FPGA等のプログラミング可能なハードウェアが動
    作する際に必要とするハードウェア・コードが、機器内
    部の、同一のメモリ領域上に共存して保存されているこ
    とを特徴とするデジタル機器。
  2. 【請求項2】 前記FPGA等のプログラミング可能な
    ハードウェア自身には、初めからDMA(ダイレクト・
    メモリ・アクセス)機能を有していることを特徴とする
    請求項1に記載のデジタル機器。
  3. 【請求項3】 前記同一のメモリ領域内に前記ソフトウ
    ェア・コードとハードウェア・コードの2つのコードを
    保存する際、一方のコードを先頭番地からアドレスの大
    きくなる方向へ書き込み、他方のコードを逆に最終番地
    からアドレスの小さくなる方向へ書き込むことを特徴と
    する請求項1または2に記載のデジタル機器。
  4. 【請求項4】 前記CPU及び前記FPGA等のプログ
    ラミング可能なハードウェアのそれぞれが、前記ソフト
    ウェア・コードとハードウェア・コードを振り分ける際
    に、前記CPU及び前記FPGA等のプログラミング可
    能なハードウェアが直接関与せず、コード分離器が前記
    振り分けを行うことを特徴とする請求項1乃至3のいず
    れかに記載のデジタル機器。
  5. 【請求項5】 前記CPUが初めにソフトウェア・コー
    ドを前記メモリ領域から読み出し、その後CPUがハー
    ドウェア・コードを読み出し、前記FPGA等のプログ
    ラミング可能なハードウェアに対し出力することを特徴
    とする請求項1乃至4のいずれかに記載のデジタル機
    器。
  6. 【請求項6】 前記FPGA等のプログラミング可能な
    ハードウェアは、デバッグ用の機能を有していることを
    特徴とする請求項1に記載のデジタル機器。
  7. 【請求項7】 前記デバッグ機能を有するFPGA等の
    プログラミング可能なハードウェアから出力される信号
    を参照したり、逆に信号を入力したりするためのインタ
    フェースを備えていることを特徴とする請求項6に記載
    のデジタル機器。
  8. 【請求項8】 CPU及びFPGA等のプログラミング
    可能なハードウェアを備え、これらによって内部動作の
    コントロールを行うデジタル機器の開発方法において、
    ソフトウェア・ツール等からなる開発システムが、前記
    CPUが動作の際に必要とするソフトウェア・コード
    と、前記FPGA等のプログラミング可能なハードウェ
    アが動作の際に必要とするハードウェア・コードとを一
    体で生成することを特徴とする開発方法。
  9. 【請求項9】 前記一体で生成されるソフトウェア・コ
    ードとハードウェア・コードには、デジタル機器が動作
    をするために必要な情報だけでなく、テスト及びデバッ
    グ用のコードを付加して生成することを特徴とする請求
    項8に記載の開発方法。
  10. 【請求項10】 開発したデジタル機器の動作検証や動
    作に問題が生じた場合の原因を究明するに際し、開発対
    象の実機を実際に動作させるのではなく、実機の動作を
    計算機上等でシミュレーションすることができる機能を
    有することを特徴とする請求項9に記載の開発方法。
  11. 【請求項11】 開発段階の上流でソフトウェア、ハー
    ドウェアの区別なく機能の設計を行い、下流で計算機が
    その割り当てを最適に決定するトップダウン設計法を採
    用した開発方法において、実機の動作を計算機上でシミ
    ュレーションし、該シミュレーション結果に基づきソフ
    トウェア部分によって実現する機能と、ハードウェア部
    分によって実現する機能の切り分けを、自動的に行うこ
    とを特徴とする請求項10に記載の開発方法。
  12. 【請求項12】 上記シミュレーション結果に基づくハ
    ードウェア部分、ソフトウェア部分の切り分けを、実機
    のシミュレーション結果から得られた、実機の処理能力
    を基準に行うことを特徴とする請求項11に記載の開発
    方法。
  13. 【請求項13】 上記シミュレーション結果に基づくハ
    ードウェア部分、ソフトウェア部分の切り分けを、実機
    のシミュレーション結果から得られた、各部分のコード
    サイズを基準に行うことを特徴とする請求項11に記載
    の開発方法。
JP11086484A 1999-03-29 1999-03-29 デジタル機器及びその開発方法 Pending JP2000284945A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11086484A JP2000284945A (ja) 1999-03-29 1999-03-29 デジタル機器及びその開発方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11086484A JP2000284945A (ja) 1999-03-29 1999-03-29 デジタル機器及びその開発方法

Publications (1)

Publication Number Publication Date
JP2000284945A true JP2000284945A (ja) 2000-10-13

Family

ID=13888263

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11086484A Pending JP2000284945A (ja) 1999-03-29 1999-03-29 デジタル機器及びその開発方法

Country Status (1)

Country Link
JP (1) JP2000284945A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006011840A (ja) * 2004-06-25 2006-01-12 Mitsubishi Electric Corp 組み込みシステム
US7200735B2 (en) 2002-04-10 2007-04-03 Tensilica, Inc. High-performance hybrid processor with configurable execution units
JP2012133756A (ja) * 2010-11-10 2012-07-12 Src Computers Inc ヘテロジニアス黙示的及び明示的プロセッシング要素の計算の一体化のためのシステム及び方法
JP2020074192A (ja) * 2012-11-09 2020-05-14 コーヒレント・ロジックス・インコーポレーテッド 多重プロセッサシステムのためのリアルタイム分析及び制御
JP7064060B1 (ja) 2019-04-23 2022-05-09 アーバー・カンパニー・エルエルエルピイ 二重機能セルアレイを再構成するためのシステムおよび方法
US11435800B2 (en) 2019-04-23 2022-09-06 Arbor Company, Lllp Systems and methods for reconfiguring dual-function cell arrays
US11463524B2 (en) 2020-06-29 2022-10-04 Arbor Company, Lllp Mobile IoT edge device using 3D-die stacking re-configurable processor module with 5G processor-independent modem

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7200735B2 (en) 2002-04-10 2007-04-03 Tensilica, Inc. High-performance hybrid processor with configurable execution units
JP2006011840A (ja) * 2004-06-25 2006-01-12 Mitsubishi Electric Corp 組み込みシステム
JP2012133756A (ja) * 2010-11-10 2012-07-12 Src Computers Inc ヘテロジニアス黙示的及び明示的プロセッシング要素の計算の一体化のためのシステム及び方法
US8930892B2 (en) 2010-11-10 2015-01-06 SRC Computers, LLC System and method for computational unification of heterogeneous implicit and explicit processing elements
US11720479B2 (en) 2012-11-09 2023-08-08 Coherent Logix, Incorporated Real time analysis and control for a multiprocessor system
JP2020074192A (ja) * 2012-11-09 2020-05-14 コーヒレント・ロジックス・インコーポレーテッド 多重プロセッサシステムのためのリアルタイム分析及び制御
JP7053691B2 (ja) 2012-11-09 2022-04-12 コーヒレント・ロジックス・インコーポレーテッド 多重プロセッサシステムのためのリアルタイム分析及び制御
JP7064060B1 (ja) 2019-04-23 2022-05-09 アーバー・カンパニー・エルエルエルピイ 二重機能セルアレイを再構成するためのシステムおよび方法
US11435800B2 (en) 2019-04-23 2022-09-06 Arbor Company, Lllp Systems and methods for reconfiguring dual-function cell arrays
JP2022525557A (ja) * 2019-04-23 2022-05-17 アーバー・カンパニー・エルエルエルピイ 二重機能セルアレイを再構成するためのシステムおよび方法
US11797067B2 (en) 2019-04-23 2023-10-24 Arbor Company, Lllp Systems and methods for reconfiguring dual-function cell arrays
US11463524B2 (en) 2020-06-29 2022-10-04 Arbor Company, Lllp Mobile IoT edge device using 3D-die stacking re-configurable processor module with 5G processor-independent modem
US11895191B2 (en) 2020-06-29 2024-02-06 Arbor Company, Lllp Mobile IoT edge device using 3D-die stacking re-configurable processor module with 5G processor-independent modem

Similar Documents

Publication Publication Date Title
EP0814404B1 (en) Debugging apparatus for debugging a program
US5838948A (en) System and method for simulation of computer systems combining hardware and software interaction
CN112580295B (zh) 多核SoC芯片的自动化验证方法、系统及装置
US9141747B1 (en) System level tools to support FPGA partial reconfiguration
US8412918B1 (en) Booting mechanism for FPGA-based embedded system
US7584456B1 (en) Method and apparatus for debugging embedded systems having read only memory
JPH0769853B2 (ja) 回路内エミュレータ
EP1172730A2 (en) One-chip system large-scale integrated circuit including processor circuit and its pheripheral circuits
US5832251A (en) Emulation device
JPH11513512A (ja) ディジタル信号プロセッサの製造方法
CN106909362A (zh) Bmc固件生成的方法和装置、bmc系统启动的方法和装置
US7308631B2 (en) Wrapper serial scan chain functional segmentation
CN112286750A (zh) 一种gpio验证方法、装置、电子设备和介质
JP2000284945A (ja) デジタル機器及びその開発方法
CN114138360B (zh) DSP在Flash上的多核烧写启动方法及系统
US9805152B1 (en) Compilation of system designs
CN107607853B (zh) 芯片的调试方法、装置、存储介质和处理器
CN114546746A (zh) 一种芯片调试的方法、装置、电子设备及存储介质
US7565632B2 (en) Behavioral synthesizer system, operation synthesizing method and program
US6446251B1 (en) Method and apparatus for socket-based design with reusable-IP
CN113868046A (zh) 一种pad控制单元的功能验证方法、系统及相关组件
US20070101220A1 (en) Systems and methods for accessing input/output devices
US20230289500A1 (en) Method and system for building hardware images from heterogeneous designs for eletronic systems
JPH08272770A (ja) マイクロコントローラディベロップメントシステム
US20210173994A1 (en) Method and system for viewing simulation signals of a digital product

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050322

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050712