説明

プログラマブル・ロジック・デバイス

【課題】ダイナミック・リコンフィギュラブル・LSI等のプログラマブル・ロジック・デバイスにおいて、算術論理演算以外の演算であるデータの並べ替えや適切なビット配置等の処理を行う場合においても、演算器を使用するために回路規模が大きくなる。
【解決手段】プログラマブル・ロジック・デバイス101は、各々外部からの設定によって毎サイクル機能変更が可能であり、かつ64ビットの入力信号を任意の順番に並べ替えて64ビット信号を出力することが可能な第1の並べ替えセル104を複数内蔵する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム可能な演算エレメントを行・列の方向に複数配置するプログラマブル・ロジック・デバイス、又はリコンフィギュラブル回路に関するものである。
【背景技術】
【0002】
近年、情報処理端末での情報処理に対するニーズは多様化し、通信方式や信号処理の規格はめまぐるしく変化しているため、製品のライフサイクルはますます短くなる傾向にある。この製品サイクルの短縮化に対応するためには、プログラムによって機能の変更が可能なデバイスが有用である。これらの中で、ASIC(Application Specific Integrated Circuit:特定用途向けIC)に匹敵する処理性能とマイクロプロセッサのプログラマビリティとを併せ持つデバイスとして、プログラムによって柔軟に回路構成を変更できるプログラマブル・ロジック・デバイスが注目を集めている。プログラマブル・ロジック・デバイスにはいくつかの種類があるが、代表的な例としてはFPGA(Field Programmable Gate Array)やダイナミック・リコンフィギュラブル・LSIを挙げることができる。
【0003】
ダイナミック・リコンフィギュラブル・LSIにおいては、プログラムに柔軟に対応するため、データ処理を実施する際には必ず算術論理演算回路(ALU)やシフタ等の演算器を通過する。このため、算術論理演算以外の演算であるデータの並べ替えや適切なビット配置等の処理を行う場合においても、入力データを処理する際に常に演算器を使用する必要がある。これらのデータ処理を並列に多数実施するようなアプリケーションを上記のダイナミック・リコンフィギュラブル・LSIを用いて実現させた場合、本来のデータ処理には必要のない演算器リソースを多数必要としてしまい、チップ面積の増大や処理サイクル数の増加等の効率低下を招く可能性があった。そこで、これらを改善するために、入力データの並び替え等の演算を実現することができる並べ替えセルと呼ばれる回路が提案された。
【0004】
データの並べ替え演算用の回路に関しては、暗号における64ビットデータの並べ替え演算である、転置と呼ばれる演算を行う回路に関して、例えば、以下のようなものがある(特許文献1参照)。特許文献1においては、暗号の転置、換字操作において、暗号化のための鍵とは別の“通し番号”と呼ばれる新たな鍵を入力とし、転置、換字の操作をこの通し番号に依存して変更する暗号化技術が開示されている。特許文献1によれば、従来の転置、換字の操作がハードウェアで固定されている場合に比較して、より解読されにくい暗号化を実現することができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平8−227269号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1に記載の手法においては、暗号化の鍵とは別の新たな鍵を用いることによって秘匿性は向上しているものの、この新たな鍵はユーザーがキー入力等の方法で暗号化回路に与えること、かつ1回のデータ通信の間にこの鍵は変更されないため、仮にこの新たな鍵を盗まれてしまうと暗号の解読が可能となってしまうという課題があった。
【0007】
本発明は、このような事情に鑑みて創作したものであり、暗号処理における転置と呼ばれる演算の仕方を毎サイクル変更することでより秘匿性が高い暗号処理を実現することができる並べ替えセルと呼ばれる回路を考案し、更に並べ替えセルと呼ばれるこの回路を他のアプリケーションにも使用することで、暗号処理だけでなく、画像認識処理やH.264コーデック処理を本発明のプログラマブル・ロジック・デバイス上でチップ面積の観点で効率良く実現する方法を提供することを目的としている。
【課題を解決するための手段】
【0008】
(1)本発明による第1のプログラマブル・ロジック・デバイスは、内部に少なくとも演算器と配線スイッチとを持つ演算エレメントと、プログラムによって配線経路を変更することによって64ビットの入力信号を任意の順番に並べ替えて64ビット信号を出力する第1の並べ替えセルを複数内蔵し、かつ前記第1の並べ替えセルは外部からの設定によって毎サイクル機能変更が可能な制御回路を持つ。
【0009】
この構成によれば、64ビットのデータに対して1ビット単位でのデータの並べ替えやコピー等の演算を、演算エレメントを用いずに第1の並べ替えセルを用いて実施することが可能となり、プログラマブル・ロジック・デバイスでアプリケーションを実行する際に必要となる演算エレメントの数を削減することが可能となる。
【0010】
(2)本発明による第2のプログラマブル・ロジック・デバイスは、内部に少なくとも演算器と配線スイッチとを持つ演算エレメントと、64ビットの入力信号のうち連続する8ビットの信号を1つのグループとして8個のグループに分け、プログラムによって配線経路を変更することによって8個の8ビット信号グループを任意の順番に並び替えて、64ビットの出力信号を生成する第2の並べ替えセルを複数内蔵し、かつ前記第2の並べ替えセルは外部からの設定によって毎サイクル機能変更が可能な制御回路を持つ。
【0011】
この構成によれば、64ビットのデータのうち連続する8ビットの信号グループに対して、信号グループ単位でのデータの並べ替えやコピー等の演算を、演算エレメントを用いずに第2の並べ替えセルを用いて実施することが可能となり、プログラマブル・ロジック・デバイスでアプリケーションを実行する際に必要となる演算エレメントの数を削減することが可能となる。
【0012】
(3)本発明による第3のプログラマブル・ロジック・デバイスは、内部に少なくとも演算器と配線スイッチとを持つ演算エレメントと、128ビットの入力信号のうち連続する8ビットの信号を1つのグループとして16個のグループに分け、プログラムによって配線経路を変更することによって16個の8ビット信号グループのうち偶数番目又は奇数番目の8ビット信号グループを選択して出力64ビットの出力信号を生成する第3の並べ替えセルを複数内蔵し、かつ前記第3の並べ替えセルは外部からの設定によって毎サイクル機能変更が可能な制御回路を持つ。
【0013】
この構成によれば、128ビットのデータのうち連続する8ビットの信号グループに対して、偶数番目又は奇数番目の8ビット信号グループを選択するようなデータの並べ替え等の演算を、演算エレメントを用いずに第3の並べ替えセルを用いて実施することが可能となり、プログラマブル・ロジック・デバイスでアプリケーションを実行する際に必要となる演算エレメントの数を削減することが可能となる。
【発明の効果】
【0014】
本発明によれば、プログラマブル・ロジック・デバイスでのアプリケーション実行において、データの並べ替えやコピー等の演算を、演算エレメントを用いずに並べ替えセルを用いて実施することが可能となる。これにより、プログラマブル・ロジック・デバイスでアプリケーションを実行する際に必要となる演算エレメントの数を削減することが可能となり、チップ面積の増大を抑えることができる。
【図面の簡単な説明】
【0015】
【図1】本発明の第1の実施の形態に係るプログラマブル・ロジック・デバイスの構造図である。
【図2】図1中の第1の並べ替えセルの内部構造を示したブロック図である。
【図3】図1中の演算エレメントの内部構造を示したブロック図である。
【図4】図1のプログラマブル・ロジック・デバイスを用いて実現するアプリケーションの例である暗号処理のフロー図である。
【図5】図4中のF関数の内部構造を示したフロー図である。
【図6】図1のプログラマブル・ロジック・デバイスによる暗号処理の実装概略図である。
【図7】図1のプログラマブル・ロジック・デバイスを用いて暗号処理を実現する場合のマッピング例を示した図である。
【図8】演算エレメントのみを用いた場合の並べ替え回路の構成例を示したブロック図である。
【図9】本発明の第1の並べ替えセルを使用した場合の並べ替え回路の構成例を示したブロック図である。
【図10】本発明の第2の実施の形態に係るプログラマブル・ロジック・デバイスの構造図である。
【図11】図10の変形例を示した構造図である。
【図12】図10及び図11中の第2の並べ替えセルの内部構造を示したブロック図である。
【図13】図10及び図11のプログラマブル・ロジック・デバイスを用いて実現するアプリケーションの例である画像処理回路のブロック図である。
【図14】(a)、(b)及び(c)は、図13中の予測画像生成回路における種々の予測モードを説明するための図である。
【図15】演算エレメントのみを用いた場合の予測画像生成回路の構成例を示したブロック図である。
【図16】本発明の第2の並べ替えセルを使用した場合の予測画像生成回路の構成例を示したブロック図である。
【図17】(a)、(b)、(c)及び(d)は、図16中の第2の並べ替えセルの動作を説明するための図である。
【図18】図10及び図11のプログラマブル・ロジック・デバイスを用いて実現するアプリケーションの例である画像認識における人物検出処理回路のブロック図である。
【図19】(a)、(b)及び(c)は、図18中のプログラマブル接続のサイクル毎の遷移を示す概念図である。
【図20】本発明の第3の実施の形態に係るプログラマブル・ロジック・デバイスの構造図である。
【図21】図20中の第3の並べ替えセルの内部構造を示したブロック図である。
【図22】図20のプログラマブル・ロジック・デバイスを用いて実現するアプリケーションの例である携帯電話のデジタルベースバンド処理のフロー図である。
【図23】図22中のインターリーブ処理の詳細を示した概念図である。
【図24】図23のインターリーブ処理を実現する際の第3の並べ替えセルの1サイクル目の動作を示した概念図である。
【図25】図23のインターリーブ処理を実現する際の第3の並べ替えセルの2サイクル目の動作を示した概念図である。
【図26】演算エレメントのみを用いた場合のインターリーブ回路の構成例を示したブロック図である。
【図27】本発明の第3の並べ替えセルを使用した場合のインターリーブ回路の構成例を示したブロック図である。
【発明を実施するための形態】
【0016】
以下、本発明に関わるプログラマブル・ロジック・デバイスの実施の形態について、図面を用いて詳細に説明する。
【0017】
《第1の実施の形態》
図1は、第1の実施の形態のプログラマブル・ロジック・デバイスを示した構造図である。図1において、プログラマブル・ロジック・デバイス101は内部に少なくとも4ビットの演算器と4ビットの配線スイッチと、4ビットの入出力とを持つ演算エレメント102と、演算エレメント102を16個×16個の正方形状に配置し、4ビット×16個=64ビットの入出力を持つ演算エレメント群103と、演算エレメント群103に隣接して配置され、プログラムによって配線経路を変更することによって64ビットの入力信号を任意の順番に並べ替えて64ビット信号を出力し、かつ外部からの設定によって毎サイクル機能変更が可能な64ビットの入出力を持つ制御回路を持つ第1の並べ替えセル104と、演算エレメント群103の64ビット入力と第1の並べ替えセル104の64ビット出力とを接続し、又は演算エレメント群103の64ビット出力と第1の並べ替えセル104の64ビット入力とを接続する配線105とを備える。
【0018】
図2は、図1のプログラマブル・ロジック・デバイス101に搭載する第1の並べ替えセル104の内部構造を示した図である。第1の並べ替えセル104は、8ビット×8並列=64ビットのデータ入力201と、入力信号をクロック信号の立ち上がりエッジで取り込むフリップフロップ202と、外部からの設定入力203と、外部からの設定入力203を受けてアドレスを生成するアドレスカウンタ204と、セレクタを制御するための制御信号を読み出すメモリ205と、64ビットのデータ入力201から任意の1ビットを選択する64対1出力セレクタ206と、セレクタ206の出力信号をクロック信号の立ち上がりエッジで取り込むフリップフロップ207と、64個のフリップフロップ207の出力信号からなる64ビットのデータ出力208とからなる。
【0019】
図2の構造を持つ第1の並べ替えセル104は、外部からの設定入力203を受けてアドレスを生成するアドレスカウンタ204と、セレクタを制御するための制御信号を読み出すメモリ205と、64ビットのデータ入力201から任意の1ビットを選択する64対1出力セレクタ206とを内蔵しているため、データのコピーや並べ替えといった演算を、1サイクルで実行することができる。これらの演算を、ALU、シフタ等の演算器から構成される演算エレメント102を用いて実現する場合を考えると、各々のデータ演算に対して少なくとも1つの演算エレメント102を使用し、なおかつ算術等の演算を行わないにもかかわらず、演算器を使用する必要がある。したがって、図2の構成を持つ第1の並べ替えセル104を搭載するプログラマブル・ロジック・デバイス101を用いた場合は、ターゲットとするアプリケーションの信号処理のうち、データの並べ替え演算等を、第1の並べ替えセル104を用いて実現すれば、全ての信号処理を演算エレメント102を用いて実現する場合に比較して、効率良くアプリケーションの信号処理を実現することができる。
【0020】
図3は、図1のプログラマブル・ロジック・デバイス101に搭載する演算エレメント102の詳しい構成を示したブロック図である。演算エレメント102は、コンフィギュレーションデータの設定によって複数の種類の演算が可能な4ビットの算術論理演算回路(ALU)からなる演算ブロック2301と、ALUの4ビット出力値を保持するレジスタ2302と、演算エレメント102を外部又は別の演算エレメント102と接続するための配線2303と、配線2303とALUの4ビット入力とを接続し、また配線2303をALUの4ビット出力又はレジスタ2302の出力と接続するためのスイッチボックス(SB)2304と、演算ブロック2301の演算の種類や、スイッチボックス2304の接続状態を決定又は変更することを可能とするためのコンフィギュレーションデータを保持するコンフィギュレーションメモリ2305とを持つ。
【0021】
以上のように構成された本実施の形態について、以下、その動作を説明する。図1、図2に記載のプログラマブル・ロジック・デバイス101を用いて実現するアプリケーションの例として、DES(Data Encryption Standard)方式の暗号回路を想定する。
【0022】
図4は、DESの暗号処理を記載したフロー図である。64ビットの平文入力301に対して、初期転置302と呼ばれる1ビット単位での並べ替え処理を実施する。更に暗号化に用いる64ビットの鍵入力303については、64ビットから56ビットへの転置304を実施したのち、上位と下位の28ビットずつに分離し、シフト308の処理を実施する。更に2つの28ビットのシフト結果は再び56ビットに結合され、更に56ビットから48ビットへの転置処理305が実施される。初期転置302を行った64ビットの平文入力は上位と下位の32ビットに分けられ、下位の32ビットと転置305の48ビットの鍵データとはF関数306と呼ばれる関数に入力される。F関数306からは処理された32ビットデータが出力され、初期転置302の64ビット出力のうち上位32ビットの出力と排他的論理和が算出される。これによって出力された上位の32ビットのデータは、F関数306に入力された下位の32ビットデータと上位下位を入れ替えられ、新たに2つ目のF関数306にて同様の処理がなされる。その際に、2つ目のF関数306に入力される鍵データは、更に上位28ビットと下位28ビットの鍵入力に対して更にシフト308を施したものに、56ビットから48ビットへの転置305を施したものである。
【0023】
この処理を16回繰り返して、最後に最終転置307と呼ばれるビットの並べ替え演算を行って、暗号化された64ビットのデータとして出力される。
【0024】
図5は、図4の暗号処理フロー図のうち、F関数306の演算の内部構造を示した図である。32ビットの入力データは、32ビットから48ビットに拡張する転置401を実施した後、鍵の48ビット入力との排他的論理和を算出する。48ビットの排他的論理和の出力は、連続する6ビットが8個のグループに分けられ、それぞれの6ビットデータはSbox402と呼ばれる演算を実施する。Sbox402は6ビット入力を4ビット出力に変換する。Sbox402の処理を終えた8個の4ビット出力は、32ビットの信号に再び結合され、32ビットの信号を並べ替える転置403の処理を施し、32ビットデータとして出力される。本実施形態で想定する暗号化処理においては、秘匿性の向上のために、302、304、305、307、401、403の転置の処理において、毎サイクル並び替えの処理を変更することを想定する。
【0025】
図6は、図4、図5で示した暗号処理の処理フローを実際の回路で実装する場合の実装概略図である。図4の64ビットの平文入力301は、図6では平文入力501に対応する。図4の初期転置302は、図6では初期転置回路502に対応する。初期転置回路502の出力は、入力データセレクタ503に入力される。図5の32ビットから48ビットに拡張する転置401は、図6では転置回路504に対応する。また、図5の排他的論理和は、図6では排他的論理和回路505に対応する。図5のSbox402は、図6ではSbox回路506に対応する。図5の32ビットの信号を並べ替える転置403は、図6では転置回路507に対応する。図4の上位32ビットの出力とF関数306の32ビット出力との排他的論理和は、図6の排他的論理和回路508に対応する。図4の最終転置307は、最終転置回路509に対応する。
【0026】
更に、図4の64ビット鍵入力303は、図6では64ビット鍵入力510に対応する。図4の64ビットから56ビットへの転置304は、図6では転置回路511に対応する。転置回路511の出力は、入力データセレクタ512に入力される。更に入力データセレクタ512の出力は、シフト回路513に入力される。シフト回路513は、図4のシフト308に対応する。図4の56ビットから48ビットへの転置305は、図6では転置回路514に対応する。
【0027】
次に、図6のDES回路を図1のプログラマブル・ロジック・デバイス101を用いて実現する場合の回路のマッピングの例を説明する。マッピングの考え方としては、図6のDES回路のうち、転置を行う回路においては、入力信号のビットの並び替えは、演算エレメント102を用いた場合は面積が非常に大きくなるため、第1の並べ替えセル104を使用することとし、これ以外の回路に関しては、演算エレメント102を使用するという考え方とする。なお、転置を行う回路を、演算エレメント102を用いずに第1の並べ替えセル104を用いて実現した場合にどの程度回路面積が削減できるかについては、後述する。
【0028】
図6の初期転置回路502は、第1の並べ替えセル104を使用する。ここに使用する第1の並べ替えセル104を並べ替えセル(1)と呼ぶ。図6の初期転置回路502は64ビット入力・64ビット出力であるので、第1の並べ替えセル104の64ビット入出力をフルに使用する。
【0029】
次に、入力データセレクタ503は演算エレメント102を使用する。演算エレメント102は4ビットの入出力を持つことから、32ビット×2の入出力を持つ入力データセレクタ503を実現するためには、64/4=16個の演算エレメント102が必要となる。ここで使用する演算エレメント群を演算エレメント群(1)と呼ぶ。
【0030】
図6の転置回路504は第1の並べ替えセル104を使用する。ここに使用する並べ替えセルを並べ替えセル(3)と呼ぶ。図6の転置回路504は32ビット入力・48ビット出力であるため、第1の並べ替えセル104の64ビット入出力のうち必要なビット数のみ使用し、残りのビットに関しては未使用とする。図6の排他的論理和回路505は、演算エレメント102を使用する。図6の排他的論理和回路505は48ビット入出力を持つため、48/4=12個の演算エレメント102が必要となる。ここで使用する演算エレメント群を演算エレメント群(2)と呼ぶ。図6ではSbox回路506は、同様に演算エレメント102を使用する。1つのSbox回路506は8個の演算エレメント102が必要であると仮定すると、8個のSbox回路506を実現するためには64個の演算エレメント102が必要となる。ここで使用する演算エレメント群を演算エレメント群(3)と呼ぶ。図6の転置回路507は第1の並べ替えセル104を使用する。ここに使用する並べ替えセルを並べ替えセル(4)と呼ぶ。図6の転置回路507は32ビット入出力であるため、第1の並べ替えセル104のうち半数の入出力を使用し、残りのビット数に関しては未使用とする。図6の排他的論理和回路508は、演算エレメント102を使用する。図6の排他的論理和回路508は32ビットの入出力を持つため、32/4=8個の演算エレメント102を使用する。ここで使用する演算エレメント群を演算エレメント群(4)と呼ぶ。図6の最終転置回路509は第1の並べ替えセル104を使用する。ここに使用する並べ替えセルを並べ替えセル(6)と呼ぶ。図6の最終転置回路509は64ビットの入出力を使用するので、第1の並べ替えセル104の64ビット入出力をフルに使用する。
【0031】
更に、図6の転置回路511は第1の並べ替えセル104を使用する。ここに使用する並べ替えセルを並べ替えセル(5)と呼ぶ。図6の転置回路511は64ビット入力と56ビット出力とを持つため、出力の8ビットは未使用となる。また図6の入力データセレクタ512は演算エレメント102を使用する。図6の入力データセレクタ512は28ビット×2の入出力を持つため、4ビットの入出力を持つ演算エレメント102は56/4=14個必要となる。ここで使用する演算エレメント群を演算エレメント群(5)と呼ぶ。更に図6のシフト回路513は演算エレメント102を使用する。シフト回路513は28ビット×2の入出力を持つため、4ビットの入出力を持つ演算エレメント102は56/4=14個必要となる。ここで使用する演算エレメント群を演算エレメント群(6)と呼ぶ。更に、図6の56ビットから48ビットへの転置回路514は第1の並べ替えセル104を使用する。ここに使用する並べ替えセルを並べ替えセル(2)と呼ぶ。転置回路514は56ビット入力・48ビット出力を持つため、第1の並べ替えセル104の64ビット入出力のうち必要なビット数のみ使用し、残りのビットに関しては未使用とする。
【0032】
図7に、図1のプログラマブル・ロジック・デバイス101を用いた場合のDES回路の実現方法に関して、実際のマッピング例を示す。並べ替えセル(1)は図7の左の列の演算エレメント群103の一番上の第1の並べ替えセル104を使用する(図7において、並べ替えセル(1)の記載がある箇所)。当該の並べ替えセル(1)はその64ビット入力がプログラマブル・ロジック・デバイス101の上辺のIO部に接続しているため、この上辺のIO部を経由して、プログラマブル・ロジック・デバイス101の外部から64ビットの平文を入力することができる。更に並べ替えセル(1)は、64ビットの平文入力をもとに、外部からの設定によって、初期転置回路502として動作し、64ビット信号の出力を行う。
【0033】
次に、演算エレメント群(1)は、図7の左の列の演算エレメント群103のうち、一番上の演算エレメント群103を使用してマッピングする(図7において、演算エレメント群(1)の記載がある箇所)。演算エレメント群(1)は、配線105を経由して、並べ替えセル(1)からの64ビット出力信号を入力として、外部からの設定によって入力データセレクタ503として動作し、上位と下位の32ビット出力信号を出力する。
【0034】
次に、並べ替えセル(3)は、図7の左の列の演算エレメント群103のうち、一番上の演算エレメント群とその次の演算エレメント群との間にある第1の並べ替えセル104を使用する(図7において、並べ替えセル(3)の記載がある箇所)。並べ替えセル(3)は配線105を経由して、演算エレメント群(1)の下位の32ビット出力を入力として、外部からの設定によって、転置回路504として動作し、48ビットの出力信号を出力する。
【0035】
一方、並べ替えセル(5)は図7の右の列の演算エレメント群103の一番上から2番目の演算エレメント群の右隣にある並べ替えセルを使用する(図7において、並べ替えセル(5)の記載がある箇所)。当該の並べ替えセル(5)はその64ビット入力がプログラマブル・ロジック・デバイス101の右辺のIO部に接続しているため、この右辺のIO部を経由して、プログラマブル・ロジック・デバイス101の外部から64ビットの鍵データを入力することができる。更に並べ替えセル(5)は、64ビットの鍵入力をもとに、外部からの設定によって、転置回路511として動作し、上位と下位の28ビット信号の出力を行う。
【0036】
次に、演算エレメント群(5)と演算エレメント群(6)は図7の右の列の演算エレメント群のうち、上から2番目の演算エレメント群を使用してマッピングする(図7において、演算エレメント群(5)(6)の記載がある箇所)。この演算エレメント群は、配線105を経由して、並べ替えセル(5)からの上位と下位の28ビット出力信号を入力として、外部からの設定によって入力データセレクタ512とシフト回路513として動作し、上位と下位の28ビットを出力する。
【0037】
次に、並べ替えセル(2)は図7の右の列の演算エレメント群の一番上から2番目の演算エレメント群の左隣にある並べ替えセルを使用する(図7において、並べ替えセル(2)の記載がある箇所)。当該の並べ替えセル(2)は、配線105を経由して演算エレメント群(5)(6)からの上位と下位の28ビット出力を入力として、外部からの設定によって、転置回路514として動作し、48ビット信号の出力を行う。
【0038】
次に、演算エレメント群(2)と演算エレメント群(3)は図7の左の列の演算エレメント群のうち、上から2番目の演算エレメント群を使用してマッピングする(図7において、演算エレメント群(2)(3)の記載がある箇所)。この演算エレメント群は、配線105を経由して、並べ替えセル(3)からの48ビット出力信号と、配線105を経由して、並べ替えセル(2)からの48ビット出力信号とを入力として、外部からの設定によって排他的論理和回路505と、Sbox回路506として動作し、32ビット出力信号を出力する。
【0039】
次に、並べ替えセル(4)は図7の右の列の演算エレメント群の一番上から2番目の演算エレメント群と上から3番目の演算エレメント群との間にある並べ替えセルを使用する(図7において、並べ替えセル(4)の記載がある箇所)。当該の並べ替えセル(4)は、配線105を経由して演算エレメント群(2)(3)からの32ビット出力を入力として、外部からの設定によって、転置回路507として動作し、32ビット信号の出力を行う。
【0040】
次に、演算エレメント群(4)は、図7の左の列の演算エレメント群のうち、上から3番目の演算エレメント群を使用してマッピングする(図7において、演算エレメント群(4)の記載がある箇所)。演算エレメント群(4)は、配線105を経由して、並べ替えセル(4)からの32ビット出力信号を入力として、外部からの設定によって排他的論理和回路508として動作し、32ビット出力信号を出力する。
【0041】
最後に、並べ替えセル(6)は図7の左の列の演算エレメント群の一番上から3番目の演算エレメント群の下にある並べ替えセルを使用する(図7において、並べ替えセル(6)の記載がある箇所)。当該の並べ替えセル(6)は、配線105を経由して、演算エレメント群(4)の32ビット出力信号と、プログラマブル・ロジック・デバイス101の配線ネットワーク(図示せず)を経由して、演算エレメント群(1)の下位32ビット出力信号を入力として、外部からの設定によって最終転置回路509として動作し、64ビット出力信号を出力する。更に並べ替えセル(6)はその64ビット出力がプログラマブル・ロジック・デバイス101の下辺のIO部に接続しているため、この下辺のIO部を経由して、プログラマブル・ロジック・デバイス101の外部に64ビットの暗号化されたデータを出力することができる。
【0042】
以上が、図1、図2に記載のプログラマブル・ロジック・デバイス101を用いてDES方式の暗号回路を実現した場合の実施形態であるが、ここで、図1、図2に記載のプログラマブル・ロジック・デバイス101の第1の並べ替えセル104を64ビットの入出力構成とした理由を説明する。まず、DES処理は図4、図5に示すとおり、最大64ビットを単位とした転置と呼ばれる並べ替え演算が多数存在する。これらの転置の処理を並べ替えセルを用いて実現すると仮定すると、並べ替えセルの入出力ビット数が64ビットより少ない場合、DESの転置処理に必要な64ビットのランダムな並べ替えが実現できないので、並べ替えセルを用いた並べ替え演算は不可能である。したがって、並べ替え演算は、演算エレメント又は配線ネットワーク(図示せず)を使用する必要がある。
【0043】
一方、並べ替えセルの入出力ビット数が64ビットより多い場合は、DESの転置処理に必要なビット幅は64ビットであり、DESの処理においては、64ビットより多いビット数の処理は存在しないため、並べ替えセルの入出力のうち64ビット分しか使用せず、余剰分は遊びとなり、チップ面積の観点で無駄が生じる。
【0044】
また、暗号の処理として、新しい方式であるAES(Advanced Encryption Standard)の処理を考慮した場合、AESでは128ビットの並べ替え演算が存在する。しかしながら、実際のAESの処理では、128ビットは4つの32ビット処理に分割されており、並べ替え演算は32ビット内で閉じている。したがってAESの並べ替え演算を並べ替えセルで実現することを考慮した場合、並べ替えセルの入出力信号のビット幅は32ビット、64ビット、128ビットのうちのいずれかであれば、効率的に処理を行うことができる。
【0045】
以上の内容を考慮すると、図1、図2に記載のプログラマブル・ロジック・デバイス101の第1の並べ替えセル104は64ビットの入出力を持つ構成にすることが最適であると言うことができる。
【0046】
また、図1、図2に記載のプログラマブル・ロジック・デバイス101の演算エレメント群103を、演算エレメント102を縦方向16個×横方向16個配置する構成とした理由を説明する。第1の並べ替えセル104は上記の理由で64ビットの入出力を持つ構成としている。この64ビットの入出力を演算エレメント群103の入出力と接続する構成を考慮すると、1つの演算エレメント102の処理ビット数及び入出力ビット数は4ビットのため、64ビット/4ビット=16個の演算エレメント102が必要である。このように、演算エレメント群103の一辺に16個の演算エレメント102を配置し、正方形状の配置とすることにより、演算エレメント群103からの64ビット入出力を全て第1の並べ替えセル104に接続できる構成とすることで、演算エレメント102の入出力信号に無駄を生じさせない構成とすることができる。第1の並べ替えセル104に接続する演算エレメント102の数が16個より少ないと、第1の並べ替えセル104の入出力端子に余剰のピンを生じるため、適さない。また、16個より多いと、第1の並べ替えセル104に接続できない演算エレメント102が存在し、この演算エレメント102は動作させられず、無駄となる。したがって、演算エレメント群103の一辺の演算エレメント102の個数は16個が最適な数となる。
【0047】
更に、図6に示したDESの64ビットの転置を行う回路を、演算エレメント102を用いずに第1の並べ替えセル104を用いて実現した場合にどの程度回路面積が削減できるかについて説明する。転置回路を、第1の並べ替えセル104を配置しない従来のプログラマブル・ロジック・デバイスを用いた場合に必要な演算エレメント102の数を、図8を使って説明する。演算エレメントは4ビット単位での処理を実施するので、64ビットを4ビットずつ16個の処理に分割する。4ビットから1ビットを抽出するために、図8に示すとおり、4ビットのうち、所定の1ビットのみ“1”で、その他のビットが“0”である定数を入力し、演算エレメントでANDの演算を行う。これを1ビットから3ビットの間でシフトする回路を生成する。1ビットのシフト演算は、同じデータを足し合わせる演算によって実現するので、図8に示すように、シフトするビット数分、演算エレメントを用いて自身の値の足し算を行う。その後、1ビットから3ビットの間でシフトを行ったデータのうち、所望のデータを選択する。この際にも、演算エレメントをマルチプレクサとして使用する。以上の構成により、1ビットの並べ替えに9個の演算エレメントを使用する。このようにして作成した1ビットシフト結果を、OR演算により4ビット分を合成して4ビットの出力データを作成する。4ビット分のデータの合成には、3つの演算エレメントを用いてOR演算を実施する。
【0048】
したがって、必要となる演算エレメントは全部で9個×64ビット+3個×(64/4)=624個となる。演算エレメントの回路を論理合成で作成し、ゲート数の見積もりを行ったところ、約160ゲートであったため、624×160=99840ゲートとなる。
【0049】
一方、第1の並べ替えセル104を用いた場合に関しては、図9に示すとおり、第1の並べ替えセル104を1個使用することで実現できる。図2の構造を持つ第1の並べ替えセル104のゲート数は、3ゲートを有する2対1セレクタでの実現を考慮した場合、(64−1)×64=4032個必要となる。したがってゲート数は、3×4032=12096ゲートとなる。これを演算エレメントのみで実現した場合と比較すると、約1/8のゲート数に削減していることが分かる。
【0050】
以上のように、本実施の形態によれば、暗号処理を、第1の実施の形態のプログラマブル・ロジック・デバイス101を用いて実現することによって、アプリケーション内の算術演算を必要とする処理に関しては演算エレメント102を用いて実現し、暗号処理のデータの1ビット単位での並べ替えのような処理は第1の並べ替えセル104を用いて実現することにより、並べ替えの仕方を毎サイクル変更することでより秘匿性が高い暗号処理を実現することができ、更に暗号処理を効率良く本発明のプログラマブル・ロジック・デバイス101上で実現することができる。
【0051】
《第2の実施の形態》
図10及び図11は、第2の実施の形態のプログラマブル・ロジック・デバイスを示した構造図である。図10及び図11において、プログラマブル・ロジック・デバイス1001は内部に少なくとも4ビットの演算器と4ビットの配線スイッチと、4ビットの入出力とを持つ演算エレメント102と、演算エレメント102を16個×16個の正方形状に配置し、4ビット×16個=64ビットの入出力を持つ演算エレメント群103と、演算エレメント群103に隣接して配置され、64ビットの入力信号のうち連続する8ビットの信号を1つのグループとして8個のグループに分け、プログラムによって配線経路を変更することによって8個の8ビット信号グループを任意の順番に並び替えて64ビットの出力信号を生成し、かつ外部からの設定によって毎サイクル機能変更が可能な64ビットの入出力を持つ制御回路を持つ第2の並べ替えセル1002と、演算エレメント群103の64ビット入力と第2の並べ替えセル1002の64ビット出力とを接続し、又は演算エレメント群103の64ビット出力と第2の並べ替えセル1002の64ビット入力とを接続する配線105とを備える。第2の並べ替えセル1002の配置については、図10に示すように、演算エレメント群103の行と隣接する演算エレメント群103の行との間に、行方向に配置する場合でもよく、また図11に示すように、演算エレメント群103の列と隣接する演算エレメント群103の列との間に、列方向に配置する場合でもよい。また図示はしていないが、行方向と列方向の両方に配置してもよい。
【0052】
図12は、図10及び図11のプログラマブル・ロジック・デバイス1001に搭載する第2の並べ替えセル1002の内部構造を示した図である。第2の並べ替えセル1002は、8ビット×8並列=64ビットのデータ入力1101と、入力信号をクロック信号の立ち上がりエッジで取り込むフリップフロップ1102と、外部からの設定入力1103と、外部からの設定入力1103を受けてアドレスを生成するアドレスカウンタ1104と、セレクタを制御するための制御信号を読み出すメモリ1105と、図12に示すように入力64ビットのうち、連続する8ビットを1つのデータグループとして、8個のデータグループに分割した場合、8個のデータグループの中から任意の1つのデータグループを選択する8対1出力セレクタ1106と、セレクタ1106の出力信号をクロック信号の立ち上がりエッジで取り込むフリップフロップ1107と、64個のフリップフロップ1107の出力信号からなる64ビットのデータ出力1108とからなる。
【0053】
図12の構造を持つ第2の並べ替えセル1002は、外部からの設定入力1103を受けてアドレスを生成するアドレスカウンタ1104と、セレクタを制御するための制御信号を読み出すメモリ1105と、8個のデータグループの中から任意の1つのデータグループを選択する8対1出力セレクタ1106とを内蔵しているため、データのコピーや並べ替えといった演算を、1サイクルで実行することができる。これらの演算を、ALU、シフタ等の演算器から構成される演算エレメント102を用いて実現する場合を考えると、各々のデータ演算に対して少なくとも1つの演算エレメント102を使用し、なおかつ算術等の演算を行わないにもかかわらず、演算器を使用する必要がある。したがって、図12の構成を持つ第2の並べ替えセル1002を搭載するプログラマブル・ロジック・デバイス1001を用いた場合は、ターゲットとするアプリケーションの信号処理のうち、データの並べ替え演算等を、第2の並べ替えセル1002を用いて実現すれば、全ての信号処理を演算エレメント102を用いて実現する場合に比較して、効率良くアプリケーションの信号処理を実現することができる。
【0054】
以上のように構成された本実施の形態について、以下、その動作を説明する。図10、図11、図12に記載のプログラマブル・ロジック・デバイス1001を用いて実現するアプリケーションの例として、H.264動画像のエンコード処理を想定する。
【0055】
図13及び図14(a)〜図14(c)は、H.264の処理の概要を示した図面である。入力画像のマクロブロック1201は縦8画素×横8画素の64個の画素からなり、1画素当たりのビット精度は8ビットである。入力画像のマクロブロック1201に対する信号処理として、画像データのサイズを圧縮するため、あるマクロブロックを予測するための予測画像生成回路1202、予測したマクロブロックと実際の画像データのマクロブロックとの差分値の生成回路1203、更にその差分値に対する直交変換回路1204、量子化回路1205等の処理を実施する。
【0056】
このうち、画素の数に対応してマトリックス状に多数かつ並列に算術演算を必要とする直交変換回路1204や、予測したマクロブロックと実際の画像データのマクロブロックとの差分値の生成回路1203に対しては、演算エレメント102を多数使用して実現することで、データ演算を並列に効率的に実行することができる。
【0057】
一方、予測画像生成回路1202は、既に信号処理の終わった、現在のマクロブロックよりも以前のマクロブロックデータのうち、現在のマクロブロックに隣接する行又は列のデータを使用し、これを単純にコピー、又は並べ替えてコピーしながらマクロブロック内を埋めることによって予測画像を生成する処理を行う。これらの並べ替えの方法は、データ圧縮を効率的に実現するために、入力された画像の特徴によって複数の方法(以下、予測モードと呼ぶ)が存在する。したがって、処理対象のマクロブロックに対して最適な予測画像を決定するため、一旦全ての予測モードで生成した予測画像を準備する必要がある。
【0058】
予測画像生成回路1202に関して、図14(a)〜図14(c)を用いて説明する。図14(a)の予測モード0においては、近接のマクロブロックの1列又は1行をそのままコピーしてマクロブロックを埋める。図14(b)の予測モード1においては、近接のマクロブロックの1列又は1行を、マクロブロックを1行埋めるごとに画素を一個ずつずらしてマクロブロックを埋めていく。図14(c)の予測モード2においては、近接のマクロブロックの1列又は1行を平均して、これをコピーしてマクロブロックを埋める。したがって、予測画像生成回路1202を実現するためには、演算エレメント102ではなく、第2の並べ替えセル1002を用いた方が、より良い面積効率で処理を実現することができる。理由については後述する。
【0059】
ここで、図10、図11、図12に記載のプログラマブル・ロジック・デバイス1001の第2の並べ替えセル1002を64ビットの入出力構成とした理由を説明する。予測画像生成回路1202は8ビットの画像データを8画素分並列に処理を実施するため、第2の並べ替えセル1002に必要な入出力の構成としては、図12に示した8ビット×8並列入力=64ビットの構成となる。第2の並べ替えセル1002の入出力ビット数が64ビットより少ない場合、予測画像生成に必要な8ビット×8画素分の並べ替え処理が実現できないので、第2の並べ替えセル1002を用いた並べ替え処理は不可能である。したがって、並べ替え処理は、演算エレメント又は配線ネットワーク(図示せず)を使用する必要がある。
【0060】
一方、第2の並べ替えセル1002の入出力ビット数が64ビットより多い場合は、予測画像生成に必要なビット幅は8ビット×8画素分=64ビットであり、予測画像生成処理においては、64ビットより多いビット数の処理は存在しないため、並べ替えセルの入出力のうち64ビット分しか使用せず、余剰分は遊びとなり、チップ面積の観点で無駄が生じる。
【0061】
以上の内容を考慮すると、図10、図11、図12に記載のプログラマブル・ロジック・デバイス1001の第2の並べ替えセル1002は64ビットの入出力を持つ構成にすることが最適であると言うことができる。
【0062】
また、図10、図11、図12に記載のプログラマブル・ロジック・デバイス1001の演算エレメント群103を、演算エレメント102を縦方向16個×横方向16個配置する構成とした理由を説明する。第2の並べ替えセル1002は上記の理由で64ビットの入出力を持つ構成としている。この64ビットの入出力を演算エレメント群103の入出力と接続する構成を考慮すると、1つの演算エレメント102の処理ビット数及び入出力ビット数は4ビットのため、64ビット/4ビット=16個の演算エレメント102が必要である。このように、演算エレメント群103の一辺に16個の演算エレメント102を配置し、正方形状の配置とすることにより、演算エレメント群103からの64ビット入出力を全て第2の並べ替えセル1002に接続できる構成とすることで、演算エレメント102の入出力信号に無駄を生じさせない構成とすることができる。第2の並べ替えセル1002に接続する演算エレメント102の数が16個より少ないと、第2の並べ替えセル1002の入出力端子に余剰のピンを生じるため、適さない。また、16個より多いと、第2の並べ替えセル1002に接続できない演算エレメントが存在し、この演算エレメント102は動作させられず、無駄となる。したがって、演算エレメント群103の一辺の演算エレメント102の個数は16個が最適な数となる。
【0063】
ここで、予測画像生成回路1202を実現するに当たって、演算エレメント102ではなく、第2の並べ替えセル1002を用いた方が、より良い面積効率で実現できる理由を説明する。図14(b)に示した予測画像生成の予測モード1の処理に関して、第2の並べ替えセル1002を配置しない従来のプログラマブル・ロジック・デバイスを用いた場合に必要な演算エレメント102の数を、図15を使って説明する。予測モード1では8ビットの任意の画素の中から1つの画素を選んで出力するため、演算エレメントはセレクタとして使用する(図中のMUX)。8画素の入力の中から任意の1つの画素を選び出すため、演算エレメントは図15に示すとおり、全部で7個必要となる。同様の回路を、8個並列に持つ必要がある。また、演算エレメントの入力ビット数は4ビットのため、8ビットの画素処理を実行するためには、上記の回路をもう一組用意する必要がある。したがって、全部で必要な演算エレメントの数は、7×8×2=112個となる。演算エレメントを論理合成で作成し、ゲート数の見積もりを行ったところ、約160ゲートであったため、この並べ替え処理に必要なゲート数は、160×112=17920個となる。
【0064】
一方、第2の並べ替えセル1002を用いた場合に関しては、図16に示すとおり、図12の第2の並べ替えセル1002を1つ使用することで実現できる。第2の並べ替えセル1002の動作に関しては図17(a)〜図17(d)に示すとおり、1サイクル目ではデータの並び替えを実施せずに出力する。2サイクル目では、1画素分をずらして出力を実施する。以降、1サイクル毎に1画素分のデータをずらして出力してゆく。第2の並べ替えセル1002のゲート数は、3ゲートを有するセレクタで実現した場合、(8−1)×64=448個必要となる。したがってゲート数は、3×448=1344ゲートとなる。これを従来の演算エレメントで実現した場合と比較すると、約1/10のゲート数に削減していることが分かる。
【0065】
以上のように、本実施の形態によれば、H.264画像処理を、第2の実施の形態のプログラマブル・ロジック・デバイス1001を用いて実現することによって、アプリケーション内の算術演算を必要とする処理に関しては演算エレメント102を用いて実現し、データのコピーや並べ替えのような信号処理は第2の並べ替えセル1002を用いて実現することにより、H.264画像処理全体を効率良く本発明のプログラマブル・ロジック・デバイス1001上で実現することができる。
【0066】
更に、図10、図11、図12に記載のプログラマブル・ロジック・デバイス1001を用いて実現するアプリケーションの例として、画像認識の人物検出処理を想定する。
【0067】
図18及び図19(a)〜図19(c)は、画像認識の人物検出処理の概要を示した図面である。入力画像のマクロブロックは縦8画素×横8画素の64個の画素からなり、1画素当たりのビット精度は8ビットである。この入力画像は、HoG(Histgram of Gradient)と呼ばれる方式によって、特徴量の算出が行われる。特徴量の算出の演算は、ある画素を基準として、それに縦方向又は横方向に隣接する画素との輝度の差分を算出し、この差分値に対して、予め求められた画像認識の学習結果に基づく係数を乗じ、隣接する数画素分の値を合計する処理である。ゆえに、特徴量算出においては、算術演算を多数実施する。特徴量算出はマクロブロックの1ライン分が並列に算出され、全体として1つのマクロブロック分の画像データは64個の特徴量×8カラム分の特徴量データとなる。なお、1つの特徴量データは、8ビット精度の画素を入力として演算を行うため、ビット精度が途中で増減するが、最終的にクリッピング又は伸長の処理を実施して、再び8ビット精度のデータに変換される。
【0068】
特徴量算出を行ったあと、識別器によってそれぞれの特徴量に対して、画像が人物か否かの判定を行うため、相関計算が実施される。ここでは、64個の識別器が存在するものとする。なお、識別器の数は、必要とする検出精度に応じて多くても少なくしてもよい。この識別器による相関計算は、1カラム分の64個の特徴量に関して並列に実行される。
【0069】
一方、特徴量の算出はマクロブロックの行方向に実施されるため、特徴量の算出結果は8カラム×64個の特徴量保持レジスタに一旦保持して、特徴量算出による特徴量保持レジスタへのデータ書き込みが完了したのち、識別器による相関計算を開始する必要がある。識別器による相関計算は、特徴量保持レジスタの8つのカラムのうち、1サイクル毎に選択するカラムを変更して、識別器による相関計算を実施する。図18中の特徴量保持レジスタでは、カラム4が選択されている場合を想定して、カラム4を太線で囲んでいる。
【0070】
ここで、識別器で相関計算を実施する際に、特徴量保持レジスタのあるカラムの64の特徴量データのうち、どの特徴量を参照して相関計算を行うかは、選択するカラムに依存して異なる。これについて、図19(a)〜図19(c)を用いて説明する。まず相関計算の1サイクル目、すなわちカラム0を選択している場合は、図19(a)に示したような接続状態(すなわち参照状態)となる。次のサイクル、すなわちカラム1を選択している場合は、図19(b)に示したような接続状態(すなわち参照状態)に変更される。このとき、図19(b)の接続状態のように1つの特徴量が複数の識別器に参照されるような状態もありうる。このように1サイクル毎に選択されるカラムが変更されるに当たって、毎サイクル接続状態が変更されて行き、8サイクル目の接続状態(図19(c)参照)まで変更され、識別器による相関計算が完了した際に、特徴量保持レジスタに蓄えられた8カラム×64個分の特徴量に対する相関計算が完了する。このあとは、また新たなマクロブロックによる特徴量の算出が開始される。以上が画像認識の人物検出処理の概要である。
【0071】
また、画像認識アプリケーションに関しては認識率の向上や誤検出率の低下等の改善が日々なされており、LSI開発後にも改善が可能であることが望ましい。そこで、本画像認識の人物検出処理においては、学習結果をLSI開発後も更新できる構成とする。そのためには、学習結果に応じて識別器と特徴量保持レジスタとの接続をプログラムによって変更可能としておくことが必要である。
【0072】
以上の要件を満たすため、図18及び図19(a)〜図19(c)に示した画像認識の人物検出処理を図10、図11、図12に示した本発明のプログラマブル・ロジック・デバイスを用いて実現することを検討する。まず、図18の特徴量算出の処理は多数の算術演算を持つことから、演算エレメント102を用いて実現する。次に、特徴量保持レジスタとカラム選択用のセレクタも演算エレメント102を用いて実現する。一方、8ビット8並列の入出力を持つ8個のプログラマブル接続に関しては、図19(a)〜図19(c)に示したとおり毎サイクル接続状態を変更する必要があり、また学習結果の更新によっても接続状態を変更する必要があるため、図11に記載の第2の並べ替えセル1002を8個用いて実現する。更に後段の識別器に関しては、8個の識別器を一組として、1つの演算エレメント群103を用いて実現する。したがって、識別器は全部で64個存在するため、識別器の処理として使用する演算エレメント群103は8個となる。この8個の演算エレメント群103は、図11において、第2の並べ替えセル1002に対して右側の演算エレメント群103を使用することによって、第2の並べ替えセル1002を8個用いて実現する8個のプログラマブル配線からの出力を直接演算エレメント群103で受け取ることができ、チップ面積の観点で効率良く人物検出処理を実現することができる。また同様に、図18の特徴量算出、特徴量保持レジスタ、及びカラム選択用のセレクタは、図11において、第2の並べ替えセル1002に対して左側の演算エレメント群103を使用することによって、演算エレメント群103の出力を直接、第2の並べ替えセル1002を8個用いて実現する8個のプログラマブル配線に渡すことができ、チップ面積の観点で効率良く人物検出処理を実現することができる。なお、図18のプログラマブル配線に関しては、演算エレメント102ではなく第2の並べ替えセル1002を使用して実現した方が、より良い面積効率で処理を実現することができる。この理由は、H.264動画像のエンコード処理を想定した場合の説明内容と同じである。
【0073】
《第3の実施の形態》
図20は、第3の実施の形態のプログラマブル・ロジック・デバイス1601を示した構造図である。図20において、プログラマブル・ロジック・デバイス1601は、内部に少なくとも4ビットの演算器と4ビットの配線スイッチと、4ビットの入出力とを持つ演算エレメント102と、演算エレメント102を16個×16個の正方形状に配置し、4ビット×16個=64ビットの入出力を持つ演算エレメント群103と、更に複数の演算エレメント群103とIO部との間に配置され、128ビットの入力信号のうち連続する8ビットの信号を1つのグループとして16個のグループに分け、プログラムによって配線経路を変更することによって16個の8ビット信号グループのうち偶数番目又は奇数番目の8ビット信号グループを選択して出力64ビットの出力信号を生成し、かつ外部からの設定によって毎サイクル機能変更が可能な制御回路を持つ第3の並べ替えセル1602と、演算エレメント群103の64ビット入力と第3の並べ替えセル1602の64ビット出力とを接続し、第3の並べ替えセル1602の128ビット入力とIO部とを接続する配線105とを備える。第3の並べ替えセル1602の配置については、図20に示すように、演算エレメント群103とIO部との間の一部の箇所に配置していてもよいし、全ての箇所に配置していてもよい。
【0074】
図21は、図20のプログラマブル・ロジック・デバイス1601に搭載する第3の並べ替えセル1602の内部構造を示した図である。第3の並べ替えセル1602は、8ビット×16並列=128ビットのデータ入力1701と、入力信号をクロック信号の立ち上がりエッジで取り込むフリップフロップ1702と、外部からの設定入力1703と、外部からの設定入力1703を受けてアドレスを生成するアドレスカウンタ1704と、セレクタを制御するための制御信号を読み出すメモリ1705と、図21に示すように入力128ビットのうち、連続する8ビットを1つのデータグループとして、16個のデータグループに分割した場合、16個のデータグループの中から隣接する奇数番目と偶数番目のデータグループを選択する2対1出力セレクタ1706と、セレクタ1706の出力信号をクロック信号の立ち上がりエッジで取り込むフリップフロップ1707と、64個のフリップフロップ1707の出力信号からなる64ビットのデータ出力1708とからなる。
【0075】
図21の構造を持つ第3の並べ替えセル1602は、外部からの設定入力1703を受けてアドレスを生成するアドレスカウンタ1704と、セレクタを制御するための制御信号を読み出すメモリ1705と、16個のデータグループの中から隣接する奇数番目と偶数番目のデータグループを選択する2対1出力セレクタ1706とを内蔵しているため、データのコピーや並べ替えといった演算を、1サイクルで実行することができる。これらの演算を、ALU、シフタ等の演算器から構成される演算エレメント102を用いて実現する場合を考えると、各々のデータ演算に対して少なくとも1つの演算エレメント102を使用し、なおかつ算術等の演算を行わないにもかかわらず、演算器を使用する必要がある。したがって、図21の構成を持つ第3の並べ替えセル1602を搭載するプログラマブル・ロジック・デバイス1601を用いた場合は、ターゲットとするアプリケーションの信号処理のうち、データの並べ替え演算等を、第3の並べ替えセル1602を用いて実現すれば、全ての信号処理を演算エレメント102を用いて実現する場合に比較して、効率良くアプリケーションの信号処理を実現することができる。
【0076】
図20、図21に記載のプログラマブル・ロジック・デバイス1601を用いて実現するアプリケーションの例として、GSM(Global System for Mobile Communications)方式携帯電話のデジタルベースバンド処理を想定する。
【0077】
図22及び図23に、GSM方式携帯電話のデジタルベースバンド処理の概略を示す。この信号処理では、1ビット単位での入力信号に対し、決まったビット数を一旦メモリ又はレジスタ等の記憶素子に格納し、これを所定の手順で並べ替えるインターリーブ処理を施した後、リードソロモン復号やパンクチュアリング等の信号処理を実施する。インターリーブ処理は上記のようにデータの並べ替えの演算を含んでおり、しかも1ビット単位での信号処理を含むため、演算エレメントを用いて信号処理を実施するのではなく、並べ替えセルを使用して実現した方が効率的である。更に、これらの信号処理は、デジタルベースバンド処理のうち初期の段階で実施する必要がある。
【0078】
インターリーブ処理に関して、その動作の詳細について図24及び図25を用いて説明する。図24及び図25は、図21に記載の第3の並べ替えセル1602を模式的に描いたものである。ここでは、入力信号を取り込む128ビットのフリップフロップ1702を64ビットずつ2つの組に分ける。
【0079】
デジタルベースバンド処理における入力データは、1ビット単位の入力データが所定の符号長を持ったデータとして順次レジスタに蓄えられる。これを最初は第3の並べ替えセル1602の1組目の64ビットのフリップフロップ1702に入力する。この1組目の64ビットのフリップフロップ1702内にデータが満杯に蓄えられた後は、デジタルベースバンド処理の入力データは順次2組目の64ビットのフリップフロップ1702に蓄えられる。
【0080】
これらのデータが蓄えられた後は、アドレスカウンタ1704が外部から所定の値に設定されることにより、下記の要領にてデータの並べ替え演算が実施される。
【0081】
1サイクル目の設定値では、アドレスカウンタ1704とメモリ1705との動作により、入力の8ビット×16並列入力と出力の8ビット×8並列出力との接続関係は図24に示す状態となる。1組目の64ビットのフリップフロップ1702の奇数番目の8ビットデータと、2組目の64ビットのフリップフロップ1702の奇数番目の8ビットデータとが出力の64ビットフリップフロップ1707に接続され、データが転送される。
【0082】
次のサイクルでは、外部の設定値が変更され、アドレスカウンタ1704とメモリ1705との動作により、入力の8ビット×16並列入力と出力の8ビット×8並列出力との接続関係は図25に示す状態となる。1組目の64ビットのフリップフロップ1702の偶数番目の8ビットデータと、2組目の64ビットのフリップフロップ1702の偶数番目の8ビットデータとが出力の64ビットフリップフロップ1707に接続され、データが転送される。このようにインターリーブ処理は第3の並べ替えセル1602を用いて2サイクルで実施することができる。
【0083】
ここで、図20、図21に記載のプログラマブル・ロジック・デバイス1601の第3の並べ替えセル1602を128/64ビットの入出力構成とした理由を説明する。インターリーブ処理では、8ビット8並列のデータが2組入力されるため、第3の並べ替えセル1602に必要な入力の構成としては、図21に示した8ビット×16並列入力=128ビットの構成となる。第3の並べ替えセル1602の入力ビット数が128ビットより少ない場合、8ビット×16並列データの並べ替え処理が実現できないので、第3の並べ替えセル1602を用いた並べ替え処理は不可能である。したがって、並べ替え処理は、演算エレメント又は配線ネットワーク(図示せず)を使用する必要がある。
【0084】
一方、第3の並べ替えセル1602の入力ビット数が128ビットより多い場合は、インターリーブ処理に必要なビット幅は8ビット×16画素分=128ビットであり、128ビットより多いビット数の処理は存在しないため、第3の並べ替えセル1602の入力のうち128ビット分しか使用せず、余剰分は遊びとなり、チップ面積の観点で無駄が生じる。
【0085】
以上の内容を考慮すると、図20、図21に記載のプログラマブル・ロジック・デバイス1601の第3の並べ替えセル1602は128ビットの入力と64ビットの出力とを持つ構成にすることが最適であると言うことができる。
【0086】
また、図20、図21に記載のプログラマブル・ロジック・デバイス1601の演算エレメント群103を、演算エレメント102を縦方向16個×横方向16個配置する構成とした理由を説明する。第3の並べ替えセル1602は上記の理由で128ビットの入力と64ビットの出力とを持つ構成としている。このうち64ビットの出力を演算エレメント群103の入力と接続する構成を考慮すると、1つの演算エレメント102の処理ビット数及び入出力ビット数は4ビットのため、64ビット/4ビット=16個の演算エレメントが必要である。このように、演算エレメント群103の一辺に16個の演算エレメント102を配置し、正方形状の配置とすることにより、演算エレメント群103の64ビット入力を全て第3の並べ替えセル1602の出力に接続できる構成とすることで、演算エレメント102の入力信号に無駄を生じさせない構成とすることができる。第3の並べ替えセル1602に接続する演算エレメント102の数が16個より少ないと、第3の並べ替えセル1602の出力に余剰のピンを生じるため、適さない。また、16個より多いと、第3の並べ替えセル1602に接続できない演算エレメント102が存在し、この演算エレメント102は動作させられず、無駄となる。したがって、演算エレメント群103の一辺の演算エレメント102の個数は16個が最適な数となる。
【0087】
ここで、インターリーブ処理を実現するに当たって、演算エレメント102ではなく、第3の並べ替えセル1602を用いた方が、より良い面積効率で実現できる理由を説明する。
【0088】
まず、インターリーブ処理に関して、並べ替えセルを配置しない従来のプログラマブル・ロジック・デバイスを用いた場合に必要な演算エレメントの数を、図26を使って説明する。インターリーブ処理では1組目の8入力データに対して、奇数側と偶数側との入力を選択して4組の出力を得るので、演算エレメントを2対1のマルチプレクサとして使用した場合、4つの演算エレメントを使用する。更に2組目の8入力データに対して、奇数側と偶数側との入力を選択して4組の出力を得るので、更に4つの演算エレメントを使用する。合計で8個の演算エレメントが必要となる。更に1つの演算エレメントで処理できるビット数は4ビットのため、8ビットのデータを処理するためには、2倍の演算エレメントが必要となる。よって、必要な演算エレメントの総数は8×2=16個となる。演算エレメント1つあたりに約160個ゲートを使用するため、全体でのゲート数は16×160=2560ゲートとなる。
【0089】
一方、第3の並べ替えセル1602を用いた場合に関しては、図27に示すとおり、第3の並べ替えセル1602を1つ使用することで実現できる。第3の並べ替えセル1602のゲート数は、3ゲートを有する2対1セレクタで実現した場合、8×8=64個必要となる。したがってゲート数は、3×64=192ゲートとなる。これを従来の演算エレメントで実現した場合と比較すると、約1/10以下のゲート数に削減していることが分かる。
【0090】
以上のように、本実施の形態によれば、GSM方式携帯電話のデジタルベースバンド処理を、第3の実施の形態のプログラマブル・ロジック・デバイス1601を用いて実現することによって、デジタルベースバンド処理内の算術演算を必要とする処理に関しては演算エレメント102を用いて実現し、インターリーブ処理のようなデータの並べ替え処理は第3の並べ替えセル1602を用いて実現することにより、GSM方式携帯電話のデジタルベースバンド処理全体を効率良く本発明のプログラマブル・ロジック・デバイス1601上で実現することができる。
【0091】
なお、上記各実施の形態において、4ビットの演算エレメント102に代えて8ビットの演算エレメントを利用することも可能である。
【産業上の利用可能性】
【0092】
本発明のプログラマブル・ロジック・デバイスは、外部からの設定によって毎サイクル機能変更が可能な制御回路を持ち、かつプログラムによって配線経路を変更することによって64ビット又は128ビットの入力信号を並べ替えて64ビット信号を出力する並べ替えセルを複数内蔵するため、プログラマブル・ロジック・デバイスで実行するアプリケーションのうち、データの並び替えやコピー等の演算を、演算エレメントを用いずに、小面積で実現することができる。これによって、アプリケーションを実行する際に必要となる演算エレメントの数を削減することができるという効果を有し、複数の演算エレメントと、演算エレメント間を相互に接続する複数の配線及びスイッチからなるプログラマブル・ロジック・デバイス回路として有用である。
【符号の説明】
【0093】
101 プログラマブル・ロジック・デバイス
102 演算エレメント
103 演算エレメント群
104 並べ替えセル(64ビット入出力)
105 配線
201 データ入力(64ビット)
202 フリップフロップ
203 設定入力
204 アドレスカウンタ
205 メモリ
206 64対1出力セレクタ
207 フリップフロップ
208 データ出力(64ビット)
301 平文入力(64ビット)
302 初期転置(並べ替え)
303 鍵入力(64ビット)
304 転置(64ビット−>56ビット)
305 転置(56ビット−>48ビット)
306 F関数
307 最終転置(並べ替え)
308 シフト
401 転置(32ビット−>48ビット)
402 Sbox
403 転置(32ビット−>32ビット)
501 平文入力(64ビット)
502 初期転置回路(並べ替え)
503 入力データセレクタ
504 転置回路(32ビット−>48ビット)
505 排他的論理和回路
506 Sbox回路
507 転置回路(32ビット−>32ビット)
508 排他的論理和回路
509 最終転置回路(並べ替え)
510 鍵入力(64ビット)
511 転置回路(64ビット−>56ビット)
512 入力データセレクタ
513 シフト回路
514 転置回路(56ビット−>48ビット)
1001 プログラマブル・ロジック・デバイス
1002 第2の並べ替えセル(64ビット入出力)
1101 データ入力(64ビット)
1102 フリップフロップ
1103 設定入力
1104 アドレスカウンタ
1105 メモリ
1106 8対1出力セレクタ
1107 フリップフロップ
1108 データ出力(64ビット)
1201 マクロブロック入力
1202 予測画像生成回路
1203 差分値生成回路
1204 直交変換回路
1205 量子化回路
1601 プログラマブル・ロジック・デバイス
1602 第3の並べ替えセル(128ビット入力・64ビット出力)
1701 データ入力(128ビット)
1702 フリップフロップ
1703 設定入力
1704 アドレスカウンタ
1705 メモリ
1706 2対1出力セレクタ
1707 フリップフロップ
1708 データ出力(64ビット)
2301 演算ブロック
2302 レジスタ
2303 配線
2304 スイッチボックス(SB)
2305 コンフィギュレーションメモリ

