順序回路の動作 - Shimane Uhama/lec8-14-errata.pptx.pdf用語:有限状態機械 (finite...

4
2012年度 コンピュータハードウェア基礎 後半部分 第8-14回 訂正表 総合理工学研究科情報システム学領域 浜口 清治 2013.1.16 作成 2013.1.26 加筆 2013.1.28 加筆 資料番号とページ番号は 左下隅の番号を参照のこと 8-9 なら 8回目の資料,9ページ目 順序回路の動作 8-9 ! 「値を書き換えた」直後 ! 次に「値を書き換える」直 前まで 0 1 1 0 1 1 1 0 0 1 0 0 ではなくて 1 用語:状態遷移関数(state transition function) 9-6 ! 次状態関数(next state (logic) function) ともいう ! 今の状態と次の状態の関係を論理関数で表現したもの S 1 ' = BS 0 S 0 ' = AS 0 S 1 状態遷移関数 (次状態関数) S 2 ではなくて,S 0 用語:有限状態機械 (finite state machine, FSM) 9-7 ! 有限個の状態を持ち,その間の遷移の仕方が,入力に よってきまっている,抽象的な動作のモデル ! 状態遷移図または状態遷移表の形で表現できる ! 出力が状態のみによって定まる: Moore型機械 ! 出力が状態と入力によって定まる: Mealy型機械 ! 通常は,有限状態機械と順序回路は別のものとして扱う が,有限状態機械は,順序回路として実現可能であり, 教科書では区別せずに使っている. 出力が状態と入力によって,が正しい

Transcript of 順序回路の動作 - Shimane Uhama/lec8-14-errata.pptx.pdf用語:有限状態機械 (finite...

Page 1: 順序回路の動作 - Shimane Uhama/lec8-14-errata.pptx.pdf用語:有限状態機械 (finite state machine, FSM) 9-7 ! 有限個の状態を持ち,その間の遷移の仕方が,入力に

2012年度 コンピュータハードウェア基礎 後半部分 第8-14回 訂正表

総合理工学研究科情報システム学領域 浜口 清治

2013.1.16 作成 2013.1.26 加筆 2013.1.28 加筆

資料番号とページ番号は 左下隅の番号を参照のこと

8-9 なら 8回目の資料,9ページ目

順序回路の動作

8-9

!  「値を書き換えた」直後 !  次に「値を書き換える」直前まで

0

0

1

1

0

0

1

11

0

0

1

0

0 ではなくて 1

用語:状態遷移関数(state transition function)

9-6

!  次状態関数(next state (logic) function) ともいう !  今の状態と次の状態の関係を論理関数で表現したもの

!

S1'= BS0S0 '= AS0S1状態遷移関数 (次状態関数)

S2 ではなくて,S0

用語:有限状態機械 (finite state machine, FSM)

9-7

!  有限個の状態を持ち,その間の遷移の仕方が,入力によってきまっている,抽象的な動作のモデル

!  状態遷移図または状態遷移表の形で表現できる

!  出力が状態のみによって定まる: Moore型機械 !  出力が状態と入力によって定まる: Mealy型機械

!  通常は,有限状態機械と順序回路は別のものとして扱うが,有限状態機械は,順序回路として実現可能であり,教科書では区別せずに使っている.

出力が状態と入力によって,が正しい

Page 2: 順序回路の動作 - Shimane Uhama/lec8-14-errata.pptx.pdf用語:有限状態機械 (finite state machine, FSM) 9-7 ! 有限個の状態を持ち,その間の遷移の仕方が,入力に

状態遷移表と出力表(Moore 型)

9-28

現状態 入力 次状態 S1 S0 A S'1 S'0

0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 1 1 0

1 0 0 0 1

1 0 1 0 0 状態 符号化 S0 00 S1 01 S2 10

現状態 出力 S1 S0 Y

0 0 0 0 1 0 1 0 1

Y = S1

S1’ = S0A

S0’ = A S0’ の右辺は A の否定

状態遷移表と出力表(Mealy型)

9-29

現状態 入力 次状態 出力

S0 A S'0 Y

0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 1

状態 符号化

S0 0

S1 1

!

S0 '= AY = S0A 出力の関数は,

現状態の変数と,入力に依存する (次状態の変数には依存しない, ‘ のついた変数は含まない)

状態符号化の表は上が 正しい

演習問題 10-3

10-32

!  前々ページの順序回路について左のパラメータを用いた場合の,セットアップ時間制約とホールド時間制約を示せ. !  最大クロック周波数をもとめよ. !  ホールド時間制約を満足しているかどうかを示せ

タイミングパラメータ

tccq = 30 ps

tpcq = 50 ps

tsetup = 60 ps

thold = 70 ps

tpd = 35 ps

tcd = 25 ps

ゲートごと

前ページ,ではなく,前々ページを 意図していた

前々ページ (10-30)の例の場合,ホールド時間制約については, tccq + tcd = 30 + 25 < thold = 70 となって満足されない

ちなみに,前ページ(10-31)の例の場合は, tccq + tcd = 30 + 50 > thold = 70 となって満足される

順序機械

11-3

!  状態遷移図または状態遷移表(と出力表)で与えられる. !  ここでは,順序回路(状態遷移関数や回路図で表現される)とは区別する.つまり,回路実現についてはとりあえず,考えない. !  以下では,Mealy型の順序機械のみを取り扱う(Moore型の順序機械にも拡張できる)

!  例

S2

S0

S4

S3

S1

0/10/1

0/0

0/00/0

1/0

1/0

1/01/0

1/0

Mealy型

現状態

入力A 次状態/出力Y

0 1

S0 S1, 0 S2, 0

S1 S4, 0 S3, 0

S2 S3, 1 S0, 0

S3 S2, 1 S4, 0

S4 S1, 0 S3, 0 S4 ではなく,S2 が正しい

Page 3: 順序回路の動作 - Shimane Uhama/lec8-14-errata.pptx.pdf用語:有限状態機械 (finite state machine, FSM) 9-7 ! 有限個の状態を持ち,その間の遷移の仕方が,入力に

条件割り当て文

12-15

!  4:1 のマルチプレクサのVerilog コードを考えてみるmodule mux4(input [3:0] d0, d1, d2, d3 input [1:0] s, output [3:0] y); assign y = s[1] ? (s[0] ? d3 : d2)

: (s[0] ? d1 : d0); endmodule

s[1] ? (s[0] ? d3 : d2) : (s[0] ? d1 : d0)

条件式 ?    式1 : 式2

[条件割り当て文の読み方]

s[1] が 1 のときは,式 (s[0] ? d3 : d2) の値をとる. さらに s[0] が1のときは,d3 の値を,0の時はd2の値をとる s[1] が 0 のときは,式 (s[0] ? d1 : d0) の値をとる. さらに s[0] が1のときは,d1 の値を,0の時はd0の値をとる

d0, d1, d2, d3 は3ビットの バスであることに注意 出力 y も3ビットでないと うまくいかない.

s[1] ではなく s[0] が正しい

Z の扱い

12-21

!  Z : ハイインピーダンスを表す記号 !  トライステートバッファで用いられていた.

module tristate(input [3:0] a, input en, output [3:0] y); assign y = en ? a : 4'bz; endmodule

4’bz は Z が4つ ならんでいることを表す

input や output の後の “logic” はつけないのが正解

遅延

11

!  #数字 で,その計算の遅延時間を表すことができる

module example(input a, b, c, output y); wire ab, bb, cb, n1, n2, n3; assign #1 {ab, bb, cb} = ~{a, b, c}; assign #2 n1 = ab & bb & cb; assign #2 n2 = a & bb & cb; assign #2 n3 = a & bb & c; assign #4 y = n1 | n2 | n3; endmodule

12-23

input や output の後の “logic” は不要

中間変数の宣言には logic の 代わりに wire が必要

リセット可能レジスタ

13-7

!  reset 信号の取扱によって,「同期リセット」と「非同期リセット」がある

module flopr(input clk, input reset, input [3:0] d, output reg [3:0] q);

// 同期リセット always @(posedge clk) if (reset) q <= 4'b0; else q <= d;

endmodule

if (条件式) 文1 else 文2

条件式が 1 のときは,文1 が実行される. 条件式が 0 のときは,文2 が実行される.

クロックの立ち上がり時に,reset が1 のときは,4ビットの 0 が q に取り込まれる. クロックの立ち上がり時に,reset が 0 のときは,d の値が q に取り込まれる.

リセット信号といえども,クロックが 立ち上がった時しか有効ではないので, 同期リセット,と呼ばれる

ここに reg が必要

Page 4: 順序回路の動作 - Shimane Uhama/lec8-14-errata.pptx.pdf用語:有限状態機械 (finite state machine, FSM) 9-7 ! 有限個の状態を持ち,その間の遷移の仕方が,入力に

リセット可能レジスタ

13-8

!  reset 信号の取扱によって,「同期リセット」と「非同期リセット」がある

module flopr(input clk, input reset, input [3:0] d, output reg [3:0] q);

// 非同期リセット always @(posedge clk, posedge reset) if (reset) q <= 4'b0; else q <= d;

endmodule

reset 信号の立ち上がり時{0→1変化時) に,if-else文の部分が実行される.

clk に関係なく,q の値が 0 になるので, 「非同期リセット」と呼ばれる

センシティビティ・リストの中のイベント のどれかが起これば,文が実行される

ここに reg が必要

SR ラッチの動作

14-5 と 14-6 の間

!  S = 0, R = 0: !  このとき Q = Qprev

!  Qprev は,「それ以前に」記憶されている値

!  記憶に使える

!  S = 1, R = 1: !  このとき Q = 0, Q = 0 !  使えない

第14回資料でこのページが抜けていた. 内容は 11-33 と全く同じ.

レポート第3回解説

14-27

S0 のあとに,TA が抜けていたー ー

レポート第3回解説!  状態遷移関数

特に指定して いないので 簡単化して いなくてもOK

S1 のあとに,S0 が抜けていたー

式変形が間違っていた. これが正しい

16-30