(57)【特許請求の範囲】
【請求項１】
ＤＲＡＭ部と内部マスクＲＯＭ部とメモリコントローラとを同一チップ基板内に含む半導体装置であって、さらに、
プログラムコードが記録された外部ＲＯＭを接続するための端子であって、電源電位もしくは高レベル電位に接続される端子と、
前記端子に接続されるコンパレータであって、前記端子からの１バイト入力が「ＦＦ」（１６進数）であれば第１信号を出力し、前記１バイト入力が「ＦＦ」（１６進数）以外であれば第２信号を出力するコンパレータと、
前記内部マスクＲＯＭ部、前記端子および前記コンパレータに接続され、前記内部マスクＲＯＭ部側の第１経路および前記端子側の第２経路を切り替え可能に備える経路選択手段であって、前記コンパレータから前記第１信号の入力を受けた場合には、前記第１経路を選択し、前記第２信号の入力を受けた場合には、前記第２経路を選択する経路選択手段とを含み、
前記メモリコントローラは、前記経路選択手段に接続され、前記経路選択手段によって前記第１経路が選択された場合には、該第１経路を介して前記内部マスクＲＯＭ部に記録されているプログラムコードを前記ＤＲＡＭ部にロードし、前記第２経路が選択された場合には、該第２経路を介して前記外部ＲＯＭに記録されているプログラムコードを前記ＤＲＡＭ部にロードする、
半導体装置。
【請求項２】
ＤＲＡＭ部と内部マスクＲＯＭ部とメモリコントローラとを同一チップ基板内に含む半導体装置であって、さらに、
プログラムコードが記録された外部ＲＯＭを接続するための端子であって、接地電位もしくは低レベル電位に接続される端子と、
前記端子に接続されるコンパレータであって、前記端子からの１バイト入力が「００」（１６進数）であれば第１信号を出力し、前記１バイト入力が「００」（１６進数）以外であれば第２信号を出力するコンパレータと、
前記内部マスクＲＯＭ部、前記端子および前記コンパレータに接続され、前記内部マスクＲＯＭ部側の第１経路および前記端子側の第２経路を切り替え可能に備える経路選択手段であって、前記コンパレータから前記第１信号の入力を受けた場合には、前記第１経路を選択し、前記第２信号の入力を受けた場合には、前記第２経路を選択する経路選択手段とを含み、
前記メモリコントローラは、前記経路選択手段に接続され、前記経路選択手段によって前記第１経路が選択された場合には、該第１経路を介して前記内部マスクＲＯＭ部に記録されているプログラムコードを前記ＤＲＡＭ部にロードし、前記第２経路が選択された場合には、該第２経路を介して前記外部ＲＯＭに記録されているプログラムコードを前記ＤＲＡＭ部にロードする、
半導体装置。
【請求項３】
前記半導体装置には、さらにハードディスクドライブとのデータ入出力がインターフェイスされるドライブインターフェイスと、ホストコンピュータとのデータ入出力がインターフェイスされるホストインターフェイスを有し、
前記半導体装置は、ハードディスクコントローラとして利用される請求項１または２に記載の半導体装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体装置およびその制御方法ならびにハードディスク装置に関し、特にハードディスク装置への適用に好適な、内部マスクＲＯＭおよびＤＲＡＭを同一チップ基板に有するシステムＬＳＩとその制御方法に適用して有効な技術に関する。
【０００２】
【従来の技術】
近年、ＣＰＵ、ＭＰＵ等のロジック回路（論理演算回路）とＤＲＡＭのメモリセルおよびその周辺回路とを同一チップ基板内に形成するシステムＬＳＩが開発されている。システムＬＳＩは、１チップ内に論理演算回路と汎用的なメモリ素子であるＤＲＡＭとが一体に形成されたものであるため、以下のような利点を持つ。つまり、従来別途設置していたメモリ素子を用いる必要がないのでコスト削減が図れ、メモリ素子で占有されていた設置面積を削減できる。加えて、論理演算素子とメモリ素子とを別途設けた場合には、相互接続するデータバス（あるいはアドレスバス）の本数がパッケージに配置できる入出力ピン数で制限されるが、ＤＲＡＭが一体で形成されるシステムＬＳＩの場合には入出力ピンを介してパッケージ外にデータバス（あるいはアドレスバス）を取り出す必要がないので、データバス本数の制限を少なくできる。これはデータバスの距離を短くすることにも寄与し、当該バスがクリティカルパスになっている場合にはシステム全体の速度を向上してその性能を高めることにも寄与できる。特に、大量のデータを取り扱うハードディスクコントローラ等コンピュータシステムの周辺機器への適用に適している。
【０００３】
一方、半導体装置をハードディスク等コンピュータシステムの周辺機器の制御素子に適用しようとした場合、その論理演算回路を機能させるプログラムコード（マイクロコード）を記憶させておくことが必要である。一般的にはマスクＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ等が用いられる。当業者に周知な通り、その使い勝手と価格はトレードオフの関係にある。つまり、マスクＲＯＭは安価ではあるが一度書き込んだプログラムの書き換えは不可能であり、しかも素子製造時にマイクロコードが確定している必要がある。ＰＲＯＭも安価ではあるが一度書き込んだプログラムの書き換えは不可能である。ＥＰＲＯＭ、ＥＥＰＲＯＭは、一度プロがラムを書き込んでも紫外線を照射してまたは電気的に消去して書き換えることが可能であるが高価である。近年ＥＥＰＲＯＭの一種にいわゆるフラッシュＥＥＰＲＯＭが開発され、大容量かつ比較的安価な電気的書き換え可能ＲＯＭが供給されつつある。
【０００４】
ところで、ハードディスク等コンピュータシステムの周辺機器の制御素子の開発には、マイクロコードの書き換えが可能な記憶素子が好ましい。つまり、いかに完成度を高くしてマイクロコードを開発したとしてもプログラムの誤り（バグ）を皆無にすることは困難であり、また、開発の途中でユーザの仕様変更に対応する必要が生じる場合がある。このような場合に仮にマスクＲＯＭを用いてマイクロコードを記憶していると、半導体装置のマスク変更から製品完成までのリードタイムに数ヶ月を要することを考慮すれば、マイクロコードの変更から実際に変更に対応したチップ（制御素子）が得られるまでに数ヶ月以上の期間を要してしまう。近年の、特にハードディスク装置の早い世代交代を考慮すれば、このような生産のリードタイムは許容できる範囲を超えている。よって、迅速なマイクロコードの変更に対応するためには、マイクロコードの記憶素子としてＥＰＲＯＭまたはＥＥＰＲＯＭの適用を考える必要がある。特にフラッシュＥＥＰＲＯＭは近年の需要の増大から価格が低下し、記憶容量も大きな製品が開発されており、論理演算回路とフラッシュＥＥＰＲＯＭが同一チップ基板に一体形成された制御用素子も開発され一般に用いられている。
【０００５】
前記したマイクロコード開発の要請と、ＤＲＡＭが一体形成されたシステムＬＳＩの制御素子への適用の要請とから、論理演算素子にＤＲＡＭとフラッシュＥＥＰＲＯＭとが同一チップ基板に一体形成された半導体装置が実現されるのが理想的である。しかしながら、半導体装置の製造技術の問題からＤＲＡＭ素子とフラッシュＥＥＰＲＯＭとを同一チップ基板上に一体形成することは困難である。このため、システムＬＳＩでフラッシュＥＥＰＲＯＭを用いようとするとフラッシュＥＥＰＲＯＭとシステムＬＳＩを別チップに分けてプリント配線基板上に個別にマウントするという方策が採られる。このとき、入出力端子数の制限から、フラッシュＥＥＰＲＯＭはシリアル型が用いられる。
【０００６】
また、開発の初期段階では、マイクロコードの変更が多く行われるという前提のもとに、初期段階ではシリアルタイプの外部フラッシュＲＯＭによりマイクロコードを供給し、マイクロコードが確定された段階でシステムＬＳＩ内部にマスクＲＯＭを形成するという手法がとられる。この場合、量産段階に入ると、最もコストの低いマスクＲＯＭによりマイクロコードが記録されるので、また、製造技術上の障害もないので、技術的コスト的に有利な手法であると考えられている。
【０００７】
【発明が解決しようとする課題】
前記した状況において、さらに制御装置の低価格化が望まれている。特にハードディスク装置のようにその世代交代の速さと低価格化の進展が急激である分野においてはその要請は著しい。当該要請は、低価格化を実現するとともに生産のリードタイムが発生ないことが要請される。また、制御素子のデータアクセス速度等性能が低下しないことも同時に要請される。
【０００８】
また、開発段階で用いていた外部フラッシュＲＯＭをマイクロコードが確定した段階でＬＳＩ内のマスクＲＯＭに置き換えようとすると、半導体装置のマスク作成から製品として供給されるまでのリードタイムが長いという問題がある。また、外部フラッシュＲＯＭからのマイクロコードのダウンロードを内部ＲＯＭからのダウンロードに変更する必要があり、これに伴う回路の変更、マスク作成が必要になる。このようなマスク変更を行えば、ＬＳＩ製品の再評価が必要になり、その分製品供給の時期の遅れと工数の増加を来たすという問題がある。
【０００９】
本発明の目的は、ＤＲＡＭが同一チップ基板内に形成されたシステムＬＳＩを用いた制御素子において、マイクロコードの変更を生産リードタイムを発生することなく、また、ＬＳＩの再評価を伴うことなく容易に行うことができる手段を提供することにある。
【００１０】
本発明の他の目的は、ＤＲＡＭが同一チップ基板内に形成されたシステムＬＳＩにおいて低価格なマイクロコードの記録手段と、生産リードタイムを生じないマイクロコードの変更手段を提供することにある。
【００１１】
本発明のさらに他の目的は、制御素子の低価格化、高性能化、マイクロコードの柔軟な開発を実現できる手段を提供することにある。
【００１２】
【課題を解決するための手段】
本願の発明の概略を説明すれば、以下の通りである。すなわち、本発明の半導体装置は、ＤＲＡＭ部と内部マスクＲＯＭ部とを同一チップ基板内に含む半導体装置であって、さらに、外部ＲＯＭに接続される端子と、前記外部ＲＯＭに記録されているプログラムコードまたは前記内部マスクＲＯＭに記録されているプログラムコードの何れのプログラムコードをロードするかを選択するロード選択手段と、を含み、前記端子に前記外部ＲＯＭが接続されている場合には、前記外部ＲＯＭに記録されているプログラムコードのロードが優先的に選択されるものである。
【００１３】
また、本発明の制御方法は、ＤＲＡＭ部と、内部マスクＲＯＭ部と、外部ＲＯＭに接続される端子と、前記内部マスクＲＯＭ部からの第１経路または前記端子からの第２経路の何れかの経路を選択する経路選択手段と、前記端子に前記外部ＲＯＭが接続されているか否かを判断する接続判断手段と、を含む半導体装置の制御方法であって、（ａ）前記端子に前記外部ＲＯＭが接続されているか否かを判断する接続判断ステップと、（ｂ）前記端子に前記外部ＲＯＭが接続されていない場合には前記第１経路を選択し、前記端子に前記外部ＲＯＭが接続されている場合には前記第２経路を選択する経路選択ステップと、（ｃ）前記内部マスクＲＯＭ部または外部ＲＯＭに記録されているプログラムコードがロードされるロードステップと、を含む。
【００１４】
このような半導体装置あるいは制御方法によれば、外部ＲＯＭが接続されている場合には外部ＲＯＭからプログラムコードがロードされ、外部ＲＯＭが接続されていない場合には内部マスクＲＯＭからプログラムコードがロードされる。半導体装置に内蔵されるＲＯＭとしては、コストの低いマスクＲＯＭを用いることができ、半導体装置の製造コストを低減でき、また、製造プロセス上困難なフラッシュＥＥＰＲＯＭを用いる必要もない。一方、プログラムコードに変更を生じた場合には外部接続される外部ＲＯＭに変更したプログラムコードを記録し、この外部ＲＯＭを半導体装置に接続して変更したプログラムコードで半導体装置を作動できる。これにより、予め内部マスクＲＯＭが組み込まれているので、外部ＲＯＭを読み込むためのインターフェイスと内部ＲＯＭを読み込むためのインターフェイスをともに有していることになり、開発段階から量産段階に至るまで当該インターフェイスの変更を行う必要はなく、この部分にかかる設計変更、それに伴うＬＳＩ（半導体装置）の再評価の必要がない。 また、プログラムコードの変更にも柔軟に対応することが可能になる。この外部ＲＯＭでプログラム変更に対応している期間内では、半導体装置と外部ＲＯＭとの両方が必要であるが、その間に半導体装置のマスク変更（プログラム変更）に対応することが可能であり、内部マスクＲＯＭがプログラム変更に対応した後には外部ＲＯＭを取り付ける必要はない。これにより最小限のコスト上昇で、柔軟なプログラム変更に対応することができる。なお、マスクＲＯＭのプログラムの変更は半導体装置のマスク変更を伴うため、半導体装置自体の性能試験を行う必要があるが、本発明の場合には製品チェックの期間をも外部ＲＯＭの取り付けで時間を稼ぐことができる。これにより製品の出荷計画等を変更することなく、実質的にプログラム変更に伴うリードタイムをゼロにできる。
【００１５】
なお、前記ロード選択手段には、前記端子に前記外部ＲＯＭが接続されているか否かを判断する接続判断手段と、前記端子または内部マスクＲＯＭ部の何れかを選択する経路選択手段とを含み、前記経路選択手段は前記接続判断手段からの信号により、前記端子に前記外部ＲＯＭが接続されていない場合には前記内部マスクＲＯＭ部からの第１経路を選択し、前記端子に前記外部ＲＯＭが接続されている場合には前記端子からの第２経路を選択するものとすることができる。
【００１６】
また、前記接続判断手段には、コンパレータを含み、前記端子が、接地電位もしくは低レベル電位に接続され、または、プルアップ抵抗を介して電源電位もしくは高レベル電位に接続され、前記コンパレータは、前記端子からの１バイト入力が「００」（１６進数）または「ＦＦ」（１６進数）であれば前記経路選択手段で前記第１経路を選択する信号を出力し、前記１バイト入力が「００」（１６進数）または「ＦＦ」以外であれば前記経路選択手段で前記第２経路を選択する信号を出力するものとすることができる。
【００１７】
通常プログラムコードの最初の部分にはジャンプコマンドあるいはジャンプ先アドレスが入るため、プログラムコードの先頭に「００」（１６進数）または「ＦＦ」（１６進数）が入ることはない。本発明はこのようなプログラムの実情を利用したものであり、コンパレータが端子からの１バイト入力を「００」（１６進数）または「ＦＦ」（１６進数）と判断した場合には、端子には外部ＲＯＭが接続されていないと判断するものである。なお、端子が接地電位（または低レベル電位）に接続されている場合、外部ＲＯＭが接続されていなければ端子からの１バイト入力は「００」（１６進数）になる。端子が電源電位（または高レベル電位）にプルアップ抵抗を介して接続されている場合、外部ＲＯＭが接続されていなければ端子からの１バイト入力は「ＦＦ」（１６進数）になる。これにより、外部ＲＯＭが接続されていないときの端子電位が不定になることを防止し、確実に端子に外部ＲＯＭが接続されているか否かを検知できる。
【００１８】
また、本発明のプログラムコードは、半導体装置内のＤＲＡＭまたは演算部にバス接続されたＲＡＭ部に記憶できる。これにより、プログラムコードの読み出しを高速化して半導体装置の動作速度を向上しシステム全体の性能向上を図れる。なお、プログラムコードのロードには、前記端子または内部マスクＲＯＭ部からのコードデータを１ビット毎にシリアル入力し、前記１ビットデータをシリアル／パラレル変換手段で複数ビットデータに変換し、前記複数ビットデータを複数ビット毎にパラレル処理してメモリコントローラに転送する方式を採用できる。
【００１９】
また、本発明の半導体装置は、ハードディスクコントローラとしての適用に特に効果的である。ハードディスク装置の製品開発のスピードは極めて早く、製品の世代交代も早い。このような製品分野では、柔軟なプログラム変更に対応することは極めて重要であり、また、本発明を適用すればコストの上昇を抑制してプログラム変更に適応することが可能になる。
【００２０】
なお、本明細書において、同一チップ基板という場合には、半導体基板であるシリコンチップが１チップで構成されていることをいい、同一チップ基板内に複数素子（たとえばＭＰＵを構成するトランジスタとＤＲＡＭのメモリセル）が形成されているという場合には、同一のシリコンチップ（１チップ）に複数種類の素子が形成されていることをいう。
【００２１】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。ただし、本発明は多くの異なる態様で実施することが可能であり、本実施の形態の記載内容に限定して解釈すべきではない。なお、実施の形態の全体を通して同じ要素には同じ番号を付するものとする。
【００２２】
図１は、本発明の一実施の形態であるハードディスク装置の一例を示した概念ブロック図である。本実施の形態のハードディスク装置は、情報が磁気的に記録されるディスク状の磁気記録媒体１と、この磁気記録媒体１を回転駆動するスピンドルモータ２と、磁気記録媒体１に情報を記録するあるいは記録された情報を読み出す磁気ヘッド３と、磁気ヘッド３を支持するアーム４と、アーム４を駆動するボイスコイルモータ５を有し、磁気ヘッド３への情報の入出力あるいはスピンドルモータ２、ボイスコイルモータ５の駆動制御を行うハードディスクコントローラ６を有する。また、ハードディスクコントローラ６は、ホストコンピュータ７にインターフェイスし、ホストコンピュータ７からの情報の読み出し要請あるいは書き込み要請に従って磁気記録媒体１に情報を磁気情報として読み出し、あるいは書き込みする。
【００２３】
図２は、ハードディスクコントローラ６に用いられる１チップの半導体装置１０と外部シリアルＲＯＭ１１を示したブロック図である。
【００２４】
１チップの半導体装置１０は、ＭＰＵ１２、メモリコントローラ１３、ＤＲＡＭ１４、ホストインターフェイス１５、ドライブインターフェイス１６を有し、さらに、外部シリアルＲＯＭ１１と接続される端子１７、セレクタ１８、内部シリアルマスクＲＯＭ１９、コンパレータ２０、パラレル／シリアル変換器２１を有する。
【００２５】
外部シリアルＲＯＭ１１は、シリアルにデータ読み出しが行われるタイプのＲＯＭであり、たとえばシリアルフラッシュＥＥＰＲＯＭを例示できる。シリアルタイプを用いることにより半導体装置１０へのデータインターフェイスに必要な端子数を少なくできる。
【００２６】
ＭＰＵ１２は、たとえば３２ビットデータバスを有する論理演算回路である。
ＭＰＵ１２は、ホストインターフェイス１５を介するホストコンピュータ７との間のデータの入出力を制御する。また、ＭＰＵ１２は、ドライブインターフェイス１６を介してハードディスクドライブ（磁気記録媒体１）に情報を書き込みあるいは読み出す制御を行い、アーム４、スピンドルモータ２の駆動を制御する。これら制御に用いられるプログラムコードは、ＤＲＡＭ１４の一部に格納される。
【００２７】
メモリコントローラ１３は、ＤＲＡＭ１４、ＭＰＵ１２、ホストインターフェイス１５、ドライブインターフェイス１６、パラレル／シリアル変換器２１間の相互のデータ通信を制御する。
【００２８】
ＤＲＡＭ１４は、汎用的な記憶素子であり、本発明の半導体装置に他の素子と同一チップ基板上に形成される。このように１チップ内に各素子が形成されるため、コストが削減でき、また、ＤＲＡＭを外部に備える場合と比較してデータバスの本数に制限を受けない効果がある。つまり、たとえば３２ビットのデータバスを持つ場合、３２本の外部端子がデータバスのために必要になるが、本発明では、このようなデータバスは半導体基板上に配線として形成されるものであり、外部端子を介して取り出す必要がない。データバスがたとえば６４ビットに拡張された場合にも特に制限を受けず、一方外部にＤＲＡＭを設ける場合には相応の外部端子数を必要とすることを考慮すれば、データバス数が増加するほど本発明のメリットが大きくなる。
【００２９】
また、ＤＲＡＭ１４には、後に説明するロードされたプログラムコードが記憶される。動作中のＭＰＵ１２は、このＤＲＡＭ１４に記録されたプログラムコードを読み出して処理を実行する。後に説明するようにＭＰＵ１２とＤＲＡＭ１４とは複数データ線からなるバスで接続されているため、一旦ＤＲＡＭ１４に記録された後のプログラムコードはパラレルに転送され、高い処理速度を維持できる。
【００３０】
ホストインターフェイス１５は、ホストコンピュータ７とハードディスクコントローラ６とのインターフェイスを行い、ドライブインターフェイス１６は、ハードディスクコントローラ６とハードディスクドライブとのインターフェイスを行う。
【００３１】
端子１７には、外部シリアルＲＯＭ１１が接続され、また、端子１７にはプルアップ抵抗２２が接続される。プルアップ抵抗２２の他端は電源電位Ｖｄｄ（Highレベル）に接続される。プルアップ抵抗２２は、外部シリアルＲＯＭ１１が接続されていない場合に、端子１７の電位がＶｄｄになるようにするために設けられる。このように端子１７の電位が、外部シリアルＲＯＭ１１が接続されていないときには常にＶｄｄになるようにすることによって、後に説明する方法で端子１７からの１バイト入力を検出し、「ＦＦ］（１６進数）と判断されたときには外部シリアルＲＯＭ１１が接続されていないと判断できる。なお、外部シリアルＲＯＭ１１が接続されているときには、その記憶されている情報に従って端子１７の電位はLowレベルまたはHighレベルになる。 端子１７の電位がLowレベルの時にはプルアップ抵抗２２に電流が流れてプルアップ抵抗２２に両端の電位がＶｄｄ（Highレベル）に維持される。
【００３２】
なお、プルアップ抵抗２２に代えて他端を０Ｖ（接地電位）に接続し、プルダウン抵抗として機能させても良い。この場合、端子１７に外部シリアルＲＯＭ１１が接続されていなければ、端子１７からの１バイト入力は「００」（１６進数）と判断されることとなる。
【００３３】
セレクタ１８は、プログラムコードのロード元を外部シリアルＲＯＭ１１とするか、内部シリアルマスクＲＯＭ１９とするかを選択する手段であり、後に説明するコンパレータ２０の出力によるスイッチ手段である。たとえばコンパレータ２０の出力をゲート入力とするＣＭＯＳ回路により構成できる。
【００３４】
内部シリアルマスクＲＯＭ１９は、プログラムコードが記憶された読み出し専用のメモリ素子である。プログラムコードの書き込みは、配線マスクあるいはＲＯＭを構成するトランジスタの拡散層マスクをプログラムに適合するように設計してプログラムとして機能する回路をハード的に構成して実現する。このようなマスクＲＯＭを用いることによりプログラム記憶に使用される外部素子を削減し、また、製造コストの低いマスクＲＯＭを用いることにより、半導体装置、ハードディスクコントローラのコストを低減できる。なお、マスクＲＯＭの製造はシステムＬＳＩの製造技術の障害にはならないので、フラッシュＥＥＰＲＯＭを同一チップ基板に形成しようとする場合のような製造技術上の障害はない。
【００３５】
本発明の半導体装置が量産段階で適用されているときにはこの内部シリアルマスクＲＯＭ１９に記録されたプログラムコードがロードされて使用されていることが期待される。これにより量産段階でのコスト削減が期待できる。しかし、仮に内部シリアルマスクＲＯＭ１９に記録されたプログラムコードに変更が生じたときには、外部シリアルＲＯＭ１１に変更後のプログラムコードが記録され、これが端子１７に接続され、この変更後のプログラムコードがロードされて使用される。このとき、内部シリアルマスクＲＯＭ１９内に記憶されたプログラムコードは無視される。このような使用態様にすれば、仮に内部シリアルマスクＲＯＭ１９にプログラムコードが書き込まれた後のプログラム変更が生じても、迅速に外部シリアルＲＯＭ１１を用いた使用でプログラムの変更に対応できる。また、配線マスクあるいは拡散層マスクの変更を手配し、半導体装置の再製造を行う時間が稼げる。変更後のプログラムに対応した半導体装置が製造され入手できた段階で外部シリアルＲＯＭ１１を取り外して使用し、最もコストの安い態様で使用できる。このような使用態様を適用することにより、迅速なプログラム変更に対応できるとともに、コストの上昇を最小限に抑制できる。
【００３６】
コンパレータ２０は、端子１７からの１バイト入力を「ＦＦ」（１６進数）と比較するものであり、１バイト入力が「ＦＦ］であれば外部シリアルＲＯＭが接続されていないと判断する。これは、通常プログラムコードの先頭に「ＦＦ」のコードは無いことを前提にしている。このようにコンパレータ２０は外部シリアルＲＯＭが接続されているか否かを検出する機能を持ち、検出結果はセレクタ１８に入力されて前記の通りプログラムコードのロード元が選択される。
【００３７】
なお、端子１７がプルダウン抵抗を介して接地電位に接続されているときにはコンパレータ２０で比較される１バイトデータは「００」（１６進数）であることは勿論である。
【００３８】
パラレル／シリアル変換器２１は、シリアルデータをパラレルデータに変換する機能を持つ。本実施の形態では、外部ＲＯＭとしてシリアルＲＯＭを例示している。シリアルＲＯＭとすることにより接続端子数を削減できる効果がある。このような外部シリアルＲＯＭ１１を用いることから、入力インターフェイスを整合させるために内部ＲＯＭについてもシリアルＲＯＭを用いるのが好都合である。一方、プログラムデータが記録されるＤＲＡＭは複数のデータ線からなるバスで接続される。よってＭＰＵ１２、メモリコントローラ１３等も同数のデータ線からなるバスで接続されている。このため、パラレル／シリアル変換器２１でシリアルデータをパラレルデータに変換するものである。パラレルデータに変換された後は、データはパラレルに一括処理されるので処理速度が向上する。
【００３９】
なお、前記説明では、ロードされるプログラムコードはＤＲＡＭ１４に記録される例を示したが、図３に示すように、ＭＰＵ１２にバス接続された内部ＲＡＭ２３を別に有し、この内部ＲＡＭ２３にプログラムコードが記憶されても良い。この場合、作動中のＭＰＵ１２からのプログラムの読み出しは、この内部ＲＡＭ２３から直接行われ、処理速度を向上できる。
【００４０】
次に、本実施の形態の制御方法をフローチャートに従って説明する。図４は、本実施の形態の制御方法の一部を説明したフローチャートである。
【００４１】
まず、装置の電源が投入された段階、あるいはリセット信号が入力された段階で、装置全体をリセットし、その後、ＭＰＵ１２を除き、その他の素子のリセットが解除される（ステップ３０）。なお、ＭＰＵ１２のリセットは、プログラムコードのダウンロードが終了するまで継続される。
【００４２】
次に、外部シリアルＲＯＭ１１に１バイトデータを読み出すコマンドを発行する（ステップ３１）。このコマンドの発行はリセット信号の解除を契機にハード的に行う。
【００４３】
前記コマンドの応答して、外部シリアルＲＯＭ１１から１バイトデータが転送される（ステップ３２）。転送されたデータはコンパレータ２０に入力される（ステップ３３）。この転送は、１ビット毎にシリアル処理で転送される。この様子を図５に示す。図５はコンパレータ２０へのデータの入力および比較処理の概要を示したブロック図である。
【００４４】
コンパレータ２０内には、１バイト分の入力データを記憶するレジスタ（Ｒ１〜Ｒ８）を有し、外部シリアルＲＯＭ１１に記憶されている先頭データの１ビット目がレジスタＲ１に入力され、２ビット目がレジスタＲ２に入力される。順次８ビット目がレジスタＲ８に入力されるまでデータの転送が続けられる。
【００４５】
レジスタＲ８まで入力された段階で、入力データが「ＦＦ」（１６進数）つまり「１１１１１１１１」（２進数）であるか否かを判断する（ステップ３４）。図５に示す場合は、外部シリアルＲＯＭ１１が接続され、先頭データに「９３」（１６進数）つまり「１００１００１１」（２進数）が記録されているため、レジスタＲ１〜Ｒ８に入力されるデータは各々「１」、「０」、「０」、「１」、「０」、「０」、「１」、「１」である。このデータは、「ＦＦ」（１６進数）とは異なるのでコンパレータ２０の出力はたとえば「Low」レベルの信号を出力する。このとき、セレクタ１８は、「Low」レベルの信号入力を受けて外部ＲＯＭ（外部シリアルＲＯＭ１１）側の接続経路が選択されるように回路を構成する（ステップ３５）。
【００４６】
一方、図５には示していないが、外部シリアルＲＯＭ１１が接続されていないときには、端子１７つまりコンパレータ２０の入力がプルアップ抵抗２２でプルアップされているので、レジスタＲ１〜Ｒ８に入力されるデータは「ＦＦ」となる。この場合にはコンパレータ２０の出力はたとえば「High」レベルの信号が出力され、この「High」レベル信号の入力を受けてセレクタ１８では内部ＲＯＭ（内部シリアルマスクＲＯＭ１９）側の接続経路が選択される（ステップ３６）。仮に外部シリアルＲＯＭ１１が接続されその先頭データが「ＦＦ」であれば、検出できないことになる。しかし、通常プログラムコードの先頭データが「ＦＦ」になることはなく、仮に「ＦＦ」になったとしても、プルアップ抵抗２２をプルダウン抵抗に代えて、抵抗の他端を接地電位（０Ｖ）に維持したうえで、入力される１バイトデータを「００」と比較すればよい。
【００４７】
このようにして外部シリアルＲＯＭ１１の接続の有無を検出できる。なお、端子１７が接地電位（またはLowレベル電位）に接続されている場合は、比較される１ビットデータが「００」となり、その他の構成は同様である。
【００４８】
また、ここでは１バイト（８ビット）データを比較する例を説明しているが、４ビット等８ビットより短いデータであってもよく、また、１６ビット、３２ビット等８ビットより長いデータでも良い。
【００４９】
前記の通りセレクタ１８による経路選択がなされた後、プログラムコードのダウンロード（ＤＬ）が開始される（ステップ３７）。図６は、プログラムコードのダウンロードステップの一例を示すフローチャートである。
【００５０】
プログラムコードは前記の通り外部シリアルＲＯＭ１１または内部シリアルマスクＲＯＭ１９の何れかからダウンロードされ、その選択はセレクタ１８により行われる。ここで、前記何れのＲＯＭもシリアル型なので、１ビット毎にデータが転送される（ステップ３８）。転送される１ビットデータは、パラレル／シリアル変換器２１内のレジスタｒ１〜ｒ３２に順次入力され、ラッチされる（ステップ３９）。この様子を図７を用いて説明する。外部シリアルＲＯＭ１１内のデータ（図７では外部シリアルＲＯＭ１１が選択されている場合を説明している。内部シリアルマスクＲＯＭ１９が選択されている場合は、当該ＲＯＭからのデータが入力される。）の１ビット目のデータ「１」が、セレクタ１８を通してレジスタｒ１に入力される。続く２ビット目以降のデータが順次レジスタｒ２以降に入力され、図７では１６ビット目がレジスタｒ１６に入力されていることを示している。
【００５１】
このようにしてたとえば３２ビット分のデータが蓄積された段階で（ステップ４０）、この３２ビット分のデータをパラレル転送する（ステップ４１）。パラレル転送は、複数データ線を介してデータをバスに送り出し、メモリコントローラ１３を介してＤＲＡＭ１４に転送する。転送が終了したレジスタ（ｒ１〜ｒ３２）は新たなデータの書き込みに備える。さらに３３ビット目以降のシリアルデータは、前記パラレル転送が終了した後のレジスタｒ１以降のレジスタに上記同様順次入力され、３２ビット分が蓄積された段階で前記同様ＤＲＡＭ１４にパラレル転送される。
【００５２】
前記操作をＲＯＭに記録されたデータがすべて転送されるまで行われ、転送が終了すると（ステップ４２）、ＭＰＵ１２のリセットが解除される（ステップ４３）。その後、ＭＰＵ１２の制御がダウンロードされたプログラムに従って開始される（ステップ４４）。
【００５３】
本発明の半導体装置およびそれを用いた制御方法によれば、外部ＲＯＭが接続されているかいないかを検出し、接続されているときには優先的に外部ＲＯＭからのプログラムダウンロードを実行し、接続されていないときには内部ＲＯＭからのダウンロードを実行する。このため、内部ＲＯＭのプログラムに変更が生じてもその半導体装置が使用できなくなるのではなく、外部ＲＯＭに変更後のプログラムを記憶させてこれを半導体装置に接続するだけでプログラム変更に対処できる。そして、外部ＲＯＭによる対処を行うと同時に内部ＲＯＭのプログラム変更に対処するためのマスク変更と半導体装置の製造を行い、半導体装置が製造された後には外部ＲＯＭなしで動作させることが可能になる。このような使用態様により、プログラムの変更に迅速に対処できるとともに、コストの上昇を最小限に抑制できる。
【００５４】
また、本実施の形態の半導体装置では、外部ＲＯＭのプログラムコードをダウンロードするためのインターフェイスと内部ＲＯＭのためのインターフェイスを両方有していることになる。このため、開発段階では外部ＲＯＭを用いてプログラムコードの頻繁な変更に対応し、量産段階では内部ＲＯＭに記憶させてコストを低減できる。本実施の形態の半導体装置および制御方法では、この開発段階から量産段階に移行する時期に、プログラムダウンロードのためのインターフェイスの仕様変更（マスク変更）の必要がない。このため、仕様変更にともなうＬＳＩの再評価の必要がなく、再評価の期間、工数を削減して、コストを低減し、また量産段階の立ち上げを迅速に行える。
【００５５】
以上、本発明者によってなされた発明を発明の実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【００５６】
たとえば、前記実施の形態では、ハードディスク装置への本発明の半導体装置とその制御方法の適用を説明したが、ハードディスク装置には限られず、マイクロコードを用いてコントロールする部分を有する装置、たとえば携帯電話用コントローラ、自動車、航空機、昇降装置その他輸送機器の制御用コントローラ、オーディオ装置、テレビ、洗濯機等家庭用機器のコントローラ、その他コントローラに用いられる半導体装置のすべてに適用できる。
【００５７】
また、外部フラッシュＲＯＭは、フラッシュ型に限られず、電気的書き換え可能な、または紫外線で消去でき、再書き込みが可能な不揮発性メモリのすべてを適用できる。たとえば誘電体メモリ（ＦＲＡＭ）を用いても良い。
【００５８】
また、外部ＲＯＭの接続検出方法は、前記コンパレータによるデータ比較に限られず、その他の検出方法を適用することもできる。たとえば半導体装置からのリクエストに対して特定の応答を返送するようなメモリを適用してもよい。
【００５９】
【発明の効果】
本願で開示される発明のうち、代表的なものによって得られる効果は、以下の通りである。
【００６０】
すなわち、ＤＲＡＭが同一チップ基板内に形成されたシステムＬＳＩを用いた制御素子において、マイクロコードの変更を、生産リードタイムを発生することなく、また、ＬＳＩの再評価を伴うことなく容易に行うことができる。
【００６１】
また、ＤＲＡＭが同一チップ基板内に形成されたシステムＬＳＩにおいて低価格なマイクロコードの記録手段と、生産リードタイムを生じないマイクロコードの変更手段を提供できる。
【００６２】
また、制御素子の低価格化、高性能化、マイクロコードの柔軟な開発を実現できる。
【図面の簡単な説明】
【図１】本発明の一実施の形態であるハードディスク装置の一例を示した概念ブロック図である。
【図２】ハードディスクコントローラに用いられる１チップの半導体装置と外部シリアルＲＯＭを示したブロック図である。
【図３】本実施の形態の半導体装置の他の例を示すブロック図である。
【図４】本発明の一実施の形態である制御方法の一部を説明したフローチャートである。
【図５】コンパレータへのデータの入力および比較処理の概要を示したブロック図である。
【図６】プログラムコードのダウンロードステップの一例を示すフローチャートである。
【図７】パラレル／シリアル変換器の動作の一例を示すブロック図である。
【符号の説明】
１…磁気記録媒体、２…スピンドルモータ、３…磁気ヘッド、４…アーム、５…ボイスコイルモータ、６…ハードディスクコントローラ、７…ホストコンピュータ、１０…半導体装置、１１…外部シリアルＲＯＭ、１２…ＭＰＵ、１３…メモリコントローラ、１４…ＤＲＡＭ、１５…ホストインターフェイス、１６…ドライブインターフェイス、１７…端子、１８…セレクタ、１９…内部シリアルマスクＲＯＭ、２０…コンパレータ、２１…パラレル／シリアル変換器、２２…プルアップ抵抗、２３…内部ＲＡＭ、Ｒ１〜Ｒ８…レジスタ、Ｖｄｄ…電源電位、ｒ…レジスタ。
【図１】
0004616960.tif 000002
【図２】
0004616960.tif 000003
【図３】
0004616960.tif 000004
【図４】
0004616960.tif 000005
【図５】
0004616960.tif 000006
【図６】
0004616960.tif 000007
【図７】
0004616960.tif 000008