LoginSignup
5
2

More than 5 years have passed since last update.

同期回路と設計上の注意点

Last updated at Posted at 2017-11-14

目的

同期回路の説明とその注意点を述べる。

わかりやすく書きたかったのですが、わかりにくいですよね。

同期回路とは

論気回路についてはwikipediaを参照すると詳しい。論理回路は電圧の低いLと高いHの状態を真理値の「真」と「偽」、あるいは二進法の「0」と「1」とみなして論理演算をするものである。
論理回路のうち、決まった周期でHとLを繰り返すクロックを使って、演算をするのが同期回路である。

回路の構成要素

同期回路の構成要素は下記である。
フリップフロップという記憶素子と論理演算を行う論理ゲートからなる。
フリップフロップはクロックに同期して動作する。
フリップフロップには種類がいくつかあるが、基本的にはDフリップフロップ(DFF)しか使用しない。

同期回路ではクロックに同期してDフリップフロップ(DFF)から出たデータを論理ゲートで演算し、またDフリップフロップ(DFF)でデータをうける。
DFFからDFFまでの時間はクロックの周期と等しく、DFFの間の論理ゲートでの演算はクロック周期内に完了するように設計される。

  • フリップフロップ(FF)
    • Dフリップフロップ(DFF)
      • レジスタと呼ばれる。
      • クロックの立ち上がり(LからH)でデータ取り込む
    • ラッチ回路
      • クロックがHのときにデータを取り込む
  • 論理ゲート
    • NOT
    • AND
    • OR
    • XOR

フリップフロップはクロックに同期して動作する素子である。

Dフリップフロップの場合下記のようにCLKがLやHを繰り返しているときに
CLKの立ち上がり(LからH)で入力(IN)を取り込み出力(OUT)に取り込んだ値を出力する。
CLKの立ち上がりの前後は入力(IN)が変化しないように設計する必要がある。
立ち上がり前の入力(IN)の変化しない期間をセットアップ
立ち上がり後の入力(IN)の変化しない期間をホールドである。

CLK _|""|__|""|__|""|__
IN  ""|_____|"""""|____
OUT XX""""""|_____|""""

ラッチ回路の場合下記のようにCLKがLやHを繰り返しているときに
CLKのHで入力(IN)を取り込み出力(OUT)に取り込んだ値を出力する。
DフリップフロップがCLKのエッジで動作するのにたいして、ラッチ回路はCLKのレベルで動作する。
立ち上がりで動作しないので、DFFよりタイミングの解析が難しく、基本的には使用しない素子である。verilogではラッチ回路が記述できるので不用意に使わない。

CLK _|""|__|""|__|""|__
IN  """""|_____|"""""|_
OUT XX"""""|_____|"""""

回路の出力

同期回路ではクロックに同期してDフリップフロップ(DFF)から出たデータを論理ゲートで演算し、またDフリップフロップ(DFF)でデータをうける。
そのため、回路の出力は論理ゲートでなくDフリップフロップ(DFF)の出力がタイミング上好ましい。

異なるクロック間(非同期)でのデータのやりとり

異なるクロック間で注意することは、2点ある。

1, 多数のbit列を異なるクロック間でやりとりするときに、回路の配線上の影響などにより
特定のbitのみが受け渡されデータが化ける場合ある。
例えばクロックAで動くDFFの出力が1111->0000->1111のようにデータが変化しているとして、
クロックBで動くDFFでこのデータをとるとする。ちょうど0000->1111と変化しているときに
クロックB側でデータをとると0000や1111ではなく0011のように中途半端な状態になる。

2, DFFのセットアップとホールドの制約を守らないとHでもLでもないメタステーブル状態になる。

上記の問題があるため、異なるクロック間で受け渡す場合は多数のbit列のデータが中途半端な状態にならないようにデータが変わらないところで受け渡すようにする。また、メタステーブルのためにDFFの2段受けをする。

設計上の注意点

  • 回路の出力はDFFで受ける。
  • ラッチ回路を使用しない
  • 同期してない異なるクロック間でデータをやりとりは注意
  • メタステーブルがあるところは注意
    • フリップフロップを2段受けしてとる。
    • データが安定している状態にして受け渡す。
5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2