JP7317151B2 - 複素乗算回路 - Google Patents

複素乗算回路 Download PDF

Info

Publication number
JP7317151B2
JP7317151B2 JP2021575626A JP2021575626A JP7317151B2 JP 7317151 B2 JP7317151 B2 JP 7317151B2 JP 2021575626 A JP2021575626 A JP 2021575626A JP 2021575626 A JP2021575626 A JP 2021575626A JP 7317151 B2 JP7317151 B2 JP 7317151B2
Authority
JP
Japan
Prior art keywords
signal
circuit
multiplexed signal
product
real part
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021575626A
Other languages
English (en)
Other versions
JPWO2021157172A1 (ja
JPWO2021157172A5 (ja
Inventor
英幸 天谷
紀俊 川口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2021157172A1 publication Critical patent/JPWO2021157172A1/ja
Publication of JPWO2021157172A5 publication Critical patent/JPWO2021157172A5/ja
Application granted granted Critical
Publication of JP7317151B2 publication Critical patent/JP7317151B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/4806Computations with complex numbers
    • G06F7/4812Complex multiplication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Time-Division Multiplex Systems (AREA)
  • Complex Calculations (AREA)

Description

本開示は、複素乗算回路に関する。
デジタル信号処理回路では、相関検出、位相回転および検波などの各種処理を実行するために、多数の複素乗算回路が用いられている。複素乗算回路は、基本的に、4個の乗算器、1個の加算器および1個の減算器により構成されている(例えば、特開2019-83556号公報(特許文献1)参照)。
特開2019-83556号公報
一般的に、乗算器は、加算器および減算器と比較してハードウェア量が大きいため、多数の複素乗算回路を実装することは、LSI(大規模集積回路)の回路規模、消費電力およびコストを増大させる支配的な要因となっている。
特許文献1では、複素数Xおよび複素数Cの複素乗算と、複素数Xおよび複素数Cの複素共役の複素乗算とを、単一の複素乗算回路を共用して実行する構成となっている。しかしながら、複素乗算回路には依然として4個の乗算器が内蔵されており、回路規模の削減には改善の余地がある。
本開示は上記のような課題を解決するためになされたものであって、本開示の目的は、回路規模を削減することができる複素乗算回路を提供することである。
本開示に係る複素乗算回路は、第1の複素数および第2の複素数を乗算する。第1の複素数は、第1の実数部および第1の虚数部を有する。第2の複素数は、第2の実数部および第2の虚数部を有する。複素乗算回路は、第1の実数部および第1の虚数部を時分割多重した第1の多重信号を生成する第1の多重回路と、第2の実数部および第2の虚数部を時分割多重した第2の多重信号を生成する第2の多重回路と、第1の多重信号および第2の多重信号の積差演算を行なう積差演算回路と、第1の実数部および第2の実数部を時分割多重した第3の多重信号を生成する第3の多重回路と、第2の虚数部および第1の虚数部を時分割多重した第4の多重信号を生成する第4の多重回路と、第3の多重信号および第4の多重信号の積和演算を行なう積和演算回路と、積差演算回路の出力値および積和演算回路の出力値を時分割多重した第5の多重信号を生成する第5の多重回路とを備える。
本開示によれば、回路規模を削減することができる複素乗算回路を提供することができる。
実施の形態1に係る複素乗算回路の構成を示す図である。 図1に示した複素乗算回路の動作を示すタイムチャートである。 図1に示した複素乗算回路の動作を示すタイムチャートである。 従来の複素乗算回路の構成を示す図である。 FPGAに内蔵されている一般的なDSP専用回路の構成例を示す図である。 実施の形態3に係る複素乗算回路の構成を示す図である。 図6に示した複素乗算回路の動作を示すタイムチャートである。 図6に示した複素乗算回路の動作を示すタイムチャートである。 図6に示した複素乗算回路の動作を示すタイムチャートである。
以下、本開示の実施の形態について、図面を参照して詳細に説明する。なお、以下では、図中の同一または相当部分には同一符号を付してその説明は原則的に繰返さないものとする。
実施の形態1.
<複素乗算回路の構成>
図1は、実施の形態1に係る複素乗算回路の構成を示す図である。実施の形態1に係る複素乗算回路は、2つの複素数の入力を受け、この2つの複素数を乗算した値を出力するように構成される。
図1に示すように、実施の形態1に係る複素乗算回路100は、第1入力信号Xおよび第2入力信号Cの入力を受ける。第1入力信号Xは、複素数であり、実数部Re(X)および虚数部Im(X)によって、X=Re(X)+Im(X)iの形に表される(iは虚数単位)。第1入力信号Xは、予め定められた周期でX0,X1,X2,・・・の順に変化する。第2入力信号Cは、複素数であり、実数部Re(C)および虚数部Im(C)によって、C=Re(C)+Im(C)iの形に表される。第2入力信号Cは、第1入力信号Xに同期してC0,C1,C2,・・・の順に変化する。複素乗算回路100は、第1入力信号Xおよび第2入力信号Cを乗算し、乗算値である信号Q(=XC)を出力する。第1入力信号Xは「第1の複素数」の一実施例に対応し、第2入力信号Cは「第2の複素数」の一実施例に対応する。
具体的には、複素乗算回路100は、多重回路1~5と、積差演算回路6と、積和演算回路7と、フリップフロップ8と、クロック生成回路9とを備える。
多重回路1は、第1入力信号Xの実数部Re(X)と、第1入力信号Xの虚数部Im(X)とを受ける。多重回路1は、入力された実数部Re(X)と虚数部Im(X)とを時分割多重して多重信号XIを出力する。具体的には、多重回路1は、セレクタ10と、フリップフロップ12とを有する。セレクタ10は、実数部Re(X)および虚数部Im(X)の入力を受ける。セレクタ10は、第2クロック信号CLK2の論理(立上りおよび立下り)に応じて、実数部Re(X)および虚数部Im(X)を時分割多重し、多重信号Xを出力する。多重回路1は「第1の多重回路」の一実施例に対応する。
なお、第2クロック信号CLK2は、クロック生成回路9により生成される。クロック生成回路9は、周波数f[Hz]の第1クロック信号CLK1を受ける。第1クロック信号CLK1の周波数f[Hz]は、入力信号X,Cの周波数の2倍に相当する。クロック生成回路9は、周波数f[Hz]の第1クロック信号CLK1を分周することにより、周波数f/2[Hz]の第2クロック信号CLK2を生成する。
セレクタ10は、第2クロック信号CLK2の立上りのタイミングで虚数部Im(X)を出力し、第2クロック信号CLK2の立下りのタイミングで実数部Re(X)を出力する。すなわち、セレクタ10から出力される多重信号Xには、第1クロック信号CLK1と同じ周期で実数部Re(X)と虚数部Im(X)とが交互に現れる。フリップフロップ12は、セレクタ10から出力される多重信号Xを受け、第1クロック信号CLK1を受ける。フリップフロップ12は、Dフリップフロップであり、入力信号(多重信号X)を第1クロック信号CLK1の1周期遅延させて、多重信号XIを出力する。
多重回路2は、第2入力信号Cの実数部Re(C)と、第2入力信号Cの虚数部Im(C)とを受ける。多重回路2は、入力された実数部Re(C)と虚数部Im(C)とを時分割多重して多重信号CIを出力する。多重回路2は「第2の多重回路」の一実施例に対応する。
具体的には、多重回路2は、セレクタ20と、フリップフロップ22とを有する。セレクタ20は、実数部Re(C)および虚数部Im(C)の入力を受ける。セレクタ20は、第2クロック信号CLK2の論理に応じて、実数部Re(C)および虚数部Im(C)を時分割多重し、多重信号Cを出力する。具体的には、セレクタ20は、第2クロック信号CLK2の立上りのタイミングで虚数部Im(C)を出力し、第2クロック信号CLK2の立下りのタイミングで実数部Re(C)を出力する。すなわち、セレクタ20から出力される多重信号Cには、第1クロック信号CLK1と同じ周期で実数部Re(C)と虚数部Im(C)とが交互に現れる。フリップフロップ22は、Dフリップフロップであり、入力信号(多重信号C)を第1クロック信号CLK1の1周期遅延させて、多重信号CIを出力する。
積差演算回路6は、多重回路1から多重信号XIを受け、多重回路2から多重信号CIを受ける。積差演算回路6は、第1クロック信号CLK1に同期して、多重信号XIおよび多重信号CIを乗算する。積差演算回路6はさらに、今回の周期において取得された乗算値Bと、前回の周期において取得された乗算値Aから乗算値Bを減算した値A-Bとを時分割多重し、多重信号Q1を出力する。積差演算回路6は「積差演算回路」の一実施例に対応する。
具体的には、積差演算回路6は、乗算器60と、減算器62と、セレクタ64と、フリップフロップ66とを有する。乗算器60は、多重信号XIおよび多重信号CIを乗算し、乗算値B(=CIXI)を出力する。乗算器60の出力信号Bは、減算器62およびセレクタ64に入力される。乗算器60は「第1の乗算器」の一実施例に対応する。
減算器62は、乗算器60の出力信号Bおよびフリップフロップ66の出力信号Aを受ける。減算器62は、出力信号Aから出力信号Bを減算し、減算値A-Bを出力する。減算器62の出力信号A-Bはセレクタ64に入力される。減算器62は「減算器」の一実施例に対応する。
セレクタ64は、乗算器60の出力信号Bおよび減算器62の出力信号A-Bの入力を受ける。セレクタ64は、第2クロック信号CLK2の論理に応じて、これら2つの入力信号を時分割多重し、多重信号を出力する。具体的には、セレクタ64は、第2クロック信号CLK2の立上りのタイミングで乗算器60の出力信号Bを出力し、第2クロック信号CLK2の立下りのタイミングで減算器62の出力信号A-Bを出力する。すなわち、セレクタ64から出力される多重信号には、第1クロック信号CLK1と同じ周期で乗算値Bと、減算値A-Bとが交互に現れる。フリップフロップ66は、Dフリップフロップであり、入力信号(セレクタ64の出力信号)を第1クロック信号CLK1の1周期遅延させて、多重信号Q1を出力する。
フリップフロップ8は、Dフリップフロップであり、多重回路2から入力される多重信号CIを第1クロック信号CLK1の1周期遅延させて、多重信号CIIを出力する。
多重回路3は、多重回路1から多重信号XIを受け、フリップフロップ8から多重信号CIIを受ける。多重回路3は、入力された多重信号XIと多重信号CIIとを時分割多重して多重信号XI_CIIを出力する。具体的には、多重回路3は、セレクタ30と、フリップフロップ32とを有する。
セレクタ30は、多重信号XIおよび多重信号CIIの入力を受ける。セレクタ30は、第2クロック信号CLK2の論理に応じて、多重信号XIおよび多重信号CIIを時分割多重し、多重信号を出力する。具体的には、セレクタ30は、第2クロック信号CLK2の立上りのタイミングで多重信号XIを出力し、第2クロック信号CLK2の立下りのタイミングで多重信号CIIを出力する。すなわち、セレクタ30から出力される多重信号には、第1クロック信号CLK1と同じ周期で多重信号XIと多重信号CIIとが交互に現れる。フリップフロップ32は、Dフリップフロップであり、セレクタ30からの入力信号を第1クロック信号CLK1の1周期遅延させて、多重信号XI_CIIを出力する。フリップフロップ8および多重回路3は「第3の多重回路」の一実施例に対応する。
多重回路4は、多重回路2から多重信号Cを受け、多重回路1から多重信号XIを受ける。多重回路4は、入力された多重信号Cと多重信号XIとを時分割多重して多重信号C_XIを出力する。具体的には、多重回路4は、セレクタ40と、フリップフロップ42とを有する。
セレクタ40は、多重信号XIおよび多重信号Cの入力を受ける。セレクタ40は、第2クロック信号CLK2の論理に応じて、多重信号Cおよび多重信号XIを時分割多重し、多重信号を出力する。具体的には、セレクタ40は、第2クロック信号CLK2の立上りのタイミングで多重信号Cを出力し、第2クロック信号CLK2の立下りのタイミングで多重信号XIを出力する。すなわち、セレクタ40から出力される多重信号には、第1クロック信号CLK1と同じ周期で多重信号Cと多重信号XIとが交互に現れる。フリップフロップ42は、Dフリップフロップであり、セレクタ40からの入力信号を第1クロック信号CLK1の1周期遅延させて、多重信号C_XIを出力する。多重回路4は「第4の多重回路」の一実施例に対応する。
積和演算回路7は、多重回路3から多重信号XI_CIIを受け、多重回路4から多重信号C_XIを受ける。積和演算回路7は、第1クロック信号CLK1に同期して、多重信号XI_CIIおよび多重信号C_XIを乗算する。積和演算回路7はさらに、今回の周期において取得された乗算値Cと、前回の周期において取得された乗算値Dと乗算値Cとを加算した値C+Dとを時分割多重し、多重信号Q0を出力する。積和演算回路7は「積和演算回路」の一実施例に対応する。
具体的には、積和演算回路7は、乗算器70と、加算器72と、セレクタ74と、フリップフロップ76とを有する。乗算器70は、多重信号XI_CIIおよび多重信号C_XIを乗算し、乗算値C(=XI_CII・C_XI)を出力する。乗算器70の出力信号Cは、加算器72およびセレクタ74に入力される。乗算器70は「第2の乗算器」の一実施例に対応する。
加算器72は、乗算器70の出力信号Cおよびフリップフロップ76の出力信号Dを受ける。加算器72は、出力信号Cおよび出力信号Dを加算し、加算結果C+Dを出力する。加算器72の出力信号C+Dはセレクタ74に入力される。加算器72は「加算器」の一実施例に対応する。
セレクタ74は、乗算器70の出力信号Cおよび加算器72の出力信号C+Dの入力を受ける。セレクタ74は、第2クロック信号CLK2の論理に応じて、これら2つの入力信号を時分割多重し、多重信号を出力する。具体的には、セレクタ74は、第2クロック信号CLK2の立上りのタイミングで加算器72の出力信号C+Dを出力し、第2クロック信号CLK2の立下りのタイミングで乗算器70の出力信号Cを出力する。すなわち、セレクタ74から出力される多重信号には、第1クロック信号CLK1と同じ周期で加算値C+Dと、乗算値Cとが交互に現れる。フリップフロップ76は、Dフリップフロップであり、入力信号(セレクタ74の出力信号)を第1クロック信号CLK1の1周期遅延させて、多重信号Q0を出力する。
多重回路5は、積差演算回路6から多重信号Q1を受け、積和演算回路7から多重信号Q0を受ける。多重回路5は、入力された多重信号Q1と多重信号Q0とを時分割多重して、多重信号Qを出力する。多重回路5は「第5の多重回路」の一実施例に対応する。
具体的には、多重回路5は、セレクタ50と、フリップフロップ52とを有する。セレクタ50は、多重信号Q1および多重信号Q0の入力を受けると、第2クロック信号CLK2の論理に応じて、多重信号Q1および多重信号Q0を時分割多重し、多重信号を出力する。具体的には、セレクタ50は、第2クロック信号CLK2の立上りのタイミングで多重信号Q1を出力し、第2クロック信号CLK2の立下りのタイミングで多重信号Q0を出力する。すなわち、セレクタ50から出力される多重信号には、第1クロック信号CLK1と同じ周期で多重信号Q1と多重信号Q0とが交互に現れる。フリップフロップ52は、Dフリップフロップであり、セレクタ50からの入力信号を第1クロック信号CLK1の1周期遅延させて、多重信号Qを出力する。多重信号Qは、複素乗算回路100の出力信号であり、複素数である第1入力信号Xおよび第2入力信号Cの乗算値に相当する。
<複素乗算回路の動作>
次に、実施の形態1に係る複素乗算回路100の動作を説明する。
図2および図3は、図1に示した複素乗算回路100の動作を示すタイムチャートである。図2には上から順に、第1クロック信号CLK1、第2クロック信号CLK2、第1入力信号Xの実数部Re(X)および虚数部Im(X)、第2入力信号Cの実数部Re(C)および虚数部Im(C)の波形が示される。図2にはまた、多重回路1にて生成される多重信号Xおよび多重信号XI、多重回路2にて生成される多重信号Cおよび多重信号CI、フリップフロップ8にて生成される多重信号CII、多重回路3にて生成される多重信号XI_CII、ならびに多重回路4にて生成される多重信号C_XIの波形が示される。図2にはさらに、積差演算回路6にて生成される多重信号Q1、積和演算回路7にて生成される多重信号Q0、および多重回路5にて生成される多重信号Qの波形が示される。図3には、図2のタイムチャートからクロック信号CLK1,CLK2、第1入力信号Xの実数部Re(X)および虚数部Im(X)、第2入力信号Cの実数部Re(C)および虚数部Im(C)、ならびに多重信号Q1,Q0,Qの波形を抽出して示す。
図2に示すように、第1入力信号Xは、複素数X(nは0以上の整数)であり、実数部Re(X)および虚数部Im(X)を有する。第2入力信号Cは、複素数Cであり、実数部Re(C)および虚数部Im(C)を有する。第1入力信号Xは、予め定められた周期でX,X,X,・・・の順に変化する。したがって、実数部Re(X)はRe(X),Re(X),Re(X),・・・の順に変化し、虚数部Im(X)はIm(X),Im(X),Im(X),・・・の順に変化する。
第2入力信号Cは、第1入力信号Xに同期してC,C,C,・・・の順に変化する。したがって、実数部Re(C)はRe(C),Re(C),Re(C),・・・の順に変化し、虚数部Im(C)はIm(C),Im(C),Im(C),・・・の順に変化する。
第1クロック信号CLK1は、第1入力信号Xおよび第2入力信号Cの周波数の2倍の周波数f[Hz]を有する。第2クロック信号CLK2は、周波数f/2[Hz]を有する。第1クロック信号CLK1は、フリップフロップ8,12,22,32,42,52,66,76に与えられる。第2クロック信号CLK2は、セレクタ10,20,30,40,50,64,74に与えられる。
多重回路1において、セレクタ10は、第1入力信号Xの実数部Re(X)および虚数部Im(X)の入力を受けると、第2クロック信号CLK2の立下りのタイミングで実数部Re(X)を出力し、第2クロック信号CLK2の立上りのタイミングで虚数部Im(X)を出力する。よって、セレクタ10から出力される多重信号Xは、第1クロック信号CLK1に同期して、実数部Re(X),虚数部Im(X),実数部Re(X),虚数部Im(X),・・・の順に変化する。すなわち、多重信号Xには、第1クロック信号CLK1に同期して、実数部Re(X)および虚数部Im(X)が交互に現れる。フリップフロップ12は、多重信号Xを第1クロック信号CLK1の1周期遅延させた多重信号XIを出力する。
多重回路2において、セレクタ20は、第2入力信号Cの実数部Re(C)および虚数部Im(C)の入力を受けると、第2クロック信号CLK2の立下りのタイミングで実数部Re(C)を出力し、第2クロック信号CLK2の立上りのタイミングで虚数部Im(C)を出力する。よって、セレクタ20から出力される多重信号Cは、第1クロック信号CLK1に同期して、実数部Re(C),虚数部Im(C),実数部Re(C),虚数部Im(C),・・・の順に変化する。すなわち、多重信号Cには、第1クロック信号CLK1に同期して、実数部Re(C)および虚数部Im(C)が交互に現れる。フリップフロップ22は、多重信号Cを第1クロック信号CLK1の1周期遅延させた多重信号CIを出力する。
フリップフロップ8は、多重回路2から与えられる多重信号CIをさらに第1クロック信号CLK1の1周期遅延させた多重信号CIIを出力する。
多重回路3において、セレクタ30は、多重信号XIおよび多重信号CIIの入力を受けると、第2クロック信号CLK2の立下りのタイミングで多重信号CIIを出力し、第2クロック信号CLK2の立上りのタイミングで多重信号XIを出力する。よって、セレクタ30から出力される多重信号には、第1クロック信号CLK1に同期して、多重信号XIおよび多重信号CIIが交互に現れる。フリップフロップ32は、セレクタ30の出力信号を第1クロック信号CLK1の1周期遅延させた多重信号XI_CIIを出力する。図2に示すように、多重信号XI_CIIは、第1クロック信号CLK1に同期して、多重信号XI(=実数部Re(X)),多重信号CII(=実数部Re(C)),多重信号XI(=実数部Re(X)),多重信号CII(=実数部Re(C)),・・・の順に変化する。すなわち、多重信号XI_CIIは、第1入力信号Xの実数部Re(X)および第2入力信号Cの実数部Re(C)を時分割多重した多重信号となる。
多重回路4において、セレクタ40は、多重信号Cおよび多重信号XIの入力を受けると、第2クロック信号CLK2の立下りのタイミングで多重信号XIを出力し、第2クロック信号CLK2の立上りのタイミングで多重信号Cを出力する。よって、セレクタ40から出力される多重信号には、第1クロック信号CLK1に同期して、多重信号Cおよび多重信号XIが交互に現れる。フリップフロップ42は、セレクタ40の出力信号を第1クロック信号CLK1の1周期遅延させた多重信号C_XIを出力する。図2に示すように、多重信号C_XIは、第1クロック信号CLK1に同期して、多重信号C(=虚数部Im(C)),多重信号XI(=虚数部Im(X)),多重信号C(=虚数部Im(C)),多重信号XI(=虚数部Im(X)),・・・の順に変化する。すなわち、多重信号C_XIは、第2入力信号Cの虚数部Im(C)および第1入力信号Xの虚数部Im(X)を時分割多重した多重信号となる。
積差演算回路6は、多重信号XIおよび多重信号CIの入力を受ける。上述したように、多重信号XIは、第1入力信号Xの実数部Re(X)および虚数部Im(X)を時分割多重した多重信号である。多重信号CIは、第2入力信号Cの実数部Re(C)および虚数部Im(C)を時分割多重した多重信号である。
積差演算回路6において、乗算器60は、第1クロック信号CLK1に同期して、多重信号XIおよび多重信号CIを乗算する。乗算器60の乗算値Bには、第1クロック信号CLK1に同期して、実数部Re(X)および実数部Re(C)の乗算値と、虚数部Im(X)および虚数部Im(C)の乗算値とが交互に現れる。減算器62は、前回の周期において取得された乗算値Aから今回の周期において取得された乗算値Bを減算する。
セレクタ64は、第2クロック信号CLK2の立上りのタイミングで乗算器60の乗算値Bを出力し、第2クロック信号CLK2の立下りのタイミングで減算器62の減算値A-Bを出力する。セレクタ64から出力される多重信号には、第1クロック信号CLK1と同じ周期で乗算値Bと、減算値A-Bとが交互に現れる。フリップフロップ66は、入力信号(セレクタ64の出力信号)を第1クロック信号CLK1の1周期遅延させた多重信号Q1を出力する。
図2および図3に示すように、多重信号Q1は、第1クロック信号CLK1に同期して、実数部Re(C)および実数部Re(X)の乗算値[Re(C)Re(X)],乗算値[Re(C)Re(X)]から虚数部Im(C)および虚数部Im(X)の乗算値[Im(C)Im(I)]を減算した値{Re(C)Re(X)-Im(C)Im(X)},実数部Re(X)および実数部Re(C)の乗算値[Re(C)Re(X)],乗算値[Re(C)Re(X)]から虚数部Im(C)および虚数部Im(C)の乗算値[Im(X)Im(C)]を減算した値{Re(C)Re(X)-Im(C)Im(X)},・・・の順に変化する。すなわち、多重信号Q1は、実数部Re(C)および実数部Re(X)の乗算値[Re(C)Re(X)]と、実数部Re(C)および実数部Re(X)の乗算値から虚数部Im(C)および虚数部Im(X)の乗算値を減算した値{Re(C)Re(X)-Im(C)Im(X)}とを時分割多重した多重信号となる。
積和演算回路7は、多重信号XI_CIIおよび多重信号C_XIの入力を受ける。上述したように、多重信号XI_CIIは、第1入力信号Xの実数部Re(X)および第2入力信号Cの実数部Re(C)を時分割多重した多重信号である。多重信号C_XIは、第2入力信号Cの虚数部Im(C)および第1入力信号Xの虚数部Im(X)を時分割多重した多重信号である。
積和演算回路7において、乗算器70は、第1クロック信号CLK1に同期して、多重信号XI_CIIおよび多重信号C_XIを乗算する。乗算器70の乗算値Cには、第1クロック信号CLK1に同期して、虚数部Im(C)および実数部Re(X)の乗算値と、実数部Re(C)および虚数部Im(X)の乗算値とが交互に現れる。加算器72は、前回の周期において取得された乗算値Dと今回の周期において取得された乗算値Cとを加算する。
セレクタ74は、第2クロック信号CLK2の立下りのタイミングで乗算器70の乗算値Cを出力し、第2クロック信号CLK2の立上りのタイミングで加算値C+Dを出力する。セレクタ74から出力される多重信号には、第1クロック信号CLK1と同じ周期で乗算値Cと、加算値C+Dとが交互に現れる。フリップフロップ76は、入力信号(セレクタ74の出力信号)を第1クロック信号CLK1の1周期遅延させた多重信号Q0を出力する。
図2および図3に示すように、多重信号Q0は、第1クロック信号CLK1に同期して、虚数部Im(C)および実数部Re(X)の乗算値[Im(C)Re(X)],乗算値[Im(C)Re(X)]に実数部Re(C)および虚数部Im(X)の乗算値[Re(C)Im(X)]を加算した値{Im(C)Re(X)+Re(C)Im(X)},虚数部Im(C)および実数部Re(X)の乗算値[Im(C)Re(X)],乗算値[Im(C)Re(X)]に実数部Re(C)および虚数部Im(X)の乗算値[Re(C)Im(X)]を加算した値{Im(C)Re(X)+Re(C)Im(X)},・・・の順に変化する。すなわち、多重信号Q0は、虚数部Im(C)および実数部Re(X)の乗算値[Im(C)Re(X)]と、虚数部Im(C)および実数部Re(X)の乗算値ならびに実数部Re(C)および虚数部Im(X)の乗算値を加算した値{Im(C)Re(X)+Re(C)Im(X)}とを時分割多重した多重信号となる。
なお、多重信号Q0は、多重信号Q1に対して第1クロック信号CLK1の1周期分遅延している。これは、積差演算回路6に入力される多重信号XI,CIに対して、積和演算回路7に入力される多重信号XI_CII,C_XIが第1クロック信号CLK1の1周期分遅延していることによる。
多重回路5において、セレクタ50は、多重信号Q1および多重信号Q0の入力を受けると、第2クロック信号CLK2の立下りのタイミングで多重信号Q0を出力し、第2クロック信号CLK2の立上りのタイミングで多重信号Q1を出力する。よって、セレクタ50から出力される多重信号には、第1クロック信号CLK1に同期して、多重信号Q1および多重信号Q0が交互に現れる。フリップフロップ52は、セレクタ50の出力信号を第1クロック信号CLK1の1周期遅延させた多重信号Qを出力する。図2および図3に示すように、多重信号Qは、第1クロック信号CLK1に同期して、多重信号Q1(=減算値{Re(C0)Re(X0)-Im(C0)Im(X0)}、多重信号Q0(=加算値{Im(C0)Re(X0)+Re(C0)Im(X0)}、多重信号Q1(=減算値{Re(C1)Re(X1)-Im(C1)Im(X1)}、多重信号Q0(=加算値{Im(C1)Re(X1)+Re(C1)Im(X1)},・・・の順に変化する。すなわち、多重信号Qは、減算値{Re(C)Re(X)-Im(C)Im(X)}および加算値{Im(C)Re(X)+Re(C)Im(X)}を時分割多重した多重信号となる。
ここで、複素数Xおよび複素数Cを次式(1),(2)のようにそれぞれ表すと(iは虚数単位)、複素数Xおよび複素数Cの乗算値XCは、次式(3)のように表される。
X=Re(X)+Im(X)i ・・・(1)
C=Re(C)+Im(C)i ・・・(2)
XC={Re(X)Re(C)-Im(X)Im(C)}+{Im(C)Re(X)+Re(C)Im(X)}i ・・・(3)
式(3)の右辺と多重信号Qとを比較すると、右辺第1項の実数部は多重信号Qにおける減算値に対応しており、右辺第2項の虚数部は多重信号Qにおける加算値に対応している。すなわち、多重信号Qは、複素数Xおよび複素数Cの乗算値XCの実数部および虚数部を時分割多重した多重信号となっていることが分かる。
以上説明したように、実施の形態1に係る複素乗算回路は、2つの複素数X,Cの各々を実数部および虚数部が時分割多重された多重信号XI,CIに変換し、生成された2つの多重信号XI,CIを演算することにより、乗算値XCとして、実数部および虚数部が時分割多重された多重信号Qを出力するように構成される。上記構成において、2つの多重信号X,CIを演算処理する回路を、2個の乗算器60,70と、1個の減算器62と、1個の加算器72とを有する構成とすることができる。
図4には、比較のために、従来の複素乗算回路200の構成を示す。図4を参照して、従来の複素乗算回路200は、式(1),(2)に示す複素数Xおよび複素数Cの入力を受けて、式(3)に示す乗算値XCを出力するための構成として、4個の乗算器201~204と、1個の減算器205と、1個の加算器206とを有している。
乗算器201は、複素数Xの実数部Re(X)および複素数Cの実数部Re(C)の入力を受け、これら2入力を乗算した値Re(X)Re(C)を出力する。
乗算器202は、複素数Xの虚数部Im(X)および複素数Cの虚数部Im(C)の入力を受け、これら2入力を乗算した値Im(X)Im(C)を出力する。
乗算器203は、複素数Xの虚数部Im(X)および複素数Cの実数部Re(C)を受け、これら2入力を乗算した値Im(X)Re(C)を出力する。
乗算器204は、複素数Xの実数部Re(X)および複素数Cの虚数部Im(C)の入力を受け、これら2入力を乗算した値Re(X)Im(C)を出力する。
減算器205は、乗算器201の乗算値Re(X)Re(C)から乗算器202の乗算値Im(X)Im(C)を減算し、減算値{Re(X)Re(C)-Im(X)Im(C)}を出力する。
加算器206は、乗算器203の乗算値Im(X)Re(C)および乗算器204の乗算値Re(X)Im(C)を加算し、加算値{Im(X)Re(C)+Re(X)Im(C)}を出力する。
図4に示す従来の複素乗算回路200において、減算器205の減算値は、複素数Xおよび複素数Cの乗算値XCの実数部に対応し、加算器206の加算値は、乗算値XCの虚数部に対応している。このように従来の複素乗算回路200は、4個の乗算器と、1個の減算器と、1個の加算器とを有する回路構成を採用している。当該回路構成において、乗算器は、加算器および減算器に比べてハードウェア量が大きい。そのため、相関検出、位相回転および検波などの処理のために多数の複素乗算回路を実装することによって、LSIの回路規模が大型化するとともに、消費電力およびコストが増大することが懸念される。
本実施の形態1に係る複素乗算回路100は、2つの複素数の各々の実数部および虚数部を時分割多重した多重信号を演算する構成としたことにより、複素乗算に必要な4つの乗算を2つの乗算器を共用して実行することができる。その結果、従来の複素乗算回路200に比べて、乗算器の使用個数を減らすことができるため、LSIが大型かつ高コストになることを抑制することができる。また、LSIの消費電力の増大を抑制することができる。
実施の形態2.
実施の形態1に係る複素乗算回路100は、FPGA(Field Programmable Gate Array)およびASIC(Application Specific Integrated Circuit)のいずれにも実装することができる。ただし、複素乗算回路100において、積差演算回路6および積和演算回路7の各々は、FPGAに内蔵されているDSP(Digital Signal Processor)専用回路によって実現可能に構成されている。
図5は、FPGAに内蔵されている一般的なDSP専用回路の構成例を示す図である。図5に示すように、一般的なDSP専用回路は、乗算器300の後段に加算器302(または減算器)が配置された構成となっている。図5の例では、積和された演算値がレジスタに保存され、その演算値に対して足し算を繰り返すように構成されている。図1に示した複素乗算回路100において、積差演算回路6および積和演算回路7は、乗算器の後段に加算器および減算器がそれぞれ配置されており、図5に示すDSP専用回路と回路構成が共通している。したがって、積差演算回路6および積和演算回路7の各々に、一般的なDSP専用回路を適用することができる。これにより、FPGAに対して複素乗算回路100を容易に実装することが可能となり、結果的に低コストのFPGAデバイスでデジタル信号処理を実現することができる。
実施の形態3.
実施の形態1では、第1の複素数および第2の複素数の入力を受け、これら2つの複素数を乗算した値を出力する複素乗算回路の構成例について説明した。
実施の形態3では、上記2つの複素数を乗算した値を出力する動作(複素乗算)と、第1の複素数の複素共役と第2の複素数とを乗算した値を出力する動作(複素共役乗算)とを選択的に実行することが可能な複素乗算回路の構成例について説明する。
<複素乗算回路の構成>
図6は、実施の形態3に係る複素乗算回路の構成を示す図である。
図6に示すように、実施の形態3に係る複素乗算回路100Aは、図1に示す複素乗算回路100と同様に、第1入力信号Xおよび第2入力信号Cの入力を受ける。第1入力信号Xは、複素数であり、実数部Re(X)および虚数部Im(X)によって、X=Re(X)+Im(X)iの形に表される。第1入力信号Xは、予め定められた周期でX0,X1,X2,・・・の順に変化する。第2入力信号Cは、複素数であり、実数部Re(C)および虚数部Im(C)によって、C=Re(C)+Im(C)iの形に表される。第2入力信号Cは、第1入力信号Xに同期してC0,C1,C2,・・・の順に変化する。
複素乗算回路100Aは、第1入力信号Xおよび第2入力信号Cを乗算し、その乗算値XCを信号Qとして出力する動作(複素乗算)と、第1入力信号Xの複素共役Xおよび第2入力信号Cを乗算し、その乗算値XCを信号Qとして出力する動作(複素共役乗算)とを選択的に実行するように構成される。ただし、記号は複素共役を表す。
複素乗算回路100Aは、図示しない制御回路から制御信号Sを受ける。制御回路は、制御信号Sを「0(Lレベル)」および「1(Hレベル)」の2値の間で変化させる。「0」は「第1のレベル」に相当し、「1」は「第2のレベル」に相当する。後述するように、制御信号Sは、複素乗算回路100Aにおいて、乗算値XCを出力する動作と、乗算値XCを出力する動作とを切り換えるための制御信号である。
図6の構成例では、複素乗算回路100Aは、制御信号Sが「0」のときに乗算値XCを出力する動作を実行し、制御信号Sが「1」のときに乗算値XCを出力する動作を実行する。なお、図6の構成例に代えて、複素乗算回路100Aは、制御信号Sが「1」のときに乗算値XCを出力する動作を実行し、制御信号Sが「0」のときに乗算値XCを出力する動作を実行する構成としてもよい。
図6に示すように、複素乗算回路100Aは、多重回路1~5と、積差/積和演算回路6Aと、積和/積差演算回路7Aと、フリップフロップ8と、クロック生成回路9とを備える。複素乗算回路100Aは、図1に示す複素乗算回路100と比較して、積差演算回路6および積和演算回路7に代えて、積差/積和演算回路6Aおよび積和/積差演算回路7Aを備える点が異なる。その他の構成については複素乗算回路100と同じであるため説明は繰り返さない。
積差/積和演算回路6Aは、多重回路1から多重信号XIを受け、多重回路2から多重信号CIを受け、図示しない制御回路から制御信号Sを受ける。積差/積和演算回路6Aは、第1クロック信号CLK1に同期して、多重信号XIおよび多重信号CIを乗算する。積差/積和演算回路6Aは、制御信号Sが「0」のときには、今回の周期において取得された乗算値Bと、前回の周期において取得された乗算値Aから乗算値Bを減算した値A-Bとを時分割多重し、多重信号Q1を出力する。すなわち、制御信号Sが「0」のとき、積差/積和演算回路6Aは積差演算回路として動作する。
一方、制御信号Sが「1」のときには、積差/積和演算回路6Aは、今回の周期において取得された乗算値Bと、前回の周期において取得された乗算値Aと乗算値Bとを加算した値A+Bとを時分割多重し、多重信号Q1を出力する。すなわち、制御信号Sが「1」のとき、積差/積和演算回路6Aは積和演算回路として動作する。
具体的には、積差/積和演算回路6Aは、乗算器60と、減算/加算器68と、セレクタ64と、フリップフロップ66とを有する。乗算器60は、多重信号XIおよび多重信号CIを乗算し、乗算値B(=CI・XI)を出力する。乗算器60の出力信号Bは、減算/加算器68およびセレクタ64に入力される。
減算/加算器68は、乗算器60の出力信号B、フリップフロップ66の出力信号Aおよび制御信号Sを受ける。制御信号Sが「0」のとき、減算/加算器68は、出力信号Aから出力信号Bを減算し、減算値A-Bを出力する。減算/加算器68の出力信号A-Bはセレクタ64に入力される。一方、制御信号Sが「1」のときには、減算/加算器68は、出力信号Aと出力信号Bとを加算し、加算値A+Bを出力する。減算/加算器68の出力信号A+Bはセレクタ64に入力される。減算/加算器68は「減算/加算器」の一実施例に対応する。
セレクタ64は、乗算器60の出力信号Bおよび減算/加算器68の出力信号(減算値A-Bまたは加算値A+B)の入力を受ける。セレクタ64は、第2クロック信号CLK2の論理に応じて、これら2つの入力信号を時分割多重し、多重信号を出力する。具体的には、セレクタ64は、第2クロック信号CLK2の立上りのタイミングで乗算器60の出力信号Bを出力し、第2クロック信号CLK2の立下りのタイミングで減算/加算器68の出力信号を出力する。すなわち、セレクタ64から出力される多重信号には、第1クロック信号CLK1と同じ周期で乗算値Bと、減算値A-B(または加算値A+B)とが交互に現れる。フリップフロップ66は、Dフリップフロップであり、入力信号(セレクタ64の出力信号)を第1クロック信号CLK1の1周期遅延させて、多重信号Q1を出力する。
積和/積差演算回路7Aは、多重回路3から多重信号XI_CIIを受け、多重回路4から多重信号C_XIを受け、図示しない制御回路から制御信号Sを受ける。積和/積差演算回路7Aは、第1クロック信号CLK1に同期して、多重信号XI_CIIおよび多重信号C_XIを乗算する。積和/積差演算回路7Aは、制御信号Sが「0」のときには、今回の周期において取得された乗算値Cと、前回の周期において取得された乗算値Dと乗算値Cとを加算した値C+Dとを時分割多重し、多重信号Q0を出力する。すなわち、制御信号Sが「0」のとき、積和/積差演算回路7Aは積和演算回路として動作する。
一方、制御信号Sが「1」のときには、積和/積差演算回路7Aは、今回の周期において取得された乗算値Cと、前回の周期において取得された乗算値Dから乗算値Cを減算した値D-Cとを時分割多重し、多重信号Q0を出力する。すなわち、制御信号Sが「1」のとき、積和/積差演算回路7Aは積差演算回路として動作する。
具体的には、積和/積差演算回路7Aは、乗算器70と、加算/減算器78と、セレクタ74と、フリップフロップ76とを有する。乗算器70は、多重信号XI_CIIおよび多重信号C_XIを乗算し、乗算値C(=XI_CII・C_XI)を出力する。乗算器70の出力信号Cは、加算/減算器78およびセレクタ74に入力される。
加算/減算器78は、乗算器70の出力信号C、フリップフロップ76の出力信号Dおよび制御信号Sを受ける。制御信号Sが「0」のとき、加算/減算器78は、出力信号Cと出力信号Dとを加算し、加算値C+Dを出力する。加算/減算器78の出力信号C+Dはセレクタ74に入力される。一方、制御信号Sが「1」のときには、加算/減算器78は、出力信号Dから出力信号Cを減算し、減算値D-Cを出力する。加算/減算器78の出力信号D-Cはセレクタ74に入力される。算/算器78は「加算/減算器」の一実施例に対応する。
セレクタ74は、乗算器70の出力信号Cおよび加算/減算器78の出力信号(加算値C+Dまたは減算値D-C)の入力を受ける。セレクタ74は、第2クロック信号CLK2の論理に応じて、これら2つの入力信号を時分割多重し、多重信号を出力する。具体的には、セレクタ74は、第2クロック信号CLK2の立上りのタイミングで加算/減算器78の出力信号を出力し、第2クロック信号CLK2の立下りのタイミングで乗算器70の出力信号Cを出力する。すなわち、セレクタ74から出力される多重信号には、第1クロック信号CLK1と同じ周期で加算値C+D(または減算値D-C)と、乗算値Cとが交互に現れる。フリップフロップ76は、Dフリップフロップであり、入力信号(セレクタ74の出力信号)を第1クロック信号CLK1の1周期遅延させて、多重信号Q0を出力する。
多重回路5は、積差/積和演算回路6Aから多重信号Q1を受け、積和/積差演算回路7Aから多重信号Q0を受ける。多重回路5は、入力された多重信号Q1と多重信号Q0とを時分割多重して、多重信号Qを出力する。
<複素乗算回路の動作>
次に、実施の形態3に係る複素乗算回路100Aの動作を説明する。上述したように、複素乗算回路100Aは、制御信号Sが「0」のとき、複素数Xおよび複素数Cの乗算値XCを出力する動作(複素乗算)を実行する。複素乗算回路100Aは、制御信号Sが「1」のとき、複素数Xの複素共役Xおよび複素数Cの乗算値XCを出力する動作(複素共役乗算)を実行する。
図7は、図6に示した複素乗算回路100Aの動作を示すタイムチャートである。図7に示すタイムチャートは、制御信号Sが「0」であるときの複素乗算回路100Aの動作を示している。
図7には上から順に、第1クロック信号CLK1、第2クロック信号CLK2、制御信号S、第1入力信号Xの実数部Re(X)および虚数部Im(X)、第2入力信号Cの実数部Re(C)および虚数部Im(C)の波形が示される。図7にはまた、多重回路1にて生成される多重信号Xおよび多重信号XI、多重回路2にて生成される多重信号Cおよび多重信号CI、フリップフロップ8にて生成される多重信号CII、多重回路3にて生成される多重信号XI_CII、ならびに多重回路4にて生成される多重信号C_XIの波形が示される。図7にはさらに、積差/積和演算回路6Aにて生成される多重信号Q1、積和/積差演算回路7Aにて生成される多重信号Q0、および多重回路5にて生成される多重信号Qの波形が示される。
図7に示すタイムチャートのうち、第1クロック信号CLK1、第2クロック信号CLK2、第1入力信号Xの実数部Re(X)および虚数部Im(X)、第2入力信号Cの実数部Re(C)および虚数部Im(C)、多重信号Xおよび多重信号XI、多重信号Cおよび多重信号CI、多重信号CII、多重信号XI_CII、ならびに多重信号C_XIの波形は、図2に示すタイムチャートにおけるこれらの信号の波形と同じである。
制御信号Sが「0」のときには、多重信号Q1および多重信号Q0は、図2および図3に示す多重信号Q0および多重信号Q1とそれぞれ同じである。したがって、多重信号Qも、図2および図3に示す多重信号Qと同じとなる。すなわち、多重信号Qは、複素数Xおよび複素数Cの乗算値XCの実数部および虚数部を時分割多重した多重信号となる。
図8および図9は、図6に示した複素乗算回路100Aの動作を示すタイムチャートである。図8および図9に示すタイムチャートは、制御信号Sが「1」であるときの複素乗算回路100Aの動作を示している。
図7と同様に、図8には上から順に、第1クロック信号CLK1、第2クロック信号CLK2、制御信号S、第1入力信号Xの実数部Re(X)および虚数部Im(X)、第2入力信号Cの実数部Re(C)および虚数部Im(C)、多重信号Xおよび多重信号XI、多重信号Cおよび多重信号CI、多重信号CII、多重信号XI_CII、ならびに多重信号C_XIの波形が示される。図8にはさらに、積差/積和演算回路6Aにて生成される多重信号Q1、積和/積差演算回路7Aにて生成される多重信号Q0、および多重回路5にて生成される多重信号Qの波形が示される。
図9には、図8のタイムチャートからクロック信号CLK1,CLK2、第1入力信号Xの実数部Re(X)および虚数部Im(X)、第2入力信号Cの実数部Re(C)および虚数部Im(C)、ならびに多重信号Q1,Q0,Qの波形を抽出して示される。
図8に示すタイムチャートのうち、第1クロック信号CLK1、第2クロック信号CLK2、第1入力信号Xの実数部Re(X)および虚数部Im(X)、第2入力信号Cの実数部Re(C)および虚数部Im(C)、多重信号Xおよび多重信号XI、多重信号Cおよび多重信号CI、多重信号CII、多重信号XI_CII、ならびに多重信号C_XIの波形は、図7に示すタイムチャートにおけるこれらの信号の波形と同じである。
制御信号Sが「1」のときには、積差/積和演算回路6Aにおいて、乗算器60は、第1クロック信号CLK1に同期して、多重信号XIおよび多重信号CIを乗算する。乗算器60の乗算値Bには、第1クロック信号CLK1に同期して、実数部Re(X)および実数部Re(C)の乗算値と、虚数部Im(X)および虚数部Im(C)の乗算値とが交互に現れる。減算/加算器68は、前回の周期において取得された乗算値Aと今回の周期において取得された乗算値Bとを加算する。
セレクタ64は、第2クロック信号CLK2の立上りのタイミングで乗算器60の乗算値Bを出力し、第2クロック信号CLK2の立下りのタイミングで減算/加算器68の加算値A+Bを出力する。セレクタ64から出力される多重信号には、第1クロック信号CLK1と同じ周期で乗算値Bと、加算値A+Bとが交互に現れる。フリップフロップ66は、入力信号(セレクタ64の出力信号)を第1クロック信号CLK1の1周期遅延させた多重信号Q1を出力する。
図8および図9に示すように、多重信号Q1は、第1クロック信号CLK1に同期して、実数部Re(C0)および実数部Re(X0)の乗算値[Re(C0)Re(X0)],乗算値[Re(C0)Re(X0)]に虚数部Im(C0)および虚数部Im(X0)の乗算値[Im(C0)Im(I0)]を加算した値{Re(C0)Re(X0)+Im(C0)Im(X0)},実数部Re(X1)および実数部Re(C1)の乗算値[Re(C1)Re(X1)],乗算値[Re(C1)Re(X1)]に虚数部Im(C1)および虚数部Im(C1)の乗算値[Im(X1)Im(C1)]を加算した値{Re(C1)Re(X1)+Im(C1)Im(X1)},・・・の順に変化する。すなわち、多重信号Q1は、実数部Re(C)および実数部Re(X)の乗算値[Re(C)Re(X)]と、実数部Re(C)および実数部Re(X)の乗算値に虚数部Im(C)および虚数部Im(X)の乗算値を加算した値{Re(C)Re(X)+Im(C)Im(X)}とを時分割多重した多重信号となる。
積和/積差演算回路7Aは、多重信号XI_CIIおよび多重信号C_XIの入力を受ける。上述したように、多重信号XI_CIIは、第1入力信号Xの実数部Re(X)および第2入力信号Cの実数部Re(C)を時分割多重した多重信号である。多重信号C_XIは、第2入力信号Cの虚数部Im(C)および第1入力信号Xの虚数部Im(X)を時分割多重した多重信号である。
積和/積差演算回路7Aにおいて、乗算器70は、第1クロック信号CLK1に同期して、多重信号XI_CIIおよび多重信号C_XIを乗算する。乗算器70の乗算値Cには、第1クロック信号CLK1に同期して、虚数部Im(C)および実数部Re(X)の乗算値と、実数部Re(C)および虚数部Im(X)の乗算値とが交互に現れる。加算/減算器78は、前回の周期において取得された乗算値Dから今回の周期において取得された乗算値Cを減算する。
セレクタ74は、第2クロック信号CLK2の立下りのタイミングで乗算器70の乗算値Cを出力し、第2クロック信号CLK2の立上りのタイミングで減算値D-Cを出力する。セレクタ74から出力される多重信号には、第1クロック信号CLK1と同じ周期で乗算値Cと、減算値D-Cとが交互に現れる。フリップフロップ76は、入力信号(セレクタ74の出力信号)を第1クロック信号CLK1の1周期遅延させた多重信号Q0を出力する。
図8および図9に示すように、多重信号Q0は、第1クロック信号CLK1に同期して、虚数部Im(C0)および実数部Re(X0)の乗算値[Im(C0)Re(X0)],乗算値[Im(C0)Re(X0)]から実数部Re(C0)および虚数部Im(X0)の乗算値[Re(C0)Im(X0)]を減算した値{Im(C0)Re(X0)-Re(C0)Im(X0)},虚数部Im(C1)および実数部Re(X1)の乗算値[Im(C1)Re(X1)],乗算値[Im(C1)Re(X1)]から実数部Re(C1)および虚数部Im(X1)の乗算値[Re(C1)Im(X1)]を減算した値{Im(C1)Re(X1)-Re(C1)Im(X1)},・・・の順に変化する。すなわち、多重信号Q0は、虚数部Im(C)および実数部Re(X)の乗算値[Im(C)Re(X)]と、虚数部Im(C)および実数部Re(X)の乗算値から実数部Re(C)および虚数部Im(X)の乗算値を減算した値{Im(C)Re(X)-Re(C)Im(X)}とを時分割多重した多重信号となる。
なお、多重信号Q0は、多重信号Q1に対して第1クロック信号CLK1の1周期分遅延している。これは、積差/積和演算回路6Aに入力される多重信号XI,CIに対して、積和/積差演算回路7Aに入力される多重信号XI_CII,C_XIが第1クロック信号CLK1の1周期分遅延していることによる。
多重回路5において、セレクタ50は、多重信号Q1および多重信号Q0の入力を受けると、第2クロック信号CLK2の立下りのタイミングで多重信号Q0を出力し、第2クロック信号CLK2の立上りのタイミングで多重信号Q1を出力する。よって、セレクタ50から出力される多重信号には、第1クロック信号CLK1に同期して、多重信号Q1および多重信号Q0が交互に現れる。フリップフロップ52は、セレクタ50の出力信号を第1クロック信号CLK1の1周期遅延させた多重信号Qを出力する。図8および図9に示すように、多重信号Qは、第1クロック信号CLK1に同期して、多重信号Q1(=加算値{Re(C0)Re(X0)+Im(C0)Im(X0)}、多重信号Q0(=減算値{Im(C0)Re(X0)-Re(C0)Im(X0)}、多重信号Q1(=加算値{Re(C1)Re(X1)+Im(C1)Im(X1)}、多重信号Q0(=減算値{Im(C1)Re(X1)-Re(C1)Im(X1)},・・・の順に変化する。すなわち、多重信号Qは、加算値{Re(C)Re(X)+Im(C)Im(X)}および減算値{Im(C)Re(X)-Re(C)Im(X)}を時分割多重した多重信号となる。
ここで、複素数Xの複素共役Xおよび複素数Cを次式(4),(5)のようにそれぞれ表すと(iは虚数単位)、複素共役Xおよび複素数Cの乗算値XCは、次式(6)のように表される。
=Re(X)-Im(X)i ・・・(4)
C=Re(C)+Im(C)i ・・・(5)
C={Re(X)Re(C)+Im(X)Im(C)}+{Im(C)Re(X)-Re(C)Im(X)}i ・・・(6)
式(6)の右辺と多重信号Qとを比較すると、右辺第1項の実数部は多重信号Qにおける加算値に対応しており、右辺第2項の虚数部は多重信号Qにおける減算値に対応している。すなわち、多重信号Qは、複素共役Xおよび複素数Cの乗算値XCの実数部および虚数部を時分割多重した多重信号となっていることが分かる。
以上説明したように、実施の形態3に係る複素乗算回路は、制御信号Sが「1」のときには、2つの複素数X,Cの各々を実数部および虚数部が時分割多重された多重信号XI,CIに変換し、生成された2つの多重信号XI,CIを演算することにより、乗算値XCとして、実数部および虚数部が時分割多重された多重信号Qを出力するように構成される。
一方、実施の形態3に係る複素乗算回路は、制御信号Sが「0」のときには、実施の形態1に係る複素乗算回路と同様に、乗算値XCとして、実数部および虚数部が時分割多重された多重信号Qを出力するように構成される。
このように、実施の形態3に係る複素乗算回路は、制御信号Sに応じて、複素数Xおよび複素数Cの乗算値XCを演算する動作と、複素数Xの複素共役Xおよび複素数Cの乗算値XCを演算する動作とを選択的に実行することができる。上記構成において、2つの多重信号XI,CIを演算処理する回路を、2個の乗算器60,70と、1個の減算/加算器68と、1個の加算/減算器78とを有する構成とすることができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1,2,3,4,5 多重回路、6 積差演算回路、6A 積差/積和演算回路、7 積和演算回路、7A 積和/積差演算回路、8 フリップフロップ、9 クロック生成回路、10,20,30,40,50,64,74 セレクタ、12,22,32,42,52,66,76 フリップフロップ、60,70 乗算器、62 減算器、68 減算/加算器、72 加算器、78 加算/減算器、100,100A 複素乗算回路、X,C 入力信号(複素数)、Q 出力信号(複素乗算値)、CLK1 第1クロック信号、CLK2 第2クロック信号。

Claims (10)

  1. 第1の複素数および第2の複素数を乗算する複素乗算回路であって、
    前記第1の複素数は、第1の実数部および第1の虚数部を有し、
    前記第2の複素数は、第2の実数部および第2の虚数部を有し、
    前記第1の実数部および前記第1の虚数部を時分割多重した第1の多重信号を生成する第1の多重回路と、
    前記第2の実数部および前記第2の虚数部を時分割多重した第2の多重信号を生成する第2の多重回路と、
    前記第1の多重信号および前記第2の多重信号の積差演算を行なう積差演算回路と、
    前記第1の実数部および前記第2の実数部を時分割多重した第3の多重信号を生成する第3の多重回路と、
    前記第2の虚数部および前記第1の虚数部を時分割多重した第4の多重信号を生成する第4の多重回路と、
    前記第3の多重信号および前記第4の多重信号の積和演算を行なう積和演算回路と、
    前記積差演算回路の出力値および前記積和演算回路の出力値を時分割多重した第5の多重信号を生成する第5の多重回路とを備える、複素乗算回路。
  2. 前記積差演算回路は、前記第1の実数部および前記第2の実数部の乗算値と、前記第1の実数部および前記第2の実数部の乗算値から前記第1の虚数部および前記第2の虚数部の乗算値を減算した減算値とを時分割多重して出力し、
    前記積和演算回路は、前記第1の実数部および前記第2の虚数部の乗算値と、前記第1の実数部および前記第2の虚数部の乗算値と前記第2の実数部および前記第1の虚数部の乗算値とを加算した加算値とを時分割多重して出力し、
    前記第5の多重回路は、前記減算値および前記加算値を時分割多重することにより、前記第5の多重信号を生成する、請求項1に記載の複素乗算回路。
  3. 前記積差演算回路は、
    前記第1の多重信号および前記第2の多重信号を乗算する第1の乗算器と、
    前回の周期における前記第1の乗算器の乗算値から今回の周期における前記第1の乗算器の乗算値を減算する減算器とを含む、請求項2に記載の複素乗算回路。
  4. 前記積和演算回路は、
    前記第3の多重信号および前記第4の多重信号を乗算する第2の乗算器と、
    前回の周期における前記第2の乗算器の乗算値と今回の周期における前記第2の乗算器の乗算値とを加算する加算器とを含む、請求項2に記載の複素乗算回路。
  5. 前記第1の複素数および前記第2の複素数の周波数の2倍の周波数を有する第1クロック信号を2分周することにより、第2クロック信号を生成するクロック生成回路をさらに備え、
    前記第1から第5の多重回路、前記積差演算回路および前記積和演算回路の各々は、
    前記第2クロック信号の論理に応じて、2つの入力信号を時分割多重するセレクタと、
    前記セレクタの出力信号を前記第1クロック信号の1周期遅延させた信号を出力するフリップフロップとを含む、請求項1から4のいずれか1項に記載の複素乗算回路。
  6. 制御信号に応じて、第1の複素数および第2の複素数を乗算する動作と、前記第1の複素数の複素共役および前記第2の複素数を乗算する動作とを選択的に行なう複素乗算回路であって、
    前記第1の複素数は、第1の実数部および第1の虚数部を有し、
    前記第2の複素数は、第2の実数部および第2の虚数部を有し、
    前記第1の実数部および前記第1の虚数部を時分割多重した第1の多重信号を生成する第1の多重回路と、
    前記第2の実数部および前記第2の虚数部を時分割多重した第2の多重信号を生成する第2の多重回路と、
    前記制御信号が第1のレベルのときに、前記第1の多重信号および前記第2の多重信号の積差演算を行ない、前記制御信号が第2のレベルのときに、前記第1の多重信号および前記第2の多重信号の積和演算を行なう積差/積和演算回路と、
    前記第1の実数部および前記第2の実数部を時分割多重した第3の多重信号を生成する第3の多重回路と、
    前記第2の虚数部および前記第1の虚数部を時分割多重した第4の多重信号を生成する第4の多重回路と、
    前記制御信号が前記第1のレベルときに、前記第3の多重信号および前記第4の多重信号の積和演算を行ない、前記制御信号が前記第2のレベルのときに、前記第3の多重信号および前記第4の多重信号の積差演算を行なう積和/積差演算回路と、
    前記積差/積和演算回路の出力値および前記積和/積差演算回路の出力値を時分割多重した第5の多重信号を生成する第5の多重回路とを備える、複素乗算回路。
  7. 前記積差/積和演算回路は、
    前記制御信号が前記第1のレベルのときに、前記第1の実数部および前記第2の実数部の乗算値と、前記第1の実数部および前記第2の実数部の乗算値から前記第1の虚数部および前記第2の虚数部の乗算値を減算した減算値とを時分割多重して出力し、
    前記制御信号が前記第2のレベルのときに、前記第1の実数部および前記第2の実数部の乗算値と、前記第1の実数部および前記第2の実数部の乗算値と前記第1の虚数部および前記第2の虚数部の乗算値とを加算した加算値とを時分割多重して出力し、
    前記積和/積差演算回路は、
    前記制御信号が前記第1のレベルのときに、前記第1の実数部および前記第2の虚数部の乗算値と、前記第1の実数部および前記第2の虚数部の乗算値と前記第2の実数部および前記第1の虚数部の乗算値とを加算した加算値とを時分割多重して出力し、
    前記制御信号が前記第2のレベルのときに、前記第1の実数部および前記第2の虚数部の乗算値と、前記第1の実数部および前記第2の虚数部の乗算値から前記第2の実数部および前記第1の虚数部の乗算値を減算した減算値とを時分割多重して出力する、請求項6に記載の複素乗算回路。
  8. 前記積差/積和演算回路は、
    前記第1の多重信号および前記第2の多重信号を乗算する第1の乗算器と、
    前記制御信号が前記第1のレベルのときに、前回の周期における前記第1の乗算器の乗算値から今回の周期における前記第1の乗算器の乗算値を減算し、前記制御信号が前記第2のレベルのときに、前回の周期における前記第1の乗算器の乗算値と今回の周期における前記第1の乗算器の乗算値とを加算する減算/加算器とを含む、請求項7に記載の複素乗算回路。
  9. 前記積和/積差演算回路は、
    前記第3の多重信号および前記第4の多重信号を乗算する第2の乗算器と、
    前記制御信号が前記第1のレベルのときに、前回の周期における前記第2の乗算器の乗算値と今回の周期における前記第2の乗算器の乗算値とを加算し、前記制御信号が前記第2のレベルのときに、前回の周期における前記第2の乗算器の乗算値から今回の周期における前記第2の乗算器の乗算値を減算する加算/減算器とを含む、請求項7に記載の複素乗算回路。
  10. 前記第1の複素数および前記第2の複素数の周波数の2倍の周波数を有する第1クロック信号を2分周することにより、第2クロック信号を生成するクロック生成回路をさらに備え、
    前記第1から第5の多重回路、前記積差/積和演算回路および前記積和/積差演算回路の各々は、
    前記第2クロック信号の論理に応じて、2つの入力信号を時分割多重するセレクタと、
    前記セレクタの出力信号を前記第1クロック信号の1周期遅延させた信号を出力するフリップフロップとを含む、請求項6から9のいずれか1項に記載の複素乗算回路。
JP2021575626A 2020-02-06 2020-12-02 複素乗算回路 Active JP7317151B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2020018788 2020-02-06
JP2020018788 2020-02-06
PCT/JP2020/044792 WO2021157172A1 (ja) 2020-02-06 2020-12-02 複素乗算回路

Publications (3)

Publication Number Publication Date
JPWO2021157172A1 JPWO2021157172A1 (ja) 2021-08-12
JPWO2021157172A5 JPWO2021157172A5 (ja) 2022-08-17
JP7317151B2 true JP7317151B2 (ja) 2023-07-28

Family

ID=77200456

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021575626A Active JP7317151B2 (ja) 2020-02-06 2020-12-02 複素乗算回路

Country Status (3)

Country Link
US (1) US20230029006A1 (ja)
JP (1) JP7317151B2 (ja)
WO (1) WO2021157172A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12045612B2 (en) * 2022-09-12 2024-07-23 International Business Machines Corporation Special-purpose digital-compute hardware for efficient element-wise aggregation, scaling and offset

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008506191A (ja) 2004-07-08 2008-02-28 アソクス リミテッド 可変サイズの高速直交変換を実施する方法および機器
JP5752959B2 (ja) 2011-03-10 2015-07-22 株式会社三共 遊技機関連情報配信システム、遊技機関連情報配信装置および携帯端末用アプリケーションプログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5752959A (en) * 1980-09-11 1982-03-29 Mitsubishi Electric Corp Multiplier
KR100255868B1 (ko) * 1997-06-28 2000-05-01 김영환 2의 보수 복소수 곱셈기

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008506191A (ja) 2004-07-08 2008-02-28 アソクス リミテッド 可変サイズの高速直交変換を実施する方法および機器
JP5752959B2 (ja) 2011-03-10 2015-07-22 株式会社三共 遊技機関連情報配信システム、遊技機関連情報配信装置および携帯端末用アプリケーションプログラム

Also Published As

Publication number Publication date
JPWO2021157172A1 (ja) 2021-08-12
WO2021157172A1 (ja) 2021-08-12
US20230029006A1 (en) 2023-01-26

Similar Documents

Publication Publication Date Title
Güneysu et al. Ultra high performance ECC over NIST primes on commercial FPGAs
Amanor et al. Efficient hardware architectures for modular multiplication on FPGAs
Kim et al. Asynchronous implementation of 1024-bit modular processor for RSA cryptosystem
Liu et al. A design and implementation of montgomery modular multiplier
Butler et al. Fast hardware computation of x mod z
JP7317151B2 (ja) 複素乗算回路
Néto et al. A parallel k-partition method to perform Montgomery multiplication
JPWO2021157172A5 (ja)
Kaihara et al. Bipartite modular multiplication
WO2021169158A1 (zh) 分频器和电子设备
Zhengbing et al. An efficient architecture of 1024-bits cryptoprocessor for RSA cryptosystem based on modified Montgomery's algorithm
Safari et al. Novel implementation of full adder based scaling in Residue Number Systems
EP2418773A1 (en) Glitch-free switchable FIR-filter
JP2005045507A (ja) 非整数分周器
US6441666B1 (en) System and method for generating clock signals
KR940001683A (ko) 레이트 컨버터
Gbolagade et al. A residue to binary converter for the {2n+ 2, 2n+ 1, 2n} moduli set
Mo et al. Design of an 8192-bit RNS montgomery multiplier
JP2005020554A (ja) デジタルフィルタ
Wu et al. A Karatsuba algorithm based accelerator for pairing computation
Swann et al. An improved hardware architecture for modulo without multiplication
KR100617141B1 (ko) 디지털 필터
KR100253181B1 (ko) 다중 클럭신호 발생회로
JP2009027335A (ja) フィルタ回路および方法
KR920006437B1 (ko) 프로그램에 의한 각종 파형 발생회로

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220602

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220602

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230620

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230718

R150 Certificate of patent or registration of utility model

Ref document number: 7317151

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150