【特許請求の範囲】
【請求項1】
内部に少なくとも演算器と配線スイッチとを持つ演算エレメントと、プログラムによって配線経路を変更することによって64ビットの入力信号を任意の順番に並べ替えて64ビット信号を出力する第1の並べ替えセルを複数内蔵し、かつ前記第1の並べ替えセルは外部からの設定によって毎サイクル機能変更が可能な制御回路を持つことを特徴とするプログラマブル・ロジック・デバイス。
【請求項2】
請求項1に記載のプログラマブル・ロジック・デバイスにおいて、
Lビットの入力とLビットの出力とを持ち、演算ビット数がL(L=4又は8)ビットである演算エレメントを縦((8/L)×8)個かける横((8/L)×8)個の正方形状に並べ、((8/L)×8)×L=64ビットの入力と、同じく64ビットの出力とを持つ演算エレメント群を備え、
1つの前記演算エレメント群に対して1つの前記第1の並べ替えセルを前記演算エレメント群の4辺のうち少なくとも1つの辺に隣接して配置し、
前記演算エレメント群の64ビットの入力に前記第1の並べ替えセルの64ビット出力を接続したことを特徴とするプログラマブル・ロジック・デバイス。
【請求項3】
請求項1に記載のプログラマブル・ロジック・デバイスにおいて、
Lビットの入力とLビットの出力とを持ち、演算ビット数がL(L=4又は8)ビットである演算エレメントを縦((8/L)×8)個かける横((8/L)×8)個の正方形状に並べ、((8/L)×8)×L=64ビットの入力と、同じく64ビットの出力とを持つ演算エレメント群を備え、
1つの前記演算エレメント群に対して1つの前記第1の並べ替えセルを前記演算エレメント群の4辺のうち少なくとも1つの辺に隣接して配置し、
前記演算エレメント群の64ビットの出力に前記第1の並べ替えセルの64ビット入力を接続したことを特徴とするプログラマブル・ロジック・デバイス。
【請求項4】
内部に少なくとも演算器と配線スイッチとを持つ演算エレメントと、64ビットの入力信号のうち連続する8ビットの信号を1つのグループとして8個のグループに分け、プログラムによって配線経路を変更することによって8個の8ビット信号グループを任意の順番に並び替えて、64ビットの出力信号を生成する第2の並べ替えセルを複数内蔵し、かつ前記第2の並べ替えセルは外部からの設定によって毎サイクル機能変更が可能な制御回路を持つことを特徴とするプログラマブル・ロジック・デバイス。
【請求項5】
請求項4に記載のプログラマブル・ロジック・デバイスにおいて、
Lビットの入力とLビットの出力とを持ち、演算ビット数がL(L=4又は8)ビットである演算エレメントを縦((8/L)×8)個かける横((8/L)×8)個の正方形状に並べ、((8/L)×8)×L=64ビットの入力と、同じく64ビットの出力とを持つ演算エレメント群を備え、
1つの前記演算エレメント群に対して1つの前記第2の並べ替えセルを前記演算エレメント群の4辺のうち少なくとも1つの辺に隣接して配置し、
前記演算エレメント群の64ビットの入力に前記第2の並べ替えセルの64ビット出力を接続したことを特徴とするプログラマブル・ロジック・デバイス。
【請求項6】
請求項4に記載のプログラマブル・ロジック・デバイスにおいて、
Lビットの入力とLビットの出力とを持ち、演算ビット数がL(L=4又は8)ビットである演算エレメントを縦((8/L)×8)個かける横((8/L)×8)個の正方形状に並べ、((8/L)×8)×L=64ビットの入力と、同じく64ビットの出力とを持つ演算エレメント群を備え、
1つの前記演算エレメント群に対して1つの前記第2の並べ替えセルを前記演算エレメント群の4辺のうち少なくとも1つの辺に隣接して配置し、
前記演算エレメント群の64ビットの出力に前記第2の並べ替えセルの64ビット入力を接続したことを特徴とするプログラマブル・ロジック・デバイス。
【請求項7】
内部に少なくとも演算器と配線スイッチとを持つ演算エレメントと、128ビットの入力信号のうち連続する8ビットの信号を1つのグループとして16個のグループに分け、プログラムによって配線経路を変更することによって16個の8ビット信号グループのうち偶数番目又は奇数番目の8ビット信号グループを選択して出力64ビットの出力信号を生成する第3の並べ替えセルを複数内蔵し、かつ前記第3の並べ替えセルは外部からの設定によって毎サイクル機能変更が可能な制御回路を持つことを特徴とするプログラマブル・ロジック・デバイス。
【請求項8】
請求項7に記載のプログラマブル・ロジック・デバイスにおいて、
Lビットの入力とLビットの出力とを持ち、演算ビット数がL(L=4又は8)ビットである演算エレメントを縦((8/L)×8)個かける横((8/L)×8)個の正方形状に並べ、((8/L)×8)×L=64ビットの入力と、同じく64ビットの出力とを持つ演算エレメント群を備え、
1つの前記演算エレメント群に対して1つの前記第3の並べ替えセルを前記演算エレメント群の4辺のうち少なくとも1つの辺に隣接して配置し、
前記演算エレメント群の64ビットの入力に前記第3の並べ替えセルの64ビット出力を接続したことを特徴とするプログラマブル・ロジック・デバイス。
【請求項9】
請求項8に記載のプログラマブル・ロジック・デバイスにおいて、
前記第3の並べ替えセルの128ビットの入力信号は、当該プログラマブル・ロジック・デバイスの入力パッドに接続したことを特徴とするプログラマブル・ロジック・デバイス。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate