星期四, 1月 04, 2007

第三階段測驗

第三階段測驗:
隨機四組 4 bit 串列輸入及串列輸出,使用 Mealy-Type FSM 設計,此數位電路均以 NAND 邏輯閘設計,最後於 MAX+Plus II 上模擬驗證...



1. 由表中畫出有限狀態機圖(FSM),如下圖。



2. 將狀態圖轉換成狀態表,並減化狀態。

下圖為狀態圖轉成的狀態表。

觀察狀態表,可以將S4、S5、S6視為同一狀態,因此把S5和S6全都換成S4狀態。
換完後,又發現S2和S3也可視為同一狀態,因此再將S3換成S2。

下圖則為簡化後的狀態表。


下圖為簡化後的狀態圖(FSM)。


3. 指定狀態,並求出次一狀態 q0+、q1+ 及輸出 Y 的布林函數式。

下圖為指定狀態,並將狀態填入表中。


以下卡諾圖為求出 q0+、q1+、Y 的布林函數式。




5. 畫出電路圖。


註:下圖為D型正反器電路(以 NAND 邏輯閘)。


6. 模擬電路。

星期四, 12月 07, 2006

第二階段測驗

第二階段測驗:
針對某 4 inputs, 1 outpout 電路進行真值表、K-Map化簡。並找出 0-Hazard 所在,進行改進設計使其成為 0-Hazard Free。所有數位電路設計均以結構化 Verilog 設計(僅使用 NAND 邏輯閘)。 最後於 SynaptiCAD 模擬驗證...

1. 由真值表中畫出卡諾圖,簡化卡諾圖並求出輸出的布林函數式。


2. 求出輸出布林函數後,以 Verilog HDL 來設計此電路,程式碼如下:

module verilog_1205(A,B,C,D,F);
 input A,B,C,D;
 output F;

 wire a1,b1,c1,d1,f1,f2,f3,f4,f5;

 // NOT
 nand #5 (a1,A,A);
 nand #5 (b1,B,B);
 nand #5 (c1,C,C);
 nand #5 (d1,D,D);

 // Function
 nand #5 (f1,a1,b1,d1);
 nand #5 (f2,B,c1);
 nand #5 (f3,A,B,D);
 nand #5 (f4,A,b1,c1);

 // Output
 nand #5 (f5,f1,f2,f3,f4);
 nand #5 (F,f5,f5);

endmodule


module testbench;
 reg A,B,C,D;
 wire F;

 verilog_1205 V0 (A,B,C,D,F);

 // 測試 0-Hazard 時使用
 //==========================================
 initial
 begin
  #0 A=0; B=0; C=0; D=0;

  // hazard 1
  #40 B=1;
  #40 B=0;

  // hazard 2
  #40 A=1;
  #40 B=1;
  #40 B=0;

  // hazard 3
  #40 A=0;
  #40 A=1;
  #40 $finish;
 end
 //==========================================

 // 測試真值表16個訊號時使用
 //==========================================
 initial
 begin
  A=0; B=0; C=0; D=0;
  #800 $finish;
 end

 always #320 A=~A;
 always #160 B=~B;
 always #80 C=~C;
 always #40 D=~D;
 //==========================================

endmodule

3. 下圖為根據真值表輸入訊號組合所模擬出來的波形圖。


4. 由卡諾圖中可以找出此電路有四個 0-Hazard,如下圖所示。

分別在:
  A:0    B:0←→1 C:0  D:0
  A:1    B:0←→1 C:0  D:0
  A:1    B:0←→1 C:0  D:1
  A:0←→1  B:0    C:0 D:0
時會有 0-Hazard 產生。

5. 下圖為 0-Hazard 的模擬波形圖。


6. 在卡諾圖中進行修改設計,將 0-Hazard 消除掉,求出改進後的布林函式。


以下為改進後電路的 Verilog 程式碼:

module verilog_1205(A,B,C,D,F);
 input A,B,C,D;
 output F;
 wire a1,b1,c1,d1,f1,f2,f3,f4,f5;

 // NOT
 nand #5 (a1,A,A);
 nand #5 (b1,B,B);
 nand #5 (c1,C,C);
 nand #5 (d1,D,D);

 // Function
 nand #5 (f1,a1,b1,d1);
 nand #5 (f2,B,c1);
 nand #5 (f3,A,B,D);
 nand #5 (f4,A,b1,c1);

 // 0-Hazard Free
 nand #5 (h1,A,c1);
 nand #5 (h2,c1,d1);

 // Output
 nand #5 (f5,f1,f2,f3,f4,h1,h2);
 nand #5 (F,f5,f5);

