3.3 タイミング制御 ハザードの回避
同期式回路と非同期式回路 1. 同期式回路 : 回路全体で共通なクロックに合わせてデータの受け渡しをする 通信における例 :I 2 C(1 対 N 通信 ) 2. 非同期式回路 : 同一のクロックを使用せず データを受け渡す回路間の制御信号を用いてデータの受け渡しをす 通信における例 :UART(1 対 1 通信 ) 2
3.3.1 ハザード 3
1 出力回路のハザード 2 入力以上の組合せ回路は遅延時間が経過するまで 誤った演算結果 ( ハザード ) が出力される a b c 0 0 T=0 1 0 0 1 遅延を考慮しない場合の c の値 inv 0 T=0 1 1 1 1 0 inv の遅延 and T=0 and の遅延 真理値表 a b c 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 ハザード inv の遅延 4
多出力回路のハザード 出力端子毎に遅延時間が異なる 組合わせ回路 正しい値 ハザード (Hazard) 正しい値 5
ハザードを避ける方法 順序制御 ( 重要 ) クロックによる同期回路を構成すると 組合せ回路が出すハザードを取り除くことができる 論理合成を行う回路は原則としてクロックによる同期回路となる a in b in -FF -FF b a 組合せ回路 b c c -FF clk c out a clk a in b in clk clk a b clk c 0 0 ハザード c out 0 0 6
応用例 ( レジスタ ) 入出力レジスタパイプラインレジスタ命令 アドレスレジスタ 演算回路 ( 組合せ回路 ) の動作をクロックに同期させる働き CLK CLK N-1 N-2 1 0 CLK CLK CLK -FF -FF -FF -FF CLK N X REG N Add Y REG 入力レジスタ N-1 N-2 N bit Register 1 0 REG Z 出力レジスタ ( 結果を 1 周期保持する ) 加算器 (Add) のハザードを取り除く 7
( 参考 ) レジスタファイルと SRAM メモリ機能を実現するには 2 種類の方法がある レジスタファイル レジスタを多数並べて address でアクセスするレジスタを指定する HL が書ければ論理合成により作成できるが 回路の面積が大きいため数 kbit 程度まで SRAM(Static Random Access Memory) 通常は メーカから供給された部品 ( コア ) をチップ上に配置して利用する SRAM は自分でも設計できるが 論理合成ができないためトランジスタレベルの回路設計に関する知識が必要 レジスタ ファイルまたは SRAM コア data_in address wr_en rd_en clk Single-Port Memory data_out wr_en =1 : 書き込みモード rd_en =1 and wr_en =0 : 読み出しモード rd_en =0 and wr_en =0 : 出力は変化しない 8
3.3.2 クロック周波数 9
最大遅延制約 1 REG X1 F(x) 組合せ回路 X2 REG 2 X1 入力から X2 出力までに t d の遅延時間 (= ハザードのない正しい結果が出力されるまでの時間 ) がある ( 最も t d の長い信号伝達経路をクリティカルパスと呼ぶ ) CLK 1 X1 X2 CLK 0 1 2 3 0 1 2 3 F(0) F(1) F(2) 常に 1 周期後に演算結果が出力される 2 X td td F(0) F(1) F(2) ただし t d < T clk でなければならない T clk T clk 10
クリティカルパスを決める要因 R E G 組合せ回路 t d R E G CLK 組合せ回路の中で最も入出力間の遅延時間が長い経路 =クリティカルパス クリティカルパスの遅延時間は t d < 1/f clk = T clk でなければならない 同期式回路では クリティカルパスの遅延が 最高クロック周波数を決定していることに注意この経路が危険ゲート段数が多い クリティカルパスを決める要因 ゲート段数が多い 途中の配線のファンアウト数が大きい 配線が長い ( これは配置配線してみないとわからない ) ファンアウト数が多い 11
クロックスキュー 入力レジスタと出力レジスタの間の CLK タイミングのずれ = クロックスキュー t skew 組合せ回路 CLK R E G t d t skew R E G t d < t skew : 同じクロックエッジで演算結果を出力してしまう 実際には 1サイクル後のクロックエッジで処理結果を出力しなければならないので エラーとなる この状態は レーシング ( クロックと処理の競合 ) と呼ばれる 12
レーシングの回避 1 1 組合せ回路 2 2 R E G t d R E G -t skew CLK t d > 0 > -t skew となるため レーシングを起こさない 実際には -FF の CLK 端子 - 出力端子間の遅延 ハザードの発生期間 レジスタのホールドタイムなども考慮する必要がある 詳しくは 3.3.3 節を参照 13
タイミングチャートのまとめ T clk > t d -t skew t d > t skew ( 正常 ) T clk > t d -t skew t d < t skew ( エラー ) [ 注 ] スライド 13 の回路では t skew は負 本来は 1 サイクル後で出力 14
クリティカルパスの短縮方法 ゲート段数の短縮 A B A B 4 段 = A B A B 正論理と負論理を使い分ける = ド モルガンの定理の記号表現 ( 注 ) クリティカルパスの最適化は論理合成ツールが行う 人手で行うことは危険 2 段 15
STA (Static Timing Analysis) クリティカルパスをゲート段数とファンアウト数から求める手法は STA (Static Timing Analysis) と呼ばれる STA は論理シミュレーションや回路シミュレーションをしなくてもクリティカルパスの遅延時間が算出できるので短時間で実行できる クリティカルパスを短くするような回路を合成するために 論理合成の際に使用される STA では ゲートの遅延時間と配線の遅延時間 ( 第 7 章で扱う ) を別々に求める ゲートの遅延時間は各ゲートの実測値から求められる ( 半導体メーカが測定 ) 配線の遅延時間は配線長と遅延時間の関係を統計的に求めた遅延モデル ( 半導体メーカが作成 ) を利用する 16
3.3.3 タイミング制約の詳細 17
同期式回路のタイミング (1) セットアップタイムに対する制約 組合せ回路 1 1 2 2 R R E t E G d t s G t dff : t d : t skew : t s : t dff clk t skew クロックは出力レジスタ側から入力レジスタ (-FF) の遅延時間クリティカルパスの遅延時間クロックの配線遅延 ( クロックスキュー ) [ 注 ]3.3.2 節と向きが逆セットアップタイム T C T C > t dff + t d + t skew + t s の場合に正しい結果が得られる 組合せ回路が大きい回路では t d が支配的クロックが高速な回路では t skew にも注意が必要 18
同期式回路のタイミング (2) ホールドタイムに対する制約 組合せ回路 1 1 2 2 R R E t E G haz t h G t dff t skew t dff : レジスタ (-FF) の遅延時間 t haz : ハザードが出始める最短の時間 t skew : クロックの配線遅延 ( クロックスキューと呼ばれる ) t h : ホールドタイム clk t h < t dff + t haz + t skew の場合に正しい結果が得られる t skew < 0 ( 入力レジスタ側からクロックを入力 ) の場合は危険 この条件による誤動作をクロックと信号の レーシング と呼ぶ 19
タイミングチャート ( 詳細 ) T C clk( 入力側 ) clk( 出力側 ) t s t h t skew 1 t dff 1 2 td hazard t s t h t s t h t haz t dff 2 タイミング余裕がなくなると誤動作する 2 の変化がこれより速くなると誤動作する 20
3.3.4 クロックの生成 21
基準周波数 コルピッツ発振回路のインダクタLを水晶振動子に置き換えたもの 水晶振動子は特定の周波数で非常にが大きいインダクタとして動作 水晶振動子のは100000 以上 共振周波数の精度は6 桁以上 ディジタル回路の基準クロック 時間の基準周波数 (32.768kHz) 無線通信回路の基準周波数 ( 各種 ) オーディオのオーバサンプリングクロック (5.6448MHz) L C2 + - 反転増幅回路 コルピッツ発振回路 C1 反転増幅回路 制限抵抗 水晶発振回路 ( 水晶 / セラミック振動子は L として働く ) 22
基準クロックと内部クロック LSI 外部と内部の回路全体の動作タイミング基準となるクロックを与える 外部クロック発生回路に周波数が正確な水晶発振回路やそこそこ周波数が正確で安価なセラミック発振回路が使用できる 外部クロックは 1MHz~100MHz 程度と周波数が低いため 高速集積回路内部にはクロック周波数を定数倍する PLL または LL という回路を置く 低速で動作させる回路には クロック周波数を 1/ 整数 にする分周回路を使用してクロック周波数を下げることができる ( 次スライド ) 水晶 / セラミック発振回路基準クロック f ref LL or PLL f clk = N f ref 内部クロック PLL: Phase Locked Loop LL: elay Locked Loop 高速ロジック LSI 内部 23
2 i 分周回路 CLR Clear (Reset) CLK1 CLK2 T C 2T C CLK4 4T C CLK8 8T C 24
練習問題 (1) 遅延時間から最高クロック周波数を求めよ 25 回路例 1 Clock Clock 回路例 2 回路例 3 回路例 4 td EXOR = 2ns td EXOR = 2ns
練習問題 (2) (1) 5.6448MHz のクロックで音声データのサンプリングを行うとき C のサンプリング周波数 44.1kHz( ナイキストレート ) に対して何倍オーバサンプリングとなるか (2) 32.768kHzの水晶発振回路から1 秒周期のクロックを作り出すために 何分周する分周回路を通せばよいか ヒント T N 2 1 f CLK (3) スライド24の分周回路の出力は バイナリカウンタ ( デクリメントカウンタ ) と同じとなるが 実際には カウンタとしては使用しない その理由は何か 26