[本開示の一態様をするに至った経緯]
図1は、特許文献1に基づく木構造で配置された比較器を有する最小値選択回路の構成を示すブロック図である。図1に示す最小値選択回路は、一例として、入力データ数を16とし、16個の入力データから第1最小値及び第2最小値を算出する回路である。
図1に示す「4 to 2」回路は、4個の入力データに対する第1最小値及び第2最小値を算出する。つまり、図1に示す最小値選択回路は、「4 to 2」回路を木構造で3段備えることにより、16個の入力データから第1最小値及び第2最小値を算出する。
また、図1に示す最小値選択回路では、高速な動作クロックによって動作させるために、木構造の「4 to 2」回路1段につき、1つのパイプラインレジスタが挿入されている。これは、パイプライン1段につき、比較器が1段となるようにした構成であると言える。
なお、「4 to 2」回路には、比較器の他にセレクタ及び制御回路なども含まれるが、これらは比較器よりも遅延が小さいので、ここでは比較器の段数に基づいてパイプライン構成が決定されている。
図1に示す最小値選択回路では、パイプラインが3段であるので、2クロックサイクルのパイプライン遅延が追加される。すなわち、図1に示す回路を用いて16個の入力データから第1最小値及び第2最小値を算出するためには、3クロックサイクルを要する。
一方、図1に示す最小値選択回路において、16個の入力データが4セット順次入力される場合、パイプライン動作により6クロックサイクルを要する。すなわち、Nセットの入力データが順次入力される場合、パイプライン動作により(N+2)クロックサイクルを要する。
このように、図1に示す構成では、パイプライン動作による遅延(パイプライン遅延)によって処理遅延が増加するという課題がある。また、図1に示すようなパイプラインレジスタの追加による回路規模の増大及び消費電力の増加を招いてしまう。
本開示に係る一態様は、かかる課題を解決するものであって、最小値選択回路において、処理遅延を低減するとともに、回路規模及び消費電力を削減することを目的とする。
以下、本開示の一態様に係る実施の形態について、図面を参照して詳細に説明する。
(実施の形態1)
図2は、本実施の形態に係る最小値選択回路の構成を示すブロック図である。
図2に示す最小値選択回路100は、複数のデータの中から絶対値が最も小さい第1最小値、及び、絶対値が2番目に小さい第2最小値を選択する。また、最小値選択回路100には、複数のデータが2個のデータ(図2ではD1,D2)ずつ逐次入力される。
以下の説明では、入力データの1セットのサイズが16である場合について説明する。ただし入力データの1セットのサイズは16に限らず、その他のサイズでもよい。
例えば、最小値選択回路100は、図3に示す4つの動作モード(case 1〜case 4)を有する。
case 1では、最小値選択回路100は、16個のデータの中から第1最小値(Xmin1)及び第2最小値(Xmin2)を選択する。最小値選択回路100には、ステップ(クロックサイクル。t=1〜8)毎に2つのデータが入力される。すなわち、case 1では、8ステップで1つのデータセットに対する処理が完了する。
case 3では、1つのデータセットに含まれる16個のデータが2つのグループに分けられている。図3では、奇数番目のデータを第1グループとし、偶数番目のデータを第2グループとしている。最小値選択回路100は、第1グループの第1最小値(Xmin1)及び第2最小値(Xmin2)、及び、第2groupの第1最小値(Ymin1)及び第2最小値(Ymin2)をそれぞれ選択する。最小値選択回路100には、ステップ(t=1〜8)毎に各グループに属するデータが1つずつ入力される。
case 2及びcase 4では、16個のデータが、case 1及びcase 3の各データが属するグループを反転させたグループに分けられている。
また、1つのデータセットにおけるグループ分けは不規則であってもよい。例えば、図3に示す「実際の例」の各ステップにおいて、最小値選択回路100には、上述したcase 1〜case 4の何れかにおけるデータの組み合わせが入力される。
例えば、最小値選択回路100は、LDPC符号を用いたMin−Sum復号法による復号処理のうち、行処理(チェックノード処理)に用いられる(詳細については実施の形態3,4において詳述する)。この場合、上述した入力データの組み合わせは、LDPC復号に使用される検査行列の構成によって決まる。
図2に示す最小値選択回路100は、選択部101,102、記憶部103,104、総当たり比較部105、動作モード指示部106、第1選択比較部107、第2選択比較部108、判定部109を含む構成を採る。
図2では、一例として、図3に示すt=1のステップにおいて最小値選択回路100にデータD1,D2が入力される場合を示す。
また、図2では、一例として、データD1,D2を含む複数のデータ(1つのデータセットを構成するデータ)は、2つのグループ(第1グループ,第2グループ)のいずれかに属している。
選択部101は、判定部109から入力される判定結果に基づいて、入力データD1,D2、及び、記憶部103から入力される第1最小値Xmin1、第2最小値Xmin2のうち、2つの値を選択する。選択される2つの値は、D1,D2が入力された時点における第1グループの最も小さい値(絶対値)である新たな第1最小値Xmin1、及び、2番目に小さい値(絶対値)である新たな第2最小値Xmin2である。選択部101は、選択した2つの値を記憶部103へ出力する。
選択部102は、判定部109から入力される判定結果に基づいて、入力データD1,D2、及び、記憶部104から入力される第1最小値候補Ymin1、第2最小値候補Ymin2のうち、2つの値を選択する。選択される2つの値は、D1,D2が入力された時点における第2グループの最も小さい値(絶対値)である新たな第1最小値候補Ymin1、及び、2番目に小さい値(絶対値)である新たな第2最小値候補Ymin2である。選択部102は、選択した2つの値を記憶部104へ出力する。
記憶部103は、選択部101から入力される第1グループの第1最小値Xmin1及び第2最小値Xmin2を記憶する。具体的には、第1最小値Xmin1は、第1最小値記憶部131に記憶され、第2最小値Xmin2は、第2最小値記憶部132に記憶される。また、記憶部103は、記憶しているXmin1、Xmin2を選択部101、第1選択比較部107及び第2選択比較部108へ出力する。
記憶部104は、選択部102から入力される第2グループの第1最小値Ymin1及び第2最小値Xmin2を記憶する。具体的には、第1最小値Ymin1は、第1最小値記憶部141に記憶され、第2最小値Ymin2は、第2最小値記憶部142に記憶される。また、記憶部104は、記憶しているYmin1、Ymin2を選択部102、第1選択比較部107及び第2選択比較部108へ出力する。
つまり、記憶部103及び記憶部104において、複数のグループ毎の第1最小値及び第2最小値がそれぞれ記憶される。
最小値選択回路100は、1つのデータセット(例えば、16個のデータ)に対する処理の完了時に記憶部103又は記憶部104に記憶されている値(Xmin1、Xmin2、Ymin1又はYmin2)を当該データセットの最終的な第1最小値及び第2最小値として出力する。換言すると、記憶部103,104は、複数のデータが所定数(ここでは2個)のデータ毎に逐次入力される度に、最小値選択回路100に入力されたデータについて、第1最小値及び第2最小値を更新して記憶する。
総当たり比較部105は、複数のデータのうち逐次入力される2以上の所定数のデータ間の大小関係を比較する第1比較部として機能する。総当たり比較部105は、同時(ステップ毎)に入力される所定数のデータ(図2ではD1,D2)の全ての組み合わせについて並列に(同時に)大小関係の比較を行う。例えば、総当たり比較部105は、D1<D2の場合には比較結果C12=1を判定部109に出力し、D1≧D2の場合には比較結果C12=0を判定部109に出力する。図2では、最小値選択回路100に同時に入力されるデータが2つであるので、総当たり比較部105は、1つの比較器を有する。例えば、最小値選択回路100に同時に入力されるデータが4つである場合には、総当たり比較部105は6個の比較器を有する。
動作モード指示部106は、現ステップの動作モードが図3に示す動作モード(case 1〜case 4)の何れであるかを第1選択比較部107、第2選択比較部108及び判定部109に指示する。
最小値選択回路100には、最小値選択回路100に同時に入力されるデータ数(図2では2個)と同数の選択比較部(図2では、第1選択比較部107及び第2選択比較部108)が備えられる。各選択比較部は同時に入力されるデータの各々に対応する。すなわち、第1選択比較部107及び第2選択比較部108は、複数のデータのうち逐次入力される2以上の所定数のデータと同数の複数の第2比較部として機能する。
また、第1選択比較部107及び第2選択比較部108は、各々に対応するデータが属するグループに対応する第1最小値及び第2最小値を記憶部103又は記憶部104から選択し、選択された第1最小値及び第2最小値と、各々に対応するデータとを比較する。
つまり、第1選択比較部107は、記憶部103又は記憶部104に記憶された第1最小値及び第2最小値の各々とデータD1との比較を行う選択比較部である。また、第2選択比較部108は、記憶部103又は記憶部104に記憶された第1最小値及び第2最小値の各々とデータD2との比較を行う選択比較部である。
第1選択比較部107は、選択部171,172、及び、比較器173,174を備える。
第1選択比較部107において選択部171は、動作モード指示部106から指示される動作モードに従って、記憶部103から入力される第1グループの第1最小値Xmin1及び記憶部104から入力される第2グループの第1最小値Ymin1のうちいずれかを選択する。同様に、選択部172は、動作モード指示部106から指示される動作モードに従って、記憶部103から入力される第1グループの第2最小値Xmin2及び記憶部104から入力される第2グループの第2最小値Ymin2のうちいずれかを選択する。
そして、比較器173は、選択部171で選択されたデータ(以下、Zmin1とする)とデータD1とを比較し、比較結果Cz1を判定部109へ出力する。同様に、比較器174は、選択部172で選択されたデータ(以下、Zmin2とする)とデータD1とを比較し、比較結果Cz2を判定部109へ出力する。
例えば、第1選択比較部107は、Zmin1(又はZmin2)<D1の場合には比較結果Cz1(又はCz2)=1を出力し、Zmin1(又はZmin2)≧D1の場合には比較結果Cz1(又はCz2)=0を出力する。
図4A及び図4Bは、第1選択比較部107における動作例を示す。
図4Aは、動作モード指示部106からcase 1又はcase 3が指示された場合の第1選択比較部107の動作を示し、図4Bは、動作モード指示部106からcase 2又はcase 4が指示された場合の第1選択比較部107の動作を示す。
図4Aに示すように、動作モードがcase 1又はcase 3の場合、選択部171はXmin1をZmin1として選択し、選択部172はXmin2をZmin2として選択する。そして、比較器173はXmin1とデータD1とを比較し、比較器174はXmin2とデータD1とを比較する。
一方、図4Bに示すように、動作モードがcase 2又はcase 4の場合、選択部171はYmin1をZmin1として選択し、選択部172はYmin2をZmin2として選択する。そして、比較器173はYmin1とデータD1とを比較し、比較器174はYmin2とデータD1とを比較する。
図2に戻り、第2選択比較部108は、選択部181,182、及び、比較器183,184を備える。
第2選択比較部108において、選択部181は、動作モード指示部106から指示される動作モードに従って、記憶部103から入力される第1グループの第1最小値Xmin1及び記憶部104から入力される第2グループの第1最小値Ymin1のうちいずれかを選択する。同様に、選択部182は、動作モード指示部106から指示される動作モードに従って、記憶部103から入力される第1グループの第2最小値Xmin2及び記憶部104から入力される第2グループの第2最小値Ymin2のうちいずれかを選択する。
そして、比較器183は、選択部181で選択されたデータ(以下、Wmin1とする)とデータD2とを比較し、比較結果Cw1を判定部109へ出力する。同様に、比較器184は、選択部182で選択されたデータ(以下、Wmin2とする)とデータD2とを比較し、比較結果Cw2を判定部109へ出力する。
例えば、第2選択比較部108は、Wmin1(又はWmin2)<D2の場合には比較結果Cw1(又はCw2)=1を出力し、Wmin1(又はWmin2)≧D2の場合には比較結果Cw1(又はCw2)=0を出力する。
図5A及び図5Bは、第2選択比較部108における動作例を示す。
図5Aは、動作モード指示部106からcase 1又はcase 4が指示された場合の第2選択比較部108の動作を示し、図5Bは、動作モード指示部106からcase 2又はcase 3が指示された場合の第2選択比較部108の動作を示す。
図5Aに示すように、動作モードがcase 1又はcase 4の場合、選択部181はXmin1をWmin1として選択し、選択部182はXmin2をWmin2として選択する。そして、比較器183はXmin1とデータD2とを比較し、比較器184はXmin2とデータD2とを比較する。
一方、図5Bに示すように、動作モードがcase 2又はcase 3の場合、選択部181はYmin1をWmin1として選択し、選択部182はYmin2をWmin2として選択する。そして、比較器183は、Ymin1とデータD2とを比較し、比較器184は、Ymin2とデータD2とを比較する。
図2に戻り、判定部109は、動作モード106から入力される動作モード、総当たり比較部105から入力される比較結果C12、第1選択比較部107から入力される比較結果Cz1、Cz2、及び、第2選択比較部108から入力される比較結果Cw1、Cw2に基づいて、記憶部103又は記憶部104に記憶された第1最小値(Xmin1、Ymin1)及び第2最小値(Xmin2、Ymin2)を更新する値を判定する。
すなわち、判定部109は、データD1,D2、及び、記憶部103又は記憶部104に記憶された第1最小値及び第2最小値の中から、記憶部103又は記憶部104に記憶する新たな第1最小値及び新たな第2最小値を判定する。
図6は、判定部109の動作を表す真理値表(比較結果のパターン)を示す。図6A〜図6Dは、case 1〜case 4の場合の真理値表をそれぞれ示す。
なお、図6に示す真理値表には、最小値選択回路100において起こりえない条件(比較結果の組み合わせ)は示されていない。一例として、比較結果(Cz1,Cz2,Cw1,Cw2,C12)が(0,1,1,1,1)である場合とは、Xmin1≧D1であり、Xmin2<D1である場合に相当する。すなわち、Xmin1≧D1>Xmin2の関係となり、第1最小値(Xmin1)と第2最小値(Xmin2)との関係に矛盾が生じる。よって、組み合わせ(0,1,1,1,1)は最小値選択回路100において起こりえない条件である。
また、図6C及び図6Dにおいて、「*」は出力結果に影響を与えない値(ドントケア)を示す。
case 1(図6A)の場合、記憶部103に記憶されるXmin1、Xmin2が更新対象であり、記憶部104に記憶されるYmin1、Ymin2は更新されない。
例えば、比較結果(Cz1,Cz2,Cw1,Cw2,C12)のパターンが(0,0,0,0,0)である場合(図6Aに示す条件番号12の場合)、判定部109は、入力データD2を新たなXmin1とし、入力データD1を新たなXmin2とし、判定結果を選択部101へ出力する。
より詳細には、case 1では、Cz1=0の場合、Xmin1≧D1であり、Cz1=0の場合、Xmin2≧D1であり、Cw1=0の場合、Xmin1≧D2であり、Cw2=0の場合、Xmin2≧D2であり、C12=0の場合、D1≧D2である。よって、この場合、D1,D2,Xmin1,Xmin2は、Xmin2>Xmin1≧D1≧D2の関係となる。よって、判定部109は、D2、D1が新たなXmin1,Xmin2であると判定する。
同様に、比較結果(Cz1,Cz2,Cw1,Cw2,C12)のパターンが(1,1,1,1,1)である場合(図6Aに示す条件番号1の場合)、判定部109は、Xmin1を新たなXmin1とし、Xmin2を新たなXmin2とし、判定結果を選択部101へ出力する。
より詳細には、case 1では、Cz1=1の場合、Xmin1<D1であり、Cz1=1の場合、Xmin2<D1であり、Cw1=1の場合、Xmin1<D2であり、Cw2=1の場合、Xmin2<D2であり、C12=1の場合、D1<D2である。よって、この場合、D1,D2,Xmin1,Xmin2は、D2>D1>Xmin2>Xmin1の関係となる。よって、判定部109は、Xmin1、Xmin2が新たなXmin1,Xmin2であると判定する。
なお、記憶部103に記憶されるXmin1及びXmin2が更新されない場合、判定部109は、記憶部103に対して更新指示(イネーブル信号)を無効(negate)としてもよい。また、記憶部104に記憶されるYmin1及びYmin2が更新されない場合、判定部109は、記憶部104に対して更新指示(イネーブル信号)を無効(negate)としてもよい。このとき、記憶部103又は記憶部104は、イネーブル付きフリップフロップ又はクロックイネーブル付きフリップフロップ又はライトイネーブル付きRAMなどを用いてよい。
判定部109は、case 1の他の条件番号、及び、他のcaseについても同様にして新たな第1最小値(Xmin1,Ymin1)及び新たな第2最小値(Xmin2,Ymin2)を判定する。
ただし、case 2(図6B)の場合、記憶部104に記憶されるYmin1、Ymin2更新対象であり、記憶部103に記憶されるXmin1、Xmin2は更新されない。
また、case 3(図6C)の場合、比較結果Cz1及びCz2の値(つまり、D1と第1グループとの比較結果)によって記憶部103における更新対象のデータが決定され(条件番号Z1〜Z3)、比較結果Cw1及びCw2の値(つまり、D2と第2グループとの比較結果)によって記憶部104における更新対象のデータが決定される(条件番号W1〜W3)。
例えば、比較結果(Cz1,Cz2,Cw1,Cw2,C12)のパターンが(0,0,0,0,0)である場合(図6Cに示す条件番号Z3かつW3の場合)、判定部109は、入力データD1を新たなXmin1とし、記憶部103に記憶されているデータXmin1を新たなXmin2とし、判定結果を選択部101へ出力する。同時に、判定部109は、入力データD2を新たなYmin1とし、記憶部104に記憶されているデータYmin1を新たなYmin2とし、判定結果を選択部102へ出力する。
また、case 4(図6D)の場合、比較結果Cz1及びCz2の値(つまり、D1と第2グループとの比較結果)によって記憶部104における更新対象のデータが決定され(条件番号Z1〜Z3)、比較結果Cw1及びCw2の値(つまり、D2と第1グループとの比較結果)によって記憶部103における更新対象のデータが決定される(条件番号W1〜W3)。
以上のように、本実施の形態では、最小値選択回路100は、複数のデータ入力(図2では2個のデータ入力)を同時に受け付ける入力端子、及び、入力されるデータに対して大小関係を総当たりで比較する総当たり比較部105を備える。また、最小値選択回路100では、選択比較部(図2では第1選択比較部107及び第2選択比較部108)は、同時に入力されるデータ数と同数備えられる。
そして、最小値選択回路100において、第1選択比較部107及び第2選択比較部108は、動作モード(つまり、データのグループ分け)に基づいて、記憶部103又は記憶部104に記憶されている第1最小値及び第2最小値の組の何れかを選択して、選択した第1最小値及び第2最小値の各々と入力データとの比較を行う。
これにより、最小値選択回路100は、逐次的に入力されるデータについて、複数のグループ(第1グループ及び第2グループ)毎に第1最小値及び第2最小値を求めることができる。また、最小値選択回路100に入力される複数のデータの各々が属するグループが時々刻々変わる場合でも、最小値選択回路100は、複数のグループ毎に第1最小値及び第2最小値を求めることができる。
また、最小値選択回路100では、入力データとの比較対象となる第1最小値及び第2最小値を選択するのであって、入力データの中から比較対象となるデータを選択するのではないので、入力データのパスにおけるクリティカルパスが長くなることを回避し、高速動作を実現することができる。
最小値選択回路100では、case 3(図6C)及びcase 4(図6D)については、第1選択比較部107又は第2選択比較部108の比較結果によって第1最小値及び第2最小値の判定が可能である。最小値選択回路100では、更に、総当たり比較部105を備えることにより、case 1(図6A)及びcase 2(図6B)についても、第1選択比較部107、第2選択比較部108及び総当たり比較部105の比較結果のパターンによって第1最小値及び第2最小値の判定が可能となる。
また、特許文献1では、全てのデータ(例えば、図1では16個)が入力されるまで最小値選択処理を行うことが困難である。これに対して、本実施の形態によれば、最小値選択回路100は、全てのデータのうち一部のデータが入力された時点で最小値選択処理を行うことができ、データが入力される度に逐次的に処理を進めることができる。
また、本実施の形態によれば、最小値選択回路100において、総当たり比較部105と、第1選択比較部107及び第2選択比較部108と、が並列に配置されている。つまり、総当たり比較部105、第1選択比較部107及び第2選択比較部108は、並列に処理が可能である。
これにより、最小値選択回路100では、第1最小値及び第2最小値の選択(判定)処理を高速に行うことができる。例えば、最小値選択回路100をLSIなどの回路として実装した場合には、クリティカルパスを短くし、動作クロック周波数を上げることができるので、最小値選択回路100では、第1最小値及び第2最小値の選択処理を高速に行うことができる。
例えば、特許文献1では、或る選択部では、他の比較器(前段の選択部の比較器)における比較結果に基づいて選択処理を行っているので(図1を参照)、複数の比較器の遅延に起因して、高速動作が困難であった。これに対して、本実施の形態では、最小値選択回路100に含まれる比較器(151、173、174、183、184)は、それぞれ並列に配置されており、入力データ(図2ではD1,D2)、記憶部103に記憶されている値(Xmin1,Xmin2)又は記憶部104に記憶されている値(Ymin1,Ymin2)を用いて比較処理を行う。つまり、最小値選択回路100に含まれる比較器は、他の比較器の比較結果を用いた処理を行わない。よって、最小値選択回路100では、複数の比較器の動作による遅延が低減されるので、高速動作が可能となる。
また、本実施の形態では、最小値選択回路100において第1最小値及び第2最小値を選択するために必要な比較器の数を削減することができる。具体的には、最小値選択回路100は、入力データD1,D2、記憶部103に記憶されたXmin1,Xmin2、記憶部104に記憶されたYmin1,Ymin2の比較を総当たりで行わない。代わりに、最小値選択回路100は、D1,D2の総当たりを行い、更に、第1選択比較部107及び第2選択比較部108において記憶部103又は記憶部104に記憶されたデータから比較対象の値を選択することにより、比較処理の回数を削減している。
例えば、当業者にとって自明な比較方法として、Xmin1,Xmin2,Ymin1,Ymin2の総当りを除く、D1,D2,Xmin1,Xmin2,Ymin1,Ymin2の総当りを行う方法が考えられる。この場合、9個の比較器が必要になる。これに対して、本実施の形態に係る最小値選択回路100では、5個の比較器(151、173、174、183、184)ですむ。
以上のように、本実施の形態によれば、最小値選択回路において、遅延を低減するとともに、回路規模を小さくでき、消費電力を低減できる。
(実施の形態2)
実施の形態1では、同時に入力されるデータ数が2個の場合について説明した。これに対して、本実施の形態では、同時に入力されるデータ数が4個の場合について説明する。
図7は、本実施の形態に係る最小値選択回路の構成を示すブロック図である。図7において、実施の形態1(図2)と同一処理を行う構成部には同一符号を付し、その説明を省略する。
以下の説明では、本実施の形態に係る最小値選択回路200は、図8に示す16個の動作モード(case 1〜case 16)を有する。なお、図8に示すcase 1〜case 16は、1ステップ(クロックサイクル)におけるデータのグループ分けを示す。図8に示すcase 1〜case 4に示すグループ分けは、実施の形態1(図3)に示すcase 1〜case 4の2ステップ分(t=1,2)と同一である。
なお、最小値選択回路200がLDPC復号器の一部として使用される場合(実施の形態5において後述する)、検査行列及び復号器の構成によっては、最小値選択回路200は図8に示す全ての動作モードに対応しなくてもよい場合もある。
図7に示す最小値選択回路200は、選択部101,102、記憶部103,104、総当たり比較部201、動作モード指示部106、第1選択比較部202、第2選択比較部203、第3選択比較部204、第4選択比較部205、判定部206を含む構成を採る。
総当たり比較部201は、同時(ステップ毎)に入力される所定数のデータ(図7ではD1〜D4)の全ての組み合わせについて並列に(同時に)大小関係の比較を行う。図7では、同時に入力されるデータが4つであるので、総当たり比較部201は、6個(=(4×3)/(2×1))の比較器を有する。
例えば、総当たり比較部201は、D1<D2の場合には比較結果C12=1を出力し、D1≧D2の場合には比較結果C12=0を出力する。同様に、D1<D3の場合には比較結果C13=1が出力され、D1≧D3の場合には比較結果C13=0が出力される。D2<D3の場合には比較結果C23=1が出力され、D2≧D3の場合には比較結果C14=0が出力される。D1<D4の場合には比較結果C23=1が出力され、D1≧D4の場合には比較結果C14=0が出力される。D2<D4の場合には比較結果C24=1が出力され、D2≧D4の場合には比較結果C24=0が出力される。D3<D4の場合には比較結果C34=1が出力され、D3≧D4の場合には比較結果C34=0が出力される。
つまり、比較結果C12,C13,C14,C23,C24,C34は、データD1〜D4間の大小関係を示す。
動作モード指示部106は、現ステップの動作モードが図8に示す動作モード(case 1〜case 16)の何れであるかを第1選択比較部202、第2選択比較部203、第3選択比較部204、第4選択比較部205及び判定部206に指示する。
最小値選択回路200において、選択比較部は、最小値選択回路200に同時に入力されるデータ数と同数備えられ、各選択比較部は同時に入力されるデータの各々に対応する。具体的には、第1選択比較部202はデータD1に対応し、第2選択比較部203はデータD2に対応し、第3選択比較部204はデータD3に対応し、第4選択比較部205はデータD4に対応する。
第1選択比較部202、第2選択比較部203、第3選択比較部204、第4選択比較部205は、各々に対応するデータが属するグループに対応する第1最小値及び第2最小値を記憶部103又は記憶部104から選択し、選択された第1最小値及び第2最小値と、各々に対応する入力データ(D1〜D4)とを比較する。
第1選択比較部202、第2選択比較部203、第3選択比較部204、第4選択比較部205は、それぞれ、2つの選択部と、2つの比較器を備える。なお、選択部及び比較器の動作は、実施の形態1における第1選択比較部107及び第2選択比較部108が備える選択部及び比較器と同一である。
図9〜図12は、第1選択比較部202〜第4選択比較部205における動作例を示す。
第1選択比較部202は、case 1,3,5,7,9,12,14,16の場合(図9A)、Xmin1、Xmin2を選択し、case 2,4,6,8,10,11,13,15の場合(図9B)、Ymin1、Ymin2を選択する。そして、第1選択比較部202は、選択した値Zmin1、Zmin2とD1とをそれぞれ比較し、比較結果Cz1,Cz2を判定部206へ出力する。
第2選択比較部203は、case 1,4,5,8,10,11,14,16の場合(図10A)、Xmin1、Xmin2を選択し、case 2,3,6,7,9,12,13,15の場合(図10B)、Ymin1、Ymin2を選択する。そして、第2選択比較部203は、選択した値Wmin1、Wmin2とD2とをそれぞれ比較し、比較結果Cw1,Cw2を判定部206へ出力する。
第3選択比較部204は、case 1,3,6,8,10,12,13,16の場合(図11A)、Xmin1、Xmin2を選択し、case 2,4,5,7,9,11,14,15の場合(図11B)、Ymin1、Ymin2を選択する。そして、第3選択比較部204は、選択した値Umin1、Umin2とD3とをそれぞれ比較し、比較結果Cu1,Cu2を判定部206へ出力する。
第4選択比較部205は、case 1,4,6,7,10,12,14,15の場合(図12A)、Xmin1、Xmin2を選択し、case 2,3,5,8,9,11,13,16の場合(図12B)、Ymin1、Ymin2を選択する。そして、第4選択比較部205は、選択した値Vmin1、Vmin2とD4とをそれぞれ比較し、比較結果Cv1,Cv2を判定部206へ出力する。
つまり、比較結果Cz1,Cz2,Cw1,Cw2,Cu1,Cu2,Cv1,Cv2は、データD1〜D4と第1最小値及び第2最小値との間の大小関係を示す。
図7に戻り、判定部206は、動作モード106から入力される動作モード、総当たり比較部201から入力される比較結果と第1選択比較部202〜第4選択比較部205から入力される比較結果とのパターンに基づいて、記憶部103又は記憶部104に記憶された第1最小値(Xmin1、Ymin1)及び第2最小値(Xmin2、Ymin2)を更新する値を判定する。
すなわち、判定部206は、データD1〜D2、及び、記憶部103又は記憶部104に記憶された第1最小値及び第2最小値の中から、記憶部103又は記憶部104に記憶する新たな第1最小値及び新たな第2最小値を判定する。
図13〜図17は、判定部206の動作を表す真理値表(パターン)の一例を示す。
図13Aはcase 1の場合、図13Bはcase 2の場合、図14Aはcase 3の場合、図14Bはcase 4の場合、図15Aはcase 5の場合、図15Bはcase 6の場合、図16Aはcase 9の場合、図16Bはcase 10の場合、図17Aはcase 11の場合、図17Bはcase 12の場合の真理値表をそれぞれ示す。
図13ではいずれか1つの条件が選択される。空欄および*はドントケアである。図14、図15では、Aで始まる条件番号から1つ、Bで始まる条件番号から1つの条件がそれぞれ選択される。空欄及び斜線(図14におけるC12,C14,C23,C34の列)はドントケアである。複数の条件に当てはまる場合は、小さい条件番号が選択される。たとえば、case 3(図14A)において、入力(Cz1,Cz2,Cw1,Cw2,Cu1,Cu2,Cv1,Cv2,C13,C24)がすべて1のとき、条件番号A3-1とA3-2、B3-1とB3-2が該当するが、条件番号A3-1とB3-1が選択され、出力としてXmin1,Xmin2,Ymin1,Ymin2が選択される。
なお、図13〜図17では、一例として、IEEE802.11adの規格において使用される動作モードを例示し、使用されない動作モードについては省略する。
判定部206は、case 1〜case 16において、各比較結果に基づいて新たな第1最小値(Xmin1,Ymin1)及び新たな第2最小値(Xmin2,Ymin2)を判定する。
以上のように、本実施の形態では、最小値選択回路200は、複数のデータ入力(図7では4個のデータ入力)を同時に受け付ける入力端子、及び、入力されるデータに対して大小関係を総当たりで比較する総当たり比較部201を備える。また、最小値選択回路200では、選択比較部は、同時に入力されるデータ数と同数の4個備えられる。
そして、最小値選択回路200において、第1選択比較部202〜第4選択比較部205は、動作モードに基づいて、記憶部103又は記憶部104に記憶されている第1最小値及び第2最小値の組の何れかを選択して、選択した第1最小値及び第2最小値と入力データの各々との比較を行う。
これにより、最小値選択回路200は、逐次的に入力されるデータについて、複数のグループ(第1グループ及び第2グループ)毎に第1最小値及び第2最小値を求めることができる。また、最小値選択回路200に入力される複数のデータの各々が属するグループが時々刻々変わる場合でも、最小値選択回路200は、複数のグループ毎に第1最小値及び第2最小値を求めることができる。
また、最小値選択回路200では、入力データとの比較対象となる第1最小値及び第2最小値を選択するのであって、入力データの中から比較対象となるデータを選択するのではないので、入力データのパスにおけるクリティカルパスが長くなることを回避し、高速動作を実現することができる。
また、本実施の形態によれば、最小値選択回路200は、全てのデータのうち一部のデータが入力された時点で最小値選択処理を行うことができるので、実施の形態1と同様、データが入力される度に逐次的に処理を進めることができる。
また、本実施の形態によれば、最小値選択回路200において、総当たり比較部201と、第1選択比較部202〜第4選択比較部205と、が並列に配置されている。
これにより、最小値選択回路200では、第1最小値及び第2最小値の選択(判定)処理を高速に行うことができる。例えば、最小値選択回路200をLSIなどの回路として実装した場合には、クリティカルパスを短くし、動作クロック周波数を上げることができるので、最小値選択回路200では、第1最小値及び第2最小値の選択処理を高速に行うことができる。
また、本実施の形態によれば、実施の形態1と比較して、同時に入力されるデータの個数(並列度)が増加するものの、最小値選択回路200に含まれる比較器は、実施の形態1と同様、他の比較器の比較結果に基づく処理を行わない。このため、最小値選択回路200では比較器の遅延に起因する動作は発生しない。つまり、最小値選択回路200では、比較器の深さが1段であるのでクリティカルパスが短く、高速動作を実現することができる。
また、本実施の形態では、最小値選択回路200において第1最小値及び第2最小値を選択するために必要な比較器の数を削減することができる。具体的には、最小値選択回路200は、入力データD1〜D4、記憶部103に記憶されたXmin1,Xmin2、記憶部104に記憶されたYmin1,Ymin2の比較を総当たりで行わずに、D1〜D4の総当たりで行うとともに、第1選択比較部202〜第4選択比較部205において比較対象の値を選択する。
例えば、当業者にとって自明な比較方法として、Xmin1,Xmin2,Ymin1,Ymin2の総当りを除く、D1,D2,D3,D4,Xmin1,Xmin2,Ymin1,Ymin2の総当りを行う方法が考えられる。この場合、22個の比較器が必要になる。これに対して、図7に示す最小値選択回路200では、14個の比較器ですむ。
以上のように、本実施の形態によれば、最小値選択回路において、遅延を低減するとともに、回路規模を小さくでき、消費電力を低減できる。
(実施の形態3)
本実施の形態では、実施の形態1において説明した最小値選択回路を縦列に接続する場合について説明する。
図18は、本実施の形態に係る最小値選択回路の構成を示すブロック図である。
図18に示す最小値選択回路300は、前処理部301及び最小値選択部302を備える。
図19は、図18に示す前処理部301の内部構成を示すブロック図であり、図20は、図18に示す最小値選択部302の内部構成を示すブロック図である。
なお、図19及び図20において、実施の形態1(図2)と同一処理を行う構成部には同一符号を付し、その説明を省略する。具体的には、図19に示す前処理部301及び図20に示す最小値選択部302は、基本的に実施の形態1に係る最小値選択回路100と同様の構成を有する。
ただし、双方を区別するために、前処理部301を構成する構成部の符号に「a」を付し、最小値選択部302を構成する構成部の符号に「b」を付す。また、前処理部301を構成する構成部から出力されるパラメータ(例えば、Xmin1など)号に上添字「’」を付し(例えば、Xmin1')、最小値選択部302を構成する構成部から出力されるパラメータと区別する。
前処理部301と最小値選択部302は、パラメータXmin1,Xmin2,Ymin1,Ymin2とパラメータXmin1’,Xmin2’,Ymin1’,Ymin2’を相互に交換するよう接続される。最小値選択部302は、基本的に実施の形態1に係る最小値選択回路100と同様の構成を有するが、最小値選択回路100では選択部101a、102a、171a、172a、181a、182aにXmin1,Xmin2,Ymin1,Ymin2のいずれかを入力するのに対し、最小値選択部302では選択部101b、102b、171b、172b、181b、182bにXmin1’,Xmin2’,Ymin1’,Ymin2’のいずれかを入力する点が異なる。
また、前処理部301は、記憶部103及び記憶部104に相当する構成部を備えない。前処理部301は選択部101a、102a、171a、172a、181a、182aへの入力として、最小値選択部302が有する記憶部103b、104bに保持されているXmin1,Xmin2,Ymin1,Ymin2を用いる。
前処理部301には入力データD1,D2が入力され、最小値選択部302には入力データD3,D4が入力される。すなわち、最小値選択回路300には、実施の形態2と同様、同時に4個のデータD1〜D4が入力される。
例えば、図8に示す1クロックサイクルにつき4個のデータが同時に入力されるcase 5の動作モードの場合、D1,D2(第1グループ)が前処理部301に入力され、D3,D4のグループ(第2グループ)が最小値選択部302に入力される。すなわち、図21に示すように、case 5の動作モードでは、1クロックサイクルにつき2個のデータが同時に入力されるcase 1に対応するグループが前処理部301に入力され、1クロックサイクルにつき2個のデータが同時に入力されるcase 2に対応するグループが最小値選択部302に入力されると言える。
よって、case 5の動作モードでは、前処理部301の動作モード指示部106aは、case 1を指示し、最小値選択部302の動作モード指示部106bは、case 2を指示すればよい。つまり、前処理部301及び最小値選択部302は、実施の形態1と同様に動作する。
また、前処理部301は、入力データが入力され、第1最小値(Xmin1'又はYmin1')及び第2最小値(Xmin2'又はYmin2')が更新される度にXmin1'、Ymin1'、Xmin2'、Ymin2'を最小値選択部302へ出力する。
前処理部301から入力される第1最小値(Xmin1'、Ymin1')及び第2最小値(Xmin2'、Ymin2')は、最小値選択部302の第1選択比較部107b及び第2選択比較部108bにそれぞれ入力される。
最小値選択部302は、入力データが入力され、第1最小値(Xmin1又はYmin1)及び第2最小値(Xmin2又はYmin2)が更新される度にXmin1、Ymin1、Xmin2、Ymin2を前処理部301へ出力する。
最小値選択部302から入力される第1最小値(Xmin1、Ymin1)及び第2最小値(Xmin2、Ymin2)は、前処理部301の、選択部101a、選択部102a、第1選択比較部107a及び第2選択比較部108aにそれぞれ入力される。
すなわち、最小値選択回路300では、最小値選択部302において選択された第1最小値及び第2最小値(Xmin1、Xmin2、Ymin1、Ymin2)と、前処理部301の入力データD1,D2とが比較され、前処理部301において選択された第1最小値及び第2最小値(Xmin1'、Xmin2'、Ymin1'、Ymin2')と、最小値選択部302の入力データD3,D4とが比較される。そして、1ステップの処理結果として、実施の形態2と同様、最小値選択回路300に入力されたデータ(データD1〜D4を含む)について第1最小値及び第2最小値が求まる。
本実施の形態では、最小値選択回路300では、実施の形態1の構成(図2を参照)と同様、複数の動作モードに対応しつつ、クリティカルパスを短くし、動作クロック周波数を上げることができるので、第1最小値及び第2最小値の選択処理を高速に行うことができる。
また、本実施の形態では、最小値選択回路300は、実施の形態1の構成(図2を参照)と同様の構成を有するので、実施の形態1と同様、最小値選択回路300に含まれる比較器を削減することができる。
よって、本実施の形態によれば、実施の形態2と同様、4個のデータが同時に入力される場合でも、最小値選択回路において、遅延を低減するとともに、回路規模を小さくでき、消費電力を低減できる。
(実施の形態4)
本実施の形態では、実施の形態1に示す最小値選択回路100(図2を参照)と同様の最小値選択回路を含むLDPC復号器について説明する。
図22は、本実施の形態に係るLDPC復号器の構成を示すブロック図である。
LDPC復号器400は、LDPC符号を用いて符号化されたデータ(ディジタル信号)を復号する。なお、LDPC符号は、線形符号の一例である。
LDPC復号器400は、検査行列(例えば後述する図23を参照)に基づき符号化されたデータから元のデータを復号する。例えば、LDPC復号器400は、Min−Sum復号法に基づいて、1時点(クロックサイクル)につき検査行列42列分の演算を並列に処理する。
例えば、IEEE802.11ad規格では、図23に示す、符号化率の異なる4つの検査行列が規定されている。
符号化率とは、送信語のうち、情報ビットの占める割合である。符号化率が低いほど、誤り訂正能力が高く、無線通信における伝搬路品質に応じて適当な符号化率が選択される。よって、例えば、IEEE802.11ad規格に対応する場合、LDPC復号器400は、4つの符号化率に対応して、使用する検査行列を切り替えて復号を行う必要がある。
図23に示す4つの検査行列において、数字が記載されている部分は、42行42列の単位行列を記載された数字行方向に巡回シフトした行列を表す。例えば、図23に示す符号化率1/2の検査行列において丸で囲まれた部分の数字は「24」であるので、当該部分は、単位行列を行方向に24(つまり24列)シフトした行列を表す。
また、図23に示す4つの検査行列において、空欄となっている部分は、42行42列の零行列を表す。
以下の説明では、42行42列の行列を「サブマトリックス」と称することもある。
また、一例として、図23に示す符号化率1/2の検査行列は、16個のサブマトリックスによって行が構成され、8個のサブマトリックスによって列が構成される。各行における16個のサブマトリックスの集まりを「行グループ」と称することもある。また、各列における8個のサブマトリックスの集まりを「列グループ」と称することもある。
すなわち、図23に示す符号化率1/2の検査行列は、336行672列の行列である。
図22に示すLDPC復号器400は、入力メモリ401、出力メモリ402、2個の列処理演算器403、8個のシフタ404、データ転送部405、4個の行処理演算器406、8個の後処理部407、データ転送部408、8個のシフタ409、制御部410を含む構成を採る。
入力メモリ401は、LDPC復号器400への入力データを保持し、LDPC復号器400の動作に応じて、列処理演算器403に必要なデータを供給する。
出力メモリ402は、列処理演算器403から出力されるLDPC復号の復号結果であるデータを保持する。
なお、入力メモリ401が省略されてもデータがLDPC復号器400へ入力できればよく、出力メモリ402が省略されてもデータがLDPC復号器400から出力できればよい。
シフタ404は、列処理演算器403から出力されるデータに対してシフト処理し、検査行列の各要素に対応するデータを順に出力する。
シフタ409は、データ転送部408から出力されるデータ(つまり、行処理演算後のデータ)に対してシフト処理する。ただし、シフタ409は、シフタ404と同一のシフト量、シフタ404とは逆方向にデータをシフトする。
列処理演算器403は、入力メモリ401から出力されるデータ、又は、シフタ409から出力されるデータを用いて、Min−Sum復号法に基づいて列処理演算を行う。例えば、列処理演算器403は、式(1)に示す演算を行う。
式(1)において、βmnは、列メッセージと呼ばれるデータを示す。m、nは検査行列中の行番号、列番号をそれぞれ示すインデックスである。例えば、符号化率1/2の検査行列では、0≦m<672、0≦n<336となる。βmnについては、検査行列中のm行n列の要素が1であるm,nの組み合わせに対して計算を行えばよい。
また、式(1)において、A(n)は、検査行列のn列目において、要素が1である行番号の集合を表す。また、m'はA(n)に含まれる行番号のうち行番号mを除く行番号を表す。
また、αm'nは、行メッセージと呼ばれるデータを示す。例えば、行メッセージαm'nは、繰り返し復号の初期値として0が設定され、繰り返し復号中にはシフタ409から出力されるデータが設定される。また、λnは、LDPC復号器400に入力される入力データを示し、入力メモリ401に格納されている。通信機にLDPC復号器400が備えられる場合、λnは、受信データに相当するので、「通信路値」と称されることもある。
図22に示すLDPC復号器400は、2つの列処理演算器403(以下、403−1、403−2とする)を備える。
各列処理演算器403は、1つの列グループに対する列処理演算を1クロックサイクルで処理する能力を有する。1つの列グループは42列で構成され、各列において1である要素は最大で4つであるから、1つの列処理演算器403は、式(1)に示す処理を168(=42×4)回分並列に行う。
例えば、図24に示すように、列処理演算器403−1は、奇数番号の列グループに対する列処理演算を行い、列処理演算器403−2は、偶数番号の列グループに対する列処理演算を行う。これにより、2つの列処理演算器403によって1クロックサイクルにつき2つの列グループに対する列処理演算が行われ、検査行列全体に対する列処理演算は、8クロックサイクルで完了する。
図24では、各列グループにおける非零のサブマトリックスは最大で4個である。したがって、1つの列処理演算器403に対する入力データ数は、最大でも4サブマトリックスに相当する行メッセージの個数(42個×4=168個)であり、1つの列処理演算器403からの出力データ数も同数である。
行処理演算器406は、データ転送部405から出力されるデータを用いて、Min−Sum復号法に基づいて行処理演算を行う。例えば、行処理演算器406は、式(2)に示す演算を行う。例えば、行処理演算器406では、計算を簡単にするため、式(2)の第2式が用いられる。
具体的には、行処理演算器406は、式(2)に示すβm min、βm min2及びSmを算出する。
後処理部407は、式(2)に示す選択処理(|βmn|とβm minとの比較を行い、式(2)の第2式の2つの値のいずれかを選択する)を行い、列処理演算器403は、式(2)に示すβm min又はβm min2と、sign(βmn)との乗算を行う。
なお、行処理演算器406において|βmn|=βm minとなるnの値(インデックスと称されることもある)を算出して後処理部407に渡すことにより、後処理部407における|βmn|とβm minとの比較処理を省略しても良い。
なお、sign(βmn)は、βmnの符号を表す。また、B(m)は、検査行列のm行目において要素が1である列番号の集合を表す。また、n'はB(m)に含まれる列番号のうち列番号nを除く列番号を表す。
また、β
m minは第1最小値であり、式(3)によって表され、β
m min2は第2最小値であり、式(4)によって表される。式(4)の関数min_2nd()は第2最小値を求める関数である。
すなわち、式(3)に示すβm minは、第m行目のβmn'の絶対値のうち最も小さい値を表し、式(4)に示すβm min2は、第m行目のβmn'の絶対値のうち2番目に小さい値を表す。
また、式(2)に示すS
mは、式(5)に従って算出される。sign(β
mn’)は、式(6)に従って算出される。
図22に示すLDPC復号器400は、4つの行処理演算器406(以下、406−1〜406−4とする)を備える。
1つの行処理演算器406は、2つのサブマトリックス(1サブマトリックスは42個の列メッセージに対応)に相当するデータを1クロックサイクルで処理する能力を有する。
例えば、図25に示すように符号化率1/2の場合、8個の行グループがあるので、4つの行処理演算器406−1〜406−4の各々には、2つの行グループが対応付けられる。このとき、各行処理演算器406に対応付けられる2つの行グループは、同一列グループにおいて非零のサブマトリックスが1つとなるように割り当てられている。
そして、各行処理演算器406は、2つの列グループを1クロックサイクルで処理する。例えば、行処理演算器406−1は、t=1において、第1行グループの「40」に相当するサブマトリックス、及び、第3行グループの「36」に相当するサブマトリックスに対する行処理演算を行う。図26は、行処理演算器406−1がt=1において行処理演算を行う対象のサブマトリックス(「40」、「36」の非零行列及び零行列を含む)を示す。
また、図27に示すように符号化率5/8の場合、6個の行グループがあるので、2つの行処理演算器406−1,406−2の各々には、1つの行グループが対応付けられ、2つの行処理演算器406−3,406−4の各々には、2つの行グループが対応付けられる。このとき、行処理演算器406−3,406−4に対応付けられる2つの行グループは、同一列グループにおいて非零のサブマトリックスが1つとなるように割り当てられている。
同様に、図28に示すように符号化率3/4の場合、4個の行グループがあるので、4つの行処理演算器406−1〜406−4の各々には、1つの行グループが対応付けられる。
上述した行処理演算器406と行グループとの対応付け(割当)は、データ転送部405によって行われる。
図29は、データ転送部405の動作例を示す。
列処理演算器403−1から出力される、奇数番号の列グループの最大4サブマトリックス(非零)に相当する列メッセージ(B1e_1〜42、B2e_1〜42、B3e_1〜42、B4e_1〜42。式(1)のβmnに相当)は、シフタ404−1〜404−4を介して4つの行処理演算器406−1〜406−4に分配される。
同様に、列処理演算器403−2から出力される、偶数番号の列グループの4サブマトリックスに相当する列メッセージ(B1o_1〜42、B2o_1〜42、B3o_1〜42、B4o_1〜42。式(1)のβmnに相当)は、シフタ404−5〜404−8を介して4つの行処理演算器406−1〜406−4に分配される。
この結果、各行処理演算器406には、奇数番号の列グループ及び偶数番号の列グループの1サブマトリックスに相当するデータが入力される。
例えば、図25に示す符号化率1/2の検査行列を用いる場合、行処理演算器406−1には、第1行グループの各列に相当するサブマトリックス(図25では「40」、「38」、「13」、「5」、「18」)に対応する列メッセージB1e_1〜B1e_42がステップ(t=1〜8)毎に順に入力される。同様に、行処理演算器406−1には、第3行グループの各列に相当するサブマトリックス(図25では「36」、「31」、「7」、「34」、「10」、「41」)に対応する列メッセージB1o_1〜B1o_42がステップ(t=1〜8)毎に入力される。
その他の行処理演算器406−2〜406−4についても同様である。
図30は、行処理演算器406−1の構成を示すブロック図である。
図30に示す行処理演算器406−1は、サブマトリックスのサイズに応じて、42個の演算器461−1〜461−42が並列に配置された構成を採る。また、各演算器461は、最小値選択回路100、分配回路462,463、符号算出回路464,465、レジスタ466,467を含む構成を採る。
最小値選択回路100は、実施の形態1と同様の処理を行うことにより、式(3)及び式(4)に示す第1最小値βm min及び第2最小値βm min2を求める。
図25、図27、図28に示すように、行処理演算器406では1クロックサイクルにつき2つの列グループが処理される。具体的には、図25に示す検査行列が用いられた場合、演算器461−1の最小値選択回路100には、1クロックサイクルにつき、第1行グループ(例えば実施の形態1の第1グループに対応)の列メッセージB1e_1(実施の形態1のD1に相当)と、第3行グループ(例えば実施の形態1の第2グループに対応)の列メッセージB1o_1(実施の形態1のD2に相当)と、が1クロックサイクルにつき処理される。
そして、演算器461−1の最小値選択回路100は、8クロックサイクルを要して、第1行グループの第1最小値A1min1_1(βm min又は図2のXmin1に相当)及び第2最小値A1min2_1(βm min2又は図2のXmin2に相当)を算出する。同様に、演算器461−1の最小値選択回路100は、8クロックサイクルを要して、第3行グループの第1最小値A3min1_1(βm min又は図2のYmin1に相当)及び第2最小値A3min2_1(βm min2又は図2のYmin2に相当)を算出する。
最小値選択回路100における動作は実施の形態1と同様である。最小値選択回路100の動作モード指示部106は、図25、図27、図28に示すように検査行列(つまり符号化率)の種類及び時刻tに応じて、case 1〜4を各構成部に指示する。
分配回路462,463は、図示しない制御部によって、動作モードcase 1〜4に応じて、入力されるデータの符号(符号ビット情報)を、対応する符号算出回路464,465に出力する。
例えば、分配回路462は、case 1,3(図25、図27、図28を参照)では入力される符号ビット情報を、第1行グループに対応する符号算出回路464に出力する。また、分配回路462は、case 2(図25を参照)では、入力される符号ビット情報を第3行グループに対応する符号算出回路465に出力する。一方に、分配回路463は、case 3(図25を参照)では、入力される符号ビット情報を第3行グループに対応する符号算出回路465に出力する。
符号算出回路464、465は、式(5)の計算を行う。
レジスタ466は,467の各々は、最小値選択回路100及び符号算出回路464,465から出力される第1行グループ及び第3行グループに関する出力データをそれぞれ保持し、後処理部407に出力する。
例えば、演算器461−1の第1行グループの出力データには、第1行グループに含まれる列メッセージB1e_1の第1最小値A1min1_1(式(3)のβm min)、第2最小値A1min2_1(式(4)のβm min2)、符号A1idx1(式(2)において|βmn|=βm minとなるnの値)、符号A1sign_1(式(5)のSm)が含まれる。他の出力データについても同様である。
なお、図30では行処理演算器406−1(第1行グループ及び第3行グループに対応)の構成について説明したが、図示しない他の行処理演算器406−2〜406−4も同様の構成を採り、他の行グループに対する行処理演算を行う。
図22に戻り、データ転送部408は、上述した行処理演算器406と行グループとの対応付け(割当)に従って、後処理部407−1〜407−8から出力されるデータ(式(2)に示すβm min(又はβm min2)、Sm、sign(βmn))を、奇数番号の列グループと偶数番号の列グループとに分配し、シフタ409−1〜409−4(奇数番号の列グループに対応)及びシフタ409−5〜409−8(偶数番号の列グループに対応)にそれぞれ出力する。
図31は、データ転送部408の動作例を示す。
図31に示すセレクタ481−1,481−3,481−5,481−7は、後処理部407−1〜407−8から出力される各行グループのデータから奇数番号の列グループのデータを選択し、シフタ409−1〜409−4にそれぞれ出力する。
同様に、図31に示すセレクタ481−2,481−4,481−6,481−8は、後処理部407−1〜407−8から出力される各行グループのデータから偶数番号の列グループのデータを選択し、シフタ409−5〜409−8にそれぞれ出力する。
以上より、本実施の形態において、LDPC復号器400は、複数の列処理演算器403及び複数の行処理演算器406を備え、各行処理演算器406は、実施の形態1に係る構成を有する最小値選択回路100を備える。これにより、LDPC復号器400では、実施の形態1と同様にして行処理演算器406での比較器の数を低減できるので、複数の検査行列に対応しつつ、行処理演算器406の処理を高速に動作させることができる。
また、図22において制御部410は、選択された検査行列(例えば、図23に示す4つの検査行列から1つを選択)に応じて、行処理演算器406−1〜406−4の各々に対して設定する動作モード(case)を制御する。例えば、図25に示す符号化率1/2の検査行列が選択された場合、制御部410は、行処理演算器406−1に対して、case3(t=1のとき)、case3(t=2のとき),・・・, case2(t=6のとき)の順に処理を行うように指示する。他の符号化率(例えば、図27の符号化率5/8、図28の符号化率3/4)の検査行列についても、同様にして、制御部410は、各行処理演算器406に対して動作モード(case 1〜4)を指示する。
各行処理演算器406が備える最小値選択回路100は、同時に入力される所定数のデータの各々を、制御部410によって指示される動作モード(例えば、図25ではcase 1〜case 4)に応じて複数のグループにグループ分けする。つまり、最小値選択回路100に同時に入力される所定数のデータの各々は、検査行列の種類に応じて、複数のグループの何れかに属する。そして、最小値選択回路100の記憶部103,104は、上記所定数のデータについて、複数のグループ毎の第1最小値及び第2最小値を記憶する。また、第1選択比較部107及び第2選択比較部108(複数の第2比較部)の各々には、入力される各データが属するグループに対応する第1最小値及び第2最小値が記憶部103,104から入力される。
こうすることで、各行処理演算器406が備える最小値選択回路100は、複数の検査行列に応じて最小値選択処理を行うことができる。すなわち、検査行列の種類に応じて、最小値選択回路100の構成を変更したり、複数の構成を備えたりする必要がない。よって、本実施の形態によれば、最小値選択回路100を備える行処理演算機406の回路規模を小さくし、消費電力を低くすることができる。
(実施の形態5)
実施の形態4では、実施の形態1に示す最小値選択回路100を含むLDPC復号器(同時に入力されるデータ数が2個の場合)について説明した。これに対して、本実施の形態では、実施の形態2,3に示す最小値選択回路200,300(図7、図18を参照)と同様の最小値選択回路を含むLDPC復号器(同時に入力されるデータ数が4個の場合)について説明する。
図32は、本実施の形態に係るLDPC復号器の構成を示すブロック図である。
図32に示すLDPC復号器500は、基本的に実施の形態4に係るLDPC復号器400と同様の構成を備える。
LDPC復号器500は、列処理演算器503を4個備え、シフタ504,509及び後処理部507を、各行処理演算器506において同時に処理されるデータ数(4個)に対応して16個備える点がLDPC復号器400と異なる。LDPC復号器500が備える行処理演算器506の数は、実施の形態4(LDPC復号器400)と同様の4個である。
また、実施の形態4と同様、各列グループにおける非零のサブマトリックスは最大で4個である。したがって、1つの列処理演算器503に対する入力データ数は、最大でも4サブマトリックスに相当する行メッセージの個数(42個×4=168個)であり、1つの列処理演算器403からの出力データ数も同数である。
また、図33に示すように符号化率1/2の場合、8個の行グループがあるので、4つの行処理演算器506−1〜506−4の各々には、2つの行グループが対応付けられる。このとき、各行処理演算器506に対応付けられる2つの行グループは、同一列グループにおいて非零のサブマトリックスが1つとなるように割り当てられている。
また、図34に示すように符号化率5/8の場合、6個の行グループがあるので、2つの行処理演算器506−1,506−2の各々には、1つの行グループが対応付けられ、2つの行処理演算器506−3,506−4の各々には、2つの行グループが対応付けられる。このとき、行処理演算器506−3,506−4に対応付けられる2つの行グループは、同一列グループにおいて非零のサブマトリックスが1つとなるように割り当てられている。
同様に、図35に示すように符号化率3/4の場合、4個の行グループがあるので、4つの行処理演算器506−1〜506−4の各々には、1つの行グループが対応付けられる。
次に、本実施の形態に係るLDPC復号器500の行処理演算器506の動作について説明する。
各行処理演算器506は、最大で4つの列グループを1クロックサイクルで処理する。また、上述したように、各行処理演算器506は、最大で2つの行グループに対応する。よって、各行処理演算器506に含まれる最小値選択回路(最小値選択回路200又は300)は、図8に示す動作モードに応じて、同時に入力されるデータを、最大2つの行グループにグループ分けし、各グループの第1最小値及び第2最小値を求める。
図36Aは、従来技術を用いた場合の行処理演算の動作タイミングを示すタイミングチャートであり、図36Bは、本実施の形態に係る行処理演算器506の動作タイミングを示すタイミングチャートである。
ここでは、4つの行グループに対する行処理演算を行う場合について説明する。
図36Aに示す従来技術(例えば、図1を参照)では、1つの行グループに含まれる最大16個のデータが1クロックサイクルで入力される。しかし、上述したようにパイプライン遅延が2クロックサイクル必要となるので、1つの行グループに対して、3クロックサイクルを要する。したがって、図36Aに示すように、4つの行グループに含まれる最大64個のデータを処理するためには、6クロックサイクルを要する。
これに対して、本実施の形態に係るLDPC復号器500の複数の行処理演算器506は、各々が最大で2つの行グループの行処理演算を行うので、図36Bに示すように4つの行処理演算が並列に処理される。
また、1つの行処理演算器506は、1クロックサイクルで4つのデータを同時に入力できる。したがって、1つの行グループに含まれる最大16個のデータを処理するためには、4クロックサイクルを要する。
すなわち、本実施の形態によれば、1クロックサイクルにつき、全ての列のうち一部の列に対する処理を行うものの、複数の行グループに対する処理を並列に行うことができるので、全体の処理に要する動作クロック(すなわち遅延)を低減することができる。
つまり、本実施の形態によれば、実施の形態1〜3で述べたように、行処理演算器506に含まれる最小値選択回路において縦列に接続される比較器の段数を低減し、かつ、パイプラインレジスタを不要又は低減することで、パイプライン遅延を低減できる。このため、本実施の形態では、従来技術と比較して、LDPC復号処理(最小値選択処理)を短い遅延で高速に行うことができる。
ここで、従来技術に係る構成(図1を参照)を2個以上用いることにより遅延の短縮を図ることは可能である。例えば、図1に示す構成の最小値選択回路を2個用いることにより、処理遅延を4クロックサイクルにすることができる。しかしながら、このように処理能力を向上させるためには、従来技術では、行処理演算器(最小値選択回路)に対して、クロックサイクルあたり32個のデータを同時に供給しなければならない。
すなわち、従来技術では、本実施の形態に係る最小値選択回路500と同様の処理能力を得るには、行処理演算器でなく、列処理演算器、シフタなどのLDPC復号器に含まれる回路の並列度を2倍に増加させる必要があり、回路規模の増大を招いてしまう。
このように、本実施の形態によれば、処理速度及び遅延の制約を従来技術と同一条件とした場合、従来技術と比較して回路規模を低減できる。換言すると、本実施の形態によれば、回路規模の制約を従来技術と同一条件とした場合、従来技術と比較して低遅延かつ高速動作を実現できる。
また、従来技術では、LDPC復号器(最小値選択回路)に16個のデータを一度に入力する必要があるのに対して、本実施の形態では、LDPC復号器500(最小値選択回路200又は300)に16個のデータを4個ずつ分割して入力することができる。これにより、LDPC復号器500において、16個のデータを一度に処理する必要のある従来技術と比較して、列処理演算器503の構成を簡易で効率的な構成とすることができる。
より詳細には、列処理演算は、検査行列の列内のデータを組み合わせて加減算を行う演算である。本実施の形態では、LDPC復号器500が列処理演算器503を4つ備え(図32を参照)、各々が1クロックサイクルにつき1つの列グループ(つまり、全体で4個の列グループ)を処理する構成とした。このため、列処理演算器503では、一時記憶のためのレジスタなどが不要となり、加減算の簡易な構成を採ることが可能となる。
このように、1列以上の列処理演算を1クロックサイクルで行うLDPC復号器は、「列並列LDPC復号器」又は「列ベース部分並列LDPC復号器」と呼ばれることもある。
本開示の一態様に係るLDPC復号器は、列並列LDPC復号器に適した回路である。
上述したように本実施の形態に係るLDPC復号器500では、4個の列処理演算器503によって1クロックサイクルにつき4つの列グループ(1列グループあたり非零のサブマトリックスが最大4個)の列処理演算を行うのに対して、各行処理演算器506は、1クロックサイクルにつき4個のデータを入力することができる。つまり、LDPC復号器500では、列処理演算器503から行処理演算器506へ過不足なくデータを供給することができる。
一方、従来技術の行処理演算器における最小値選択回路のように、行グループの16個のデータを一度に供給する必要があるLDPC復号器は、「行並列LDPC復号器」又は「行ベース部分並列LDPC復号器」と呼ばれることもある。
行並列LDPC復号器では、本来列グループ単位で行うべき列処理演算を、行グループ単位でデータ出力されるように工夫する必要がある。このため、列処理演算器においてデータを一時的に記憶するレジスタ、メモリ又はアキュムレータを備える方法が知られているが、これらは、列並列LDPC復号器における列処理演算器と比較して複雑な構成かつ回路規模が大きくなってしまう。
以上より、本実施の形態において、LDPC復号器500では、実施の形態2又は3と同様にして行処理演算器506での比較器の数を低減できるので、複数の検査行列に対応しつつ、行処理演算器406の処理を高速に動作させることができる。また、LDPC復号器500では、従来技術と比較して列処理演算器の構成を簡易にすることができるので回路規模の増大を防ぐことができる。
以上、本開示の一態様に係る各実施の形態について説明した。
なお、上記実施の形態では、最小値選択回路に対して同時に入力されるデータ数は、2個(実施の形態1)又は4個(実施の形態2)に限定されず、2個及び4個以外の数でもよい。
また、上記実施の形態では、最小値選択回路に入力される複数のデータが2つのグループの何れかに属する場合を一例として説明したが、複数のデータが属するグループの数は2個に限定されず、2個以外の数のグループでもよい。
上記実施の形態では、本開示をハードウェアで構成する場合を例にとって説明したが、本開示はハードウェアとの連携においてソフトウェアによって実現することも可能である。
また、上記実施の形態の説明に用いた各機能ブロックは、典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部又は全てを含むように1チップ化されてもよい。ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。