補足 - ハザード

[] [] []


組合せ回路の入力が変化したときに回路素子の遅延差によって出力信号に発生する過渡的な変化をハザード(hazard)という。グリッチ(glitch)とかヒゲ()ともいう。特に、信号が一定のときに出るものをスタティックハザード、信号が変化するときに出るものをダイナミックハザードという。

1) イネーブル付FF

下図のb_rega_regをイネーブル信号とするFFである。自分b_reg1でかつ入力b1_reg1ならば、イネーブル信号a_reg010と変化してもb_reg1のままのはずである。しかしa_reg10と変化したときb_inが一瞬0になるハザードが発生しうるので、clk_aと非同期なclk_bでたまたまこのハザードをサンプリングするとb_reg0にひっくり返ってしまう。

2) パルス幅の伸長

下図はclk_a1パルスをほぼ同じクロック周期のclk_bへ転送するとき、とりこぼさないようにOR2クロック幅に伸長している。しかしパルスがa0_regからa1_regへ移動するときen_aが一瞬0になるハザードが発生しうるので、clk_aと非同期なclk_bでたまたまこのハザードをサンプリングすると、パルスを取りこぼしてしまいb_reg0のままになる。


[] [] []