(57)【要約】【課題】ラインバッファまたはシフトレジスタを備えるフィルタ回路のハードウェア記述を高位合成するために高位合成用のプログラム記述を生成できるようにすることを目的とする。【解決手段】フィルタ係数文抽出部１１１は、アルゴリズム記述１０１からフィルタ係数名１０２を検索し、フィルタ係数名１０２を含んだ演算文をフィルタ係数文としてアルゴリズム記述１０１から抽出する。データサイズ定数情報１８５は、フィルタ係数文をループ内に含んでいる上位のループ命令文をアルゴリズム記述１０１から抽出し、上位のループ命令文からデータサイズ定数名を抽出する。プログラム記述生成部１２０は、データサイズ定数名を用いてラインバッファまたはシフトレジスタの定義文を生成し、生成した定義文を含んだプログラム記述１０９を高位合成用のプログラム記述として生成する。【選択図】図２
2014186446.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ要素を含んだ配列データのデータ要素数がループ回数の条件値として用いられるループ命令文を含むと共に、前記ループ命令文のループ内に前記配列データのデータ要素にフィルタ係数を掛けるフィルタ演算文を含んだプログラム記述をアルゴリズム記述として記憶するアルゴリズム記述記憶部と、
前記フィルタ係数を表す係数識別子を記憶する係数識別子記憶部と、
前記アルゴリズム記述から前記係数識別子を検索し、前記係数識別子を含んだ演算文を前記フィルタ演算文として前記アルゴリズム記述から抽出するフィルタ演算文抽出部と、
前記フィルタ演算文抽出部によって抽出された前記フィルタ演算文をループ内に含んでいる前記ループ命令文を、前記アルゴリズム記述から抽出するループ命令文抽出部と、
前記ループ命令文抽出部によって抽出された前記ループ命令文から、前記データ要素数を表す要素数識別子を抽出する要素数識別子抽出部と、
前記要素数識別子抽出部によって抽出された前記要素数識別子を用いて前記データ要素数のデータ要素を記憶するハードウェアを定義するハードウェア定義文を生成し、生成したハードウェア定義文を含んだプログラム記述を高位合成用記述として生成する高位合成用記述生成部と
を備えることを特徴とする高位合成用記述生成装置。
【請求項２】
前記アルゴリズム記述は、前記ループ命令文として上位のループ命令文を含み、前記上位のループ命令文のループ内にループ回数の条件値としてフィルタタップ数が用いられる下位のループ命令文を含み、前記下位のループ命令文のループ内に前記フィルタ演算文を含み、
前記高位合成用記述生成装置は、
前記下位のループ命令文から、前記フィルタタップ数を表すタップ数識別子を抽出するタップ数識別子抽出部を備え、
前記高位合成用記述生成部は、前記タップ数識別子抽出部によって抽出された前記タップ数識別子を用いて、前記フィルタタップ数の前記ハードウェアを定義するための定義文を前記ハードウェア定義文として生成する
ことを特徴とする請求項１記載の高位合成用記述生成装置。
【請求項３】
前記ハードウェア定義文はラインバッファとシフトレジスタとのいずれかのハードウェアを定義するための定義文であることを特徴とする請求項１または請求項２記載の高位合成用記述生成装置。
【請求項４】
アルゴリズム記述記憶部と、係数識別子記憶部と、フィルタ演算文抽出部と、ループ命令文抽出部と、要素数識別子抽出部と、高位合成用記述生成部とを備える高位合成用記述生成装置を用いる高位合成用記述生成方法であって、
前記アルゴリズム記述記憶部は、複数のデータ要素を含んだ配列データのデータ要素数がループ回数の条件値として用いられるループ命令文を含むと共に、前記ループ命令文のループ内に前記配列データのデータ要素にフィルタ係数を掛けるフィルタ演算文を含んだプログラム記述をアルゴリズム記述として記憶する記憶部であり、
前記係数識別子記憶部は、前記フィルタ係数を表す係数識別子を記憶する記憶部であり、
前記フィルタ演算文抽出部が、前記アルゴリズム記述から前記係数識別子を検索し、前記係数識別子を含んだ演算文を前記フィルタ演算文として前記アルゴリズム記述から抽出し、
前記ループ命令文抽出部が、前記フィルタ演算文抽出部によって抽出された前記フィルタ演算文をループ内に含んでいる前記ループ命令文を、前記アルゴリズム記述から抽出し、
前記要素数識別子抽出部が、前記ループ命令文抽出部によって抽出された前記ループ命令文から、前記データ要素数を表す要素数識別子を抽出し、
前記高位合成用記述生成部が、前記要素数識別子抽出部によって抽出された前記要素数識別子を用いて前記データ要素数のデータ要素を記憶するハードウェアを定義するハードウェア定義文を生成し、生成したハードウェア定義文を含んだプログラム記述を高位合成用記述として生成する
ことを特徴とする高位合成用記述生成方法。
【請求項５】
請求項１から請求項３いずれかに記載の高位合成用記述生成装置としてコンピュータを機能させるための高位合成用記述生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高位合成用のプログラム記述を生成するための高位合成用記述生成装置、高位合成用記述生成方法および高位合成用記述生成プログラムに関するものである。
【背景技術】
【０００２】
従来、Ｖｅｒｉｌｏｇ−ＨＤＬまたはＶＨＤＬといったハードウェア記述言語を用いて集積回路の設計が行われてきた。
しかし、近年の集積回路の大規模化に伴い、ハードウェア記述言語を用いた設計に多大な時間を要することが問題となっている。
そこで、ハードウェア記述言語よりも抽象度が高いＣ言語、Ｃ＋＋言語またはＳｙｓｔｅｍＣ言語などの高級言語を用いて設計を行い、高位合成ツールを用いて自動的に高級言語からハードウェア記述言語を生成する高位設計技術が実用化されてきている。これにより、設計時間の短縮を図ることができる。
【０００３】
上記のように、集積回路の設計では、まず、演算および制御に関してＣ言語またはＣ＋＋言語などの高級言語で記述したアルゴリズム（以下、アルゴリズム記述という）を用意する。
アルゴリズム記述は、既存のものを使用する場合が多く、ハードウェア構成を意識せずに記述されている場合が多い。
このため、アルゴリズム記述をそのまま高位合成ツールに入力すると、目的のハードウェア構成に対応したハードウェア記述を得られないことがある。
【０００４】
図１４は、フィルタ処理部１０のアルゴリズム記述の一例を示す図である。
図１５は、フィルタ処理回路２０のハードウェア構成の一例を示す図である。
従来技術の課題について、図１４および図１５に基づいて説明する。
【０００５】
図１４において、画像処理で用いられるフィルタ処理部１０は、画像データである入力フレーム１４を記憶する入力メモリ１１と、入力フレーム１４をフィルタ処理するフィルタ演算部１２と、フィルタ処理された入力フレーム１４（以下、出力フレーム１５という）を記憶する出力メモリ１３とを備える。
フィルタ演算部１２の演算手順を表すアルゴリズム記述は、入力フレーム１４から所定のフィルタ形状に合わせて必要な画素データを取得し、取得した画素データに対して所定のフィルタ演算を行うように記述されることが多い。
例えば、垂直方向（ｖ方向）のフィルタ処理を行うためのアルゴリズム記述では、入力フレーム１４を構成する二次元配列［ｉ＿ｖ］［ｉ＿ｈ］の画素データから同じ垂直ライン上の画素データを垂直方向（図示した入力フレーム１４内の矢印が示す方向）に連続して取得するように記述される。
また、二次元のフィルタ処理を行うためのアルゴリズム記述（図示したアルゴリズム記述）では、入力フレーム１４の二次元配列［ｉ＿ｖ］［ｉ＿ｈ］の画素データから矩形領域（図示した入力フレーム１４内の網掛け領域）の画素データを取得するように記述される。
【０００６】
図１５において、実際のハードウェアであるフィルタ処理回路２０のフィルタ演算部２２は、入力フレーム１４の二次元配列［ｉ＿ｖ］［ｉ＿ｈ］の画素データを入力部２１からラスター順に１画素ずつ入力し、画素データを１画素ずつ処理しながら出力部２３に出力する場合が多い。例えば、入力フレーム１４の網掛け領域を構成する９つの画素データ［ｖ］［ｈ］（ｖは１から３、ｈは３から５）が１画素ずつ入力され、１画素ずつフィルタ係数ｃｏｅｆ［ｖ］［ｈ］が乗算される。
また、ラスター順に１画素ずつ入力しながら処理する場合、同じ垂直ライン上の画素データは、水平方向（ｈ方向）の複数のライン（水平ライン）にまたがって取得されることになる。
従って、垂直方向のフィルタ処理または二次元のフィルタ処理のように画素データを複数の水平ラインにまたがって取得する必要がある場合、フィルタ処理回路２０は、水平ラインの画素数分の画素データを記憶できるラインバッファｌｉｎｅ＿ｂｕｆを垂直タップ数（図では３つ）だけ備え、画素データを蓄積する必要がある。
【０００７】
ここで、図１４のアルゴリズム記述をそのままハードウェア記述に変換した場合、入力フレーム１４の全体を記憶する入力メモリ１１が必要なハードウェアとして定義されてしまい、図１５に示すようなハードウェア（複数のラインバッファｌｉｎｅ＿ｂｕｆ）が必要なハードウェアとして定義されない。
つまり、アルゴリズム記述からハードウェア記述を得るための高位合成ツールにおいて、高位合成ツールの入力となるアルゴリズム記述は、ハードウェアの処理単位に合わせた記述である必要がある。
【０００８】
特許文献１は、アルゴリズム記述を高位合成することが可能な記述に自動変換するプログラムおよび方法に関するものである。
特許文献１には、アルゴリズム記述を、データ入力処理に対応するデータ入力状態の記述、演算処理に対応する演算状態の記述、およびデータ出力処理に対応する結果出力状態の記述に分割する機能Ｃ変換ステップが記述されている。
【０００９】
特許文献１は、アルゴリズム記述を処理単位に分割して記述し直す機能Ｃ変換ステップを有しているものの、ハードウェアの動作にあわせてラインバッファを挿入する方法については開示も示唆もしていない。
そのため、特許文献１の技術を用いても、図１４のフィルタ処理部１０のアルゴリズム記述を図１５のフィルタ処理回路２０を定義するハードウェア記述に変換することはできない。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６−１８５４６１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明は、例えば、ラインバッファ（ハードウェアの一例）を備えるフィルタ回路のハードウェア記述を高位合成するために高位合成用のプログラム記述を生成できるようにすることを目的とする。
【課題を解決するための手段】
【００１２】
本発明の高位合成用記述生成装置は、
複数のデータ要素を含んだ配列データのデータ要素数がループ回数の条件値として用いられるループ命令文を含むと共に、前記ループ命令文のループ内に前記配列データのデータ要素にフィルタ係数を掛けるフィルタ演算文を含んだプログラム記述をアルゴリズム記述として記憶するアルゴリズム記述記憶部と、
前記フィルタ係数を表す係数識別子を記憶する係数識別子記憶部と、
前記アルゴリズム記述から前記係数識別子を検索し、前記係数識別子を含んだ演算文を前記フィルタ演算文として前記アルゴリズム記述から抽出するフィルタ演算文抽出部と、
前記フィルタ演算文抽出部によって抽出された前記フィルタ演算文をループ内に含んでいる前記ループ命令文を、前記アルゴリズム記述から抽出するループ命令文抽出部と、
前記ループ命令文抽出部によって抽出された前記ループ命令文から、前記データ要素数を表す要素数識別子を抽出する要素数識別子抽出部と、
前記要素数識別子抽出部によって抽出された前記要素数識別子を用いて前記データ要素数のデータ要素を記憶するハードウェアを定義するハードウェア定義文を生成し、生成したハードウェア定義文を含んだプログラム記述を高位合成用記述として生成する高位合成用記述生成部とを備える。
【発明の効果】
【００１３】
本発明によれば、例えば、ラインバッファ（ハードウェアの一例）を備えるフィルタ回路のハードウェア記述を高位合成するために高位合成用のプログラム記述を生成することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１におけるプログラム変換装置１００の構成図である。
【図２】実施の形態１におけるフィルタ情報生成部１１０、プログラム記述生成部１２０およびフィルタ情報１８０の構成を示す図である。
【図３】実施の形態１におけるプログラム変換装置１００のプログラム変換処理を示すフローチャートである。
【図４】実施の形態１におけるアルゴリズム記述１０１の一例を示す図である。
【図５】実施の形態１におけるプログラム記述生成処理（Ｓ２００）を示すフローチャートである。
【図６】実施の形態１におけるプログラム記述１０９の雛形の一例を示す図である。
【図７】実施の形態１における単位処理１０１ｈを設定したフィルタ処理関数ｆｉｌｔｅｒを示す図である。
【図８】実施の形態１における単位処理１０１ｈの変数名を変更したフィルタ処理関数ｆｉｌｔｅｒを示す図である。
【図９】実施の形態１におけるプログラム記述１０９の一例を示す図である。
【図１０】実施の形態１におけるプログラム変換装置１００のハードウェア資源の一例を示す図である。
【図１１】実施の形態２におけるプログラム変換装置１００の構成図である。
【図１２】実施の形態２におけるアルゴリズム記述１０１の一例を示す図である。
【図１３】実施の形態２におけるプログラム記述１０９の一例を示す図である。
【図１４】フィルタ処理部１０のアルゴリズム記述の一例を示す図である。
【図１５】フィルタ処理回路２０のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１５】
実施の形態１．
ラインバッファ（ハードウェアの一例）を備えるフィルタ回路のハードウェア記述を高位合成するため、高位合成用のプログラム記述を生成する形態について説明する。
【００１６】
図１は、実施の形態１におけるプログラム変換装置１００の構成図である。
実施の形態１におけるプログラム変換装置１００の構成について、図１に基づいて説明する。
【００１７】
プログラム変換装置１００（高位合成用記述生成装置の一例）は、Ｃ言語またはＣ＋＋言語などのプログラミング言語（高級言語ともいう）で記述されたプログラム（プログラムソースまたはプログラム記述ともいう）を、高位合成が可能なプログラムに変換するコンピュータである。
以下、プログラミング言語で記述されたプログラムを「アルゴリズム記述１０１」といい、高位合成が可能なプログラムを「プログラム記述１０９」という。
【００１８】
高位合成とは、アルゴリズム記述１０１からハードウェア記述（Ｖｅｒｉｌｏｇ−ＨＤＬまたはＶＨＤＬなどのハードウェア記述言語を用いた記述）を生成する技術である。
高位合成は、高位合成装置、高位合成ツールまたは高位合成機能などと呼ばれる従来技術を用いて実行される。
【００１９】
具体的に、プログラム変換装置１００は、二次元データ（例えば、画像データ）を記憶するためのデータバッファ変数を含んだアルゴリズム記述１０１に基づいて、複数の一次元データを記憶するための複数のラインバッファ変数を含んだプログラム記述１０９を生成する。
【００２０】
プログラム変換装置１００は、フィルタ情報生成部１１０と、プログラム記述生成部１２０（高位合成用記述生成部の一例）とを備える。
また、プログラム変換装置１００は、アルゴリズム記述１０１、フィルタ係数名１０２（係数識別子の一例）、フィルタ情報１８０およびプログラム記述１０９（高位合成用記述の一例）などのデータを記憶するための装置記憶部（図示省略）を備える。
【００２１】
フィルタ情報生成部１１０は、アルゴリズム記述１０１とフィルタ係数名１０２とに基づいてフィルタ情報１８０を生成する構成である。
フィルタ係数名１０２は、二次元データを構成する複数の要素データ（例えば、画素データ）に掛けるフィルタ係数用の変数名（識別子）である。
プログラム記述生成部１２０は、フィルタ情報１８０に基づいてプログラム記述１０９を生成する構成である。
【００２２】
図２は、実施の形態１におけるフィルタ情報生成部１１０、プログラム記述生成部１２０およびフィルタ情報１８０の構成を示す図である。
実施の形態１におけるフィルタ情報生成部１１０、プログラム記述生成部１２０およびフィルタ情報１８０の構成について、図２に基づいて説明する。
【００２３】
フィルタ情報生成部１１０は、フィルタ係数文抽出部１１１（フィルタ演算文抽出部の一例）と、フィルタ係数文分析部１１２と、インデックス関連変数抽出部１１３と、フィルタタップ定数抽出部１１４（タップ数識別子抽出部の一例）と、データサイズ定数抽出部１１５（ループ命令文抽出部、要素数識別子抽出部の一例）と、単位処理抽出部１１６と、出力変数抽出部１１７とを備える。
【００２４】
フィルタ係数文抽出部１１１は、アルゴリズム記述１０１からフィルタ係数名１０２を検索し、フィルタ係数名１０２を含んだ命令文（以下、フィルタ係数文という）をアルゴリズム記述１０１から抽出する。
そして、フィルタ係数文抽出部１１１は、フィルタ係数文に関するフィルタ係数文情報１８１を生成する。例えば、フィルタ係数文情報１８１は、フィルタ係数文およびフィルタ係数文の行番号などを示す。行番号は位置を示す情報の一例である（以下同様）。
【００２５】
フィルタ係数文分析部１１２は、フィルタ係数文情報１８１に示されるフィルタ係数文からフィルタ係数が掛けられている要素データを表す二次元配列の要素変数を抽出する。
フィルタ係数文分析部１１２は、二次元配列の要素変数から二次元配列のインデックスとして用いられているインデックス変数を抽出する。
フィルタ係数文分析部１１２は、フィルタ係数文からフィルタ係数を掛けた要素データが加算される累積変数を抽出する。
そして、フィルタ係数文分析部１１２は、要素変数とインデックス変数と累積変数とに関する係数文分析情報１８２を生成する。例えば、係数文分析情報１８２は、要素変数、インデックス変数および累積変数などを示す。
【００２６】
インデックス関連変数抽出部１１３は、係数文分析情報１８２に示されるインデックス変数をアルゴリズム記述１０１から検索し、インデックス変数に値を設定するインデックス設定文をアルゴリズム記述１０１から抽出し、インデックス設定文で用いられているインデックス関連変数を抽出する。設定文は値を代入する代入文ともいう（以下同様）。
そして、インデックス関連変数抽出部１１３は、インデックス関連変数に関するインデックス関連変数情報１８３を生成する。例えば、インデックス関連変数情報１８３は、インデックス関連変数およびインデックス設定文の行番号などを示す。
【００２７】
フィルタタップ定数抽出部１１４は、インデックス関連変数情報１８３に示されるインデックス関連変数をアルゴリズム記述１０１から検索し、ループ回数をカウントするための変数としてインデックス関連変数が用いられているループ命令文をアルゴリズム記述１０１から抽出し、ループ命令文からループ回数の条件を指定する定数名（識別子）を抽出する。以下、フィルタタップ定数抽出部１１４によって抽出される定数名を「フィルタタップ定数」という。
そして、フィルタタップ定数抽出部１１４は、フィルタタップ定数に関するフィルタタップ定数情報１８４を生成する。例えば、フィルタタップ定数情報１８４は、フィルタタップ定数およびループ命令文の行番号などを示す。
【００２８】
データサイズ定数抽出部１１５は、フィルタタップ定数情報１８４に示される行番号で特定されるループ命令文をループ内に含んだ上位のループ命令文をアルゴリズム記述１０１から抽出し、上位のループ命令文からループ回数の条件を指定する定数名（識別子）を抽出する。以下、データサイズ定数抽出部１１５によって抽出される定数名を「データサイズ定数」という。
そして、データサイズ定数抽出部１１５は、データサイズ定数に関するデータサイズ定数情報１８５を生成する。例えば、データサイズ定数情報１８５は、データサイズ定数および上位のループ命令文の行番号などを示す。
【００２９】
単位処理抽出部１１６は、データサイズ定数情報１８５に示される行番号で特定される上位のループ命令文のループ範囲（以下、単位処理という）をアルゴリズム記述１０１から抽出する。
そして、単位処理抽出部１１６は、単位処理に関する単位処理情報１８６を生成する。例えば、単位処理情報１８６は、単位処理および単位処理の行番号（先頭行の行番号と最終行の行番号）などを示す。
【００３０】
出力変数抽出部１１７は、単位処理情報１８６に示される行番号で特定される単位処理から、係数文分析情報１８２に示される累積変数の代入文を抽出し、抽出した代入文によって値が代入される出力変数を抽出する。
そして、出力変数抽出部１１７は、出力変数に関する出力変数情報１８７を生成する。例えば、出力変数情報１８７は、出力変数および出力変数の代入文（以下、出力変数設定文という）を特定する行番号などを示す。
【００３１】
プログラム記述生成部１２０（高位合成用記述生成部の一例）は、フィルタ処理関数生成部１２１と、ラインバッファ定義部１２２とを備える。
【００３２】
フィルタ処理関数生成部１２１は、フィルタ情報１８０に含まれる情報に基づいて、プログラム記述１０９に含める関数（以下、フィルタ処理関数という）を生成する。
ラインバッファ定義部１２２は、フィルタ情報１８０に含まれる情報に基づいて、プログラム記述１０９に含めるラインバッファの定義文を生成する。
【００３３】
図３は、実施の形態１におけるプログラム変換装置１００のプログラム変換処理を示すフローチャートである。
実施の形態１におけるプログラム変換装置１００の処理方法について、図３に基づいて説明する。
【００３４】
Ｓ１１０において、フィルタ情報生成部１１０は、アルゴリズム記述１０１とフィルタ係数名１０２とを入力する。
フィルタ係数文抽出部１１１は、アルゴリズム記述１０１からフィルタ係数名１０２を検索し、フィルタ係数名１０２を含んだ命令文（フィルタ係数文）をアルゴリズム記述１０１から抽出する。
そして、フィルタ係数文抽出部１１１は、フィルタ係数文に関するフィルタ係数文情報１８１を生成する。例えば、フィルタ係数文情報１８１は、フィルタ係数文およびフィルタ係数文の行番号などを示す。
Ｓ１１０の後、処理はＳ１２０に進む。
【００３５】
図４は、実施の形態１におけるアルゴリズム記述１０１の一例を示す図である。
フィルタ係数名１０２が「ｃｏｅｆ」である場合、フィルタ係数文抽出部１１１は、フィルタ係数名「ｃｏｅｆ」を含んだフィルタ係数文１０１ａをアルゴリズム記述１０１から抽出し、フィルタ係数文１０１ａに関するフィルタ係数文情報１８１を生成する（図３のＳ１１０参照）。
図３に戻り、Ｓ１２０から説明を続ける。
【００３６】
Ｓ１２０において、フィルタ係数文分析部１１２は、フィルタ係数文情報１８１に示されるフィルタ係数文からフィルタ係数が掛けられている要素データを表す二次元配列の要素変数を抽出する。
例えば、フィルタ係数文分析部１１２は、図４に示すフィルタ係数文１０１ａから二次元配列の要素変数ｆｍｅｍ＿ｉｎ［ｉ＿ｖ］［ｉ＿ｈ］を抽出する。
【００３７】
フィルタ係数文分析部１１２は、二次元配列の要素変数から二次元配列のインデックスとして用いられているインデックス変数を抽出する。
例えば、フィルタ係数文分析部１１２は、図４に示す二次元配列の要素変数ｆｍｅｍ＿ｉｎ［ｉ＿ｖ］［ｉ＿ｈ］から二次元配列のインデックス変数「ｉ＿ｖ」「ｉ＿ｈ」を抽出する。
二次元データが画像データである場合、通常、二次元配列の一つ目のインデックス変数ｉ＿ｖは垂直方向の位置を指定し、二次元配列の二つ目のインデックス変数ｉ＿ｈは水平方向の位置を指定する。
【００３８】
フィルタ係数文分析部１１２は、フィルタ係数文からフィルタ係数を掛けた要素データが加算される累積変数を抽出する。
例えば、フィルタ係数文分析部１１２は、図４に示すフィルタ係数文１０１ａの左辺の変数ｓｕｍを累積変数として抽出する。
【００３９】
そして、フィルタ係数文分析部１１２は、要素変数とインデックス変数と累積変数とに関する係数文分析情報１８２を生成する。例えば、係数文分析情報１８２は、要素変数、インデックス変数および累積変数などを示す。
Ｓ１２０の後、処理はＳ１３０に進む。
【００４０】
Ｓ１３０において、インデックス関連変数抽出部１１３は、係数文分析情報１８２に示されるインデックス変数をアルゴリズム記述１０１から検索し、インデックス変数に値を設定するインデックス設定文をアルゴリズム記述１０１から抽出する。
例えば、インデックス関連変数抽出部１１３は、図４に示すアルゴリズム記述１０１をフィルタ係数文１０１ａからさかのぼって前方検索し、第一のインデックス変数ｉ＿ｖを左辺に有する代入文を第一のインデックス設定文１０１ｂとして抽出する。
同様に、インデックス関連変数抽出部１１３は、第二のインデックス変数ｉ＿ｈを左辺に有する代入文を第二のインデックス設定文１０１ｃとして抽出してもよい。
【００４１】
インデックス関連変数抽出部１１３は、インデックス設定文で用いられているインデックス関連変数を抽出する。
例えば、インデックス関連変数抽出部１１３は、図４に示す第一のインデックス設定文１０１ｂに含まれる変数「ｖ」「ｖ＿ｆ」（インデックス変数ｉ＿ｖを除く）を第一のインデックス関連変数として抽出する。
同様に、インデックス関連変数抽出部１１３は、第二のインデックス設定文１０１ｃに含まれる変数「ｈ」「ｈ＿ｆ」（インデックス変数ｉ＿ｈを除く）を第二のインデックス関連変数として抽出してもよい。
【００４２】
そして、インデックス関連変数抽出部１１３は、インデックス関連変数に関するインデックス関連変数情報１８３を生成する。例えば、インデックス関連変数情報１８３は、インデックス関連変数およびインデックス設定文の行番号などを示す。
Ｓ１３０の後、処理はＳ１４０に進む。
【００４３】
Ｓ１４０において、フィルタタップ定数抽出部１１４は、インデックス関連変数情報１８３に示されるインデックス関連変数をアルゴリズム記述１０１から検索し、ループ回数をカウントするための変数としてインデックス関連変数が用いられているループ命令文をアルゴリズム記述１０１から抽出する。
例えば、フィルタタップ定数抽出部１１４は、図４に示すアルゴリズム記述１０１を第一のインデックス設定文１０１ｂからさかのぼって前方検索し、第一のインデックス関連変数ｖ＿ｆが用いられている第一のループ命令文１０１ｄを抽出する。
同様に、フィルタタップ定数抽出部１１４は、第二のインデックス関連変数ｈ＿ｆが用いられている第二のループ命令文１０１ｅを抽出してもよい。
【００４４】
フィルタタップ定数抽出部１１４は、ループ命令文からループ回数の条件を指定するフィルタタップ定数を抽出する。
例えば、フィルタタップ定数抽出部１１４は、図４に示す第一のループ命令文１０１ｄからループ回数の上限値を示す定数ＮＵＭ＿ＴＡＰ＿Ｖを第一のフィルタタップ定数として抽出する。第一のフィルタタップ定数ＮＵＭ＿ＴＡＰ＿Ｖは、フィルタ処理のために参照する要素データの垂直方向の数（つまり、垂直方向のフィルタタップ数）を示す。
同様に、フィルタタップ定数抽出部１１４は、図４に示す第二のループ命令文１０１ｅから第二のフィルタタップ定数ＮＵＭ＿ＴＡＰ＿Ｈを抽出してもよい。第二のフィルタタップ定数ＮＵＭ＿ＴＡＰ＿Ｈは、フィルタ処理のために参照する要素データの水平方向の数（つまり、水平方向のフィルタタップ数）を示す。
【００４５】
そして、フィルタタップ定数抽出部１１４は、フィルタタップ定数に関するフィルタタップ定数情報１８４を生成する。例えば、フィルタタップ定数情報１８４は、フィルタタップ定数およびループ命令文の行番号などを示す。
Ｓ１４０の後、処理はＳ１５０に進む。
【００４６】
Ｓ１５０において、データサイズ定数抽出部１１５は、フィルタタップ定数情報１８４に示される行番号で特定されるループ命令文をループ内に含んだ上位のループ命令文をアルゴリズム記述１０１から抽出する。
例えば、データサイズ定数抽出部１１５は、図４に示すアルゴリズム記述１０１を第二のループ命令文１０１ｅからさかのぼって前方検索し、第二のループ命令文１０１ｅで用いられていない第二のインデックス関連変数ｈが用いられている上位のループ命令文１０１ｆを抽出する。
同様に、データサイズ定数抽出部１１５は、第一のループ命令文１０１ｄで用いられていない第一のインデックス関連変数ｖが用いられている上位のループ命令文１０１ｇを抽出してもよい。
【００４７】
データサイズ定数抽出部１１５は、上位のループ命令文からループ回数の条件を指定するデータサイズ定数を抽出する。
例えば、データサイズ定数抽出部１１５は、図４に示すループ命令文１０１ｆからループ回数の上限値を指定する定数Ｈ＿ＭＡＸを第一のデータサイズ定数として抽出する。第一のデータサイズ定数Ｈ＿ＭＡＸは、二次元データの水平方向の要素データの数（つまり、水平方向のデータサイズ）を示す。
同様に、データサイズ定数抽出部１１５は、ループ命令文１０１ｇから第二のデータサイズ定数Ｖ＿ＭＡＸを抽出してもよい。第二のデータサイズ定数Ｖ＿ＭＡＸは、二次元データの垂直方向の要素データの数（つまり、垂直方向のデータサイズ）を示す。
【００４８】
そして、データサイズ定数抽出部１１５は、データサイズ定数に関するデータサイズ定数情報１８５を生成する。例えば、データサイズ定数情報１８５は、データサイズ定数および上位のループ命令文の行番号などを示す。
Ｓ１５０の後、処理はＳ１６０に進む。
【００４９】
Ｓ１６０において、単位処理抽出部１１６は、データサイズ定数情報１８５に示される行番号で特定される上位のループ命令文のループ範囲を単位処理としてアルゴリズム記述１０１から抽出する。この単位処理は、ハードウェアが実行する単位処理に相当する。
例えば、単位処理抽出部１１６は、図４に示す上位のループ命令文（１０１ｆ、１０１ｇ）のうち内側のループ命令文１０１ｆのループ範囲を単位処理１０１ｈとして抽出する。
【００５０】
そして、単位処理抽出部１１６は、単位処理に関する単位処理情報１８６を生成する。例えば、単位処理情報１８６は、単位処理および単位処理の行番号（先頭行の行番号と最終行の行番号）などを示す。
Ｓ１６０の後、処理はＳ１７０に進む。
【００５１】
Ｓ１７０において、出力変数抽出部１１７は、単位処理情報１８６に示される行番号で特定される単位処理から、係数文分析情報１８２に示される累積変数の代入文を出力変数設定文として抽出する。累積変数の代入文とは、累積変数の値または累積変数を演算した値を出力変数に代入（設定）する命令文である。
例えば、出力変数抽出部１１７は、図４に示す単位処理１０１ｈをフィルタ係数文１０１ａから後方へ参照し、累積変数ｓｕｍが代入されている最後の代入文を出力変数設定文ｉとして抽出する。
【００５２】
出力変数抽出部１１７は、出力変数設定文で値が設定される出力変数を抽出する。
例えば、出力変数抽出部１１７は、図４に示す出力変数設定文１０１ｉの左辺の変数ｆｍｅｍ＿ｏｕｔ［ｉ＿ｖ］［ｉ＿ｈ］を出力変数として抽出する。
【００５３】
そして、出力変数抽出部１１７は、出力変数に関する出力変数情報１８７を生成する。例えば、出力変数情報１８７は、出力変数および出力変数設定文を特定する行番号などを示す。
Ｓ１７０の後、処理はＳ２００に進む。
【００５４】
Ｓ２００において、プログラム記述生成部１２０は、フィルタ情報１８０に含まれる情報に基づいてプログラム記述１０９を生成する。
プログラム記述生成処理（Ｓ２００）の詳細については後述する。
Ｓ２００の後、プログラム変換処理は終了する。
【００５５】
図５は、実施の形態１におけるプログラム記述生成処理（Ｓ２００）を示すフローチャートである。
実施の形態１におけるプログラム記述生成処理（Ｓ２００）について、図５に基づいて説明する。
【００５６】
Ｓ２１０において、フィルタ処理関数生成部１２１は、フィルタ処理関数の定義を含んだプログラム記述１０９の雛形（テンプレートともいう）を生成する。
フィルタ処理関数は、ハードウェアの単位処理を表す関数である。
プログラム記述１０９の雛形は、プログラム変換装置１００の装置記憶部に予め記憶しておいてもよい。
Ｓ２１０の後、処理はＳ２２０に進む。
【００５７】
図６は、実施の形態１におけるプログラム記述１０９の雛形の一例を示す図である。
例えば、フィルタ処理関数生成部１２１は、図６に示すようにフィルタ処理関数ｆｉｌｔｅｒの定義を含んだプログラム記述１０９の雛形を生成する（図５のＳ２１０参照）。
図５に戻り、Ｓ２２０から説明を続ける。
【００５８】
Ｓ２２０において、フィルタ処理関数生成部１２１は、単位処理情報１８６によって特定される単位処理をフィルタ処理関数内に設定する。
Ｓ２２０の後、処理はＳ２３０に進む。
【００５９】
図７は、実施の形態１における単位処理１０１ｈを設定したフィルタ処理関数ｆｉｌｔｅｒを示す図である。
例えば、フィルタ処理関数生成部１２１は、図７に示すように単位処理１０１ｈをフィルタ処理関数ｆｉｌｔｅｒ内に設定する。
図５に戻り、Ｓ２３０から説明する。
【００６０】
Ｓ２３０において、フィルタ処理関数生成部１２１は、フィルタ処理関数内に設定した単位処理に含まれる要素変数をラインバッファ用の変数（以下、ラインバッファ変数という）に変更する。要素変数は、係数文分析情報１８２によって特定される。
また、フィルタ処理関数生成部１２１は、フィルタ処理関数内に設定した単位処理に含まれる出力変数をフィルタ処理関数の出力用の変数に変更する。出力変数は、出力変数情報１８７によって特定される。
ラインバッファ用の変数名およびファイル処理関数の出力用の変数名は予め定めて記憶部に記憶しておく。
Ｓ２３０の後、処理はＳ２４０に進む。
【００６１】
図８は、実施の形態１における単位処理１０１ｈの変数名を変更したフィルタ処理関数ｆｉｌｔｅｒを示す図である。
例えば、フィルタ処理関数生成部１２１は、図７に示したフィルタ処理関数ｆｉｌｔｅｒを図７に示すように変更する。
つまり、フィルタ処理関数生成部１２１は、単位処理１０１ｈに含まれる要素変数ｆｍｅｍ＿ｉｎ［ｉ＿ｖ］［ｉ＿ｈ］をラインバッファ変数ｌｉｎｅ＿ｂｕｆ［ｉ＿ｖ］［ｉ＿ｈ］に変更する。
また、フィルタ処理関数生成部１２１は、単位処理１０１ｈに含まれる出力変数ｆｍｅｍ＿ｏｕｔ［ｉ＿ｖ］［ｉ＿ｈ］をフィルタ処理関数の出力用の変数ｏｕｔに変更する。
図５に戻り、Ｓ２４０から説明を続ける。
【００６２】
Ｓ２４０において、ラインバッファ定義部１２２は、ラインバッファ変数の定義文をプログラム記述１０９に追加する。
ラインバッファ変数のデータサイズは、フィルタタップ定数情報１８４によって特定されるフィルタタップ定数に相当するデータサイズである。
ラインバッファ変数の個数は、データサイズ定数情報１８５によって特定されるデータサイズ定数に相当する個数である。
プログラム記述生成部１２０は、ラインバッファ変数の定義文が追加されたプログラム記述１０９を出力する。
Ｓ２４０の後、プログラム記述生成処理（Ｓ２００）は終了する。
【００６３】
図９は、実施の形態１におけるプログラム記述１０９の一例を示す図である。
図９に示すように、ラインバッファ定義部１２２は、フィルタ処理関数ｆｉｌｔｅｒの前に、ラインバッファ変数ｌｉｎｅ＿ｂｕｆ［ＮＵＭ＿ＴＡＰ＿Ｖ］［Ｈ＿ＭＡＸ］を定義するラインバッファ定義文１０９ａを追加する。ラインバッファ変数ｌｉｎｅ＿ｂｕｆの１つ目のインデックスＮＵＭ＿ＴＡＰ＿Ｖはフィルタタップ定数であり、２つ目のインデックスＨ＿ＭＡＸはデータサイズ定数である。
また、ラインバッファ定義部１２２は、フィルタ処理関数ｆｉｌｔｅｒ内の単位処理１０１ｈの前に、ラインバッファ変数ｌｉｎｅ＿ｂｕｆに要素データｉｎを設定するラインバッファ設定文１０９ｂを追加する。
【００６４】
図１０は、実施の形態１におけるプログラム変換装置１００のハードウェア資源の一例を示す図である。
図１０において、プログラム変換装置１００（コンピュータの一例）は、ＣＰＵ９０１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。ＣＰＵ９０１は、バス９０２を介してＲＯＭ９０３、ＲＡＭ９０４、通信ボード９０５（通信装置）、ディスプレイ９１１（表示装置）、キーボード９１２、マウス９１３、ドライブ９１４、磁気ディスク装置９２０などのハードウェアデバイスと接続され、これらのハードウェアデバイスを制御する。ドライブ９１４は、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）などの記憶媒体を読み書きする装置である。
ＲＯＭ９０３、ＲＡＭ９０４、磁気ディスク装置９２０およびドライブ９１４は記憶装置の一例である。キーボード９１２、マウス９１３および通信ボード９０５は入力装置の一例である。ディスプレイ９１１および通信ボード９０５は出力装置の一例である。
【００６５】
通信ボード９０５は、有線または無線で、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、電話回線などの通信網に接続している。
【００６６】
磁気ディスク装置９２０には、ＯＳ９２１（オペレーティングシステム）、プログラム群９２２、ファイル群９２３が記憶されている。
【００６７】
プログラム群９２２には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラム（例えば、高位合成用記述生成プログラム）は、ＣＰＵ９０１により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
【００６８】
ファイル群９２３には、実施の形態において説明する「〜部」で使用される各種データ（入力、出力、判定結果、計算結果、処理結果など）が含まれる。
【００６９】
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
フローチャートなどに基づいて説明する実施の形態の処理はＣＰＵ９０１、記憶装置、入力装置、出力装置などのハードウェアを用いて実行される。
【００７０】
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【００７１】
実施の形態１により、ラインバッファ（ハードウェアの一例）を備えるフィルタ回路のハードウェア記述を高位合成するため、高位合成用のプログラム記述１０９を生成することができる。
【００７２】
実施の形態１において、例えば、以下のような高位合成用記述生成装置（１００）について説明した。括弧内に、対応する構成の符号または名称を記す。
高位合成用記述生成装置は、アルゴリズム記述記憶部（装置記憶部）と、係数識別子記憶部（装置記憶部）と、フィルタ演算文抽出部（１１１）と、ループ命令文抽出部（１１５）と、要素数識別子抽出部（１１５）と、高位合成用記述生成部（１２０）とを備える。
アルゴリズム記述記憶部は、複数のデータ要素を含んだ配列データ（二次元データ）のデータ要素数がループ回数の条件値として用いられるループ命令文（１０１ｆ）を含むと共に、前記ループ命令文のループ内に前記配列データのデータ要素にフィルタ係数を掛けるフィルタ演算文（１０１ａ）を含んだプログラム記述をアルゴリズム記述（１０１）として記憶すると、
係数識別子記憶部は、前記フィルタ係数を表す係数識別子（１０２）を記憶する。
フィルタ演算文抽出部は、前記アルゴリズム記述から前記係数識別子を検索し、前記係数識別子を含んだ演算文を前記フィルタ演算文として前記アルゴリズム記述から抽出する。
ループ命令文抽出部は、前記フィルタ演算文抽出部によって抽出された前記フィルタ演算文をループ内に含んでいる前記ループ命令文を、前記アルゴリズム記述から抽出する。
要素数識別子抽出部は、前記ループ命令文抽出部によって抽出された前記ループ命令文から、前記データ要素数を表す要素数識別子（データサイズ定数）を抽出する。
高位合成用記述生成部は、前記要素数識別子抽出部によって抽出された前記要素数識別子を用いて前記データ要素数のデータ要素を記憶するハードウェア（ラインバッファ）を定義するハードウェア定義文（１０９ａ、１０９ｂ）を生成し、生成したハードウェア定義文を含んだプログラム記述を高位合成用記述（１０９）として生成する。
【００７３】
前記アルゴリズム記述は、前記ループ命令文として上位のループ命令文（１０１ｆ）を含み、前記上位のループ命令文のループ内にループ回数の条件値としてフィルタタップ数が用いられる下位のループ命令文（１０１ｄ）を含み、前記下位のループ命令文のループ内に前記フィルタ演算文（１０１ａ）を含む。
前記高位合成用記述生成装置（１００）は、前記下位のループ命令文から、前記フィルタタップ数を表すタップ数識別子（フィルタタップ定数）を抽出するタップ数識別子抽出部（１１４）を備える。
前記高位合成用記述生成部（１２０）は、前記タップ数識別子抽出部によって抽出された前記タップ数識別子を用いて、前記フィルタタップ数の前記ハードウェアを定義するための定義文を前記ハードウェア定義文（１０９ａ、１０９ｂ）として生成する。
【００７４】
実施の形態２．
実施の形態１では、２次元のシフト処理に関するアルゴリズム記述１０１からラインバッファ用の定義を含んだプログラム記述１０９を生成する形態について説明した。
実施の形態２では、１次元のシフト処理に関するアルゴリズム記述１０１からシフトレジスタ用の定義を含んだプログラム記述１０９を生成する形態について説明する。
以下、実施の形態１と異なる事項について主に説明する。説明を省略する事項については実施の形態１と同様である。
【００７５】
図１１は、実施の形態２におけるプログラム変換装置１００の構成図である。
実施の形態１におけるプログラム変換装置１００の構成について、図１１に基づいて説明する。
【００７６】
プログラム変換装置１００は、実施の形態１（図１、図２参照）と同様に、フィルタ情報生成部１１０と、プログラム記述生成部１２０と、装置記憶部（図示省略）とを備える。
但し、プログラム記述生成部１２０は、実施の形態１で説明したラインバッファ定義部１２２の代わりに、シフトレジスタ定義部１２３を備える。
【００７７】
シフトレジスタ定義部１２３は、フィルタ情報１８０に含まれる情報に基づいて、プログラム記述１０９にシフトレジスタを定義する。
その他の構成については実施の形態１と同様である。
【００７８】
プログラム変換装置１００のプログラム変換処理は、実施の形態１（図３参照）と同様である。
図３に示したプログラム変換装置１００のプログラム変換処理の流れについて、図１２のアルゴリズム記述１０１および図１３のプログラム記述１０９を例にして簡単に説明する。
プログラム変換装置１００のプログラム変換処理の詳細については実施の形態１の説明を参照のこと。
図１２は、実施の形態２におけるアルゴリズム記述１０１の一例を示す図である。
図１３は、実施の形態２におけるプログラム記述１０９の一例を示す図である。
【００７９】
Ｓ１１０において、フィルタ係数文抽出部１１１は、アルゴリズム記述１０１からフィルタ係数名ｃｏｅｆを検索し、アルゴリズム記述１０１からフィルタ係数文１０１ａを抽出する。そして、フィルタ係数文抽出部１１１はフィルタ係数文情報１８１を生成する。
Ｓ１２０において、フィルタ係数文分析部１１２は、フィルタ係数文１０１ａから要素変数ｆｍｅｍ＿ｉｎ［ｉ＿ｈ］とインデックス変数ｉ＿ｈと累積変数ｓｕｍとを抽出する。そして、フィルタ係数文分析部１１２は係数文分析情報１８２を生成する。
Ｓ１３０において、インデックス関連変数抽出部１１３は、フィルタ係数文１０１ａからさかのぼってインデックス変数ｉ＿ｈを検索し、インデックス設定文１０１ｃを抽出し、インデックス設定文１０１ｃからインデックス関連変数「ｈ」「ｈ＿ｆ」を抽出する。そして、インデックス関連変数抽出部１１３はインデックス関連変数情報１８３を生成する。
Ｓ１４０において、フィルタタップ定数抽出部１１４は、インデックス設定文１０１ｃからさかのぼってインデックス関連変数「ｈ＿ｆ」を検索し、下位のループ命令文１０１ｅを抽出し、下位のループ命令文１０１ｅからフィルタタップ定数「ＮＵＭ＿ＴＡＰ＿Ｈ」を抽出する。そして、フィルタタップ定数抽出部１１４はフィルタタップ定数情報１８４を生成する。
Ｓ１５０において、データサイズ定数抽出部１１５は、インデックス設定文１０１ｃからさかのぼってインデックス関連変数「ｈ」を検索し、上位のループ命令文１０１ｆを抽出し、上位のループ命令文１０１ｆからデータサイズ定数Ｈ＿ＭＡＸを抽出する。そして、データサイズ定数抽出部１１５はデータサイズ定数情報１８５を生成する。
Ｓ１６０において、単位処理抽出部１１６は、上位のループ命令文のループ範囲をアルゴリズム記述１０１から単位処理１０１ｈとして抽出する。そして、単位処理抽出部１１６は単位処理情報１８６を生成する。
Ｓ１７０において、出力変数抽出部１１７は、単位処理１０１ｈから累積変数ｓｕｍを検索し、出力変数設定文１０１ｉを抽出し、出力変数設定文１０１ｉから出力変数ｆｍｅｍ＿ｏｕｔを抽出する。そして、出力変数抽出部１１７は出力変数情報１８７を生成する。
Ｓ１１０からＳ１７０が実行された後、処理はＳ２００に進む。
【００８０】
Ｓ２００において、プログラム記述生成部１２０は、フィルタ情報１８０に含まれる情報に基づいて、図１３に示すようなプログラム記述１０９を生成する。
プログラム記述生成処理（Ｓ２００）は、実施の形態１（図５参照）と同様である。
但し、Ｓ２３０において、フィルタ処理関数生成部１２１は、単位処理１０１ｈ内の要素変数ｆｍｅｍ＿ｉｎをシフトレジスタ変数ｓｈｉｆｔ＿ｒｅｇに変換する。
また、Ｓ２４０において、シフトレジスタ定義部１２３は、フィルタ処理関数ｆｉｌｔｅｒの前にシフトレジスタ定義文１０９ｃを追加し、単位処理１０１ｈの前にシフトレジスタ設定文１０９ｄを追加する。
【００８１】
実施の形態２により、１次元のシフト処理に関するアルゴリズム記述１０１からシフトレジスタ用の定義を含んだプログラム記述１０９を生成することができる。
【００８２】
各実施の形態において、以下のように、１次元または２次元のフィルタ回路を高位自動設計するプログラム変換装置１００について説明した。
プログラム変換装置１００は、入力されたアルゴリズム記述１０１とフィルタ係数名１０２とに基づいてフィルタ情報１８０を抽出する。
プログラム変換装置１００は、抽出したフィルタ情報１８０に基づいて、アルゴリズム記述１０１のうちフィルタ処理の記述部分（単位処理）をハードウェア処理単位の記述に自動変換し、フィルタ回路に必要なレジスタまたはラインバッファの記述を自動挿入する。これにより、高位合成可能なプログラム記述１０９が自動生成される。
【００８３】
各実施の形態により、以下のような効果を奏する。
２次元フィルタ回路を高位自動設計する際に、既存のアルゴリズム記述を人手によって書き換えることなく、自動でラインバッファの記述を挿入することが可能となり、高位自動設計を効率化することができる。
１次元フィルタ処理についても２次元フィルタと同様に、１データずつ入力されるハードウェア処理単位を記述し、必要なレジスタの記述を自動挿入することができる。これにより、入力されるフィルタ演算のデータを１データずつシフトさせながら処理するハードウェア動作に合わせたプログラム記述を自動生成でき、高位自動設計を効率化することができる。
【符号の説明】
【００８４】
１０  フィルタ処理部、１１  入力メモリ、１２  フィルタ演算部、１３  出力メモリ、１４  入力フレーム、１５  出力フレーム、２０  フィルタ処理回路、２１  入力部、２２  フィルタ演算部、２３  出力部、１００  プログラム変換装置、１０１  アルゴリズム記述、１０１ａ  フィルタ係数文、１０１ｂ，１０１ｃ  インデックス設定文、１０１ｄ，１０１ｅ，１０１ｆ，１０１ｇ  ループ命令文、１０１ｈ  単位処理、１０１ｉ  出力変数設定文、１０２  フィルタ係数名、１０９  プログラム記述、１０９ａ  ラインバッファ定義文、１０９ｂ  ラインバッファ設定文、１０９ｃ  シフトレジスタ定義文、１０９ｄ  シフトレジスタ設定文、１１０  フィルタ情報生成部、１１１  フィルタ係数文抽出部、１１２  フィルタ係数文分析部、１１３  インデックス関連変数抽出部、１１４  フィルタタップ定数抽出部、１１５  データサイズ定数抽出部、１１６  単位処理抽出部、１１７  出力変数抽出部、１２０  プログラム記述生成部、１２１  フィルタ処理関数生成部、１２２  ラインバッファ定義部、１２３  シフトレジスタ定義部、１８０  フィルタ情報、１８１  フィルタ係数文情報、１８２  係数文分析情報、１８３  インデックス関連変数情報、１８４  フィルタタップ定数情報、１８５  データサイズ定数情報、１８６  単位処理情報、１８７  出力変数情報、９０１  ＣＰＵ、９０２  バス、９０３  ＲＯＭ、９０４  ＲＡＭ、９０５  通信ボード、９１１  ディスプレイ、９１２  キーボード、９１３  マウス、９１４  ドライブ、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  プログラム群、９２３  ファイル群。
【図１】
2014186446.tif 000003
【図２】
2014186446.tif 000004
【図３】
2014186446.tif 000005
【図４】
2014186446.tif 000006
【図５】
2014186446.tif 000007
【図６】
2014186446.tif 000008
【図７】
2014186446.tif 000009
【図８】
2014186446.tif 000010
【図９】
2014186446.tif 000011
【図１０】
2014186446.tif 000012
【図１１】
2014186446.tif 000013
【図１２】
2014186446.tif 000014
【図１３】
2014186446.tif 000015
【図１４】
2014186446.tif 000016
【図１５】
2014186446.tif 000017