Posts Issued on December 13, 2022

posted by sakurai on December 13, 2022 #569

2段FIFOの検討(3)

ここまでで全ての場合を尽くしたので、d0とdの入力条件を集め、表569.1にまとめます。

表569.1 FIFO段制御表
No. State DEQ/ENQ d0入力制御 d1入力制御
0 --- CLR D.C. D.C.
1 State0(E:1, F:0) !DEQ$ \cap $!ENQ D.C. D.C.
2 !DEQ$ \cap $ENQ d_in D.C.
3 DEQ$ \cap !$ENQ D.C. D.C.
4 DEQ$ \cap $ENQ D.C. D.C.
5 State1(E:0, F:0) !DEQ$ \cap $!ENQ d0 D.C.
6 !DEQ$ \cap $ENQ d0 d_in
7 DEQ$ \cap !$ENQ D.C. D.C.
8 DEQ$ \cap $ENQ d_in D.C.
9 State2(E:0, F:1) !DEQ$ \cap $!ENQ d0 D.C.
10 !DEQ$ \cap $ENQ D.C. D.C.
11 DEQ$ \cap !$ENQ d1 D.C.
12 DEQ$ \cap $ENQ D.C. d_in
13 Undefined(E:1, F:1) !DEQ$ \cap $!ENQ D.C. D.C.
14 !DEQ$ \cap $ENQ D.C. D.C.
15 DEQ$ \cap !$ENQ D.C. D.C.
16 DEQ$ \cap $ENQ D.C. D.C.
D.C.=Don't care

  • d0に対してd_inからの入力条件をd0diとすると、表のd0入力制御の2, 8より
    d0di = (!DEQ && ENQ && empty == 1 && full == 0) /* 2 */ || (DEQ && ENQ && emtpry == 0 && full == 0) /* 8 */
    となるが、2に対して4, 14, 16、及び8に対して3, 4, 7のようなD.C.条件を加えて手で論理圧縮すれば、
    d0di = (ENQ && empty == 1) || (DEQ && full == 0)
  • d0に対してd1からの入力条件をd0d1とすると、表のd0入力制御の11より
    d0d1 = (DEQ && !ENQ && empty == 0 && full == 1) /* 11 */
    となるが、11に対して12, 15, 16を加えて論理圧縮すれば、
    d0d1 = DEQ && full == 1
  • d0に対してd0からの入力条件をd0h(old)とすると、表のd0入力制御の5, 6, 9より
    d0h = (!DEQ && empty == 0 && full == 0) /* 5, 6 */ || (!DEQ && !ENQ && emtpry == 0 && full == 1) /* 9 */
    となるが、5, 6, 9に対して10を加えて論理圧縮すれば、
    d0h = !DEQ && empty == 0
  • d1に対してd_inからの入力条件をd1diとすると、表のd1入力制御の6, 12より
    d1di = (!DEQ && ENQ && empty == 0 && full == 0) /* 6 */ || (DEQ && ENQ && emptry == 0 && full == 1) /* 12 */
    となるが、6, 12に対して8, 10を加えて論理圧縮すれば、
    d1di = ENQ && empty == 0

次にステート遷移表です。

表569.2 ステート遷移表表
No. Current State DEQ/ENQ Next State
0 --- CLR State0(E:1, F:0)
1 State0(E:1, F:0) !DEQ$ \cap $!ENQ State0(E:1, F:0)
2 !DEQ$ \cap $ENQ State1(E:0, F:0)
3 DEQ$ \cap $!ENQ ERROR
4 DEQ$ \cap $ENQ ERROR
5 State1(E:0, F:0) !DEQ$ \cap $!ENQ State1(E:0, F:0)
6 !DEQ$ \cap $ENQ State2(E:0, F:1)
7 DEQ$ \cap $!ENQ State0(E:1, F:0)
8 DEQ$ \cap $ENQ State1(E:0, F:0)
9 State2(E:0, F:1) !DEQ$ \cap $!ENQ State2(E:0, F:1)
10 !DEQ$ \cap $ENQ ERROR
11 DEQ$ \cap $!ENQ State1(E:0, F:0)
12 DEQ$ \cap $ENQ State2(E:0, F:1)
13 Undefined(E:1, F:1) !DEQ$ \cap $!ENQ D.C.
14 !DEQ$ \cap $ENQ D.C.
15 DEQ$ \cap $!ENQ D.C.
16 DEQ$ \cap $ENQ D.C.
D.C.=Don't care

この表を、DEQ/ENQ条件をキーとして並べ変えます。

表569.3 ステート遷移表表
No. Current State DEQ/ENQ Next State
0 --- CLR State0(E:1, F:0)
1 State0(E:1, F:0) !DEQ$ \cap $!ENQ State0(E:1, F:0)
5 State1(E:0, F:0) State1(E:0, F:0)
9 State2(E:0, F:1) State2(E:0, F:1)
13 Undefined(E:1, F:1) D.C.
2 State0(E:1, F:0) !DEQ$ \cap $ENQ State1(E:0, F:0)
6 State1(E:0, F:0) State2(E:0, F:1)
10 State2(E:0, F:1) ERROR
14 Undefined(E:1, F:1) D.C.
3 State0(E:1, F:0) DEQ$ \cap $!ENQ ERROR
7 State1(E:0, F:0) State0(E:1, F:0)
11 State2(E:0, F:1) State1(E:0, F:0)
15 Undefined(E:1, F:1) D.C.
4 State0(E:1, F:0) DEQ$ \cap $ENQ ERROR
8 State1(E:0, F:0) State1(E:0, F:0)
12 State2(E:0, F:1) State2(E:0, F:1)
16 Undefined(E:1, F:1) D.C.
D.C.=Don't care

ERRORの場合もステートはD.C.とし、別にエラー信号を出力するものとします。従ってD.C.を活用してステートを決定すれば、ステートはemptyとfullの組み合わせで表現できるため、

  • CLRのとき、empty = 1, full = 0
  • !DEQ && ENQのとき(2, 6)、empty = 0, full = !emtpy
  • DEQ && !ENQのとき(7, 11)、empty = !full, full = 0
  • 上記以外のときはホールド。emtpy, full共変化無し。

左矢前のブログ 次のブログ右矢