endmodule


module testbench;
 reg A,B,C,D;
 wire F;

 verilog_1205 V0 (A,B,C,D,F);

 initial
 begin
  #0 A=0; B=0; C=0; D=0;

  // hazard 1
  #40 B=1;
  #40 B=0;

  // hazard 2
  #40 A=1;
  #40 B=1;
  #40 B=0;

  // hazard 3
  #40 A=0;
  #40 A=1;
  #40 $finish;
 end


endmodule


7. 下圖為 0-Hazard Free 的模擬波形圖,由波形圖中可看到 0-Hazard 已被消除。

星期三, 11月 29, 2006

第一階段測驗

第一階段測驗:
針對某 4 inputs、1 outpout 電路進行真值表、K-Map化簡。並找出
0-Hazard 所在,然後進行改進設計使其成為 0-Hazard Free。最後
以 MAX+plus II 模擬驗證...

1. 由真值表中畫出卡諾圖,簡化卡諾圖並求出輸出的布林函數式。
(為了找出 0-Hazard 所在,在 這裡不將卡諾圖化到最簡)



2. 在 MAX+plus II 上畫出電路圖,如下圖。


下圖為根據真值表輸入訊號組合所模擬出來的波形圖。


3. 由卡諾圖中可以找出此電路有三個 0-Hazard,如下圖所示。
分別在:
  A:0 B:0←→1 C:0  D:0
  A:0 B:0←→1 C:1  D:1
  A:0 B:1    C:1  D:0←→1
時會有 0-Hazard 產生。


4. 下圖為 0-Hazard 的模擬波形圖。

A:0 B:0←→1 C:0  D:0 的情形


A:0 B:0←→1 C:1  D:1 的情形


A:0 B:1    C:1  D:0←→1 的情形


5. 在卡諾圖中進行修改設計,將 0-Hazard 消除掉。求出改進後的電路之布林函式。



6. 下圖為 0-Hazard Free 的電路圖及模擬波形圖,由波形圖中可看到 0-Hazard 已被消除。



A:0 B:0←→1 C:0  D:0 的情形


A:0 B:0←→1 C:1  D:1 的情形


A:0 B:1    C:1  D:0←→1 的情形

星期二, 10月 17, 2006

Karnaugh Map

本次練功內容:
隨機給一個真值表,由真值表畫出卡諾圖求出函數再畫出電路圖。

給定一個4輸入1輸出之真值表,如下表所示。



依真值表畫出卡諾圖,並簡化卡諾圖求出布林函數。



由布林函數式在Max+Plus II上畫出波形圖,如下圖。



模擬此電路的波形圖,如下。其結果和真值表相同。其中在圖中可以看到輸出的結果有延遲的現象。



星期二, 9月 26, 2006

1 Bit Full Adder

今天課堂主要是教Max+Plus II的使用方法
以下是今天練習的結果

一位元全加器由一位元的A和B以及輸入進位Cin作相加的動作,
產生總和Sum和輸出進位Cout。下表為一位元全加器的真值表,
由真值表可求出sum和Cout的函數。



由布林代數函數畫出波形圖,如下



模擬此電路的波形圖,其結果和真值表相同。而Max+Plus II 在
模擬波形圖時會有延遲,所以由圖中可以看到輸出的結果都有延
遲的現象。而在實際電路中也是如此,一個訊號通過邏輯閘時會
也是會有Delay的情形。

Verilog HDL 第二堂課

上完第二次的課
了解到Verilog HDL和VHDL之間的差異
VHDL的語法比Verilog HDL來得嚴謹
沒有像Verilog HDL容易學習
而且Verilog HDL 在業界中是常用的硬體描述語言

同時老師在課堂上提到
一個IC設計工程師
硬體描述語言是必須要會的東西
也告訴我們在外面職場上的一些情形

希望在這學期的這堂課上
能夠得到許多獲
累積多一點的實力
才能有能力在外面臨接挑戰


一些關於 Verilog HDL 的網站:
http://zh.wikipedia.org/wiki/Verilog_HDL#Verilog_2001
http://www.icdiy.org/article.php3?sid=25
http://www.icdiy.org/article.php3?sid=26
http://www.icdiy.org/article.php3?sid=27

星期二, 9月 19, 2006

第一次

今天第一次上課
只申請這個Blog
沒做什麼事 很輕鬆

但這個Blog我還有點不太熟悉
希望能夠快點上手

有空時
大家也多來灌灌水吧 ^^