第2章 不当な取引制限 Ⅰ.序論 - Doshisha...-1-Econ.L.2007 第2章 不当な取引制限 Ⅰ.序論 1.カルテルと関連規定 2.カルテルの形態と規制のあり方
順序回路の動作 - Shimane Uhama/lec8-14-errata.pptx.pdf用語:有限状態機械 (finite...
Transcript of 順序回路の動作 - Shimane Uhama/lec8-14-errata.pptx.pdf用語:有限状態機械 (finite...
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型機械
! 通常は,有限状態機械と順序回路は別のものとして扱うが,有限状態機械は,順序回路として実現可能であり,教科書では区別せずに使っている.
出力が状態と入力によって,が正しい
状態遷移表と出力表(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 が正しい
条件割り当て文
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 が必要
リセット可能レジスタ
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