Tech と Culture

テクノロジーとカルチャー

ハフマンデコードモジュール 3 

fetch partは以下のようにしました。
huff-fetch1.jpg
huff-fetch2.jpg


bytefetch ステートでフェッチレジスタに余裕があれば、8bit毎フェッチします。
FIFOにデータが無い場合は、Memwait ステートでメモリ要素が0でなくなるまで待機します。
データにFFが出てきた時は次の値を読まないと解読できません。次の値をFFCheckで読み込みます。
丁度メモリからデータが必要でかつメモリ要素数が0の場合は、FFmemwaitでメモリ要素が0で無くなるまで待機します。
FFCheckステートで読み込んだ値が00ならば、FFを書き込んでbytefetchに戻ります。
00で無い場合はマーカーですので、その値をMarker registerに記録して、MarkerModeに移り、割り込みを発生します。
ソフトウェア側からMarker registerを読んで対応する処理を行い、その後Marker registerに00を書き込みます。
Marker registerが00になったら、Marker Modeを抜けます。