FPGA活用回路&サンプル記述集(3) ―― ビデオ信号処理回路
tag: 半導体 電子回路 ディジタル・デザイン
技術解説 2009年3月25日
● ステート・マシン・カウンタの設計
次にシーケンスを作るためのステート・マシン(図6-5)です.このシーケンスを繰り返すことによって動画となります.
図6-5 INPUT_BLOCKのステート・マシン図
・IDLE_S
IDLE_Sは最初のステートです.リセット解除後はF_WAIT_Sに移行します.・F_WAIT_S
F_WAIT_SはIO_CAM_FVALの立ち上がりを待ちます.立ち上がりが確認できたらD_WAIT_Sに移行します.それ以外は本ステートで待機します.・L_WAIT_S
L_WAIT_SはIO_CAM_LVALの立ち上がりを待ちます.立ち上がりが確認できたらD_WAIT_Sに移行します.それ以外はこのステートで待機します.・D_WAIT_S
D_WAIT_S は有効データを待つためのカウンタ(D_WAIT_CNT)が動作します.設定されたカウント数(30CLK+SIG_CAM_DELAY値)後,ACTIVE_Sに移行します.・ACTIVE_S
ACTIVE_Sは有効データのカウンタ(ACTIVE_CNT)が動作します.設定されたカウント数(ACTIVE_SET=1024CLK)後,L_END_Sに移行します.ACTIVE_Sに滞在している間にFIFOへのライト・リクエスト(FIFO_WRREQ)を発行します.・L_END_S
L_END_SはIO_CAM_LVALの立ち下がりを待ちます.立ち上がりが確認できたらLVAL_CNTを1カウント・アップさせます.このとき,LVAL_CNTと設定されたライン数(LVAL_SET)が一致した場合はEND_Sに移行し,それ以外の場合はL_WAIT_Sに移行します.
END_Sはシーケンスの終了処理をするだけのステートです.LVAL_CNTをクリアし,次のクロックでIDLE_Sに移行します.
入力部から処理部へのデータの受け渡しは,Dual-Clock FIFOを使っています(図6-6).これは処理部で使用できるデータに変換(異なるクロックの同期化)を行うためです.処理部からのSIG_CLKおよびSIG_CAM_RD_ENに同期してデータを出力しています.
図6-6 Dual-Clock FIFOを設定