JP2012175447A - データ転送回路 - Google Patents
データ転送回路 Download PDFInfo
- Publication number
- JP2012175447A JP2012175447A JP2011036110A JP2011036110A JP2012175447A JP 2012175447 A JP2012175447 A JP 2012175447A JP 2011036110 A JP2011036110 A JP 2011036110A JP 2011036110 A JP2011036110 A JP 2011036110A JP 2012175447 A JP2012175447 A JP 2012175447A
- Authority
- JP
- Japan
- Prior art keywords
- data
- input
- output
- flop
- flip
- 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.)
- Withdrawn
Links
Images
Landscapes
- Information Transfer Systems (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
【課題】異なるクロックのデータ転送を行うときに、パルスストレッチ回路を用いることなく、不正な値が転送されないようにすることを目的とする。
【解決手段】クロックCLK−Aで動作する入力側回路部2とクロックCLK−Bで動作する出力側回路部3とを有し、データData−Aを出力データData−Bとして出力させる回路であって、入力側回路部2に設けられ、入力データData−Aを入力して中間データMidとして出力する入力側フリップフロップ4と、出力側回路3に設けられ、中間データMidを入力して出力データData−Bとして出力させる出力側フリップフロップ5と、出力側フリップフロップ5が中間データMidを入力するときには、中間データMidを固定値として出力するように入力側フリップフロップ4を制御する制御部6と、を備えたことを特徴とする。
【選択図】 図1
【解決手段】クロックCLK−Aで動作する入力側回路部2とクロックCLK−Bで動作する出力側回路部3とを有し、データData−Aを出力データData−Bとして出力させる回路であって、入力側回路部2に設けられ、入力データData−Aを入力して中間データMidとして出力する入力側フリップフロップ4と、出力側回路3に設けられ、中間データMidを入力して出力データData−Bとして出力させる出力側フリップフロップ5と、出力側フリップフロップ5が中間データMidを入力するときには、中間データMidを固定値として出力するように入力側フリップフロップ4を制御する制御部6と、を備えたことを特徴とする。
【選択図】 図1
Description
本発明は、異なるクロックでデータの転送を行うデータ転送回路に関するものである。
クロックの異なる回路間でデータの転送を行うためにデータ転送回路が用いられる。このデータ転送回路としては例えば特許文献1に開示された技術がある。図8を用いてデータ転送回路の一例を説明する。この図のデータ転送回路101は入力側回路部102と出力側回路部103とに分かれており、入力側回路部102に入力データData−Aが入力される。入力側回路部102と出力側回路部103とはクロック境界を挟んで、動作するクロックが異なっている。
出力側回路部103は第1のフリップフロップ104と第2のフリップフロップ105とを備えて構成している。第1のフリップフロップ104は入力側回路部102から入力されるN(Nは2以上の整数)ビットの入力データData−Aを保持する。そして、第1のフリップフロップ104は保持した入力データData−Aを中間データMidとして第2のフリップフロップ105に出力する。第2のフリップフロップ105はNビットの中間データMidを入力して保持する値を更新する。そして、保持した中間データMidを出力データData−Bとして出力する。
第1のフリップフロップ104および第2のフリップフロップ105は出力側回路部103のクロックCLK−Bで動作を行っており、このクロックCLK−Bは入力側回路102のクロックCLK−Aとは異なっている。このために、第1のフリップフロップ104と第2のフリップフロップ105との二段のフリップフロップ構成としている。これにより、信号が不安定になるメタ・ステーブルが生じることを回避し、クロックCLK−Aの入力データData−AをクロックCLK−Bに同期させている。
第1のフリップフロップ104にはNビットの入力データData−Aが入力されているが、この入力データData−Aの各ビットが変化するタイミングは完全に同じタイミングとはなっておらず、ばらつきを生じる。これは、Nビットの各ビットでハイ(1)とロー(0)との値が変化するタイミングにずれを生じるためである。
そして、第1のフリップフロップ104および第2のフリップフロップ105は入力データData−AのクロックCLK−Aとは異なるクロックCLK−Bで動作している。よって、入力データData−Aが更新(変化)するタイミングと第1のフリップフロップ104が入力データData−Aを入力して保持する値を更新するタイミングとが重なることがある。そして、このときに更新した値を第1のフリップフロップ104は中間データMidとして出力し、第2のフリップフロップ105に出力する。第2のフリップフロップ105はこの中間データMidを出力データData−Bとして出力する。
図9は図8の構成のタイミングチャートを示しており、入力データData−Aが値#1から値#2に更新されたときに第1のフリップフロップ104は自身の値を更新している。そして、更新した値を中間データMidとして出力している。図10は図9のAの領域、つまり入力データData−Aが更新され、且つそのタイミングで第1のフリップフロップ104が中間データMidの値として更新している箇所を示している。
入力データData−AはクロックCLK−Aの立ち上がりエッジのタイミングで変化するが、各ビットで変化するタイミングにばらつきを生じている。そして、第1のフリップフロップ104が入力データData−Aを入力して中間データMidとして値を出力するタイミングは、クロックCLK−Aと同期されていないクロックCLK−Bである。
図10では、クロックCLK−Aの立ち上がりエッジのタイミングでbit0から2まで全て「0」から「1」に変化する。ただし、各ビットで変化するタイミングにばらつきを生じている。そして、クロックCLK−Aとほぼ同じタイミングでクロックCLK−Bが立ち上がり、そのエッジのタイミングで第1のフリップフロップ104は入力データData−Aを入力して、中間データMidとして値を出力している。
クロックCLK−Bの立ち上がりエッジのタイミングでは、bit0は「1」に変化しているものの、bit1および2は依然として「0」のままである。本来ならbit0から2まで「1」になっている値#2が第1のフリップフロップ104に入力されて保持されなければならない。しかし、クロックCLK−Bの立ち上がりエッジのタイミングでは、bit0のみが「1」であり、bit1および2が「0」である値#1'が入力されて保持される。つまり、不正な値が保持される。
この不正な値が中間データMidとなり、第2のフリップフロップ105が出力データData−Bとして出力する。これにより、出力結果が不正になる。つまり、本来の値とは異なる不正なデータが転送されることになる。この不正なデータの転送を回避するために図11のデータ転送回路110を用いることができる。
このデータ転送回路110は入力側回路部111と出力側回路部112と入力側フリップフロップ113と出力側フリップフロップ114とパルスストレッチ回路115と二段フリップフロップ(図中では2段FF)116とトリガ出力フリップフロップ117とを備えて構成している。
入力側回路部111はクロックCLK−Aの周波数で動作する回路部であり、出力側回路部112はクロックCLK−Bの周波数で動作する回路部である。入力側回路部111と出力側回路部112とはクロック境界を挟んで分割されており、クロックCLK−AとCLK−Bとは異なる周波数になっている。
入力側フリップフロップ113は入力データData−Aを入力して保持し、保持した値を中間データMidとして出力する。出力側フリップフロップ114は入力側フリップフロップ113が出力した中間データMidを入力して保持する。そして、保持した値を出力データData−Bとして出力する。
パルスストレッチ回路115はデータ更新トリガTrig−Aを入力する。このデータ更新トリガTrig−AはクロックCLK−Aに同期した1ビットの信号になっており、入力データData−Aが更新されたことを示している。パルスストレッチ回路115はデータ更新トリガTrig−Aのパルス幅をクロックCLK−AからCLK−Bのパルス幅に変換する。この変換後の信号を1ビットのストレッチ信号Strとして出力する。
ストレッチ信号Strは二段フリップフロップ116に入力される。二段フリップフロップ116は2つのフリップフロップ116Aとフリップフロップ116Bとを有して構成されている。二段のフリップフロップ116Aおよび116Bを設けることにより、クロックCLK−Aのストレッチ信号StrをクロックCLK−Bに同期したイネーブル信号ENBとしている。
イネーブル信号ENBはトリガ出力フリップフロップ117に入力されて、データ更新トリガTrig−Bとして外部の回路に出力される。また、イネーブル信号ENBは出力側フリップフロップ114に入力されて、出力側フリップフロップ114の制御を行っている。
図12は図11の構成のタイミングチャートを示している。入力側フリップフロップ113に入力される入力データData−Aが更新されるタイミングでデータ更新トリガTrig−Aの値が「1」になる。このデータ更新トリガTrig−Aは入力側フリップフロップ113の制御を行っており、データ更新トリガTrig−Aが「1」になることにより、入力データData−Aを入力して保持する値を更新させる。そして、保持した値が中間データMidとして出力される。
データ更新トリガTrig−Aはパルスストレッチ回路115にも入力されており、パルスストレッチ回路115によりパルス幅がクロックCLK−AからクロックCLK−Bに変換されてストレッチ信号Strが生成される。このストレッチ信号Strは二段フリップフロップ116に入力されて、クロックCLK−Bに同期したイネーブル信号ENBとして出力される。
このイネーブル信号ENBにより出力側フリップフロップ114は中間データMidを入力して値を更新する。そして、出力データData−Bとして出力する。よって、出力側フリップフロップ114が値を更新するのは、データ更新トリガTrig−Aをパルスストレッチ回路115でパルス幅を変換し、二段フリップフロップ116でクロックCLK−Bに同期させた後になっている。
このため、入力データData−Aが変化するタイミングと出力側フリップフロップ114が中間データMidを入力して保持する値を更新するタイミングとが重なることがなくなる。よって、入力データData−Aが変化している最中に中間データMidを取得することがなく、不正な値が転送されることがなくなる。
入力側回路部111のクロックCLK−Aよりも出力側回路部112のクロックCLK−Bが高速に動作するときには、パルスストレッチ回路115によるパルス幅の変換は要しない。一方、クロックCLK−BよりもクロックCLK−Aが高速なときには、出力側回路部3でクロックCLK−Aで動作する信号のクロックを認識することができなくなる。よって、この場合には、パルスストレッチ回路115によるパルス幅の変換が必要となる。
このため、クロックCLK−AとCLK−Bとの大小関係によってパルスストレッチ回路115の要否が決まる。そして、パルスストレッチ回路115のパルス幅の変換は、クロックCLK−AとCLK−Bとの比によって決まる。例えば、クロックCLK−AがCLK−Bの2倍の場合にはパルス幅を2倍に変換し、3倍の場合にはパルス幅を3倍に変換する。
従って、入力側回路部111のクロックCLK−Aと出力側回路部112のクロックCLK−Bとの大小関係およびその比によって、パルスストレッチ回路115の要否およびその仕様が異なるようになる。前記の例でいえば、パルスストレッチ回路115は2倍に変換する仕様が要求される場合もあれば、3倍に変換する仕様が要求される場合もある。
クロックCLK−AとクロックCLK−Bとは固定された関係にはなっておらず、その大小関係および比は適宜に変化する。このため、仕様に応じたパルスストレッチ回路115を用意しなければならず、パルスストレッチ回路115の設計や検証工数が増大する。
また、図11の構成でも、やはり不正なデータ転送を生じることがある。図13のタイミングチャートを用いて説明する。中間データMidもNビットのデータであり、各ビットの値が変化するタイミングにばらつきを生じる。出力側フリップフロップ114は中間データMidを入力して保持する値を更新するが、入力側フリップフロップ113のクロックCLK−Aと出力側フリップフロップ114のクロックCLK−Bとは同期が取れていない。
このため、中間データMidが変化している途中のタイミングと出力側フリップフロップ114が中間データMidを入力して値を更新するタイミングとが重なることがある。図14はこの状態を説明するための図13のBの領域を示している。この図に示すように、中間データMidの各ビットが変化するタイミングにはばらつきを生じている。
そして、これとほぼ同じタイミングで出力側フリップフロップ114は中間データMidを入力して値を更新し、出力データData−Bとして出力する。このため、中間データMidの変化途中の値を更新するため、本来の値#2ではなく、不正な値#1'が出力データData−Bとして出力される。つまり、不正な値が転送されることになる。
そこで、本発明は、異なるクロックのデータ転送を行うときに、パルスストレッチ回路を用いることなく、不正な値が転送されないようにすることを目的とする。
以上の課題を解決するため、本発明のデータ転送回路は、第1のクロックで動作する入力側回路部と前記第1のクロックとは異なる第2のクロックで動作する出力側回路部とを有し、前記入力側回路部に入力された入力データを前記出力側回路部から出力データとして出力させるデータ転送回路であって、前記入力側回路部に設けられ、前記入力データを入力して中間データとして出力する入力側フリップフロップと、前記出力側回路に設けられ、前記中間データを入力して出力データとして出力させる出力側フリップフロップと、前記出力側フリップフロップが前記中間データを入力するときには、前記中間データを固定値として出力するように前記入力側フリップフロップを制御する制御部と、を備えたことを特徴とするものである。
このデータ転送回路によれば、出力側フリップフロップが中間データを入力するときに、入力側フリップフロップは中間データを固定した値として出力している。これにより、中間データが変化している途中の値を出力側フリップフロップが入力することがなくなる。よって、パルスストレッチ回路を要することなく、不正な値が転送されることがなくなる。
また、前記制御部は、前記出力側フリップフロップに前記中間データの入力を開始させてから終了させるまでの間は前記入力側フリップフロップに前記入力データを入力させず、それ以外の間に前記入力側フリップフロップに前記入力データを入力させる制御を行うようにしてもよい。
出力側フリップフロップが中間データの入力を開始してから終了するまでの間に入力側フリップフロップの値を更新させないように制御することで、値が変化している途中のデータを入力することがなくなり、不正な値が転送されなくなる。
また、前記制御部は、前記出力側フリップフロップの制御を行う制御信号を前記出力側回路部に出力し、この出力側回路部に出力された前記制御信号を入力して、前記入力側フリップフロップの制御を行うようにしてもよい。
出力側フリップフロップを制御するために出力側回路部に出力した信号を再び入力側回路部の制御部に戻して入力していることで、出力側フリップフロップが値を入力して更新するときに中間データが変化しないように制御することができる。
また、前記出力側回路部に設けられ、前記第1のクロックの前記制御信号を前記第2のクロックに同期させる出力側二段フリップフロップと、前記入力側回路部に設けられ、前記第2のクロックの前記制御信号を前記第1のクロックに同期させる入力側二段フリップフロップと、を備えるようにしてもよい。
出力側二段フリップフロップと入力側二段フリップフロップとを設けることで、入力側回路と出力側回路との間でデータを入出力するときに、メタ・ステーブルの影響なく相手方のクロックに信号を同期させることができる。
また、前記制御部に前記入力データの値が更新されたか否かを示すデータ更新トリガを入力し、このデータ更新トリガを前記入力データの1クロックの前後の値を比較して生成するトリガ生成回路により生成してもよい。トリガ生成回路が1クロックの前後の値を比較することで、データ更新トリガを生成することができる。
本発明は、出力側フリップフロップが中間データを入力して保持する値を更新するときに、入力側フリップフロップは中間データを固定した値として出力している。これにより、中間データが変化しているときに出力側フリップフロップが入力することがなくなり、不正な値を転送されることを回避できるようになる。
以下、図面を参照して本発明の実施形態について説明する。図1は本実施形態のデータ転送回路1を示している。データ転送回路1は入力側および出力側に所定の回路が接続されており、入力側に接続された回路から入力したデータを出力側に接続された回路に出力する。データ転送回路1に入力される前のデータと出力した後のデータとでは信号の周波数(クロック)が異なっている。なお、データ転送回路1に入力される前のデータと出力した後のデータにおいて、周波数が同じだが同期していない(位相がずれている)場合でも、この回路は有効に機能する。
データ転送回路1は、クロック境界を挟んで入力側回路部2と出力側回路部3とに領域が分割されている。入力側回路部2はクロックCLK−A(第1のクロック)で動作を行っており、出力側回路部3はクロックCLK−B(第2のクロック)で動作を行っている。クロックCLK−AとクロックCLK−Bとは異なる周波数になっており、その大小関係は任意に設定できる。
データ転送回路1は入力側フリップフロップ4と出力側フリップフロップ5と制御部6と出力側二段フリップフロップ(図中では出力側2段FF)7と信号検出部8とトリガ出力フリップフロップ9と入力側二段フリップフロップ(図中では出力側2段FF)10とを備えて構成している。
このうち、入力側フリップフロップ4と制御部6と入力側二段フリップフロップ10とは入力側回路部2に設けられる。また、出力側フリップフロップ5と出力側二段フリップフロップ7と信号検出部8とトリガ出力フリップフロップ9とは出力側回路部3に設けられる。
入力側フリップフロップ4はデータ転送回路1に入力されるN(Nは2以上の整数)ビットの入力データData−Aを入力して保持するNビットのフリップフロップである。入力側フリップフロップ4はクロックCLK−Aの周波数で動作を行っており、入力側イネーブル信号ENB−Aが「1」であり、且つクロックCLK−Aの立ち上がりエッジにおいて入力データData−Aを入力して、保持する値を更新する。そして、更新した値を中間データMidとして出力する。
出力側フリップフロップ5は入力側フリップフロップ4が出力するNビットの中間データMidを入力して、保持する値を更新する。出力側フリップフロップ5はクロックCLK−Bの周波数で動作を行っており、出力側イネーブル信号ENB−Bが「1」であり且つクロックCLK−Bの立ち上がりエッジにおいて中間データMidを入力して、保持する値を更新する。そして、更新した値をNビットの出力データData−Bとして出力する。
制御部6はデータ更新トリガTrig−Aおよび入力側アクノレッジ信号ACK−Aを入力して、これらの信号に基づいてレディ信号Readyおよびイネーブル信号ENB−Aを生成する。データ更新トリガTrig−Aは入力データData−Aの値が更新されるときに「1」になり、その他は「0」になっている1ビットの信号である。
図2に示すように、制御部6は4つの状態を遷移する状態遷移制御部(ステートマシン)になっている。初期値としては入力データ待機状態S1になっており、次に入力データホールド状態S2に遷移し、入力データレディ状態S3に遷移し、アクノレッジ待機状態S4に遷移した後に、再び入力データ待機状態S1に遷移する。
入力データ待機状態S1にあるときには、制御部6は1ビットのレディ信号Readyを「0」として出力し、1ビットの入力側イネーブル信号ENB−Aをデータ更新トリガTrig−Aの値として出力する。
データ更新トリガTrig−Aは入力データData−Aの値が更新されたタイミングで「0」から「1」に変化する。そして、データ更新トリガTrig―Aが「1」に変化したときに、入力データ待機状態S1から入力データホールド状態S2に遷移する。この状態では、制御部6はレディ信号Readyを「0」、入力側イネーブル信号ENB−Aを「0」として出力する。
入力データホールド状態S2から1クロック(クロックCLK−Aの1クロック)後に無条件に入力データレディ状態S3に遷移する。この入力データレディ状態S3では、制御部6はレディ信号Readyを「1」、入力側イネーブル信号ENB−Aを「0」として出力する。
入力データレディ状態S3のときに、入力側二段フリップフロップ10が出力する入力側アクノレッジ信号ACK−Aが「1」になると、アクノレッジ待機状態S4に遷移する。このアクノレッジ待機状態S4ではレディ信号Readyを「0」、入力側イネーブル信号ENB−Aを「0」として出力する。
アクノレッジ待機状態S4のときに入力側アクノレッジ信号ACK−Aが「0」に変化すると、入力データ待機状態S1に遷移する。従って、制御部6はデータ更新トリガTrig−Aおよび入力側アクノレッジ信号ACK−Aに基づいて、以上の4つの状態を循環して遷移するように制御する。
出力側二段フリップフロップ7は、各1ビットの二段のフリップフロップ7Aと7Bとを有して構成している。制御部6が出力する1ビットのレディ信号Readyはフリップフロップ7Aに入力されて保持され、次にフリップフロップ7Bに入力されて保持される。この保持した値をフリップフロップ7Bが1ビットの出力側アクノレッジ信号ACK−Bとして出力する。
レディ信号ReadyはクロックCLK−Aの周波数の信号であり、出力側二段フリップフロップ7はこのレディ信号Readyを出力側回路部3のクロックCLK−Bに同期した信号にする。この出力側二段フリップフロップ7により信号が不安定になるメタ・ステーブルの影響を回避できる。そして、出力側二段フリップフロップ7が出力する信号がクロックCLK−Bの出力側アクノレッジ信号ACK−Bとなる。
信号検出部8は出力側二段フリップフロップ7から出力される出力側アクノレッジ信号ACK−Bの立ち上がりエッジを検出して、クロックCLK−Bの1クロック周期分のハイ・パルス(「1」となる信号)を出力する。この出力される信号が出力側イネーブル信号ENB−Bとなる。出力されたイネーブル信号ENB−Bはトリガ出力フリップフロップ9と出力側フリップフロップ5とに入力される。
トリガ出力フリップフロップ9は入力した出力側イネーブル信号ENB−Bを入力して保持し、保持した値をデータ更新トリガTrig−Bとして出力する。よって、データ更新トリガTrig−Bは出力側イネーブル信号ENB−Bよりも1クロック分遅れたタイミングの信号として出力される。
入力側二段フリップフロップ10は各1ビットの二段のフリップフロップ10Aと10Bとを有して構成している。出力側二段フリップフロップ7から出力された出力側アクノレッジ信号ACK−Bは入力側二段フリップフロップ10に入力される。
入力側二段フリップフロップ10のフリップフロップ10Aに入力される出力側アクノレッジ信号ACK−Bが入力されて保持され、次にフリップフロップ10Bに入力されて保持される。そして、フリップフロップ10Bが保持した値が入力側アクノレッジ信号ACK−Aとして出力される。この入力側アクノレッジ信号ACK−Aは制御部6に入力される。
2段の入力側二段フリップフロップ10を介在させることにより、信号が不安定になるメタ・ステーブルの影響を回避できる。そして、クロックCLK−Bの出力側アクノレッジ信号ACK−BはクロックCLK−Aに同期した入力側アクノレッジ信号ACK−Aとなる。
レディ信号Ready、出力側アクノレッジ信号ACK−B、入力側アクノレッジ信号ACK−A、入力側イネーブル信号ENB−Aおよび出力側イネーブル信号ENB−Bは入力側フリップフロップ4および出力側フリップフロップ5の制御を行う制御信号となる。当該制御信号に基づいて、入力側フリップフロップ4および出力側フリップフロップ5はデータを入力して値を更新するか否かの制御を行う。
次に、図3のタイミングチャートを用いて動作について説明する。この図では、クロックCLK−AとCLK−Bとは「CLK−A>CLK−B」の場合について説明している。勿論、後述するように「CLK−A<CLK−B」であってもよい。まず、初期状態(時刻T1)では、制御部6の状態は入力データ待機状態S1になっている。また、CLK−A=CLK−Bであっても、同等に機能し、同等の効果がある。
データ転送回路1の前段の他の回路よりNビットの入力データData−Aが入力される。このタイミングで入力データData−Aは値#1に更新される。よって、データ更新トリガTrig−Aは「1」になり、このデータ更新トリガTrig−Aは次のクロックの立ち上がりエッジで「0」に戻る。
この入力データ待機状態S1のときには、レディ信号Readyは「0」として出力している。そして、データ更新トリガTrig−Aが「1」に変化している。入力データ待機状態S1では、入力側イネーブル信号ENB−Aはデータ更新トリガTrig−Aの値を出力する。よって、入力側イネーブル信号ENB−Aは「1」に変化する。これにより、入力側フリップフロップ4は入力データData−Aの入力を値#1に更新する。そして、クロックCLK−Aの次の時刻T2で中間データMidとして値#1が出力される。
入力側イネーブル信号ENB−Aが「1」に変化するのは、入力データ待機状態S1であり且つデータ更新トリガTrig−Aが「1」に変化したときのみである。よって、それ以外のときには、入力側フリップフロップ4は中間データMidの値#1を継続的に保持し続ける。
前述したように、データ更新トリガTrig−Aは「1」となっている。よって、次のクロックの時刻T2において、制御部6の状態は入力データホールド状態S2に遷移する。この状態では、制御部6はレディ信号Readyを「0」、入力側イネーブル信号ENB−Aを「0」として出力する。
次の時刻T3において、制御部6は無条件で入力データレディ状態S3に遷移する。このときには、レディ信号Readyを「1」、イネーブル信号ENB−Aを「0」として出力する。このレディ信号Readyが、クロック境界を挟んだ出力側二段フリップフロップ7に出力される。これにより、レディ信号ReadyがクロックCLK−Bに同期した出力側アクノレッジ信号ACK−Bとなる。
レディ信号Readyが「1」に変化してから、出力側アクノレッジ信号ACK−Bが「1」に変化するまでには所定の時間を要する。よって、時刻T3よりも後の時刻T4において出力側アクノレッジ信号ACK−Bが「1」に変化する。この時刻T4はクロックCLK−Bに同期したタイミングになる。
信号検出部8は出力側アクノレッジ信号ACK−Bが「1」に変化する立ち上がりエッジを検出する。そして、1クロック周期分のハイ・パルスの信号(値が「1」の信号)を出力する。この信号が出力側イネーブル信号ENB−Bとなる。よって、クロックCLK−Bにおいて時刻T4の次の時刻T5にイネーブル信号ENB−Bの値が「1」に変化し、その次の時刻T6において「0」に戻る。
このイネーブル信号ENB−Bが出力側フリップフロップ5に入力される。出力側フリップフロップ5は、出力側イネーブル信号ENB−Bが「1」になったことから、クロックCLK−Bの立ち上がりエッジにおいて、入力側フリップフロップ4が出力する中間データMidを入力して、保持している値を更新する。
このときの中間データMidは値#1になっており、出力側フリップフロップ5はこの値#1を更新し、時刻T5の次のクロックである時刻T6において出力データData−Bを値#1として出力する。これにより、クロックCLK−Aに同期した入力データData−Aの値#1を、クロックCLK−Bに同期する出力データData−Bとして出力している。そして、出力側フリップフロップ5は、出力側イネーブル信号ENB−Bが「1」に変化するまで、保持している値#1を継続して出力する。
時刻T4において、「1」に変化した出力側アクノレッジ信号ACK−Bは信号検出部8だけではなく、入力側二段フリップフロップ10にも入力される。そして、この入力側二段フリップフロップ10により、出力側アクノレッジ信号ACK−B(クロックCLK−Bに同期した信号)は入力側アクノレッジ信号ACK−A(クロックCLK−Aに同期した信号)となる。
入力側アクノレッジ信号ACK−Aは、もともとは出力側アクノレッジ信号ACK−Bであり、この出力側アクノレッジ信号ACK−Bは、もともとはレディ信号Readyである。つまり、入力側アクノレッジ信号ACK−Aはレディ信号Readyを出力側回路部3に出力し、この出力側回路部3に出力した信号を入力側回路部2に戻した信号になる。
入力側アクノレッジ信号ACK−Aは出力側アクノレッジ信号ACK−Bが「1」に変化したタイミングよりも後の時刻T7のクロックにおいて、「1」に変化する。この「1」に変化した入力側アクノレッジ信号ACK−Aが制御部6に入力される。入力側アクノレッジ信号ACK−Aが「1」に変化すると、図2に示すように制御部6は入力データレディ状態S3からアクノレッジ待機状態S4に遷移する。
アクノレッジ待機状態S4では、レディ信号Readyは「1」から「0」に更新しており、入力側イネーブル信号ENB−Aは「0」になっている。よって、時刻T7の次のクロックである時刻T8において、レディ信号Readyは「0」に変化する。このレディ信号Readyは出力側二段フリップフロップ7に入力されて、出力側アクノレッジ信号ACK−Bとなる。
出力側二段フリップフロップ7において、レディ信号ReadyはクロックCLK−Bに同期した出力側アクノレッジ信号ACK−Bとなる。よって、時刻T8よりも後のクロックの時刻T9において、出力側アクノレッジ信号ACK−Bは「0」に変化する。
この出力側アクノレッジ信号ACK−Bが入力側二段フリップフロップ10を介して、クロックCLK−Aに同期した入力側アクノレッジ信号ACK−Aとなる。よって、時刻T9よりも後のクロックである時刻T10において入力側アクノレッジ信号ACK−Aは「0」に変化する。入力側アクノレッジ信号ACK−Aが「0」に変化すると、制御部6はアクノレッジ待機状態S4から入力データ待機状態S1に状態を遷移する。
以上より、出力側フリップフロップ5が中間データMidを入力して、保持する値を更新するのは、出力側イネーブル信号ENB−Bが「1」に変化したときであり、この出力側イネーブル信号ENB−Bが「0」に変化したときには、中間データMidの入力は終了している。
この出力側イネーブル信号ENB−Bが「0」から「1」に変化し、「1」から「0」に変化するまでの間(出力側フリップフロップ5が中間データMidを入力して、保持する値を更新する間)は、入力側フリップフロップ4は保持した値を固定的に保持し続けるようにしている。つまり、この間は、入力側フリップフロップ4が保持する値を更新しないようにしている。
このために、制御部6は入力データ待機状態S1のときにのみ入力側イネーブル信号ENB−Aを「1」に変化することを可能にしている。つまり、入力データ待機状態S1のときにのみ入力側フリップフロップ4が入力データData−Aを入力して、保持する値を更新することが可能なように制御している(入力側イネーブル信号ENB−Aを「1」にするように制御している)。
出力側フリップフロップ5は中間データMidを入力して、保持する値を更新するが、中間データMidの入力を開始するのは、出力側イネーブル信号ENB−Bが「1」に変化したときである。出力側イネーブル信号ENB−Bが「1」になるためには、出力側アクノレッジ信号ACK−Bが「1」に変化している必要があり、つまりレディ信号Readyが「1」に変化している必要がある。
レディ信号Readyが「1」になるのは、制御部6が入力データレディ状態S3のときであり、入力データ待機状態S1に遷移するのは、入力データレディ状態S3からアクノレッジ待機状態S4に遷移したさらにその後である。入力データレディ状態S3から入力データ待機状態S1に遷移するまでの間には、出力側フリップフロップ5に出力側イネーブル信号の値「1」が入力されている。
つまり、入力側フリップフロップ4が入力データData−Aの値を入力して保持する値を更新する前に、既に出力側フリップフロップ5が中間データMidを入力して保持する値の更新を開始している。
また、出力側イネーブル信号ENB−Bは出力側アクノレッジ信号ACK−Bの立ち上がりを検出したときの1クロック周期分のハイ・パルスになる。つまり、クロックCLK−Bの1クロックで「1」から「0」に戻る。出力側アクノレッジ信号ACK−Bが「1」に変化して、この出力側アクノレッジ信号ACK−Bが入力側アクノレッジ信号ACK−Aになり、制御部6はアクノレッジ待機状態S4に遷移する。
そして、「0」の値がレディ信号Ready、出力側アクノレッジ信号ACK−B、入力側アクノレッジ信号ACK−Aとなって、制御部6はアクノレッジした域状態S4から入力データ待機状態S1に遷移する。このときには、既に出力側フリップフロップ5に入力される出力側イネーブル信号ENB−Bは「1」から「0」に変化しており、中間データMidの値を入力して更新する作業は終了している。
従って、出力側フリップフロップ5が中間データMidを入力して保持する値を更新する作業を開始してから終了するまでの間は入力データ待機状態S1にはならないように制御している。つまり、この間は入力側フリップフロップ4が入力データData−Aの値を入力して更新しないように制御している。
つまり、出力側フリップフロップ5が中間データMidを入力している最中は、入力側フリップフロップ4は値の更新は行わず、保持している値を固定的に出力している。これにより、出力側フリップフロップ5が中間データMidを入力している最中に中間データMidの値が変化しなくなり、出力側フリップフロップ5は不正な値を入力することがなくなる。
このため、出力側フリップフロップ5が出力する出力データData−B、つまりデータ転送回路1が出力する出力データData−Bが不正な値となることを回避できる。そして、本実施形態の処理はパルスストレッチ回路を設けることなく行うことができる。このため、クロックCLK−AとCLK−Bとの大小関係およびその比によって、パルスストレッチ回路の設計や検証工数を変更する必要がなくなる。
図4は入力側回路部2のクロックCLK−Aが出力側回路部3のクロックCLK−Bよりも非常に高速な場合のタイミングチャートを示している。この場合でも、出力側イネーブル信号ENB−Bが「1」に変化して、出力データData−Bが更新されるときには、中間データMidは固定した値を保持し続けている。これにより、不正な値が転送されることなく、正確な値が転送される。
図5は入力側回路部2のクロックCLK−Aよりも出力側回路部3のクロックCLK−Bの方が高速な場合(CLK−A<CLK−B)を示している。この場合でも、出力側フリップフロップ5が中間データMidを入力して保持する値を更新するときには、入力側フリップフロップ4は入力データData−Aを入力して値を変更することがなく、固定的な値を出力している。これにより、クロックCLK−A<クロックCLK−Bであっても、不正な値が転送されることを回避することができるようになる。
図6はデータ更新トリガTrig−Aを生成するトリガ生成回路20を示している。トリガ生成回路20はNビットのトリガ生成フリップフロップ21と比較器(図中ではNbitCmp)22とを備えて構成している。トリガ生成フリップフロップ21はデータ転送回路1の入力側回路部2と同じクロックCLK−Aで動作を行っている。
トリガ生成フリップフロップ21は入力データData−Aを入力して、その値を保持する。そして、1クロック遅れたタイミングで比較器22に保持した値を出力する。このときにトリガ生成フリップフロップ21が出力する値をData−Cとする。比較器22には入力データData−Aが直接的に入力されている。
比較器22は入力データData−Aの値とトリガ生成フリップフロップ21から出力されたData−Cの値との比較を行っている。比較の結果、一致していれば「0」を出力し、異なれば「1」を出力する。この比較器22が出力する値は前述したデータ更新トリガTrig−Aになる。
図7はトリガ生成回路20の動作を示しており、Data−AとData−Cとの比較を行って、異なっているときには「1」を出力しており、つまり入力データData−Aが更新されたときに「1」を出力するデータ更新トリガTrig−Aを出力することができる。
従って、図6のトリガ生成回路20により入力データData−Aの1クロック分の前後のタイミングの値を比較することで、入力データData−Aが更新されたか否かを示すデータ更新トリガTrig―Aを生成することができる。この生成したデータ更新トリガTrig−Aをデータ転送回路1に出力することができる。
1 データ転送回路
2 入力側回路部
3 出力側回路部
4 入力側フリップフロップ
5 出力側フリップフロップ
6 制御部
7 出力側二段フリップフロップ
8 信号検出部
9 トリガ出力フリップフロップ
10 入力側二段フリップフロップ
20 トリガ生成回路
21 トリガ生成フリップフロップ
22 比較器
2 入力側回路部
3 出力側回路部
4 入力側フリップフロップ
5 出力側フリップフロップ
6 制御部
7 出力側二段フリップフロップ
8 信号検出部
9 トリガ出力フリップフロップ
10 入力側二段フリップフロップ
20 トリガ生成回路
21 トリガ生成フリップフロップ
22 比較器
Claims (5)
- 第1のクロックで動作する入力側回路部と前記第1のクロックとは異なる第2のクロックで動作する出力側回路部とを有し、前記入力側回路部に入力された入力データを前記出力側回路部から出力データとして出力させるデータ転送回路であって、
前記入力側回路部に設けられ、前記入力データを入力して中間データとして出力する入力側フリップフロップと、
前記出力側回路に設けられ、前記中間データを入力して出力データとして出力させる出力側フリップフロップと、
前記出力側フリップフロップが前記中間データを入力するときには、前記中間データ固定値として出力するように前記入力側フリップフロップを制御する制御部と、
を備えたことを特徴とするデータ転送回路。 - 前記制御部は、前記出力側フリップフロップに前記中間データの入力を開始させてから終了させるまでの間は前記入力側フリップフロップに前記入力データを入力させず、それ以外の間に前記入力側フリップフロップに前記入力データを入力させる制御を行うこと
を特徴とする請求項1記載のデータ転送回路。 - 前記制御部は、前記出力側フリップフロップの制御を行う制御信号を前記出力側回路部に出力し、この出力側回路部に出力された前記制御信号を入力して、前記入力側フリップフロップの制御を行うこと
を特徴とする請求項2記載のデータ転送回路。 - 前記出力側回路部に設けられ、前記第1のクロックの前記制御信号を前記第2のクロックに同期させる出力側二段フリップフロップと、
前記入力側回路部に設けられ、前記第2のクロックの前記制御信号を前記第1のクロックに同期させる入力側二段フリップフロップと、
を備えていることを特徴とする請求項3記載のデータ転送回路。 - 前記制御部に前記入力データの値が更新されたか否かを示すデータ更新トリガを入力し、このデータ更新トリガを前記入力データの1クロックの前後の値を比較して生成するトリガ生成回路により生成したこと
を特徴とする請求項1乃至4の何れか1項に記載のデータ転送回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011036110A JP2012175447A (ja) | 2011-02-22 | 2011-02-22 | データ転送回路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011036110A JP2012175447A (ja) | 2011-02-22 | 2011-02-22 | データ転送回路 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012175447A true JP2012175447A (ja) | 2012-09-10 |
Family
ID=46977908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011036110A Withdrawn JP2012175447A (ja) | 2011-02-22 | 2011-02-22 | データ転送回路 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012175447A (ja) |
-
2011
- 2011-02-22 JP JP2011036110A patent/JP2012175447A/ja not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5321864B2 (ja) | デジタル位相比較器 | |
JP4451355B2 (ja) | グリッチを誘発しないクロックスイッチング回路 | |
US7525355B2 (en) | Digital delay locked loop | |
JP2011155411A (ja) | パラレル−シリアル変換器 | |
JP2009239512A (ja) | Cdr回路 | |
JP5739727B2 (ja) | クロック発生回路 | |
KR100925393B1 (ko) | 반도체 메모리 장치의 도메인 크로싱 회로 | |
JP2009526278A (ja) | データインタフェースおよび同期探索方法 | |
JP2005338619A (ja) | ドットクロック同期生成回路 | |
JP6378966B2 (ja) | 調歩同期式シリアルデータ取得装置及び調歩同期式シリアルデータ取得方法 | |
JP2006011704A (ja) | クロック切り替え回路 | |
JP2007263756A (ja) | スキャンテスト用フリップフロップ | |
JP2012175447A (ja) | データ転送回路 | |
JP2013005050A (ja) | クロック生成装置および電子機器 | |
JP2009165064A (ja) | 分周回路及び分周方法 | |
US6774823B1 (en) | Clock synchronization logic | |
JP3705273B2 (ja) | クロック抽出回路およびクロック抽出方法 | |
KR20120027850A (ko) | 듀티 검출기를 포함하는 듀티 보정 회로, 이를 포함하는 지연동기루프 회로 및 듀티 보정 방법 | |
JP4862588B2 (ja) | クロック制御回路および半導体集積回路 | |
JPH02255908A (ja) | クロック信号供給装置及び電子計算機 | |
JP2020202439A (ja) | 位相同期回路、電子装置、および、位相同期回路の制御方法 | |
JP2013175832A (ja) | 画像処理装置、信号伝達回路及び半導体集積回路 | |
JP2014090381A (ja) | デューティ補正回路 | |
JP2015162866A (ja) | クロック遅延生成回路 | |
US8850256B2 (en) | Communication circuit and communication method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20140513 |