前川/教育/論理回路設計論
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[前川/教育]]
#contents
**icds6における対策 [#sa697d16]
***inputのピンをおこうとしてInvalid Net Expressionという文字がでておけない。 [#jc252133]
-Add pin windowのattach Net Expression がYesになっているのかチェック。なってたらNoへ。
***図面間でコピーできない。 [#y03d1299]
-縮尺を合わせてあげればできます。
***シンボルの上に緑文字で変なエラー [#t3ab7926]
-シンボル作成時にロジックラベルを変更してみて。
***テストベンチ作成のためのtestfixture.newがつくれない [#m6068fd7]
-runファイルを消してみる。
***マルチシートをつくってしまった後だとシンボル化できない。 [#qdf5d173]
-hogehoge(@)sheet.... => hogehoge に変更。
***netlistあたりの問題 [#d1017983]
-check->hierarchy -> check => all schematic
***その他 [#ve9d6c70]
-A:とりあえずicds6を落としてみる。
**Introduction & Exercise 1 "Representations of Numbers" [#s110cec6]
***内容 [#e9c0e6c4]
>icds6を用いて各回路の設計を。(回路図は書いてある)
**Exercise 1 "Representations of Numbers" & 2 "Logics" [#o8a2c174]
***内容 [#h2bf77fb]
>検証方法について
**Exercise 3 "Boolean Algebra and Two-level Logics" [#kc077cca]
***内容 [#tea3f1aa]
>>バグがある論理式や回路図が描かれているのでどこが間違っているのかを判断して、
正しい回路を設計する。
***Exerise 4 にむけて [#v9626e7f]
>The Minterm Canonical Disjunctive Form、The Maxterm Canonical Conjuctive Fromについてはそれぞれここの講義資料にある。
**Exercise 4 "Minimization of Two-level Logics" [#q1473eaf]
***内容 [#bd4862bd]
>>真理値表から各自のデータを持っていき、それに対して以下の1-4の回路を設計する。&br;
dont't careのあるもの、ないものの二つの真理値表それぞれに対して。
+真理値より最少項の加法標準形を求める。
--真理値表より1のところだけも持ってくればよい。
+真理値より最大項の乗法標準形を求める。
--真理値表より0のところ(fの否定)を持っていき、ド・モルガンの法則を適用。
+カルノマップより最少積和形を求めよ。
--カルノマップの1のところをできるだけくくって作ればよい。
+カルノマップより最少和積形を求めよ。
--カルノマップの0のところをできるだけくくって作り、それを反転して、ド・モルガンを適用。
**Exercise 5 "Other Representations of Logic Functions" [#m855802b]
***内容 [#h543bc84]
>>2-4の回路を設計。
+カルノマップを使い最少の積和を見つける
--くくれるだけ1をくくって終わり。
+1で作った最少積和をfactoringやdecompositionを使い、できるだけリテラルの少ない多段回路に変形する。
--factoringでの変数のくくり方は複数あるため、すべてのパターンを行い最小のリテラル数となるものを選ぶ。
+2で作った多段回路をINVとANDゲートのみで表す。
--ORゲートを使用しているところに対して、2重否定をとり、最後にド・モルガンの公式にあてはめればできる。
+3のINVとORゲートバージョン
--2重否定をANDゲートに対してとればできます。
***多段論理 [#vaa88446]
>利点
-リテラル数が減る。
-簡単なゲートだけで実現できる。
<
>問題点
-性能低下。
<
***Factoring [#r3402642]
>
論理式を共通因数で括ること。&br;
例
>>f = (a∧b) ∨ (a∧c∧d)&br;
f = a ∧ (b∨(c∧d))&br;
<<
***Decomposition [#k0cab087]
>
入力数を減らすこと。&br;
例
>>f = a ∧ c ∧ d&br;
f = a ∧ (c ∧ d)&br;
<<
***Binary Decosopm Diagrams (BDDs) [#x4e465fa]
-っていうものがありましてm、検証に使えるそうです。
**Exercise 6 "Delays and Hazards" [#zc39f6fa]
***内容 [#ibb88d0e]
+回路に対して遅延を設定します。
+すると、static hazardが発生する箇所が出てくるのでその理由を書きます。
+最後にstatic hazardがでないように対策して終了です。
>注記:static hazardがでるパターンは3つありますが、3つしかでない理由が書ければ3つで。
それができないのならば64(16*4)パターンすべてを試してもらうことになります。
***Static Hazards [#b746cb27]
>出力の値が変化しないけれども起こるハザード。
>終点の入力に対するパスの遅延が始点の入力に対するパスの遅延よりも短い場合に起こる。
-対策
>>始点と終点の両方をカバーするゲートと付け加える。
>>つまり、入力に対して影響を受けないゲートを付け加えてあげる。
***Dynamic Hazards [#a317b96d]
>出力の値が変化するときに付いてくるハザード。
>入力の値を複数変更したときに現れる。
>始点ゲートとカルノマップ上で交差していないゲートを通って終点に遷移した場合に起こる可能性がある。
-対策
>>始点と途中通過点をカバーできるようなゲートを付け加える、もしくできるように変化させる。
***Logic Hazards [#xf882fe7]
>回路実装に依存して起こる。
-対策
>>回路変更
***Function Hazards [#tc86f987]
>仕様自体がはじめから持っているハザード。
>入力の値を複数変更したときに現れる。
-対策
>>ない。
**Exercise 7 "Combinational Circuits (1)" [#n5be9618]
***内容 [#oaa56899]
+Multiplexerの作成
+Decoderの作成
+FullAdderの作成
+16bit版 Ripple Carry Adderの作成
***Logic circuitsの分類 [#ge3ba5a2]
-Combinational circuit:現在の入力のみで出力が決まる回路
-Memory logics
-Sequential circuits:過去の内部状態と取得時の入力信号とで出力が決まる回路。
***Ripple Carry Adder(RCA) [#e43b8c78]
***Carry Lookahead Adder(CLA) [#sc97f027]
-P = A xor B
-G = A and B
-Cout(i) = G(i) or (P(i) and Cin(i))
-Cin(i) = Cout(i-1)
***Design tradeoff [#q79fbd01]
||CENTER:RCA|CENTER:CLA|
|Area|small|Large|
|Performance|Slow|Fast|
**Execise 8 "Combinational Circuits (2)" [#o900468b]
***内容 [#gabf795d]
+16bits版Addsubの作成
+16bits版ALUの作成
***2の補数表現によるAddSubの構築 [#x17ba81c]
>反転(INV)+1(Cin)
***ALU [#kf03766e]
|ALUsel|Function|
|00|addition|
|01|subtraction|
|10|or|
|11|and|
***Multiplier [#aac8613c]
>全て分解した後に2にかかる重さごとに整列。あとは計算。
**Execise 10 "Memory Logics" [#j9a56e16]
***内容 [#ea3fe68b]
-演習課題のペーパーに書いてある回路を描いてシミュレーションするだけ。
+RS NOR Latchの作成。
+Master-slave DFFの作成。
+Postive edge-trigger DFFの作成。
+DFFを用いて16bitレジスタを作成。
***Memory Logics [#ze84e4d0]
-論理信号を通過させたり保持させたりする機能を有する回路。
-ラッチ
--[[レベルトリガ>http://japan.zdnet.com/glossary/exp/レベルトリガ/]]な記憶素子
--タイミング必要条件が厳しい。
-フリップフロップ
--[[エッジトリガ>http://japan.zdnet.com/glossary/exp/エッジトリガ/?s=1]]な記憶素子
--RS latchのタイミング必要条件を克服したもの。
***RS NOR Latch [#z7e138ff]
-素子の遅延により結果が異なるためSRが11の時は禁止。
|SR|Q Q~|Behavior|
|00|NC NC|前のデータを保持|
|01|0 1|リセット|
|10|1 0|セット|
|11|? ?|禁止入力|
***RS NAND Latch [#l8ccfefe]
|S R|Q Q~|Behavior|
|0 0|NC NC|前のデータを保持|
|0 1|0 1|リセット|
|0 1|1 0|セット|
|1 1|? ?|禁止入力|
***RS Latch with a Clock Signal [#z5c86bce]
-一つ前のの入力による出力が安定しない限り次の入力ができないため、クロックにて制御。
|C S R|Q Q~|Behavior|
|0 * *|NC NC|前のデータを保持|
|1 0 0|NC NC|前のデータを保持|
|1 0 1|0 1|リセット|
|1 1 0|1 0|セット|
|1 1 1|? ?|禁止入力|
***Master-slave RS Flip-Flop [#if6148c9]
|C S R|Z Z~ Q Q~|Behavior|
|1 0 0|NC NC NC NC|前のデータを保持|
|1 0 1|0 1 NC NC|リセット(Master)|
|1 1 0|1 0 NC NC|セット(Master)|
|1 1 1|0 0 NC NC|禁止入力|
|0 0 0|NC NC NC NC|前のデータを保持|
|0 0 1|NC NC NC NC|前のデータを保持|
|0 1 0|NC NC 0 1|リセット(Slave)|
|0 1 1|NC NC 0 0|禁止入力|
***Master-slave D Flip-Flop [#dfba300c]
-RSラッチの代わりにDを使う。
|D|Q Q~|
|0|0 1|
|1|1 0|
***Master-slave JK Flip-Flop [#dbc620e6]
-RSラッチの代わりにJとKのinputを使う
-禁止入力がなくなり、反転が増えた。
|J K|Q Q~|Behavior|
|0 0|NC NC|前のデータを保持|
|0 1|0 1|リセット|
|1 0|1 0|セット|
|1 1|Q~ Q|反転|
***Edge-trigger D Flip-Flop [#f023eb7b]
-positive edge(0->1) D Flip-Flop
--# means not ↑
|D C|Q Q~|
|0 ↑|0 1|
|1 ↑|1 0|
|* #|NC NC|
-negative edge(1->0) D Flip-Flop
**Exercise 11 "Sequential Circuits (1)" [#qcacc540]
***内容 [#m9e6577f]
+Rising edge trigger DFFの作成。
--課題に回路が載っているのでコピーするだけ。
+up-down counterの作成。
--Sequential Circuitsの作り方。の順序で作っていけばできるはず。
--各ステップについてはハンドアウト参照。
***Sequential Circuitsの作り方。 [#m0b130fc]
+State transitio graph or state table
--Sequential Circuitを表すための2つの方法。前者は円が各状態を示し、矢印が遷移を表す。後者は真理値表をベースにした感じ。
+State minimization
--重複する状態は削除。
+Generation of state transition table
--各状態に番号を振った上で入力と出力の関係図を真理値表のように記す。
+Synthesis of logic circuit (using Gate library)
--論理を作成。
+Finish
***Clock Cycle Time [#d67bfa8f]
-Master-slace FFs
Tclock > (Thold + Tcp + Tsetput) * 2
-Edge-trigger FFs
Tclock > Thold + Tcp + Tsetup
-Thold - the hold time:クロック信号が変更した後しばらくはinputデータは変更してはいけない。データ伝搬に支障をきたすため。
-Tcp - the critical path delay:
-Tsetup - the setup time:クロック信号が変化する前にinputデータが届いていないと正しい出力を出せないため。
**Exercise 12 "Sequential Circuits (2) Finite State Machine" [#kcf86221]
***内容 [#d6a770f5]
+自動販売機コントローラの設計
--ハンドアウトでは状態が(お釣り/ジュースの有無)と(表示価格/ジュースの有無)の2つが1つのFSMに書かれているためわかりずらいので、片方に統一すると分かりやすくて良い。
+ミーリ・マシンを使って自動販売機コントローラを改善
***1の仕様 [#d2867697]
-一回に50円、もしくは100円を投入することができる。
-200円が貯まった時点でコーヒーが出てくる。
-リセット信号が入ると初期値である0円に戻る。
-リセット付きedge-trigger DFFを使用。
-クロック信号が立ち上がった時には状態が遷移する。
-残金があった時はコントローラは繰り返し動く。(初期値に戻らない。)
***ムーア・マシン(moore machine) [#z55bf414]
-&color(red,){出力が(入力によらず)現在の状態によってのみ決定される有限オートマトン};である。ムーア・マシンの状態遷移図は各状態の出力信号を含む。(by wikipedia)
***ミーリ・マシン(mealy machine) [#l96411a1]
-ミーリ・マシン(Mealy Machine)は&color(red,){出力が現在状態と入力によって決定される有限オートマトン};である。つまり、状態遷移図で描くと遷移エッジには出力信号が付記される。例えば、入力 '0' を受けて状態1から状態2に遷移する際に、'1' が出力される(エッジには 0/1 と表示される)。&color(red,){一方ムーア・マシンの出力は現在状態にのみ左右され、入力には依存しない。};ただし、ミーリ・マシンはムーア・マシンと等価と見なすことが出来る。ムーア・マシンの状態は、ミーリ・マシンの現在状態と一つ前の状態の直積で表される。(by wikipedia)
***FSMの作り方。 [#b39717ba]
-各作業に対する詳細はハンドアウトを参照。
+Definition of input/output signals
+Decision of states
+Decision of state transitions
+Elimination of unreachable states
-上記以降の作業はExercise11を参照。
***ムーアとミーリの比較。 [#pc125b8a]
Large state space and a few output signals -> Mealy machine
Small state space and many output signals -> Moore machine
-状態遷移関数について
--ミーリのほうがムーアに比べて状態や状態遷移の数が少なくて良い場合が多い。
-出力関数
--ムーアのほうがミーリに比べて出力を決定する要素が一つしかなくて良い場合が多い。
**Exercise 13 "Summary" [#s8637685]
***内容 [#b1410037]
+traffic signal controllerの作成。
-やり方はExercise 12と同じ。
***仕様 [#m8e8713b]
-ムーアマシン
-状況設定
--太い道と細い道の交差する場所の交通信号の制御。
-車検知器
--細い道の方に建てられている。
--車を検知したらコントローラに対してCD(car detection)を1にして知らせる。
-各交通信号の設定
--太い道の交通信号の青色 => WB
--太い道の交通信号の黄色 => WY
--太い道の交通信号の赤色 => WR
--細い道の交通信号の青色 => NB
--細い道の交通信号の黄色 => NY
--細い道の交通信号の赤色 => NR
-交通信号の変化について
--初期値
---太い道の交通信号は青。(WB == 1)
---細い道の交通信号は赤。(NR == 1)
--Start (clock 0)
---車検知器が車を検知する。(CD == 1)
--after 2 cycles (clock 2)
---太い道の交通信号が黄になる。(WY == 1)
--after 1 cycle (clock 3)
---太い道の交通信号が赤になる。(WR == 1)
---細い道の交通信号が青になる。(NB == 1)
--after 2 cycle (clock 5)
---細い道の交通信号が黄になる。(NY == 1)
--after 1 cycle (clock 6)
---太い道の交通信号が青になる。(WB == 1)
---細い道の交通信号が赤になる。(NR == 1)
-クロックが立ち上がる度に状態は遷移します。
-ヒント
--状態数は全部で7つである。
--&color(red,){(WB==1,NR==1)の状態はCDを検知してから2サイクル後に次に状態に遷移する。};
終了行:
[[前川/教育]]
#contents
**icds6における対策 [#sa697d16]
***inputのピンをおこうとしてInvalid Net Expressionという文字がでておけない。 [#jc252133]
-Add pin windowのattach Net Expression がYesになっているのかチェック。なってたらNoへ。
***図面間でコピーできない。 [#y03d1299]
-縮尺を合わせてあげればできます。
***シンボルの上に緑文字で変なエラー [#t3ab7926]
-シンボル作成時にロジックラベルを変更してみて。
***テストベンチ作成のためのtestfixture.newがつくれない [#m6068fd7]
-runファイルを消してみる。
***マルチシートをつくってしまった後だとシンボル化できない。 [#qdf5d173]
-hogehoge(@)sheet.... => hogehoge に変更。
***netlistあたりの問題 [#d1017983]
-check->hierarchy -> check => all schematic
***その他 [#ve9d6c70]
-A:とりあえずicds6を落としてみる。
**Introduction & Exercise 1 "Representations of Numbers" [#s110cec6]
***内容 [#e9c0e6c4]
>icds6を用いて各回路の設計を。(回路図は書いてある)
**Exercise 1 "Representations of Numbers" & 2 "Logics" [#o8a2c174]
***内容 [#h2bf77fb]
>検証方法について
**Exercise 3 "Boolean Algebra and Two-level Logics" [#kc077cca]
***内容 [#tea3f1aa]
>>バグがある論理式や回路図が描かれているのでどこが間違っているのかを判断して、
正しい回路を設計する。
***Exerise 4 にむけて [#v9626e7f]
>The Minterm Canonical Disjunctive Form、The Maxterm Canonical Conjuctive Fromについてはそれぞれここの講義資料にある。
**Exercise 4 "Minimization of Two-level Logics" [#q1473eaf]
***内容 [#bd4862bd]
>>真理値表から各自のデータを持っていき、それに対して以下の1-4の回路を設計する。&br;
dont't careのあるもの、ないものの二つの真理値表それぞれに対して。
+真理値より最少項の加法標準形を求める。
--真理値表より1のところだけも持ってくればよい。
+真理値より最大項の乗法標準形を求める。
--真理値表より0のところ(fの否定)を持っていき、ド・モルガンの法則を適用。
+カルノマップより最少積和形を求めよ。
--カルノマップの1のところをできるだけくくって作ればよい。
+カルノマップより最少和積形を求めよ。
--カルノマップの0のところをできるだけくくって作り、それを反転して、ド・モルガンを適用。
**Exercise 5 "Other Representations of Logic Functions" [#m855802b]
***内容 [#h543bc84]
>>2-4の回路を設計。
+カルノマップを使い最少の積和を見つける
--くくれるだけ1をくくって終わり。
+1で作った最少積和をfactoringやdecompositionを使い、できるだけリテラルの少ない多段回路に変形する。
--factoringでの変数のくくり方は複数あるため、すべてのパターンを行い最小のリテラル数となるものを選ぶ。
+2で作った多段回路をINVとANDゲートのみで表す。
--ORゲートを使用しているところに対して、2重否定をとり、最後にド・モルガンの公式にあてはめればできる。
+3のINVとORゲートバージョン
--2重否定をANDゲートに対してとればできます。
***多段論理 [#vaa88446]
>利点
-リテラル数が減る。
-簡単なゲートだけで実現できる。
<
>問題点
-性能低下。
<
***Factoring [#r3402642]
>
論理式を共通因数で括ること。&br;
例
>>f = (a∧b) ∨ (a∧c∧d)&br;
f = a ∧ (b∨(c∧d))&br;
<<
***Decomposition [#k0cab087]
>
入力数を減らすこと。&br;
例
>>f = a ∧ c ∧ d&br;
f = a ∧ (c ∧ d)&br;
<<
***Binary Decosopm Diagrams (BDDs) [#x4e465fa]
-っていうものがありましてm、検証に使えるそうです。
**Exercise 6 "Delays and Hazards" [#zc39f6fa]
***内容 [#ibb88d0e]
+回路に対して遅延を設定します。
+すると、static hazardが発生する箇所が出てくるのでその理由を書きます。
+最後にstatic hazardがでないように対策して終了です。
>注記:static hazardがでるパターンは3つありますが、3つしかでない理由が書ければ3つで。
それができないのならば64(16*4)パターンすべてを試してもらうことになります。
***Static Hazards [#b746cb27]
>出力の値が変化しないけれども起こるハザード。
>終点の入力に対するパスの遅延が始点の入力に対するパスの遅延よりも短い場合に起こる。
-対策
>>始点と終点の両方をカバーするゲートと付け加える。
>>つまり、入力に対して影響を受けないゲートを付け加えてあげる。
***Dynamic Hazards [#a317b96d]
>出力の値が変化するときに付いてくるハザード。
>入力の値を複数変更したときに現れる。
>始点ゲートとカルノマップ上で交差していないゲートを通って終点に遷移した場合に起こる可能性がある。
-対策
>>始点と途中通過点をカバーできるようなゲートを付け加える、もしくできるように変化させる。
***Logic Hazards [#xf882fe7]
>回路実装に依存して起こる。
-対策
>>回路変更
***Function Hazards [#tc86f987]
>仕様自体がはじめから持っているハザード。
>入力の値を複数変更したときに現れる。
-対策
>>ない。
**Exercise 7 "Combinational Circuits (1)" [#n5be9618]
***内容 [#oaa56899]
+Multiplexerの作成
+Decoderの作成
+FullAdderの作成
+16bit版 Ripple Carry Adderの作成
***Logic circuitsの分類 [#ge3ba5a2]
-Combinational circuit:現在の入力のみで出力が決まる回路
-Memory logics
-Sequential circuits:過去の内部状態と取得時の入力信号とで出力が決まる回路。
***Ripple Carry Adder(RCA) [#e43b8c78]
***Carry Lookahead Adder(CLA) [#sc97f027]
-P = A xor B
-G = A and B
-Cout(i) = G(i) or (P(i) and Cin(i))
-Cin(i) = Cout(i-1)
***Design tradeoff [#q79fbd01]
||CENTER:RCA|CENTER:CLA|
|Area|small|Large|
|Performance|Slow|Fast|
**Execise 8 "Combinational Circuits (2)" [#o900468b]
***内容 [#gabf795d]
+16bits版Addsubの作成
+16bits版ALUの作成
***2の補数表現によるAddSubの構築 [#x17ba81c]
>反転(INV)+1(Cin)
***ALU [#kf03766e]
|ALUsel|Function|
|00|addition|
|01|subtraction|
|10|or|
|11|and|
***Multiplier [#aac8613c]
>全て分解した後に2にかかる重さごとに整列。あとは計算。
**Execise 10 "Memory Logics" [#j9a56e16]
***内容 [#ea3fe68b]
-演習課題のペーパーに書いてある回路を描いてシミュレーションするだけ。
+RS NOR Latchの作成。
+Master-slave DFFの作成。
+Postive edge-trigger DFFの作成。
+DFFを用いて16bitレジスタを作成。
***Memory Logics [#ze84e4d0]
-論理信号を通過させたり保持させたりする機能を有する回路。
-ラッチ
--[[レベルトリガ>http://japan.zdnet.com/glossary/exp/レベルトリガ/]]な記憶素子
--タイミング必要条件が厳しい。
-フリップフロップ
--[[エッジトリガ>http://japan.zdnet.com/glossary/exp/エッジトリガ/?s=1]]な記憶素子
--RS latchのタイミング必要条件を克服したもの。
***RS NOR Latch [#z7e138ff]
-素子の遅延により結果が異なるためSRが11の時は禁止。
|SR|Q Q~|Behavior|
|00|NC NC|前のデータを保持|
|01|0 1|リセット|
|10|1 0|セット|
|11|? ?|禁止入力|
***RS NAND Latch [#l8ccfefe]
|S R|Q Q~|Behavior|
|0 0|NC NC|前のデータを保持|
|0 1|0 1|リセット|
|0 1|1 0|セット|
|1 1|? ?|禁止入力|
***RS Latch with a Clock Signal [#z5c86bce]
-一つ前のの入力による出力が安定しない限り次の入力ができないため、クロックにて制御。
|C S R|Q Q~|Behavior|
|0 * *|NC NC|前のデータを保持|
|1 0 0|NC NC|前のデータを保持|
|1 0 1|0 1|リセット|
|1 1 0|1 0|セット|
|1 1 1|? ?|禁止入力|
***Master-slave RS Flip-Flop [#if6148c9]
|C S R|Z Z~ Q Q~|Behavior|
|1 0 0|NC NC NC NC|前のデータを保持|
|1 0 1|0 1 NC NC|リセット(Master)|
|1 1 0|1 0 NC NC|セット(Master)|
|1 1 1|0 0 NC NC|禁止入力|
|0 0 0|NC NC NC NC|前のデータを保持|
|0 0 1|NC NC NC NC|前のデータを保持|
|0 1 0|NC NC 0 1|リセット(Slave)|
|0 1 1|NC NC 0 0|禁止入力|
***Master-slave D Flip-Flop [#dfba300c]
-RSラッチの代わりにDを使う。
|D|Q Q~|
|0|0 1|
|1|1 0|
***Master-slave JK Flip-Flop [#dbc620e6]
-RSラッチの代わりにJとKのinputを使う
-禁止入力がなくなり、反転が増えた。
|J K|Q Q~|Behavior|
|0 0|NC NC|前のデータを保持|
|0 1|0 1|リセット|
|1 0|1 0|セット|
|1 1|Q~ Q|反転|
***Edge-trigger D Flip-Flop [#f023eb7b]
-positive edge(0->1) D Flip-Flop
--# means not ↑
|D C|Q Q~|
|0 ↑|0 1|
|1 ↑|1 0|
|* #|NC NC|
-negative edge(1->0) D Flip-Flop
**Exercise 11 "Sequential Circuits (1)" [#qcacc540]
***内容 [#m9e6577f]
+Rising edge trigger DFFの作成。
--課題に回路が載っているのでコピーするだけ。
+up-down counterの作成。
--Sequential Circuitsの作り方。の順序で作っていけばできるはず。
--各ステップについてはハンドアウト参照。
***Sequential Circuitsの作り方。 [#m0b130fc]
+State transitio graph or state table
--Sequential Circuitを表すための2つの方法。前者は円が各状態を示し、矢印が遷移を表す。後者は真理値表をベースにした感じ。
+State minimization
--重複する状態は削除。
+Generation of state transition table
--各状態に番号を振った上で入力と出力の関係図を真理値表のように記す。
+Synthesis of logic circuit (using Gate library)
--論理を作成。
+Finish
***Clock Cycle Time [#d67bfa8f]
-Master-slace FFs
Tclock > (Thold + Tcp + Tsetput) * 2
-Edge-trigger FFs
Tclock > Thold + Tcp + Tsetup
-Thold - the hold time:クロック信号が変更した後しばらくはinputデータは変更してはいけない。データ伝搬に支障をきたすため。
-Tcp - the critical path delay:
-Tsetup - the setup time:クロック信号が変化する前にinputデータが届いていないと正しい出力を出せないため。
**Exercise 12 "Sequential Circuits (2) Finite State Machine" [#kcf86221]
***内容 [#d6a770f5]
+自動販売機コントローラの設計
--ハンドアウトでは状態が(お釣り/ジュースの有無)と(表示価格/ジュースの有無)の2つが1つのFSMに書かれているためわかりずらいので、片方に統一すると分かりやすくて良い。
+ミーリ・マシンを使って自動販売機コントローラを改善
***1の仕様 [#d2867697]
-一回に50円、もしくは100円を投入することができる。
-200円が貯まった時点でコーヒーが出てくる。
-リセット信号が入ると初期値である0円に戻る。
-リセット付きedge-trigger DFFを使用。
-クロック信号が立ち上がった時には状態が遷移する。
-残金があった時はコントローラは繰り返し動く。(初期値に戻らない。)
***ムーア・マシン(moore machine) [#z55bf414]
-&color(red,){出力が(入力によらず)現在の状態によってのみ決定される有限オートマトン};である。ムーア・マシンの状態遷移図は各状態の出力信号を含む。(by wikipedia)
***ミーリ・マシン(mealy machine) [#l96411a1]
-ミーリ・マシン(Mealy Machine)は&color(red,){出力が現在状態と入力によって決定される有限オートマトン};である。つまり、状態遷移図で描くと遷移エッジには出力信号が付記される。例えば、入力 '0' を受けて状態1から状態2に遷移する際に、'1' が出力される(エッジには 0/1 と表示される)。&color(red,){一方ムーア・マシンの出力は現在状態にのみ左右され、入力には依存しない。};ただし、ミーリ・マシンはムーア・マシンと等価と見なすことが出来る。ムーア・マシンの状態は、ミーリ・マシンの現在状態と一つ前の状態の直積で表される。(by wikipedia)
***FSMの作り方。 [#b39717ba]
-各作業に対する詳細はハンドアウトを参照。
+Definition of input/output signals
+Decision of states
+Decision of state transitions
+Elimination of unreachable states
-上記以降の作業はExercise11を参照。
***ムーアとミーリの比較。 [#pc125b8a]
Large state space and a few output signals -> Mealy machine
Small state space and many output signals -> Moore machine
-状態遷移関数について
--ミーリのほうがムーアに比べて状態や状態遷移の数が少なくて良い場合が多い。
-出力関数
--ムーアのほうがミーリに比べて出力を決定する要素が一つしかなくて良い場合が多い。
**Exercise 13 "Summary" [#s8637685]
***内容 [#b1410037]
+traffic signal controllerの作成。
-やり方はExercise 12と同じ。
***仕様 [#m8e8713b]
-ムーアマシン
-状況設定
--太い道と細い道の交差する場所の交通信号の制御。
-車検知器
--細い道の方に建てられている。
--車を検知したらコントローラに対してCD(car detection)を1にして知らせる。
-各交通信号の設定
--太い道の交通信号の青色 => WB
--太い道の交通信号の黄色 => WY
--太い道の交通信号の赤色 => WR
--細い道の交通信号の青色 => NB
--細い道の交通信号の黄色 => NY
--細い道の交通信号の赤色 => NR
-交通信号の変化について
--初期値
---太い道の交通信号は青。(WB == 1)
---細い道の交通信号は赤。(NR == 1)
--Start (clock 0)
---車検知器が車を検知する。(CD == 1)
--after 2 cycles (clock 2)
---太い道の交通信号が黄になる。(WY == 1)
--after 1 cycle (clock 3)
---太い道の交通信号が赤になる。(WR == 1)
---細い道の交通信号が青になる。(NB == 1)
--after 2 cycle (clock 5)
---細い道の交通信号が黄になる。(NY == 1)
--after 1 cycle (clock 6)
---太い道の交通信号が青になる。(WB == 1)
---細い道の交通信号が赤になる。(NR == 1)
-クロックが立ち上がる度に状態は遷移します。
-ヒント
--状態数は全部で7つである。
--&color(red,){(WB==1,NR==1)の状態はCDを検知してから2サイクル後に次に状態に遷移する。};
ページ名: