第三章 第三章第三章 第三章
閘階數之簡化
3-1 圖示法圖示法圖示法圖示法
二變數卡諾圖
2
圖示法 圖示法 圖示法 圖示法
三變數卡諾圖
3-2 四變數卡諾圖四變數卡諾圖四變數卡諾圖四變數卡諾圖
四變數卡諾圖
範例 範例 範例 範例
例題3-5 化簡布林函數
= ∑ ( 0 , 1 , 2 , 4 , 5 , 6 , 8 , 9 , 12 , 13 , 14 ) )
, , ,
( w x y z F
質含項質含項 質含項質含項
EX: F(A,B,C,D)=∑(0,2,3,5,7,8,9,10,11,13,15)
4
3-3 五變數卡諾圖五變數卡諾圖五變數卡諾圖五變數卡諾圖
相鄰方格數與每項中字元數的關係 相鄰方格數與每項中字元數的關係 相鄰方格數與每項中字元數的關係 相鄰方格數與每項中字元數的關係
範例 範例 範例 範例
EX: F(A,B,C,D,E)=∑(0,2,4,6,9,13,21,23,25,29,31)
3-4 和項積的化簡和項積的化簡和項積的化簡和項積的化簡
例題3-8 化簡布林函數為(a)積項和的形式與(b) 和項積的形式 F(A,B,C,D)=∑(0,1,2,5,8,9,10)
6
例題 例題 例題
例題3-8函數的閘電路函數的閘電路函數的閘電路函數的閘電路
3-5 不理會條件不理會條件不理會條件不理會條件
例題3-9 化簡布林函數 不理會條件是
=∑(1,3,7,11,15) )
, , , (w x y z F
=∑(0,2,5) )
, , , (w x y z d
3-6 NAND及及及NOR閘的應用及 閘的應用閘的應用閘的應用
NAND電路
NANDNAND
NANDNAND閘的圖示符號閘的圖示符號閘的圖示符號閘的圖示符號
8
二階電路 二階電路 二階電路 二階電路
例:F = AB+CD
例題例題
例題例題3333----101010利用10利用利用利用NANDNANDNANDNAND閘完成布林函數閘完成布林函數閘完成布林函數閘完成布林函數
=∑(1,2,3,4,5,7) )
, , (x y z F
布林函數以二階 布林函數以二階 布林函數以二階
布林函數以二階NANDNANDNANDNAND閘閘閘閘實現之步驟實現之步驟實現之步驟實現之步驟
將函數簡化成積項和的形式。
將表示式中至少含有2個字元的每一個 積項用一個NAND閘來表示。每個NAND閘 的輸入為每一項中的變數,由此構成邏 輯電路圖的第一階邏輯閘。
布林函數以二階 布林函數以二階 布林函數以二階
布林函數以二階NANDNANDNANDNAND閘閘閘閘實現之步驟實現之步驟實現之步驟實現之步驟
在第二階的部分使用單一個AND-invert 或invert-OR的閘圖示符號來表示,而 其輸入來自第一階閘的輸出。
若函數中有任一項只含一個文字(變 數),則在第一階需要一個反相器,然 而,若將單一個字元取補數,則可以直 接將它連接到第二階NAND閘的一個輸
10
多階 多階 多階
多階NANDNANDNANDNAND閘閘閘閘
多階 多階 多階
多階ANDANDANDAND ---- OR電路轉換成多階電路轉換成多階電路轉換成多階電路轉換成多階
NAND NAND NAND
NAND閘之轉換步驟閘之轉換步驟閘之轉換步驟閘之轉換步驟
將所有的AND閘使用AND-invert圖形符 號的NAND閘來取代。
將所有的OR閘使用invert-OR圖形符號 的NAND閘來取代。
檢查圖中所有的小圈,在沿著同一條線 上的每一個小圈若不是用來補償其它小 圓的的話,則插入一個反相器(一個輸 入的NAND閘)或是將輸入字元取補數。
範例 範例 範例
範例 F =(AB′+ A′B)(C+D′)
NOR電路電路電路電路
12
NOR閘的圖示符號閘的圖示符號閘的圖示符號閘的圖示符號
範例範例 範例範例
3333----7777其他二階電路其他二階電路其他二階電路其他二階電路
線結邏輯
非退化型式 非退化型式 非退化型式 非退化型式
AND-OR
NAND-NAND
NOR-OR
OR-NAND
OR-AND
NOR-NOR
NAND-AND
AND-NOR
14
AND AND AND
AND----OROROROR---INVERT-INVERTINVERT電路INVERT電路電路電路
OROR
OROR----ANDANDANDAND---INVERT-INVERTINVERT電路INVERT電路電路電路
其他二階型式實現電路 其他二階型式實現電路 其他二階型式實現電路 其他二階型式實現電路
其他二階型式實現電路 其他二階型式實現電路 其他二階型式實現電路 其他二階型式實現電路
16
3-8
互斥-OR
函數互斥-OR y x y x y
x⊕ = ′+ ′
全等
) (
1 0 1
0
⊕ ′
=
′⊕
′=
⊕
′=
⊕
=
⊕
= ′
⊕
=
⊕
y x y x y x
x x
x x
x x
x x
) (
)
(x⊕ y ′= xy′+x′y ′ y
x xy
y x y x
′ + ′
=
+ ′
′+
=( )( )
奇函數奇函數
奇函數奇函數、、、、偶函數偶函數偶函數偶函數
奇函數---三個或更多個變數中,奇數個 變數等於1則函數等於1
偶函數---三個或更多個變數中,偶數個 變數等於1則函數等於1
三變數奇函數 三變數奇函數 三變數奇函數
三變數奇函數、、、、偶函數偶函數偶函數偶函數
三變數奇函數 三變數奇函數 三變數奇函數
三變數奇函數、、、、偶函數偶函數偶函數偶函數
18
四變數奇函數 四變數奇函數 四變數奇函數
四變數奇函數、、、、偶函數偶函數偶函數偶函數
同位產生器與檢查器 同位產生器與檢查器 同位產生器與檢查器 同位產生器與檢查器
同位產生器
同位檢查器
偶同位產生器
偶同位檢查器 偶同位檢查器 偶同位檢查器 偶同位檢查器
同位產生器與檢查器 同位產生器與檢查器 同位產生器與檢查器 同位產生器與檢查器
z y x
P= ⊕ ⊕ C =x⊕ y⊕z⊕P
20
3-9 硬體描述語言硬體描述語言硬體描述語言硬體描述語言
邏輯模擬(logic simulation)
邏輯合成(logic synthesis)
測試平台(test bench)
模組表示法 模組表示法 模組表示法 模組表示法
HDL 範例3 -1
//Description of the simple circuit of Fig. 3-37 module smpl_circuit(A,B,C,x,y);
input A,B,C;
output x,y;
wire e;
andg1(e,A,B);
not g2(y, C);
or g3(x,e,y);
endmodule
HDL電路電路電路電路
閘延遲閘延遲 閘延遲閘延遲
HDL 範例 3-2
//Description of circuit with delay
module circuit_with_delay (A,B,C,x,y);
input A,B,C;
output x,y;
wiree;
and #(30) g1(e,A,B);
or #(20) g3(x,e,y);
22
HDL HDL HDL
HDL 範例範例範例範例 3333----3333
((((模擬一個具有延遲電路的測試平台模擬一個具有延遲電路的測試平台模擬一個具有延遲電路的測試平台))))模擬一個具有延遲電路的測試平台
//Stimulus for simple circuit module stimcrct;
reg A,B,C;
wire x,y;
circuit_with_delay cwd(A,B,C,x,y);
initial
HDL HDL HDL
HDL 範例範例範例範例 3333----3333
((((模擬一個具有延遲電路的測試平台模擬一個具有延遲電路的測試平台模擬一個具有延遲電路的測試平台))))模擬一個具有延遲電路的測試平台
begin
A = 1'b0; B = 1'b0; C = 1'b0;
#100
A = 1'b1; B = 1'b1; C = 1'b1;
#100 $finish;
end
endmodule
HDL HDL HDL
HDL 範例範例範例範例 3333----3333
((((模擬一個具有延遲電路的測試平台模擬一個具有延遲電路的測試平台模擬一個具有延遲電路的測試平台))))模擬一個具有延遲電路的測試平台
//Description of circuit with delay
module circuit_with_delay (A,B,C,x,y);
input A,B,C;
output x,y;
wire e;
and #(30) g1(e,A,B);
or #(20) g3(x,e,y);
not #(10) g2(y,C);
endmodule
布林表示式 布林表示式 布林表示式 布林表示式
HDL 範例 3-4
//Circuit specified with Boolean equations module
module module
module circuit_bln (x,y,A,B,C,D);
input input input
input A,B,C,D;
output output output output x,y;
assign assign assign
assign x = A | (B & C) | (~B & C);
assign assign assign
assign y = (~B & C) | (B & ~C & ~D);
D B BC A
x= + + ′ D C B C B
y = ′ + ′ ′
24
使用者定義的原始值 使用者定義的原始值 使用者定義的原始值 使用者定義的原始值
使用關鍵字 primitive primitive primitive primitive 作宣告
只可以有一個輸出且此輸出必須列在埠 名單的第一個還有必須用關鍵字outputoutputoutputoutput來 宣告。
輸入數目不限制,至於它們在inputinputinputinput宣告 中的順序則必須與它們在下面表中所給 值的順序相同。
使用者定義的原始值 使用者定義的原始值 使用者定義的原始值
使用者定義的原始值((((UDP)UDP)UDP)UDP)
真值表必須在關鍵字tabletabletabletable及endtableendtableendtable之endtable 間。
輸入值依順序列出,用冒號(:)代表結 束,輸出通常是每一列的最後一個記 錄,後面跟著是一個分號(;)。
最後用關鍵字endprimitiveendprimitiveendprimitiveendprimitive作結束。
HDL HDL HDL
HDL 範例範例範例範例 3333----5555
((((利用一個真值表來定義利用一個真值表來定義利用一個真值表來定義UDP)利用一個真值表來定義UDP)UDP)UDP)
//User defined primitive(UDP) primitive crctp (x,A,B,C);
output x;
inputA,B,C;
//Truth table for x(A,B,C) = Minterms (0,2,4,6,7) table
HDL HDL HDL
HDL 範例範例範例範例 3333----5555
((((利用一個真值表來定義利用一個真值表來定義利用一個真值表來定義UDP)利用一個真值表來定義UDP)UDP)UDP)
// A B C : x (Note that this is only a comment) 0 0 0 : 1;
0 0 1 : 0;
0 1 0 : 1;
0 1 1 : 0;
1 0 0 : 1;
1 0 1 : 0;
1 1 0 : 1;
1 1 1 : 1;
26
HDL HDL HDL
HDL 範例範例範例範例 3333----5555
((((利用一個真值表來定義利用一個真值表來定義利用一個真值表來定義UDP)利用一個真值表來定義UDP)UDP)UDP)
//Instantiate primitive module declare_crctp;
reg x,y,z;
wirew;
crctp (w,x,y,z);
endmodule