Tech と Culture

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

ハフマンデコードモジュール 6 シリアル

シリアル処理部分の回路は以下のようにしました。
serial1.jpg


基本的にIJGのハフマンデコードの所で調べた、Huffval[code + offset[k]] という演算を行います。
serialcheckステートで、9,10,11,.....とフェッチレジスタから持ってくるデータ量を増やしながら、Maxvalueと比較してハフマンコードが何ビットであるかを調べていきます。
フェッチレジスタにデータが足りていない場合は、serialwaitに遷移してデータが揃うのを待ちます。
比較によってコードのビット数が確定した場合、最終的なserialfinishステートで得られたランレングスや数値ビット数などを書き込みます。
頑張ればserialfinishステートを無くすことができるような気もしますが、そもそもserial処理になるコード自体の存在確率が低いため、ここはそのままにしました。

MaxValue mem, offset memにおいてキャッシュメモリでもでてきた、 ac/dc , id 等の信号を先頭アドレスに入力します。