プログラム保護装置であって、所定の処理を実行する処理プログラムを記憶する第1の記憶部と、前記処理プログラムの改竄を検出する改竄検出プログラムを記憶する第2の記憶部と、前記改竄検出プログラムを実行する第1のプロセッサと、前記処理プログラムを実行する第2のプロセッサとを備え、前記プログラム保護装置は、少なくとも一部の機能が、フィールドプログラマブルゲートアレイによって実現され、前記フィールドプログラマブルゲートアレイは、少なくとも前記第1のプロセッサ、前記第2のプロセッサ、および前記第2の記憶部を含む、プログラム保護装置。前記第1のプロセッサは、前記改竄検出プログラムを実行することによって、前記処理プログラムの改竄が検出された場合に、前記第2のプロセッサに対して停止指示を送り、前記第2のプロセッサは、前記第1のプロセッサから停止指示を受けたときには、前記処理プログラムの実行を停止する、請求項1記載のプログラム保護装置。前記処理プログラムは、秘匿性が要求される第1のプログラムと、秘匿性が要求されない第2のプログラムとから構成され、前記第1の記憶部は、前記フィールドプログラマブルゲートアレイ内の内部メモリと、前記フィールドプログラマブルゲートアレイ外の外部メモリで構成され、前記第1のプログラムは、前記内部メモリに記憶され、前記第2のプログラムは、前記外部メモリに記憶される、請求項1記載のプログラム保護装置。前記第2の記憶部は、前記第1のプログラムの編集時に作成された前記第1のプログラムのメッセージダイジェストである第1のメッセージダイジェストを記憶し、前記第1のプロセッサは、前記改竄検出プログラムを実行することによって、前記第1のプログラムのメッセージダイジェストである第2のメッセージダイジェストを作成し、前記第2の記憶部内の前記第1のメッセージダイジェストと前記第2のメッセージダイジェストが一致するか否かによって、前記第1のプログラムの改竄を検出する、請求項3記載のプログラム保護装置。前記第2の記憶部は、前記第2のプログラムの編集時に作成された前記第2のプログラムのメッセージダイジェストである第1のメッセージダイジェストを記憶し、前記第1のプロセッサは、前記改竄検出プログラムを実行することによって、前記第2のプログラムのメッセージダイジェストである第2のメッセージダイジェストを作成し、前記第2の記憶部内の前記第1のメッセージダイジェストと前記第2のメッセージダイジェストが一致するか否かによって、前記第2のプログラムの改竄を検出する、請求項3記載のプログラム保護装置。前記プログラム保護装置は、通信装置内に設けられ、前記処理プログラムは、複数のアンテナを用いたアダプティブアレイ演算処理を実行するプログラムである、請求項3記載のプログラム保護装置。前記第1のプログラムは、前記複数のアンテナで受信した信号からウエイトベクトルを算出する処理と、前記複数のアンテナで受信した受信信号を前記ウエイトベクトルで重み付け加算する処理とを実行するプログラムであり、前記第2のプログラムは、送信信号を前記ウエイトベクトルで重み付けして、複数のアンテナへ供給する処理を実行するプログラムである、請求項6記載のプログラム保護装置。複数のアンテナと、前記複数のアンテナと接続された無線回路と、請求項6または7に記載のプログラム保護装置とを備える、通信装置。しかしながら、特許文献1の記載の装置では、プログラムを実行するプロセッサと、プログラムの改竄を検出するプロセッサは、同一である。したがって、プロセッサが、不正アクセス者によって改竄検出機能を無効にするように改竄されたプログラムを実行すれば、そのプロセッサは、もはやプログラムの改竄を検出することができなくなってしまう。そのため、特許文献1の装置では、プログラムを実行する前にプログラムの改竄を検出する必要があった。それゆえに、本発明の目的は、改竄された処理プログラムを実行中または実行後であっても、処理プログラムの改竄を検出することができるプログラム保護装置、および通信装置を提供することである。上記課題を解決するために、本発明は、プログラム保護装置であって、所定の処理を実行する処理プログラムを記憶する第1の記憶部と、処理プログラムの改竄を検出する改竄検出プログラムを記憶する第2の記憶部と、改竄検出プログラムを実行する第1のプロセッサと、処理プログラムを実行する第2のプロセッサとを備える。プログラム保護装置は、少なくとも一部の機能が、フィールドプログラマブルゲートアレイによって実現され、フィールドプログラマブルゲートアレイは、少なくとも第1のプロセッサ、第2のプロセッサ、および第2の記憶部を含む。本発明によれば、改竄された処理プログラムを実行中または実行後であっても、処理プログラムの改竄を検出することができるプログラム保護装置、および通信装置を提供することである。以下、本発明の実施形態について図面を参照して説明する。構成図1は、本発明の実施形態の無線基地局の構成を表わす図である。図1を参照して、この無線基地局80は、第1のアンテナ12と、第2のアンテナ14と、無線回路32と、CPUCentralProcessingUnit3と、FlashROM53と、外部RAM/PROMProgrammableReadOnlyMemory4と、FPGAFieldProgrammableGateArray:フィールドプログラマブルゲートアレイ61とを備える。この無線基地局80は、従来のアダプティブアレイ演算機能を有しない無線基地局に、アダプティブアレイ演算処理を追加したものである。アダプティブアレイ演算処理の一部については、製造業者にとってノウハウを伴うことから秘匿できることが望ましい。そのため、本実施の形態では、耐タンパ性を有するFPGA61にアダプティブアレイ演算処理を組み込むこととする。具体的には、FPGA61内のCPUが、FPGA内部のRAM/ROM内のプログラムを用いてアダプティブアレイ演算機能を実行する。また、FPGA61を追加することによって、FPGA61によるロジック処理も利用できるので、本実施の形態では、FPGA61によって従来の無線基地局の通信処理の一部も実行することとする。あるいは、アダプティブアレイ演算機能を有する無線基地局の製造販売の依頼を受けた製造業者は、秘匿を要するアダプティブアレイ演算機能をFPGA61に組み込み、その他の通信機能をFPGA61外で処理するようにしてもよい。このようにすることで、無線基地局の購入者にアダプティブアレイ演算機能のノウハウが流出するのを防止することができる。FPGA61は、ロジック部62と、CPU1と、CPU2と、内部RAM/PROM-A8と、内部RAM/PROM-B6と備える。無線回路32は、無線周波数帯にアップコンバートするアップコンバータ、アップコンバートされた信号を増幅する電力増幅回路、増幅された信号のうち所望帯域の信号成分のみを通過させて第1のアンテナ12および第2のアンテナ14へ出力するバンドパスフィルタなどを含む。また、無線回路32は、第1のアンテナ12および第2のアンテナ14から出力される信号のうち所望帯域の信号成分のみを通過させるバンドパスフィルタ、RF信号を増幅する低雑音増幅回路、RF信号をダウンコンバートするダウンコータなどを含む。無線回路32へ出力する送信信号の処理、無線回路32から出力される受信信号の処理は、CPU1、CPU2、CPU3、およびロジック部62で行なわれる。FlashROM53は、暗号化されたコンフィギュレーションデータを記憶する。図2は、本発明の実施形態のコンフィギュレーションデータの構成を表わす図である。コンフィギュレーションデータは、ロジックデータとCPUデータとが結合されたデータである。ロジックデータは、FPGA61のロジックデバイスの設計データである。CPUデータは、CPU1で利用されるCPU1データおよびCPU2で利用されるCPU2データからなる。CPU1データは、改竄検出プログラムと、MD1A、MD2Aとからなる。改竄検出プログラムは、処理プログラム1と処理プログラム2の改竄を検出する。MD1Aは、処理プログラム1を編集する際に作成された処理プログラム1のMDメッセージダイジェストである。MD2Aは、処理プログラム2を編集する際に作成された処理プログラム2のMDメッセージダイジェストである。ここで、メッセージダイジェストは、一方向ハッシュ関数を使った演算によって、プログラム原文から生成されるデータである。プログラムが改竄された場合に、改竄前後で、メッセージダイジェストが変化する。CPU2データは、処理プログラム1と処理プログラム2とからなる。CPU2で処理する処理プログラムを処理プログラム1と処理プログラム2に分けたのは、処理プログラムの容量が、FPGA61内の内部RAM/PROM-B6の容量よりも大きいので、処理プログラム全体をFPGA61内の内部RAM/PROM-B6に記憶できないからである。それゆえ、本実施の形態では、処理プログラムを秘匿性が要求される処理プログラム1と秘匿性が要求されない処理プログラム2に分割して、処理プログラム1を耐タンパ性が相対的に高いFPGA61内の内部RAM/PROM-B6に記憶し、処理プログラム2を耐タンパ性が相対的に低い外部RAM/PROM4に記憶する。処理プログラム1と処理プログラム2の内容については、後述する。外部RAM/PROM4は、CPU3で実行される通信制御プログラムを記憶する。外部RAM/PROM4は、さらに、コンフィギュレーションデータが復号されることによって得られる処理プログラム2を記憶する。処理プログラム2は、秘匿性が相対的に低いプログラムであるので、FPGA61の外の改竄および窃取の可能性が相対的に高いメモリであるFPGA61の外部のメモリに記憶される。処理プログラム2は、秘匿性が相対的に低いプログラムであるが、これが改竄され、改竄された処理プログラム2を実行したCPUは、改竄者の意図する不正な処理を実行し、処理プログラム1を外部に出力したりするおそれがある。これを防止するために、本実施の形態では、改竄プログラムと、処理プログラム1、2を実行するCPUを別個のものにする。FlashROM53から、FPGA61へは暗号化されたコンフィギュレーションデータが送られ、FPGA61側で暗号化されたコンフィギュレーションデータを復号する。したがって、コンフィギュレーションデータのFPGA61の伝送は、秘匿の危険性は比較的少ない。ロジック部62は、ロジックデータが展開されて、論理処理を実行する。内部RAM/PROM-A8は、コンフィギュレーションデータが復号されることによって得られる改竄検出プログラム、MD1A、およびMD2Aを記憶する。内部RAM/PROM-B6は、さらに、MD1B、およびMD2Bを記憶する。MD1Bは、改竄検出プログラムを実行することによって作成された処理プログラム1のMDメッセージダイジェストである。MD2Bは、改竄検出プログラムを実行することによって作成された処理プログラム2のMDメッセージダイジェストである。内部RAM/PROM-B6は、コンフィギュレーションデータが復号されることによって得られる処理プログラム1を記憶する。処理プログラム1は、秘匿性が要求されるプログラムであるので、FPGA61内の窃取の可能性が相対的に低いメモリに記憶される。CPU3は、外部RAM/PROM4に記憶された通信制御プログラムを実行する。CPU1は、内部RAM/PROM-A8に記憶された改竄検出プログラムを実行する。改竄検出プログラムはFPGA61内にあるので改竄される危険性が少ない。仮に、CPU1が、改竄された改竄検出プログラムを実行した場合には、制御が不正アクセス者に乗っ取られる危険性があるが、本実施の形態では、改竄検出プログラムを改竄されるのを防止することによって、そのような危険性を排除している。CPU2は、内部RAM/PROM-B6に記憶された処理プログラム1および外部RAM/PROM4に記憶された処理プログラム2を実行する。図3は、通信プログラム、ロジックデータ、処理プログラム1、および処理プログラム2によって実行される機能を表わすブロック図である。図3を参照して、CPU3が、外部RAM/PROM4に記憶された通信制御プログラムを実行し、FPGA61内のロジック部62がロジックデータによって設定された論理処理を実行することによって、CPCyclicPrefix除去部18と、FFT部20と、イコライザ26と、復調部28と、制御部30と、変調部40と、IFFT部36と、CP付加部34の機能を実行する。CP除去部18は、無線回路32から出力される信号からCPを除去する。FFT部20は、CP除去部18から出力される時間領域の信号をFFTによって、周波数領域の信号に変換して、複数のサブキャリアに復調する。イコライザ26は、伝送路の特性によって変化を受けた受信信号の波形の復元や変化の最小化を目的に、受信信号の周波数特性を調整する。復調部28は、受信信号を復調する。変調部40は、送信信号を変調する。IFFT部36は、複数のサブキャリア信号周波数領域の信号をIFFTによって、時間領域の信号OFDMAOrthogonalFrequencyDivisionMultipleAccessシンボルに変換する。CP付加部34は、OFDMAシンボルの後尾部分と同じ信号をCPとしてOFDMAシンボルの先頭に付加する。制御部30は、上述の各機能部の実行を制御する。CPU2は、処理プログラム1を実行することによって、ウエイト算出部24および受信重み付け部22として機能する。また、CPU2は、処理プログラム2を実行することによって、送信重み付け部38として機能する。ウエイト算出部24は、第1のアンテナ12および第2のアンテナ14で受信し、無線回路32で処理されたトレーニング信号から伝送路を推定して、ウエイトベクトルを算出する。受信重み付け部22は、第1のアンテナ12および第2のアンテナ14で受信し無線回路32で処理された受信信号をウエイト算出部24で算出されたウエイトベクトルで重み付け加算する。送信重み付け部38は、外部から供給された送信信号をウエイト算出部24で算出されたウエイトベクトルで重み付けして、第1のアンテナ12および第2のアンテナ14へ供給する。メモリマップの構成図4は、本発明の実施形態のメモリマップの構成を表わす図である。図4を参照して、CPU1は、内部RAM/PROM-A8に格納された改竄検出プログラム、実行停止プログラム、MD1A、MD2A、MD1B、MD2Bにアクセスする。CPU2は、外部RAM/PROM4に記憶された処理プログラム2と内部RAM/PROM-B6に記憶された処理プログラム1にアクセスする。動作図5は、処理プログラムの編集時のMD1A、MD1Bの作成手順を表わすフローチャートである。まず、編集装置のCPUは、処理プログラム1をRAMへロードするステップS101。次に、編集装置のCPUは、ロードした処理プログラム1のMDMD1Aとするを作成するステップS102。次に、編集装置のCPUは、作成した処理プログラム1のMDであるMD1Aをコンフィギュレーションデータの一部として組込むステップS103。次に、編集装置のCPUは、処理プログラム2をRAMへロードするステップS104。次に、編集装置のCPUは、ロードした処理プログラム2のMDMD2Aとするを作成するステップS105。次に、編集装置のCPUは、作成した処理プログラム2のMDであるMD2Aをコンフィギュレーションデータとの一部として組込むステップS106。CPU1の動作図6は、CPU1の改竄検出プログラムの実行による改善検出処理手順を表わすフローチャートである。まず、パワーオンリセットがあったときステップS201でYES、システムがリセットされたときステップS202でYES、または実行タイミング時にステップS203でYES、CPU1は、処理プログラム1のMDMD1Bとするを作成して、内部RAM/PROM-A8に記憶するステップS204。CPU1は、内部RAM/PROM-A8に記憶されたMD1AとMD1Bとが1ビットでも異なる場合にはステップS205でNO、CPU2に停止を指示するステップS208。CPU1は、改竄検出プログラムを実行することによって、MD1AとMD1Bとが同一の場合にはステップS205でYES、さらに、処理プログラム2のMDMD2Bとするを作成して、内部RAM/PROM-A8に記憶するステップS206。CPU1は、内部RAM/PROM-A8に記憶されたMD2AとMD2Bとが1ビットでも異なる場合にはステップS207でNO、CPU2に停止を指示するステップS208。CPU2の動作図7は、CPU2の処理手順を表わすフローチャートである。図7を参照して、CPU2は、CPU1から停止指示がない場合にはステップS301でNO、処理プログラム1と処理プログラム2を実行するステップS302。CPU2は、CPU1から停止指示があった場合にはステップS301でYES、処理プログラム1と処理プログラム2の実行を停止するステップS303。以上のように、本実施の形態によれば、改竄検出プログラムと、処理プログラムとを別個のCPUで実行することによって、改竄された処理プログラムを実行中または実行後であっても、処理プログラムの改竄を検出することができる。変形例本発明の実施形態では、CPU3が、外部RAM/PROM4に記憶された通信制御プログラムを実行し、FPGA61内のロジック部62がロジックデータによって設定された論理処理を実行することによって、従来の無線基地局の機能CP除去部と、FFT部と、イコライザと、復調部と、制御部と、変調部と、IFFT部と、CP付加部を実行することとしたが、これに限定するものではない。すなわち、FPGA61にロジックデータによる論理処理を実行させないこととし、CPU3が、外部RAM/PROM4に記憶された通信制御プログラムを実行することによって、上述の従来の無線基地局の機能を実行することとしてもよい。このようにした場合には、FPGA61は、アダプティブアレイ演算処理とプログラムの改竄検出処理とを専ら担当することになるので、従来の無線基地局の装置にFPGA61およびFlashROM53を取り付けるだけで、耐タンパ性を有するアダプティブアレイ演算処理を追加することができる。また、この無線基地局の利用者が、アダプティブアレイ演算機能を利用したくない場合には、無線基地局の装置からFPGA61およびFlashROM53を取り外せばよい。今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。