Tech と Culture

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

YCbCr-RGB変換モジュールRTL 2

RTLの記述方法には様々なスタイルがある模様ですが、Gaisler Researchから提供されるIPはLeon Processorも含めてすべてある一定のスタイルで記述されています。

leon-process.png

基本的に同期式回路は図のような構成と考えられます。
ここでFF等の記憶素子を単純な一つのプロセスで記述し、それ以外の組み合わせ回路すべてを一つのプロセス文で記述します。
FFからの出力を一旦variableに代入し、そのvariableを条件式で書き換えてFFへの入力とする組み合わせ回路を一つのプロセスで記述します(全体の入出力も記述する)。
このような記述によって可読性があがりますし、一旦すべてのFF出力を変数で受けていますので、条件による記述もれが少なくなります。

このスタイルはどうも賛否両論あるみたいですが、私はRTL記述の素人でかつ、Gaisler Research のIPの記述を解読してRTLを勉強しましたので、この記述方式に従っていきます。

YCrCb-RGB変換モジュールには、組み合わせ回路とレジスタ以外に2port SRAMインスタンスが存在します。これらの接続部分のみsignalを定義し、組み合わせ回路内ではvariableで計算を行います。
leon-process2.png

具体的に、YCrCb-RGB変換モジュールには以下のようなレジスタが存在します。これらのレジスタを階層を使って一つの表記(all_reg)にまとめています。

Leon-coding3.png

そして、実際の論理記述は以下のようになります。
先ほどの図でしめしたsignalを定義した後、インスタンス、と組み合わせ回路のprocess文を記述します。
process文中の最初にFFの出力を変数に代入し、その変数に対して論理設計を記述して、最後にFFの入力のsignalに代入します。論理変更の記述抜けがあった場合は一つ前のクロックの値が維持されることになります。

leon-coding5.png


レジスタは以下のように一つのprocess文で実現されています。

leon-coding4.png