(57)【要約】【課題】近年、ＦＰＧＡの論理規模増大に伴い、コンフィギュレーション時間が増加している。この結果、装置の起動時間に影響を及ぼすことになる。例えば、障害が発生した際に装置を素早く復旧する必要がある場合などにおける装置起動時間短縮のため、高速なコンフィギュレーションを実現する。【解決手段】圧縮技術とページリードモードを利用する。具体的には、圧縮しておいたコンフィギュレーションデータをページリードモードでのページ切り替え時間を利用して、解凍し、かつ読み出しデータ領域全体に解凍データを割り当てる。この手法を用いることで、従来よりも高速なＦＰＧＡのコンフィギュレーションを実現できる。【選択図】図１
2013247422.tif 000002
【特許請求の範囲】
【請求項１】
データを読み出す際に周期的にＮｉビット（Ｎｉは整数）の不定データが出力されるメモリを用いたコンフィグレーション制御システムであって、
不定ビットが出力される間のＮｐビット（Ｎｐは整数）のコンフィグレーションデータを、Ｎｐ−Ｎｉビットより小さい圧縮データに圧縮し、該圧縮データを前記メモリに記憶する圧縮装置と、
前記メモリから圧縮データを読み出し、圧縮データとＮｉビットの不定データを含む取り込みデータを出力する読み出し回路と、
取り込みデータのうちのＮｉビットの不定データを除く圧縮データを解凍してＮｐビットの解凍データを生成し、該解凍データをデバイスに設定する解凍回路と
を備えたコンフィグレーション制御システム。
【請求項２】
前記圧縮装置は、
第１ビット数の情報と、第１ビット数より小さい第２ビット数の情報とが対応した対応情報が記憶された対応情報記憶部を有し、
コンフィグレーションデータの少なくとも一部を第１ビット数のブロックに分割し、該ブロックの第１ビット数のデータを、前記対応情報記憶部を参照して、第２ビット数のデータに圧縮する請求項１に記載のコンフィグレーション制御システム。
【請求項３】
前記解凍回路は、
前記対応情報を入力し、
読み出された圧縮データをブロックに分割し、該対応情報を参照して、第２ビット数のデータを第１ビット数のデータに解凍する請求項２に記載のコンフィグレーション制御システム。
【請求項４】
前記圧縮装置は、前記対応情報を前記メモリに記憶し、
前記読み出し回路は、前記メモリから前記対応情報をさらに読み出して前記解凍回路に出力し、
前記解凍回路は、前記読み出し回路から前記対応情報を入力する請求項３に記載のコンフィグレーション制御システム。
【請求項５】
前記圧縮装置は、
コンフィグレーションデータを第１ビット数ずつに区分してビットパターンを解析し、所定数のビットパターンを発生回数が高いものから抽出し、
抽出された第１ビット数のビットパターンと、第２ビット数のビットパターンとを対応づけた対応情報を前記対応情報記憶部に記憶し、
抽出されるビットパターンの数は、第２ビット数で表現可能な数の範囲内である請求項２乃至４のいずれかに記載のコンフィグレーション制御システム。
【請求項６】
前記圧縮装置は、
コンフィグレーションデータの少なくとも一部を第１ビット数のブロックに分割し、該ブロックの第１ビット数のデータのうちの第２ビット数のデータを残してビット数を削減し、他のデータを余剰ビットとして別に前記メモリに記憶し、
前記読み出し回路は、前記メモリから前記余剰ビットをさらに読み出して前記解凍回路に出力し、
前記解凍回路は、読み出された圧縮データをブロックに分割し、該ブロックのデータと余剰ビットを用いて、第２ビット数のデータを第１ビット数のデータに解凍する請求項１乃至５のいずれかに記載のコンフィグレーション制御システム。
【請求項７】
前記圧縮装置は、
分割された第１ビット数のブロックについて、前記対応情報記憶部を参照して、該ブロックが示すビットパターンが対応情報に存在する場合は、該対応情報に従い、対応する第２ビット数のデータに圧縮し、存在しない場合は、該ブロックの第１ビット数のデータのうちの第２ビット数のデータを残してビット数を削減し、他のデータを余剰ビットとして別に前記メモリに記憶し、
対応情報に従いデータを圧縮したか、余剰ビットをメモリに記憶したかを示す識別コードを各ブロックに付加する請求項２乃至６のいずれかに記載のコンフィグレーション制御システム。
【請求項８】
前記解凍回路は、
分割された各ブロックの識別コードに従い、対応情報を参照して又は余剰ビットを用いてデータを解凍する請求項７に記載のコンフィグレーション制御システム。
【請求項９】
コンフィグレーションデータをブロックに分割する分割数は、生じる不定ビット数に対応する請求項２乃至８のいずれかに記載のコンフィグレーション制御システム。
【請求項１０】
第１ビット数と第２ビット数の差が、識別コードのビット数＋１ビットである請求項２乃至９のいずれかに記載のコンフィグレーション制御システム。
【請求項１１】
前記デバイスは、プログラマブルロジックデバイスであり、
前記メモリは、ページリードモードで動作するＦＲＯＭ（Ｆｌａｓｈ  ＲＯＭ）である請求項１乃至１０のいずれかに記載のコンフィグレーション制御システム。
【請求項１２】
データを読み出す際に周期的にＮｉビット（Ｎｉは整数）の不定データが出力されるメモリを用いてデバイスにコンフィグレーションデータを設定するための制御回路であって、
不定ビットが出力される間のＮｐビット（Ｎｐは整数）のコンフィグレーションデータが、Ｎｐ−Ｎｉビットより小さい圧縮データに圧縮され、記憶された前記メモリから該圧縮データを読み出し、圧縮データとＮｉビットの不定データを含む取り込みデータを出力する読み出し回路と、
取り込みデータのうちのＮｉビットの不定データを除く圧縮データを解凍してＮｐビットの解凍データを生成し、該解凍データをデバイスに設定する解凍回路と
を備えた制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンフィグレーション制御システム及び制御回路に係り、特に、プログラマブルロジックデバイスのコンフィギュレーションのためのコンフィグレーション制御システム及び制御回路に関する。
【背景技術】
【０００２】
ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）に代表されるプログラマブルロジックデバイスは、コンフィギュレーションデータを書き換えることにより、任意に論理構成を変更することが可能な論理ＩＣである。このＦＰＧＡを搭載した装置は、出荷した後でもＦＰＧＡの再設計を行うことで、製品のアップデートに柔軟に対応できることから、通信システム装置等に多く使用されている。
【０００３】
ＦＰＧＡの論理構成を決定するデータをコンフィギュレーションデータといい、コンフィギュレーションデータをＦＰＧＡの内部メモリに書き込むことをコンフィギュレーションという。この内部メモリには揮発性のＳＲＡＭが使用されているため、ＦＰＧＡの電源を投入する度に、コンフィギュレーションを行う必要がある。
【０００４】
ＦＰＧＡのコンフィギュレーションは、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）からコンフィギュレーションデータを受け取る事で論理構成の決定および変更を行うことが可能である。このとき使用されるＲＯＭには、主にＦＰＧＡ専用シリアルＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）や汎用のパラレルＦＲＯＭ（Ｆｌａｓｈ  ＲＯＭ）がある。ＦＰＧＡ専用ＰＲＯＭを用いる方法では、ＦＰＧＡが直接ＲＯＭにアクセスする事でコンフィギュレーションを行うことが可能である。一方汎用のパラレルＦＲＯＭを用いる方法では、ＦＰＧＡがＲＯＭに直接アクセスすることができないため、ＦＰＧＡとＦＲＯＭの間にコントローラが必要であり、コントローラによりＦＰＧＡとＦＲＯＭを制御することでコンフィギュレーションを実現している。このパラレルＦＲＯＭを用いる方法は、シリアルＰＲＯＭを用いる方法より高速であることが知られている。
【０００５】
近年、半導体プロセスの微細化に伴い、ＦＰＧＡの論理規模は増大している。そして、その論理規模は、過去７年間で約８倍となっている。論理規模増大に伴い、コンフィギュレーションデータ量が増加する為、データ量に比例してコンフィギュレーションにかかる時間（以下、コンフィギュレーション時間）も増加する。この結果、装置の起動時間に影響を及ぼすことになり、特に、障害が発生した際に装置を素早く復旧する場合など、装置起動時間短縮のために、高速なコンフィギュレーションが必要とされる。
【０００６】
ここで、ＦＲＯＭのアクセスタイム自体を短縮する方法は非特許文献１に開示されている。非特許文献１によれば、ＦＲＯＭには、ページアドレスと呼ばれる上位アドレスを固定し、下位アドレスのみ変更を行うことにより高速な読み出しが可能なページリードモードが存在する。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Ｓ２９ＧＬ−Ｐ  ＭｉｒｒｏｒＢｉｔ  Ｆｌａｓｈ  Ｆａｍｉｌｙ  Ｄａｔａ  Ｓｈｅｅｔ  ７．５  Ｐａｇｅ  Ｒｅａｄ  Ｍｏｄｅ、Ｎｏｖｅｍｂｅｒ  ２００９、ＳＰＡＮＳＩＯＮ
【発明の概要】
【発明が解決しようとする課題】
【０００８】
コンフィギュレーションはＦＰＧＡ内部メモリに対し、連続的にコンフィギュレーションデータを転送する必要がある。しかし、非特許文献１で示されるＦＲＯＭのページリードモードは、ページアドレス切り替え時に不定データを出力する不確定時間が生まれる。そのため、非特許文献１の技術をそのままＦＰＧＡ等のプログラマブルロジックデバイスに適用できず、ページリードモードによる高速なコンフィギュレーションが実現できない。
【０００９】
本発明は以上の点に鑑み、プログラマブルロジックデバイスのコンフィギュレーションに、ページリードモードを使用することが可能なコンフィグレーション制御システム及び制御回路を提供することを目的とする。また、本発明は、より高速なコンフィグレーションを実現することを目的のひとつとする。
【課題を解決するための手段】
【００１０】
本発明の第１の解決手段によると、
データを読み出す際に周期的にＮｉビット（Ｎｉは整数）の不定データが出力されるメモリを用いたコンフィグレーション制御システムであって、
不定ビットが出力される間のＮｐビット（Ｎｐは整数）のコンフィグレーションデータを、Ｎｐ−Ｎｉビットより小さい圧縮データに圧縮し、該圧縮データを前記メモリに記憶する圧縮装置と、
前記メモリから圧縮データを読み出し、圧縮データとＮｉビットの不定データを含む取り込みデータを出力する読み出し回路と、
取り込みデータのうちのＮｉビットの不定データを除く圧縮データを解凍してＮｐビットの解凍データを生成し、該解凍データをデバイスに設定する解凍回路と
を備えたコンフィグレーション制御システムが提供される。
【００１１】
本発明の第２の解決手段によると、
データを読み出す際に周期的にＮｉビット（Ｎｉは整数）の不定データが出力されるメモリを用いてデバイスにコンフィグレーションデータを設定するための制御回路であって、
不定ビットが出力される間のＮｐビット（Ｎｐは整数）のコンフィグレーションデータが、Ｎｐ−Ｎｉビットより小さい圧縮データに圧縮され、記憶された前記メモリから該圧縮データを読み出し、圧縮データとＮｉビットの不定データを含む取り込みデータを出力する読み出し回路と、
取り込みデータのうちのＮｉビットの不定データを除く圧縮データを解凍してＮｐビットの解凍データを生成し、該解凍データをデバイスに設定する解凍回路と
を備えた制御回路が提供される。
【発明の効果】
【００１２】
本発明によると、プログラマブルロジックデバイスのコンフィギュレーションに、ページリードモードを使用することが可能なコンフィグレーション制御システム及び制御回路を提供できる。また、本発明によると、より高速なコンフィグレーションを実現できる。
【図面の簡単な説明】
【００１３】
【図１】実施例１のシステム構成図である。
【図２】実施例１の処理を説明するフローチャートである。
【図３】実施例１に係るデータ圧縮方法を説明する為の図（１）である。
【図４】実施例１に係るデータ圧縮方法を説明する為の図（２）である。
【図５】実施例１に係るコンフィギュレーションデータの解析結果の例である。
【図６】実施例１に係る割り当て表である。
【図７】実施例１に係るデータ圧縮方法を説明する為の図（３）である。
【図８】実施例１に係るデータ圧縮方法を説明する為の図（４）である。
【図９】実施例１に係るＦＲＯＭデータ読み出し時のタイムチャートである。
【図１０】実施例１に係る解凍回路の構成図である。
【図１１】実施例１に係る解凍方法を説明する為の図である。
【発明を実施するための形態】
【００１４】
以下、実施の形態を図面に沿って詳細に説明する。
１．概要
前述したようにページリードモードにおいては、不定データが生まれてしまうため、連続的にデータを転送する必要があるコンフィギュレーションにそのまま適用できない。そこで不定データを、有効なデータへ置き換えることで連続的なコンフィギュレーションの実現を図る。その方法は、予めコンフィギュレーションデータの圧縮を行い、ＦＲＯＭに書き込んでおく。コンフィギュレーション時に、ＦＲＯＭからページリードモードによる読み出しを行った後、圧縮データを解凍する。ここで圧縮データを解凍することによって得られたデータ量の増分を、不定データ領域に置き換えることにより、連続データを実現する。解凍することによるデータ量の増分と、不定データ領域の大きさが対応する（例えば同じになる）ように、データの圧縮率を定めることができる。
この手法により、ＦＲＯＭとコントローラ間では、ページリードモードを使用しているのにもかかわらず、ＦＰＧＡ側へ連続的にコンフィギュレーションデータを転送することが可能となる。
【００１５】
本実施の形態は、ＦＲＯＭにおけるページ内アクセスタイムとページ切り替え時のアクセスタイムの違いを利用した手法である。これらのアクセスタイムは、ＦＲＯＭの製品毎に異なっており、同様にページ内におけるデータサイズもＦＲＯＭの製品毎に異なっている。本実施の形態は、ページ内アクセスタイム、ページ切り替え時のアクセスタイム、データサイズの値に制限はなく、あらゆる値で実現可能である。例えば、製品に応じて予め定められた値を用いることができる。
下記の例では、ページ切り替え時のアクセスタイムをページ内アクセスタイムの３倍とし、ページ内におけるデータサイズを８サイクルとして説明する。
【００１６】
２．実施例
＜本実施例の全体構成と動作＞
図１は、本実施例のシステム構成図である。
本コンフィグレーション制御システムは、例えば、圧縮装置２００と、コンフィグレーション制御回路１００を備える。コンフィグレーション制御回路１００は、読み出し回路１１０と、解凍回路１２０を有する。圧縮装置２００は、対応情報記憶部２１０と、処理部２２０を有する。また、コンフィグレーション制御システムは、ＦＲＯＭ１０と、ＦＰＧＡ１をさらに備えても良い。
圧縮装置２００は、予めコンフィギュレーションデータを圧縮して圧縮データ１１を作成し、ＦＲＯＭ１０に格納しておく。
【００１７】
コンフィギュレーション開始とともに読み出し回路１１０がＦＲＯＭ１０に対しアドレス５を出力することで、ＦＲＯＭ１０の圧縮データ１１はページリードモードとして読み出される。ページリードモードとは、ＦＲＯＭ１０に入力されるアドレスが同一ページ内（アドレスの上位側が同一）の場合、高速にデータを読み出すことが可能なモードである。しかしながら、ページが切り替わる際（アドレスの上位が変化する際）には、ＦＲＯＭ１０から不定データ２１が出力される。ここで、ページは、ＦＲＯＭ１０のページリードモードにおけるページである。
【００１８】
コンフィギュレーション時には、複数のページに渡ってデータの読み出しを行う必要があるため、取り込まれたデータには不定データ２１が含まれる。ここで、ＦＲＯＭ出力データ２０の１ページ分のサイクル数（読み出しサイクルの数）をＮｐとし、さらに１ページ分の圧縮データ１１のサイクル数をＮｃ、１ページ分の不定データ２１のサイクル数をＮｉとする。なお、Ｎｐ、Ｎｃ、Ｎｉは正の整数である。
【００１９】
ＦＲＯＭ出力データ２０は読み出し回路１１０に取り込まれた後、解凍回路１２０に送られる。解凍回路１２０は、圧縮データ１１を解凍した後、ページ内の領域Ｎｐサイクル全てに対し解凍データの割り当てを行うことで解凍データ３０を生成する。
そして、コンフィグレーション制御回路１００は、ＦＰＧＡ１に対し解凍データ３０を送出することで、コンフィギュレーションを実現する。
【００２０】
図２に、本実施例のフローチャートを示す。以下、この図を用いて本実施例の機能動作を詳細に説明する。
＜事前準備（Ｓ０）、データの圧縮＞
図２に示すコンフィギュレーション事前準備（Ｓ０）では、圧縮装置２００がコンフィギュレーションデータを圧縮した後、ＦＲＯＭ１０へ圧縮データを格納する。圧縮データの生成からＦＲＯＭ１０へ格納するまでの流れを図３に示す。この図では、Ｎビット（Ｎは正の整数）のコンフィギュレーションデータをＰＣ等の圧縮装置２００で圧縮し、ＦＲＯＭ１０に書き込んでいる。この圧縮方法では、各ページのデータ量をＮｐ（１ページ分のデータ量）からＮｃ（不定データを除いた１ページ分のデータ量）にする。なお、各ページのデータ量をＮｃ（すなわちＮｐ−Ｎｉ）より小さい圧縮データに圧縮してもよい。以下、適用する圧縮方法について説明する。
【００２１】
＜データ分割＞
データの圧縮を行う上で、コンフィギュレーションデータを分割する。本実施例で用いる方法について、コンフィギュレーションデータの１ページ目を例にあげて、図４を用いて説明する。
まず、圧縮装置２００（例えば処理部２２０、以下同様）は、Ｎｐビットで構成されたページ内データをＮｉ個のブロックに分割する。なお、ページが切り替わる際に生じる不定データの数Ｎｉは予めわかっている。ここで、Ｎｉ個に分割する理由は、１つのブロックに対し、１サイクルの不定データに割り当てるためである。その分割方法は、Ｑビットで構成されるＮｉ−Ｒ個のブロックと、Ｑ＋１ビットで構成されるＲ個のブロックの合計Ｎｉ個のブロックに分割する。但し、ＱはＮｐをＮｉで割ったときの商とし、このときの余りをＲとする。
この結果、余りＲが０でないときは、ブロック内のデータ量がＱビットとＱ＋１ビットとなる２種類のブロックが生成され、余りＲが０のときは、データ量がＱビットの１種類のブロックを生成することができる。
【００２２】
図４には、例としてＮｐ＝１０、Ｎｉ＝２としたときのページ内データ分割結果を示している。この条件では、Ｑ＝５、Ｒ＝０となるため、１ページ当たりのデータ量として、５ビットのブロックが２つ生成される。
以降、本実施例の説明では、図４に示す１ページ当たりのデータ量が５ビットのブロックを例とし、説明する。
【００２３】
＜割り当て表の作成＞
ブロック内の値（以下ブロックデータと記載）から圧縮データへ変換するための割り当て表の作成方法について説明する。この表の作成は、ビット長が異なるブロック毎に行う。例えば、上述のようにＱビットとＱ＋１ビットのブロックがある場合は、それぞれについて割り当て表を作成する。但し、ブロックデータが１ビットである場合は、それ以上圧縮は出来ないため割り当て表の作成を行わない。この例では、ブロックが全て５ビットで構成されているため、割り当て表を一つ作成する。
【００２４】
まず、圧縮装置２００は、コンフィグレーションデータを分割した前ページの全ブロックに対し、ブロックデータ毎の発生頻度（ビットパターンの発生頻度）を調べる。一例として、あるコンフィギュレーションデータにおけるブロックデータの発生回数および発生率を図５に示す。この例において、発生頻度には、ブロックデータ毎に偏りが見られ、“０００００”は、発生率が１９％あるのに対し、“１１１１１”等のように一度も発生していないブロックデータも存在している。
【００２５】
次に、圧縮装置２００は、この表を用いて割り当て表を作成する。その方法は、圧縮後のデータを所望のビット幅にする為にブロックデータに対し、例えば２ビット少ないビット幅の割り当てコードを生成し、発生頻度の高いブロックデータに対し割り当てコードを割り当てて割り当て表（対応情報）を作成する。この差の２ビットは、後述するように不定ビットに相当する分１ビットと、割り当てコードを用いたか否かを示す識別コードの分１ビットである。なお、これらのビット数は適宜のビット数に定めてもよい。圧縮装置２００は、割り当て表を対応情報記憶部２１０に記憶する。
【００２６】
図５に対応する割り当て表を図６に示す。ここでは、ブロックデータのビット幅が５ビットであるため、割り当てコードは３ビットとする。また、このとき生成できるコードは８種類である為、発生頻度上位８つのブロックデータに対し割り当てを行っている。
【００２７】
＜圧縮方法の詳細＞
ブロックデータに対する圧縮方法について、図７を用いて詳細説明を行う。
まず、割り当てコードに対応しているブロックデータの圧縮方法について説明する。図７において、圧縮データ１１のビットｂ０は、割り当てコードの対応有無を示すビット（識別コード）としている。任意のブロックデータに対し、割り当てコードが対応している場合、圧縮データ１１のビットｂ０を例えば‘１’とし、ｂ１〜ｂ３にブロックデータに対応する割り当てコードを割り当てる。例に示すようにブロックデータが“０００００”のときは、図６において割り当てコードの“０００”が対応しているため、圧縮データは、割り当てコードの対応有無を示すビットと割り当てコードを合わせた“１０００”となる。
【００２８】
次に、割り当てコードに対応していないブロックデータに対する圧縮方法を説明する。上述のように割り当てコードは、そのビット数で表現可能な数（この例では３ビットなので８種類）に限られる。そこで、任意のブロックデータが、割り当てコードに対応していない場合は、圧縮データ１１のビットｂ０を例えば‘０’とし、圧縮データｂ１〜ｂ３に対し、ブロックデータｂ０〜ｂ２をそのまま割り当てる。ブロックデータｂ３〜ｂ４については、圧縮データとは別に、ＦＲＯＭ１０内に余剰ビット領域を用意し、そこに格納する。例に示すようにブロックデータが“１１１００”の時は、図６の割り当てコードに対応していないため、圧縮データは、割り当てコードの対応有無を示すビットとブロックデータｂ０〜ｂ２を合わせた“０１１１”となり、余剰ビットはブロックデータｂ３〜ｂ４の“００”となる。なお、ブロックデータのうちのどのビットを余剰ビットとするかは上述の例以外にも適宜定めることができる。
これを全てのブロックに対し行うことで、ブロックデータで構成されたコンフィギュレーションデータは圧縮データと余剰ビットに変換することが出来る。
【００２９】
圧縮装置２００による処理を説明すると、例えば、圧縮装置２００は、分割されたブロックデータについて、対応情報記憶部２１０の割り当て表を参照して、該ブロックが示すビットパターンが存在する場合は、割り当て表に従い、対応する割り当てコードに変換する。一方、圧縮装置２００は、ブロックが示すビットパターンが割り当て表に存在しない場合は、該ブロックのデータのうち所定ビットのデータを残し、他のデータを余剰ビットとする。また、圧縮装置２００は、割り当て表に従いデータを圧縮したか、余剰ビットを用いて圧縮したかを示す識別コードを各ブロックに付加する。圧縮装置２００は、各ブロックのデータをＦＲＯＭ１０に記憶する。このとき、ページ内データは同じページアドレスになるように記憶される。すなわち、ページ単位で記憶される。なお、圧縮装置２００は、各ブロックとは別に余剰ビットと割り当て表をＦＲＯＭ１０に記憶する。
【００３０】
＜圧縮有効範囲の導出＞
上記方法は、データ出現頻度の高いものを優先的に圧縮可能なブロック（割り当てコードを与えるブロック）に割り当てており、データ出現頻度に偏りがある場合、効果的に圧縮ができる。一方、ブロックデータの出現頻度の偏りが少ない場合には、本圧縮手法を用いた結果として、効果的な圧縮が出来ず、元のデータよりも大きくなる可能性が有る。以下、圧縮率から本手法の圧縮可否を決定するしきい値の算出を行う。圧縮率は、ブロックデータのビット幅をＱ、圧縮可能なブロックの割合をｃとすると以下の式で求められる。
【００３１】
（数１）
圧縮率＝（Ｑ−１）ｃ／Ｑ＋（Ｑ＋１）（１−ｃ）／Ｑ
＝１＋（−２ｃ＋１）／Ｑ
上記式の第一項は、圧縮可能なブロックデータの圧縮率を示し、Ｑ−１は、元データに対し圧縮有無を示す識別コード１ｂｉｔを付加した後、割り当てコードに割り当てた際、２ｂｉｔ引いた結果である。同様に第二項は、圧縮できないブロックデータの圧縮率を示し、Ｑ＋１は、元データに対し圧縮有無を示す識別コード１ｂｉｔを付加した結果である。圧縮が可能となるのは、圧縮率が１以下の時であり、以下の式に示すように、圧縮可能なブロックの割合ｃが５０％以上であることが必要である。
【００３２】
（数２）
ｃ＞１／２
本実施例のコンフィギュレーションデータにおける圧縮可能なブロックの割合ｃは、図５に示す圧縮可能なブロックデータ（割り当てコードが割り当てられた上位８つのブロックデータ）の発生率の和で求められる。その値は８５．５％であり、しきい値である５０％を超えているため、効果的な圧縮が可能である。その他のコンフィギュレーションデータについても同様に、データ出現頻度に偏りがある。図８に、無作為に抽出した１６種類のコンフィギュレーションデータにおける圧縮可能なブロックの割合を示す。この図が示すように、サンプルとして抽出したコンフィギュレーションデータにおける圧縮可能なブロックの割合は、どれも、しきい値を十分に超えており、本手法は、各デザインにおけるコンフィギュレーションデータの圧縮に効果がある。
【００３３】
＜ＦＲＯＭへ圧縮データを格納＞
データの圧縮完了後、圧縮装置２００は、圧縮データ１１をＦＲＯＭ１０に格納する。このとき、圧縮装置２００は、データの解凍に必要な割り当て表と余剰ビットについても圧縮データ１１と共にＦＲＯＭ１０へ格納する。尚、それぞれのデータを格納する領域は図３に示すように、例えば、ＦＲＯＭ１０の下位アドレスから順番に、割り当て表、余剰ビット、圧縮データとする。データの格納により、図２におけるコンフィギュレーション事前準備（Ｓ０）が完了する。
【００３４】
次に、コンフィギュレーション時の実施フローについて、説明する。
＜コンフィギュレーション開始（Ｓ１、Ｓ２）＞
コンフィギュレーション開始命令（Ｓ１）により、図１におけるコンフィギュレーション制御回路１００内の読み出し回路１１０が、例えばＦＲＯＭ１０に対しアドレス５を出力することで、割り当て表、余剰ビット、圧縮データ１１の読み出しを行う（Ｓ２）。なお、コンフィギュレーション開始命令は適宜の装置から入力されることができる。このＦＲＯＭ１０からの読み出しは、ページリードモードを使用しており、その詳細動作について、図９に示すタイムチャートを用いて説明する。
【００３５】
アドレス５は、読み出し回路１１０からＦＲＯＭ１０に対し若番からシーケンシャルに出力されるアドレスで、上位アドレス（以下ページアドレスと記載）と下位アドレスで構成されている。図３で示したようにＦＲＯＭ１０にはアドレス下位から、割り当て表、余剰ビット、圧縮データの順番で格納されているため、ＦＲＯＭ出力データ２０は、読み出し回路１１０に対し、割り当て表、余剰ビット、圧縮データの順番に出力される。
【００３６】
読み出し回路１１０は、内部のクロックを使用して、ＦＲＯＭ出力データ２０を取り込むクロックを生成する。この取り込みクロック５０は、ＦＲＯＭ出力データ２０の先頭にあわせ生成され、ＦＲＯＭ出力データ２０の最語尾を取り込んだ後、停止する。このように、取り込まれたデータが取り込みデータ４０である
【００３７】
ページリードモードでは、アドレス５のページアドレスが同一である条件で、下位アドレス切り替え時のリードアクセスタイムｔａｃｄが高速になるため、ＦＲＯＭ１０から高速で読み出すことが可能となる。しかし、ページアドレスを次アドレスに切り替える場合は、アクセスタイムｔａｃｕが、下位アドレス切り替え時のアクセスタイムｔａｃｄより大きく、かつクロックサイクル（取り込みクロック５０）以上の大きさであるため、読み出し回路１１０は、クロックにより不定データを取り込んでしまい、取り込みデータ４０にはデータが不確定となる時間が生じる。コンフィギュレーションを実現するためには、不定を伴わない有効な連続データが必要である。このため、解凍回路１２０において、取り込みデータ４０の解凍を行うことで不定データを解消し、有効な連続データを作成する。以下、圧縮データの解凍方法の詳細を説明する。
【００３８】
＜圧縮データの解凍（解凍回路１２０）（Ｓ３）＞
図１０に解凍回路１２０の構成を示す。この図に示すように、解凍回路１２０は、例えば解凍準備部１２１、解凍部１２２、復元部１２３及び出力部１２４を有する。取り込みデータ４０には、割り当て表、余剰ビット、圧縮データが含まれている。ここで、割り当て表は解凍部１２２内に格納し、余剰ビットは復元部１２３内に格納する。
【００３９】
図１１のタイムチャートは、解凍準備部１２１、解凍部１２２及び復元部１２３の詳細動作を示したものである。
この図において、圧縮データ４１は解凍回路１２０に入力される取り込みデータ４０の一部であり、取り込みデータ４０には圧縮データ１１と不定データ２１が混在している。
この圧縮データの解凍は、ブロック単位で行う。このブロックは、４ｂｉｔの圧縮データと１ｂｉｔの空白データで構成されている。空白データの値は０であり、圧縮データを解凍した際、データ長の増分を格納するための予備データである。
【００４０】
このブロックは、解凍準備部１２１で形成され、図１１に示すように圧縮データ（８ｂｉｔ）１１と不定データ（２ｂｉｔ）２１を一纏まり（ページに対応する）として、圧縮データの上位４ｂｉｔ以外に０を代入したデータ１と、圧縮データの下位４ｂｉｔ以外に０を代入したデータ２を生成する。なお、解凍側におけるブロックへの分割数は、圧縮側における分割数と対応する。また、解凍側での各ブロックの圧縮データのビット数は、上述の圧縮装置により作成された圧縮データのビット数（識別コードを含む）に対応する。データ２は１クロック分リタイミングされている。これらデータ１とデータ２を論理和し、１クロック分リタイミングした結果が、解凍準備部１２１の出力データであり、４ｂｉｔの圧縮データと１ｂｉｔの空白データで構成されたブロック単位で出力される。このデータは、解凍部１２２と復元部１２３にそれぞれ出力される。
【００４１】
次に、解凍部１２２について説明する。解凍部１２２では、解凍準備部出力データに対して、割り当て表を使用した圧縮データの解凍を行う。図１１中の解凍準備部出力データにおいて、前半のブロックＤｃ００〜Ｄｃ０３では、Ｄｃ００＝‘１’であるとすると、Ｄ０１〜Ｄｃ０３は割り当てコードに対応しているため、割り当て表を参照して割り当てコードに対応したブロックデータＤ０〜Ｄ４に変換する。一方、後半のブロックＤｃ０４〜Ｄｃ０７では、Ｄｃ０４＝‘０’であるとすると、Ｄ０５〜Ｄｃ０７は割り当てコードに対応しておらず、割り当て表を使用した圧縮が行われていないため、解凍部１２２で扱うデータの対象外となる。そのため、解凍部１２２では、このブロック全体に対し‘０’を格納する。なお、Ｑビットのブロックと、Ｑ＋１ビットのブロックが存在する場合には、それぞれの割り当て表を用いて解凍する。
【００４２】
次に、復元部１２３について説明する。復元部１２３では、割り当てコードに対応していないデータの復元を行う。図１１中の解凍準備部出力データにおいて、前半のブロックＤｃ００〜Ｄｃ０３では、Ｄｃ００＝‘１’より割り当て表を使用した圧縮がされており、復元部１２３で扱うデータの対象外である。そのため、復元部１２３では、このブロック全体に対し‘０’を格納する。一方、後半のブロックＤｃ０４〜Ｄｃ０７では、Ｄｃ０４＝‘０’よりＤｃ０５〜Ｄｃ０７をそのまま復元部出力データに格納し、不足部分については、余剰ビットＤｏ０〜Ｄｏ１からデータを読み出して格納することで、データの復元を行う。なお、余剰ビットは例えば圧縮装置２００における処理順に格納され、復元部１２３が順次読みだすことで、圧縮データと余剰ビットの対応がとられている。なお、これ以外の手法で圧縮データと余剰ビットの対応をとることもできる。
【００４３】
最後に、出力部１２４が解凍部出力データと復元部出力データの論理和をとることで、解凍データ３０の生成を行う。これにより、解凍回路１２０におけるデータの解凍が完了する。
データの解凍完了後、解凍データ３０を使用し、コンフィギュレーション制御回路１００がＦＰＧＡ１に対してコンフィギュレーションを行うことで（Ｓ４）、コンフィギュレーションが完了する（Ｓ５）。
【００４４】
＜本実施例の効果＞
本実施例では、ページリードモードと圧縮技術を利用することで高速なコンフィギュレーションを実現できる。一定のクロックでＦＲＯＭデータの読み出しを行う場合、ページリードモードを利用すると、ページ内データの１０サイクル中８サイクルでしか有効なデータが得られないが、ページリードモードによりページ内でのアクセスタイムが、通常（ページリードモードを用いない場合）の３倍高速になる事で、通常より２．４倍程度の高速なデータの読み出しが可能となる。さらに、本実施例では、１４％の圧縮を行うことで、ページリードモードを用いない場合と比較して合計約２．８倍の高速なコンフィギュレーションを実現している。
【００４５】
なお、上述の例ではＦＲＯＭを用いたが、データを読み出す際に周期的にＮｉビット（Ｎｉは整数）の不定データを生じる適宜のメモリでもよい。この場合、不定ビットが出力される間のＮｐビット（Ｎｐは整数）が上述のページに相当する。また、ＦＰＧＡ以外のプログラマブルロジックデバイスを用いても良いし、他の適宜のデバイスでもよい。
【００４６】
２．構成例
上述の実施例では具体的な例を挙げて説明したが、以下のように構成することができる。
［構成例１］
データを読み出す際に周期的にＮｉビット（Ｎｉは整数）の不定データが出力されるメモリを用いたコンフィグレーション制御システムであって、
不定ビットが出力される間のＮｐビット（Ｎｐは整数）のコンフィグレーションデータを、Ｎｐ−Ｎｉビットより小さい圧縮データに圧縮し、該圧縮データを上記メモリに記憶する圧縮装置と、
上記メモリから圧縮データを読み出し、圧縮データとＮｉビットの不定データを含む取り込みデータを出力する読み出し回路と、
取り込みデータのうちのＮｉビットの不定データを除く圧縮データを解凍してＮｐビットの解凍データを生成し、該解凍データをデバイスに設定する解凍回路と
を備える。
これにより、プログラマブルロジックデバイスなどのデバイスのコンフィグレーションに、ページリードモードを有するＦＲＯＭなどの不定ビットを生じるメモリを用いることができる。また、このようなメモリを用いることで高速なコンフィグレーションが実現できる。
【００４７】
［構成例２］
構成例１に記載のコンフィグレーション制御システムにおいて、例えば、
上記圧縮装置は、
第１ビット数（例えば上述のＱビット又はＱ＋１）の情報と、第１ビット数より小さい第２ビット数の情報とが対応した対応情報が記憶された対応情報記憶部を有し、
コンフィグレーションデータの少なくとも一部を第１ビット数（例えばＱビットかＱ＋１ビットのいずれか）のブロックに分割し、該ブロックの第１ビット数のデータを、上記対応情報記憶部を参照して、第２ビット数のデータに圧縮する。
これにより、対応情報を用いてコンフィグレーションデータを圧縮できる。
【００４８】
［構成例３］
構成例２に記載のコンフィグレーション制御システムにおいて、例えば、
上記解凍回路は、上記対応情報を入力し、読み出された圧縮データをブロックに分割し、該対応情報を参照して、第２ビット数のデータを第１ビット数のデータに解凍する。
これにより、対応情報を用いて圧縮された圧縮データを解凍側で解凍できる。
【００４９】
［構成例４］
構成例３に記載のコンフィグレーション制御システムにおいて、例えば、
上記圧縮装置は、上記対応情報を上記メモリに記憶し、
上記読み出し回路は、上記メモリから上記対応情報をさらに読み出して上記解凍回路に出力し、
上記解凍回路は、上記読み出し回路から上記対応情報を入力する。
これにより、圧縮データと同様に、読み出し回路により対応情報を読み込むことができる。
【００５０】
［構成例５］
構成例２乃至４のいずれかに記載のコンフィグレーション制御システムにおいて、例えば、
上記圧縮装置は、
コンフィグレーションデータを第１ビット数ずつに区分してビットパターンを解析し、所定数のビットパターンを発生回数が高いものから抽出し、
抽出された第１ビット数のビットパターンと、第２ビット数のビットパターンとを対応づけた対応情報を上記対応情報記憶部に記憶し、
抽出されるビットパターンの数は、第２ビット数で表現可能な数の範囲内である。
これにより、対応情報を作成できる。
【００５１】
［構成例６］
構成例１乃至５のいずれかに記載のコンフィグレーション制御システムにおいて、例えば、
上記圧縮装置は、
コンフィグレーションデータの少なくとも一部を第１ビット数のブロックに分割し、該ブロックの第１ビット数のデータのうちの第２ビット数のデータを残してビット数を削減し、他のデータを余剰ビットとして別に上記メモリに記憶し、
上記読み出し回路は、上記メモリから上記余剰ビットをさらに読み出して上記解凍回路に出力し、
上記解凍回路は、読み出された圧縮データをブロックに分割し、該ブロックのデータと余剰ビットを用いて、第２ビット数のデータを第１ビット数のデータに解凍する。
これにより、対応情報が存在するビットパターン以外のブロックについても、圧縮データ内のデータ量を削減できる。
【００５２】
［構成例７］
構成例２乃至６のいずれかに記載のコンフィグレーション制御システムにおいて、例えば、
上記圧縮装置は、
分割された第１ビット数のブロックについて、上記対応情報記憶部を参照して、該ブロックが示すビットパターンが対応情報に存在する場合は、該対応情報に従い、対応する第２ビット数のデータに圧縮し、存在しない場合は、該ブロックの第１ビット数のデータのうちの第２ビット数のデータを残してビット数を削減し、他のデータを余剰ビットとして別に上記メモリに記憶し、
対応情報に従いデータを圧縮したか、余剰ビットをメモリに記憶したかを示す識別コードを各ブロックに付加する。
これにより、解凍側で対応情報を用いて解凍するか、余剰ビットを用いて解凍するか判断するためのコードを付与できる。
【００５３】
［構成例８］
構成例７に記載のコンフィグレーション制御システムにおいて、例えば、
上記解凍回路は、分割された各ブロックの識別コードに従い、対応情報を参照して又は余剰ビットを用いてデータを解凍する。
これにより、解凍側でデータを解凍できる。
【００５４】
［構成例９］
構成例７又は８に記載のコンフィグレーション制御システムにおいて、例えば、
コンフィグレーションデータをブロックに分割する分割数は、生じる不定ビット数に対応する。
これにより、各ブロックに１ビットずつ不定ビットに対応するビットを含むことができる。
【００５５】
［構成例１０］
構成例２乃至９のいずれかに記載のコンフィグレーション制御システムにおいて、例えば、
第１ビット数と第２ビット数の差が、識別コードのビット数＋１ビットである。
これにより、解凍側で分割された各ブロックは、識別コードと、圧縮されたデータと、不定ビットに対応する１ビットを含み、このビット幅が第１ビット数と整合し、第２ビット数のデータを第１ビット数に解凍することで、圧縮前のコンフィグレーションデータのビット位置と、解凍後のコンフィグレーションデータのビットが整合する。
【００５６】
［構成例１１］
構成例１乃至１０のいずれかに記載のコンフィグレーション制御システムにおいて、例えば、
上記デバイスは、プログラマブルロジックデバイスであり、
上記メモリは、ページリードモードで動作するＦＲＯＭ（Ｆｌａｓｈ  ＲＯＭ）である。
これにより、ＦＰＧＡなどのプログラマブルロジックデバイスと、ＦＲＯＭを用いたシステムが実現される。
【００５７】
［構成例１２］
データを読み出す際に周期的にＮｉビット（Ｎｉは整数）の不定データが出力されるメモリを用いてデバイスにコンフィグレーションデータを設定するための制御回路であって、
不定ビットが出力される間のＮｐビット（Ｎｐは整数）のコンフィグレーションデータが、Ｎｐ−Ｎｉビットより小さい圧縮データに圧縮され、記憶された上記メモリから該圧縮データを読み出し、圧縮データとＮｉビットの不定データを含む取り込みデータを出力する読み出し回路と、
取り込みデータのうちのＮｉビットの不定データを除く圧縮データを解凍してＮｐビットの解凍データを生成し、該解凍データをデバイスに設定する解凍回路と
を備える。
【００５８】
これにより、プログラマブルロジックデバイスなどのデバイスのコンフィグレーションに、ページリードモードを有するＦＲＯＭなどの不定ビットを生じるメモリを用いることができる。また、このようなメモリを用いることで高速なコンフィグレーションが実現できる。
【００５９】
なお、本発明は上述した実施例に限定されるものではなく、様々な変形例が含まれる。上記した実施例は本発明を分かりやすく説明するために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではない。
【００６０】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置、または、ＩＣカード、ＤＶＤ等の記録媒体に置くことができるし、必要に応じてネットワーク等を介してダウンロードし、各種の記憶装置にインストールすることも可能である。
【符号の説明】
【００６１】
１  ＦＰＧＡ
１０  ＦＲＯＭ
１００  コンフィギュレーション制御回路
１１０  読み出し回路
１２０  解凍回路
２００  圧縮装置
２１０  対応情報記憶部
２２０  処理部
【図１】
2013247422.tif 000003
【図２】
2013247422.tif 000004
【図３】
2013247422.tif 000005
【図４】
2013247422.tif 000006
【図５】
2013247422.tif 000007
【図６】
2013247422.tif 000008
【図７】
2013247422.tif 000009
【図８】
2013247422.tif 000010
【図９】
2013247422.tif 000011
【図１０】
2013247422.tif 000012
【図１１】
2013247422.tif 000013