BACK NEXT U  P HOME

ちょっと古くなった気がしないでもないけれど、これがわかっていないとツールに使われるだけになるから...(ツールは使う物だからね。(^^;;)

RTL図とは
Register Transfer Level図の略で、1つの機能ブロックを記述するときに、FFの接続及び組み合わせ論理回路)との接続を明快に記述した、最小機能ブロックを記述するのに適した図です。

作成時には以下の4点に注意して作成します。

  1. ブロックのI/O名(接続)....普通のブロック図でもそうですが...
  2. FFと組み合わせ論理回路の区別
  3. 組み合わせ論理回路の動作
  4. ブロックの構造(階層構造を含む)



例1としてD-FFを使用してJK-FFを作る例を示します。

JK-FFブロック(JK-FFと同様な動作をするブロック)の構造を記述します。

JK-FFの場合、1クロック前の状態で動作が変化するため、フィードバックする線を用意します。

ResetがPower On時Lowのように明らかな場合アサートする方向のみ記述します。
同様にグローバルクロックでClkをドライブする場合は極性のみ記述します。

組み合わせ論理回路の部分は楕円を使用して表現します。
 

JK-FFの動作
J K Q NEXT
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 0

ここでnextにあたる部分がD-FFのD入力に接続すればJK-FFをエミュレートできるわけですからnextをDに入れ替えておきましょう。
 

JK-FFの動作2
J K Q D
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 0


  

真理値表から有意の部分のみ抽出します。
 

D-FFのアサート条件
J K Q D
0 0 1 1
1 0 0 1
1 0 1 1
1 1 0 1

論理圧縮します。

D-FFのアサート条件2
J K Q D
- 0 1 1
1 - 0 1


  論理式 (!K&Q)|(J&!Q)


上記真理値を回路図になおします。

RTL図にはめ込みます。

余談ですが組み合わせ論理回路部の回路を見たときセレクタで実現可能なような気がしませんか。


同様に例2として4bitダウンカウンタを、D-FFを使用して作ってみましょう。

ダウンカウンタのRTL図を作成します。

JK-FFと同様に1クロック前の状態で次の動作が変化するため、フィードバックする線を用意します。

カウント値変更用の組み合わせ論理回路A(CombA)、キャリーアウト生成用の組み合わせ論理回路はミーリ出力として取り出すための組み合わせ論理回路B(CombB)を用意します。


CombAの機能
ENがLowの時
Q[n]=D[n](n=0..3)

ENがHiの時
Q[0..3]のバイナリ値より1を引いた値の
バイナリ値をD[0..3]に出力する。

CombBの機能
Q[0..3]="1111"B且つENがHiの時
CoがHiそれ以外はCoはLow



Co=Q[0]&Q[1]&Q[2]&Q[3]&EN

回路はこれで終了

if ...then ...elseの構造をした論理はセレクタを使用すると設計が早くすむ場合が多いのでCombAはセレクタとCombCの新たな構造を定義してCombAを記述してみましょう。



CombAの実現方法

CombCの機能
Q[3]Q[2]Q[1]Q[0]
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
C[3]C[2]C[1]C[0]
1111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110


各出力にまとめます。

C[0]のアサートする条件
Q[3]Q[2]Q[1]Q[0]
0000
0010
0100
0110
1000
1010
1100
1110
C[0]
1
1
1
1
1
1
1
1



左の表を論理圧縮すると
C[0]=!Q[0]


C[1]のアサートする条件
Q[3]Q[2]Q[1]Q[0]
0000
0011
0100
0111
1000
1011
1100
1111
C[1]
1
1
1
1
1
1
1
1



左の表を論理圧縮すると
C[1]=((!Q[0] & !Q[1])|(Q[0] & Q[1]))

C[1]=Q[0] EXNOR Q[1]


C[2]のアサートする条件
Q[3]Q[2]Q[1]Q[0]
0000
0101
0110
0111
1000
1101
1110
1111
C[2]
1
1
1
1
1
1
1
1




左の表を論理圧縮すると
C[2]=((!Q[2] & !Q[1] & !Q[0])|(Q[2] & ( Q[1] | Q[0]))

C[2]=Q[2] EXNOR (Q[1]|Q[0])


C[3]のアサートする条件
Q[3]Q[2]Q[1]Q[0]
0000
1001
1010
1011
1100
1101
1110
1111
C[3]
1
1
1
1
1
1
1
1




左の表を論理圧縮すると
C[3]=((!Q[3] & !Q[2] & !Q[1] & !Q[0])|
(Q[3] & Q[0])|(Q[3] & Q[1])|(Q[3] & Q[2]))

C[3]=((!Q[3] & !Q[2] & !Q[1] & !Q[0])|
(Q[3] & (Q[2] | Q[1] | Q[0])))←PLDの場合はこれで終了

C[3]=(!Q[3] & !(Q[2] | Q[1] | Q[0]))|(Q[3] & (Q[2] | Q[1] | Q[0]))
Q[3]=Q[3] EXNOR (Q[2] | Q[1] | Q[0])



CombCを回路図で表現します。

全部を組み合わせると4bitダウンカウンタの完成です。
 


BACK NEXT U  P HOME