hanbat national university prof. lee...

76
Hanbat National University Prof. Lee Jaeheung Sun, H y e -Se ung Sun, H y e -Se ung

Upload: others

Post on 25-Aug-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

Hanbat National University Prof. Lee Jaeheung

������������������������ � � � � � � � � ������������������������ � � � � � � � �

Sun, H y e -Se ungSun, H y e -Se ung

Page 2: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

������������������������ � � � � � � � �

���������������������������� � � � �

·�������� � � � � � � � �

·Multiplexer·Encoder·Decoder·Random Logic

·Adder·Subtractor·ALU·Lookup Table·Comparator

������������������������ � � � � � � � �

� � � �� � � �� � � �� � � � Verilog � �� �� �� �

· � � � � � � � � � �� � �� �� � �� �� � �� �� � �

· � �� �� �� � � � �� � �� � �� � � (assign ����)· � � !� � !� � !� � ! " # $" # $" # $" # $ (if����, case����, for����)· % % % % &&&& task ( ' (' (' (' ( ) �) �) �) � event * + ,* + ,* + ,* + , - .- .- .- . / 0 1/ 0 1/ 0 1/ 0 1 )· " 2" 2" 2" 2 3 4 5 43 4 5 43 4 5 43 4 5 4

���6 ����6 ����6 ����6 � . 7 � .. 7 � .. 7 � .. 7 � . 8 �8 �8 �8 �

Verilog � �� �� �� �

·initial����· 4 � 94 � 94 � 94 � 9 � �� � �� �� � �� �� � �� �� � � (cmos, nmos, tran ::::)·forever, while, repeat:�:�:�:� ; < �; < �; < �; < �

·wait, event, . �. �. �. � :::: = � >= � >= � >= � > * +* +* +* + � �� �� �� �

·force-release, fork-join· ' 4 ?' 4 ?' 4 ?' 4 ? task ($finish, $time::::)

���������������������������� � � � � � � � � � � � � � � � �� � � �� � � �� � � � Verilog � �� �� �� �

Page 3: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

������������������������ � � � � � � � �

� ������������������������ � � � � � � � � � � �� � �� � �� � �

�always ��� ���� � � (sensitivity list)� � ( , a lw a ys � � � � � � � � )�� � ��� � � � � � � � �� � � �

� � � ! " # $ ; % & ' ( % & ) � * + , � - . ( / 0 1 2 3 4� i f � � �� c ase �

� 5 � � 6 7 � � 8 9 : � ; � < * = � �> � � � �

� � � ! " # $ ; ? @ / A & � � B C D E � / F 2 3 4� � � � � � � �� � � � � � �

� G H � I � J 2K G H �L # 1 M � � / % & � N � O � �

� � � � � � � � � � � � � �

� H P Q R � / S & (r ea d a b ility)T U I V W X Y Z A / [ & T \ W ] ^ , _ `a T b � V I V W c d A e & T f W g

Page 4: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.1.1 � � � � ��� ���� ���� ���� � � � � � � � � �

� 4�������� N A N D � � �� � �� � �� � �

module nand4_op1(a, y);input [3:0] a;output y;

assign y = ~(a[0] & a[1] & a[2] & a[3]); // �������� � � �� � �� � �� � �

// assign y = ~&a; // � �� �� �� � � � �� � �� � �� � �

// nand U0(y, a[0], a[1], a[2], a[3]); // � �� �� �� � � � � � � � � � � � � �

endmodule

a[0]a[1]a[2]a[3]

y

@ A@ A@ A@ A 10.1 ~ 10.3

� �� �� �� � � � �� � �� � �� � � , � � � � �� � � � �� � � � �� � � � � , � � �� � �� � �� � � � �� � � �� � � �� � � �� �

Page 5: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.1.1 � � � � ��� ���� ���� ���� � � � � � � � � �

� 4�������� N A N D � � �� � �� � �� � �

module nand4_if(a, y);input [3:0] a;output y;reg y;

always @(a) beginif(a == 4'b1111) y = 1'b0; else y = 1'b1;

endendmodule @ A@ A@ A@ A 10.4

if �! ��! ��! ��! �

Page 6: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.1.1 � � � � ��� ���� ���� ���� � � � � � � � � �

� 4�������� N A N D � � �� � �� � �� � � ( � � � � � � � � � � � � � � � � )module tb_nand4;reg [3:0] a;wire y;integer i;

nand4_op1 U0(a, y);// nand4_op2 U0(a, y);// nand4_gate U0(a, y);// nand4_if U0(a, y);

initial begina = 0;for(i=1; i < 32; i=i+1)

#20 a = i;end

endmodule @ A@ A@ A@ A 10.5

Page 7: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.1.1 � � � � ��� ���� ���� ���� � � � � � � � � �

4 " #" #" #" # NAND � � � �� � � �� � � �� � � � $ % & � '$ % & � '$ % & � '$ % & � ' ( )( )( )( )

Page 8: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.1.1 � � � � ��� ���� ���� ���� � � � � � � � � �

� 3�������� N O R � � � � � � � � � � � � � � � � � � � � � � � �� � � �� � � �� � � � � � � � �� � � � �� � � � �� � � � � , � � � � � � � � � � � � � � � � ����

� � �� � �� � �� � � � � �� � �� � �� � � � �� �� �� �

� ���� � � � � � � �

� � � � � � � � � �

� � � � � � � � � � � � �

� if � � � � � � �

Page 9: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.1.2 � � � �� � � �� � � �� � � � ��� � ���� � ���� � ���� � � � � � � � � � �

� 4 � �� �� �� � 2�������� N O R � � �� � �� � �� � �

module nor_op(a, b, y);input [3:0] a, b;output [3:0] y;

assign y = ~(a | b);

// assign y[0] = ~(a[0] | b[0]); // assign y[1] = ~(a[1] | b[1]);// assign y[2] = ~(a[2] | b[2]);// assign y[3] = ~(a[3] | b[3]);

endmodule @ A@ A@ A@ A 10.6

a[3:0]b[3:0]

y[3] y[2] y[1] y[0]

� �� �� �� � � � �� � �� � �� � �

Page 10: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.1.2 � � � �� � � �� � � �� � � � ��� � ���� � ���� � ���� � � � � � � � � � �

� 4 � �� �� �� � 2�������� N O R � � �� � �� � �� � �

module nor_gate(a, b, y);input [3:0] a, b;output [3:0] y;

nor U0 [3:0](y, a, b);

endmodule @ A@ A@ A@ A 10.7

module nor_for(a, b, y);input [3:0] a, b;output [3:0] y;reg [3:0] y;integer i;

always @(a or b) beginfor(i=0; i < 4; i=i+1)

y[i] = ~(a[i] | b[i]);end

endmodule @ A@ A@ A@ A 10.8

� � �� � �� � �� � � � �� � � �� � � �� � � �� � * +* +* +* +

for , - �, - �, - �, - �

Page 11: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.1.2 � � � �� � � �� � � �� � � � ��� � ���� � ���� � ���� � � � � � � � � � �

� 4 � �� �� �� � 2�������� X O R � � � � � � � � � � � � � � � � � � � � � � � �� � � �� � � �� � � � � � � � �� � � � �� � � � �� � � � � , � � � � � � � � � � � � � � � �

�� � ��� � ��� � ��� � � � � �� � �� � �� � � � �� �� �� �

� ���� � � � � � � �

� � � � � � � � � � � � �

� fo r � � � � � � �

Page 12: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.1.3 � � � � �� � � � �� � � � �� � � � � � � � � � � � �

� ! " # ! " # ! " # ! " # � � �� � �� � �� � �

edcbay ⋅+⋅+= )()(

module comb_gate(a, b, c, d, e, y);input a, b, c, d, e;output y;

assign y = ~((a | b) &(c | d) & e);

endmodule @ A@ A@ A@ A 10.10

� �� �� �� � � � �� � �� � �� � �

edcbay ⋅++⋅=

Page 13: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.1.4 � �� �� �� �� �� �� �� � � � � � � � � �

� $ % & $ % & $ % & $ % & � � �� � �� � �� � �

module booth_enc(xin, y, y2, neg);input [2:0] xin;output y, y2, neg;reg [2:0] tmp;

assign y = tmp[2];assign y2 = tmp[1];assign neg = tmp[0];

always @(xin) begincase(xin)

0 : tmp = 3'b000;1,2 : tmp = 3'b100;3 : tmp = 3'b010;4 : tmp = 3'b011;5,6 : tmp = 3'b101;7 : tmp = 3'b001;

endcaseend

endmodule @ A@ A@ A@ A 10.11

case ����

xin[2:0] y y2 neg

000 0 0 0

001 1 0 0

010 1 0 0

011 0 1 0

100 0 1 1

101 1 0 1

110 1 0 1

111 0 0 1

.... 10.2 Booth / 0 1/ 0 1/ 0 1/ 0 1 2 �.2 �.2 �.2 �.

Page 14: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.1.4 � �� �� �� �� �� �� �� � � � � � � � � �

� $ % & $ % & $ % & $ % & � � �� � �� � �� � �

module tb_booth_enc;reg [2:0] xin;wire y, y2, neg;integer i;

booth_enc U0(xin, y, y2, neg);

initial beginxin = 0;for(i=1; i < 16; i=i+1)

#20 xin = i;end

endmodule @ A@ A@ A@ A 10.12

3 4 � 5 63 4 � 5 63 4 � 5 63 4 � 5 6

Page 15: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.1.4 � �� �� �� �� �� �� �� � � � � � � � � �

$ % & � '$ % & � '$ % & � '$ % & � ' ( )( )( )( )

7 87 87 87 8 10.6 0 90 90 90 9 10.11�����:�:�:�: ( )( )( )( )

Page 16: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.1.4 � �� �� �� �� �� �� �� � � � � � � � � �

� � � � � � � � � $ % & $ % & $ % & $ % & V e r i l o g H D L ���� � � � � �� � � � �� � � � �� � � � � , � � � � � � � � � � � � � � � � �� � ��� � ��� � ��� � �� � �� � �� � �� � � � �� �� �� �

xin[2:0] yz y2 neg add

000 0 1 0 1

001 1 0 0 0

010 1 0 0 0

011 1 1 0 0

100 1 1 1 1

101 1 0 1 1

110 1 0 1 1

111 0 1 1 1

.... 10.3 Booth / 0 1/ 0 1/ 0 1/ 0 1 2 �.2 �.2 �.2 �.(2)

Page 17: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.1.5 Lookup Table���� � � � � � � � �

� L o o k u p T a b l e� � � ! " # $ % & ' ( ) * + , - � . / � 0 1 � 2 �3

4 � � 5 6 � � � 78

� 9 : � � � ; < = , > ? � @ A B 4 * , C D E F " G l o o k u p H �7 9 : � I J � ; 0 1 , - � . � K L M � � �

� 0 1 N - � . O � c a s e � P � Q R� lo o k u p ! " # $�� case �# � � % & � �� n- ' ( # $�) * + l o o k u p ! " , � - . # / 0 ) 1 2n2

Page 18: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.1.5 Lookup Table���� � � � � � � � �

� Lookup Table���� � � �� � �� � �� � � ( � �� �� �� � � �� �� �� � )18

function [7:0] data_line1;input [3:0] addr_in;

begincase(addr_in)

0 : data_line1 = 8'b0010_0000;1 : data_line1 = 8'b0100_0100;2 : data_line1 = 8'b0110_1001;3 : data_line1 = 8'b0110_0111;

. . . . . .14 : data_line1 = 8'b0110_1110;15 : data_line1 = 8'b0010_0000;

default : data_line1 = 8'b0000_0000;endcase

endendfunction @A@A@A@A 10.13

Page 19: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.2 � � � � �� � � � �� � � � �� � � � �

� 4�������� 4: 1 ' ( ) * +' ( ) * +' ( ) * +' ( ) * +

�4S) 4 � � T U V " G � W � X Y � ; J U� i f � � � , c a s e � , � � � � � Z� � � ; @ A Bmodule mux41_if(sel, a, b, c, d, y);input [1:0] sel;input [3:0] a, b, c, d;output [3:0] y;reg [3:0] y;

always @(sel or a or b or c or d) beginif (sel == 2'b00) y = a;else if(sel == 2'b01) y = b;else if(sel == 2'b10) y = c;else if(sel == 2'b11) y = d;else y = 4'bx;

endendmodule @A@A@A@A 10.14

if �!��!��!��!�

Page 20: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.2 � � � � �� � � � �� � � � �� � � � � � � � � � � � �

� 4�������� 4: 1 ' ( ) * +' ( ) * +' ( ) * +' ( ) * +

module mux41_case(sel, a, b, c, d, y);input [1:0] sel;input [3:0] a, b, c, d;output [3:0] y;reg [3:0] y;

always @(sel or a or b or c or d) begincase(sel)

0 : y = a;1 : y = b;2 : y = c;3 : y = d;

default : y = 4'bx;endcase

endendmodule @A@A@A@A 10.15

case ����

Page 21: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.2 � � � � �� � � � �� � � � �� � � � � � � � � � � � �

� 4�������� 4: 1 ' ( ) * +' ( ) * +' ( ) * +' ( ) * +

module mux41_conop(sel, a, b, c, d, y);input [1:0] sel;input [3:0] a, b, c, d;output [3:0] y;

assign y =(sel == 0) ? a :(sel == 1) ? b :(sel == 2) ? c :(sel == 3) ? d : 4'bx;

endmodule @A@A@A@A 10.16

�!�!�!�! � � �� � �� � �� � �

Page 22: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.2 � � � � �� � � � �� � � � �� � � � � � � � � � � � �

� 4�������� 4: 1 ' ( ) * +' ( ) * +' ( ) * +' ( ) * +

module tb_mux41;reg [3:0] a, b, c, d;reg [1:0] sel;wire [3:0] y;

mux41_if U0(sel, a, b, c, d, y);// mux41_case U0(sel, a, b, c, d, y);// mux41_conop U0(sel, a, b, c, d, y);

initial begina = 4'b0001; b = 4'b0010;c = 4'b0100; d = 4'b1000;

#80 a = 4'b1100; b = 4'b0011;c = 4'b0110; d = 4'b1001;

end

initial sel = 2'b00;always #20 sel = sel + 1;

endmodule @A@A@A@A 10.17

3 4 � 5 63 4 � 5 63 4 � 5 63 4 � 5 6

Page 23: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.2 � � � � �� � � � �� � � � �� � � � � � � � � � � � �

� 4�������� 4: 1 ' ( ) * +' ( ) * +' ( ) * +' ( ) * +

$ % & � '$ % & � '$ % & � '$ % & � ' ( )( )( )( )

Page 24: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.2 � � � � �� � � � �� � � � �� � � � � � � � � � � � �

� 4�������� 4: 1 ' ( ) * +' ( ) * +' ( ) * +' ( ) * +

7 87 87 87 8 10.8 0 90 90 90 9 10.14 ~ 10.16���� � :� :� :� : ( )( )( )( )

Page 25: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.2 � � � � �� � � � �� � � � �� � � � � � � � � � � � �

� 8�������� 8: 1 ' ( ) * +' ( ) * +' ( ) * +' ( ) * +

module mux81_case(sel, in_word, out_bit);input [2:0] sel;input [7:0] in_word;output out_bit;reg out_bit;

always @(sel or in_word) begincase(sel)

endcaseend

endmodule @A@A@A@A 10.18

case ����

@A,@A,@A,@A, B 6 0 1B 6 0 1B 6 0 1B 6 0 1 .

Page 26: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.1 2���� � � � � � � � �

� n : m 2 � � � � � � � �

�n- ' ( # 34� m- ' ( # 5 4% & 6 7 (8 , n= 2 m)� i f � � � , case � , f o r 9 : � ; <= �� > ? % & � �

� ��� ; ��� � � � � � � �/� � � � � � � � � � � � � �� � � � � �

� @ � � A B C D 34� � E # F G A + 5 4A d o n’ t car e H � I J K< � � D L & � M N O � � P

C DC DC DC D a[3:0] E DE DE DE D y[1:0]

0001 00

0010 01

0100 10

1000 11

.... 10.4 4:2 22222 / 0 ; �/ 0 ; �/ 0 ; �/ 0 ; �2� .2� .2� .2� .

Page 27: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.1 2���� � � � � � � � �

� 4: 2 2 $$$$ , - ., - ., - ., - .

module enc_4to2_case(a, y);input [3:0] a;output [1:0] y;reg [1:0] y;

always @(a) begincasex(a)

4'b0001 : y = 0;4'b0010 : y = 1;4'b0100 : y = 2; 4'b1000 : y = 3;default : y = 2'bx;

endcaseend

endmodule @A@A@A@A 10.19

case ����

module enc_4to2_if(a, y);input [3:0] a;output [1:0] y;reg [1:0] y;

always @(a) beginif (a == 4'b0001) y = 0;else if(a == 4'b0010) y = 1;else if(a == 4'b0100) y = 2;else if(a == 4'b1000) y = 3;else y = 2'bx;

endendmodule @A@A@A@A 10.20

if �!��!��!��!�

Page 28: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.1 2���� � � � � � � � �

� 4: 2 2 $$$$ , - ., - ., - ., - .

module enc_4to2_for(a, y);input [3:0] a;output [1:0] y;reg [1:0] y;reg [3:0] temp;integer n;

always @(a) begintemp = 4'b0001;y = 2'bx;for(n = 0; n < 4; n = n + 1) begin

if(a == temp)y = n;

temp = temp << 1;end

endendmodule @A@A@A@A 10.21

for , - �, - �, - �, - �

Page 29: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.1 2���� � � � � � � � �

� 4: 2 2 $$$$ , - ., - ., - ., - .

module tb_enc_4to2;reg [3:0] a;wire [1:0] y;

enc_4to2_case U0(a, y);// enc_4to2_if U0(a, y);// enc_4to2_for U0(a, y);

always begina = 4'b0001;

#20 a = 4'b0010;#20 a = 4'b0100;#20 a = 4'b1000;#20;

end

endmodule @A@A@A@A 10.22

3 4 � 5 63 4 � 5 63 4 � 5 63 4 � 5 6

Page 30: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.1 2���� � � � � � � � �

0 90 90 90 9 10.19���� � : ( )� : ( )� : ( )� : ( )

0 90 90 90 9 10.20, 0 90 90 90 9 10.21���� � : ( )� : ( )� : ( )� : ( )

Page 31: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.1 2���� � � � � � � � �

� e n a b l e / 0 / 0 / 0 / 0 1 21 21 21 2 433332 � $� $� $� $ , - . , - . , - . , - . 4 5 4 5 4 5 4 5 � 6 � �� 6 � �� 6 � �� 6 � � � � � �� � � �� � � �� � � �

���� , 7 8 9 � : �7 8 9 � : �7 8 9 � : �7 8 9 � : � ; <; <; <; < � �� �� �� �

� c a s e �� � � �� i f � � �� � � �� f o r � � �� � � �

Page 32: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.2 ! " # $! " # $! " # $! " # $ � � � � � � � �

� 4: 2 = > ? @= > ? @= > ? @= > ? @ , - ., - ., - ., - .

.... 10.5 4:2 < = > ?< = > ?< = > ?< = > ? / 0 ; �/ 0 ; �/ 0 ; �/ 0 ; �2� .2� .2� .2� .

� �� �� �� � � � � �

a[3:0] y[1:0] valid

1xxx 11 1

01xx 10 1

001x 01 1

0001 00 1

0000 xx 0

Page 33: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.2 ! " # $! " # $! " # $! " # $ � � � � � � � �

� 4: 2 = > ? @= > ? @= > ? @= > ? @ , - ., - ., - ., - .

module pri_enc_4to2_if(a, valid, y);input [3:0] a;output valid;output [1:0] y;reg valid;reg [1:0] y;

always @(a) beginvalid = 1;if (a[3]) y = 3;else if(a[2]) y = 2;else if(a[1]) y = 1;else if(a[0]) y = 0;else begin

valid = 0;y = 2'bx;

endend

endmodule @A@A@A@A 10.23

if �!��!��!��!� � �� �� �� �

Page 34: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.2 ! " # $! " # $! " # $! " # $ � � � � � � � �

� 4: 2 = > ? @= > ? @= > ? @= > ? @ , - ., - ., - ., - .

module pri_enc_4to2_case(a, valid, y);input [3:0] a;output valid;output [1:0] y;reg valid;reg [1:0] y;

always @(a) beginvalid = 1;casex(a)

4'b1xxx : y = 3;4'b01xx : y = 2;4'b001x : y = 1;4'b0001 : y = 0;default : begin

valid = 0;y = 2'bx;

endendcase

endendmodule @A@A@A@A 10.24

casex ���� � �� �� �� �

Page 35: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.2 ! " # $! " # $! " # $! " # $ � � � � � � � �

� 4: 2 = > ? @= > ? @= > ? @= > ? @ , - ., - ., - ., - .

module pri_enc_4to2_for(a, valid, y);input [3:0] a;output valid;output [1:0] y;reg valid;reg [1:0] y;integer n;

always @(a) beginvalid = 0;y = 2'bx;for(n = 0; n < 4; n = n+1)

if(a[n]) beginvalid = 1;y = n;

endend

endmodule @A@A@A@A 10.25

for ���� � �� �� �� �

Page 36: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.2 ! " # $! " # $! " # $! " # $ � � � � � � � �

� 4: 2 = > ? @= > ? @= > ? @= > ? @ , - ., - ., - ., - .

module tb_pri_enc;reg [3:0] a;wire valid;wire [1:0] y;

pri_enc_4to2_case U0(a, valid, y);// pri_enc_4to2_if U0(a, valid, y);// pri_enc_4to2_for U0(a, valid, y);

always begina = 4'b0001;

#20 a = 4'b0010;#20 a = 4'b0100;#20 a = 4'b1000;#20;

endendmodule @A@A@A@A 10.26

3 4 � 5 63 4 � 5 63 4 � 5 63 4 � 5 6

Page 37: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.2 ! " # $! " # $! " # $! " # $ � � � � � � � �

� 4: 2 = > ? @= > ? @= > ? @= > ? @ , - ., - ., - ., - .

$ % & � '$ % & � '$ % & � '$ % & � ' ( )( )( )( )

Page 38: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.2 ! " # $! " # $! " # $! " # $ � � � � � � � �

� 4: 2 = > ? @= > ? @= > ? @= > ? @ , - ., - ., - ., - .

7 87 87 87 8 10.12 0 90 90 90 9 10.23 ~ 10.25���� � :� :� :� : ( )( )( )( )

Page 39: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.2 ! " # $! " # $! " # $! " # $ � � � � � � � �

� e n a b l e / 0 / 0 / 0 / 0 1 21 21 21 2 4: 2 = > ? @= > ? @= > ? @= > ? @ , - . , - . , - . , - . 4 5 4 5 4 5 4 5 � 6 � �� 6 � �� 6 � �� 6 � � � � �� � �� � �� � �

� �� �� �� � , 7 8 9 � : �7 8 9 � : �7 8 9 � : �7 8 9 � : � ; <; <; <; < � �� �� �� �

� c a s e �� � � �� i f � � �� � � �� f o r � � �� � � �

Page 40: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.3 % � % � % � % �

� m : n 2 $$$$ A - .A - .A - .A - .

�m- � � ) T U � n- � � ) J U P � [ \ (� , n= 2 m)�n: m 2 ] ^ E _ � ^ E ` , - � . � � a b c� i f � � � , c a s e � , f o r � � � Z ; d e f � P � @ A B

� 9 : � ; 34# ' ( Q � R F G S + 3/4 ' ( Q ) T U V 0 K< � � K + F G A W �

C DC DC DC D a[1:0] E DE DE DE D y[3:0]

00 0001

01 0010

10 0100

11 1000

.... 10.6 2:4 22222 @ 0 ; �@ 0 ; �@ 0 ; �@ 0 ; �2� .2� .2� .2� .

Page 41: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.3 % � % � % � % �

� 2 : 4 � $� $� $� $ A - .A - .A - .A - .

module dec_2to4_if(a, y);input [1:0] a;output [3:0] y;reg [3:0] y;

always @(a) beginif(a == 0) y = 4'b0001;else if(a ==1) y = 4'b0010;else if(a ==2) y = 4'b0100;else y = 4'b1000;

endendmodule @A@A@A@A 10.27

if �!��!��!��!� � �� �� �� �

Page 42: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.3 % � % � % � % �

� 2 : 4 � $� $� $� $ A - .A - .A - .A - .

module dec_2to4_case(a, y);input [1:0] a;output [3:0] y;reg [3:0] y;

always @(a) begincase(a)

0 : y = 4'b0001;1 : y = 4'b0010;2 : y = 4'b0100;3 : y = 4'b1000;default: y = 4'bx;

endcaseend

endmodule @A@A@A@A 10.28

case ���� � �� �� �� �

Page 43: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.3 % � % � % � % �

� 2 : 4 � $� $� $� $ A - .A - .A - .A - .

module dec_2to4_for(a, y);input [1:0] a;output [3:0] y;reg [3:0] y;integer n;

always @(a) beginfor(n = 0; n <= 3; n = n + 1)

if(a == n)y[n] = 1'b1;

elsey[n] = 1'b0;

endendmodule @A@A@A@A 10.29

for ���� � �� �� �� �

Page 44: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.3 % � % � % � % �

� 2 : 4 � $� $� $� $ A - .A - .A - .A - .

module tb_dec_2to4;reg [1:0] a;wire [3:0] y;

dec_2to4_case U0(a, y);// dec_2to4_if U0(a, y);// dec_2to4_for U0(a, y);

always begina = 4'b00;

#20 a = 4'b01;#20 a = 4'b10;#20 a = 4'b11;#20;

endendmodule @A@A@A@A 10.30

3 4 � 5 63 4 � 5 63 4 � 5 63 4 � 5 6

Page 45: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.3 % � % � % � % �

� 2 : 4 � $� $� $� $ A - .A - .A - .A - .

$ % & � '$ % & � '$ % & � '$ % & � ' ( )( )( )( )

Page 46: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.3 % � % � % � % �

� 2 : 4 � $� $� $� $ A - .A - .A - .A - .

7 87 87 87 8 10.14 0 90 90 90 9 10.27 ~ 10.29���� � :� :� :� : ( )( )( )( )

Page 47: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.3 % � % � % � % �

� A c t i v e-h i g h en able � � � � � � � � � �� �� �� � 3����6 � � �� � �� � �� � � (���� 1 0 . 7 )���� � � �� � �� � �� � � � � � �� � � �� � � �� � � �� � � � �� � � � �� � � � �� � � � � , � � � � !� � � � !� � � � !� � � � ! " #" #" #" # $ %$ %$ %$ %

� i f � � � ! � � � " #� e n ab l e $ % & �� a� ' ( ) * + { } , - . c as e �� � � / , ! � � � " #

enable � �� �� �� � a[2:0] � � � � y[5:0]

0 xxx 000000

1

000 000001

001 000010

010 000100

011 001000

100 010000

101 100000

110 000000

111 000000

.... 10.7

Page 48: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.3 % � % � % � % �

� B C D E F GB C D E F GB C D E F GB C D E F G A - .A - .A - .A - .

module dec_param(en, a, y);parameter in_width = 3, out_width = 8;input en;input [in_width-1:0] a;output [out_width-1:0] y;reg [out_width-1:0] y;integer n;

always @(en or a) beginif(!en)

y = 0;else

if(a > out_width-1)for(n = 0; n <= out_width-1; n = n+1)

y[n] = 1'bx;else

for(n = 0; n <= out_width-1; n = n+1)if(a == n)

y[n] = 1'b1;else

y[n] = 1'b0;end

endmodule @A@A@A@A 10.31

Page 49: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.3.3 % � % � % � % �

� � H� H� H� H d e c _ p a r a m ���� � I J� I J� I J� I J 3: 6 A - .A - .A - .A - .

module dec_param_inst(en, addr, dec_addr);input en;input [2:0] addr;output [5:0] dec_addr;

// 3:6 ������������ � �� �� �� �

dec_param #(3, 6) decoder_3to6(en, addr, dec_addr);

endmodule @A@A@A@A 10.32

Page 50: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.4 � & � & � & � &

� �K ��K ��K ��K �

�g T U ) h i j ^ k 2 � � l

� m n � � � , i f � � � , f o r � � � Z ; d e f � P � @ A B

module comp_assign(a, b, agtb, altb, aeqb);input [3:0] a, b;output altb, agtb, aeqb;

assign altb =(a < b);assign agtb =(a > b);assign aeqb =(a == b);

endmodule @A@A@A@A 10.33

� 4�������� �� ��� ��� ��� �

F � � G HF � � G HF � � G HF � � G H � �� �� �� �

Page 51: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.4 � & � & � & � &

� 4�������� �K ��K ��K ��K �

module comp_if(a, b, agtb, altb, aeqb);input [3:0] a, b;output altb, agtb, aeqb;reg altb, agtb, aeqb;

always @(a or b) beginaltb = 1'b0;agtb = 1'b0;aeqb = 1'b0;if(a == b) aeqb = 1'b1;else if(a > b) agtb = 1'b1;else altb = 1'b1;

endendmodule @A@A@A@A 10.34

if �!��!��!��!� � �� �� �� �

Page 52: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.4 � & � & � & � &

� 4�������� �K ��K ��K ��K �

module comp_for(a, b, agtb, altb, aeqb);parameter size=4;input [size-1:0] a, b;output altb, agtb, aeqb;reg altb, agtb, aeqb;integer i;

always @(a or b) beginaltb = 1'b0;agtb = 1'b0;aeqb = 1'b1;for(i = size-1; i > = 0; i=i-1) begin : comp_loop

if(a[i] != b[i]) beginagtb = a[i];altb = ~a[i];aeqb = 0;disable comp_loop;

endend

endendmodule @A@A@A@A 10.35

for ���� � �� �� �� �

Page 53: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.4 � & � & � & � &

� 4�������� �K ��K ��K ��K �

module tb_comp;reg [3:0] a, b;wire agtb, altb, aeqb;

// comp_assign Uo(a, b, agtb, altb, aeqb);// comp_if Uo(a, b, agtb, altb, aeqb);

comp_for Uo(a, b, agtb, altb, aeqb);

always begina = 4'b0001; b = 4'b1001;

#20 a = 4'b0010; b = 4'b0000;#20 a = 4'b1100; b = 4'b1101;#20 a = 4'b1001; b = 4'b1001;#20 a = 4'b0111; b = 4'b0100;#20 a = 4'b1111; b = 4'b1111;#20 a = 4'b1101; b = 4'b1001;#20 a = 4'b0000; b = 4'b0000;#20 a = 4'b1010; b = 4'b1010;#20 a = 4'b0001; b = 4'b1011;#20;

endendmodule @A@A@A@A 10.36

3 4 � 5 63 4 � 5 63 4 � 5 63 4 � 5 6

Page 54: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.4 � & � & � & � &

� 4�������� �K ��K ��K ��K �

$ % & � '$ % & � '$ % & � '$ % & � ' ( )( )( )( )

Page 55: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.4 � & � & � & � &

� 4�������� �K ��K ��K ��K �

0 90 90 90 9 10.33���� � :� :� :� : ( )( )( )( )

Page 56: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.4 � & � & � & � &

� 4�������� �K ��K ��K ��K �

0 90 90 90 9 10.34���� � :� :� :� : ( )( )( )( )

Page 57: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.4 � & � & � & � &

� 4�������� �K ��K ��K ��K �

0 90 90 90 9 10.35���� � :� :� :� : ( )( )( )( )

Page 58: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.5 Tri-state ' (' (' (' (� 3 L ML ML ML M N �N �N �N � O C � NO C � NO C � NO C � N

� � � ) ; d o p " G q r , s I O � t u v D � u 3 � � ) w x

o p P � y z � 2 � 3

� X Y Z [ + / 0 ) \ � A ] ^ _ B S + / 0 �� ) \ � & ` 0

a � b c h i g h i mp ed ance d e & f g� � � � � � { � � � � � � � � � � � ; @ A B

CircuitBlock-B

enable_b

bus_data

CircuitBlock-A

enable_a

data_b

data_a

Page 59: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.5 Tri-state ' (' (' (' (� 3 L ML ML ML M N �N �N �N � O C � NO C � NO C � NO C � N

module tristate_conop(in, oe, out);input in, oe;output out;

assign out =(oe) ? in : 1'bz;endmodule @A@A@A@A 10.37

�!� � ��!� � ��!� � ��!� � � � �� �� �� �

module tristate_gate(in, oe, out);input in, oe;output out;

bufif1 b1(out, in, oe); // Active-high oe

endmodule @A@A@A@A 10.38

� � �� � �� � �� � � � � � � � � � � � � � � � � � � � �� �� �� �

Page 60: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.5 Tri-state ' (' (' (' (� 3 L ML ML ML M N �N �N �N � O C � NO C � NO C � NO C � N

`define PERIOD 20

module tb_tristate;reg in, oe;

// tristate_gate U0_tristate_1(in, oe, out);tristate_conop U0_tristate_2(in, oe, out);

initial begin#0 oe = 1'b0; in = 1'b1;#(`PERIOD) in = 1'b0; #(`PERIOD) in = 1'b1; oe = 1'b1;#(`PERIOD) in = 1'b0;#(`PERIOD*2) in = 1'b1;#(`PERIOD*3) in = 1'b0;#(`PERIOD) oe = 1'b0;#(`PERIOD*2) in = 1'b1;#(`PERIOD) in = 1'b1;#(`PERIOD*15) $stop;

endendmodule @A@A@A@A 10.39

3 4 � 5 63 4 � 5 63 4 � 5 63 4 � 5 6

Page 61: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.5 Tri-state ' (' (' (' (� 3 L ML ML ML M N �N �N �N � O C � NO C � NO C � NO C � N

$ % & � '$ % & � '$ % & � '$ % & � ' ( )( )( )( )

Page 62: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.5 Tri-state ' (' (' (' (� P � QP � QP � QP � Q N �N �N �N � O C � NO C � NO C � NO C � N

� | M 2 } ~ 2 � b " � �

CircuitBlock

send

bus_data

rcv

received_data

send_data

Page 63: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.5 Tri-state ' (' (' (' (� P � QP � QP � QP � Q N �N �N �N � O C � NO C � NO C � NO C � N

module bidir_bus(send, send_data, rcv, received_data, bus_data);input send, rcv;input [7:0] send_data;inout [7:0] bus_data;output [7:0] received_data;

assign received_data =(rcv) ? bus_data : 8'bz;assign bus_data =(send) ? send_data : bus_data;

endmodule @A@A@A@A 10.40

Page 64: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.5 Tri-state ' (' (' (' (� P � QP � QP � QP � Q N �N �N �N � O C � NO C � NO C � NO C � N

‘define PERIOD 20module tb_bidir_bus;

reg send, rcv;reg [7:0] send_data;wire [7:0] received_data, bus_data;

bidir_bus U0(send, send_data, rcv, received_data, bus_data);

initial begin#0 send = 1'b0; rcv = 1'b0; send_data = 8'h00;#(‘PERIOD) send_data = 8'h07; #(‘PERIOD) send_data = 8'h15; send = 1'b1;#(‘PERIOD) send_data = 8'hAB; #(‘PERIOD) send_data = 8'h34; #(‘PERIOD) send_data = 8'h11; send = 1'b0; rcv = 1'b1;#(‘PERIOD*2) send_data = 8'h21; #(‘PERIOD) send_data = 8'h77;#(‘PERIOD*2) send_data = 8'h66; send = 1'b1; rcv = 1'b1;#(‘PERIOD) send_data = 8'h12; #(‘PERIOD) send_data = 8'hCF; send = 1'b0; rcv = 1'b0;#(‘PERIOD) send_data = 8'h89;#(‘PERIOD) send_data = 8'h65; #(‘PERIOD*15) $stop;

endendmodule @A@A@A@A 10.41

3 4 � 5 63 4 � 5 63 4 � 5 63 4 � 5 6

Page 65: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.5 Tri-state ' (' (' (' (� P � QP � QP � QP � Q N �N �N �N � O C � NO C � NO C � NO C � N

$ % & � '$ % & � '$ % & � '$ % & � ' ( )( )( )( )

Page 66: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.5 Tri-state ' (' (' (' (

� R SR SR SR S 1 0 . 2 1 N �N �N �N � O C � N O C � N O C � N O C � N T UT UT UT U V W X V W X V W X V W X Y I � �Y I � �Y I � �Y I � � � � � � �� � � � �� � � � �� � � � �, 7 8 9 � : �7 8 9 � : �7 8 9 � : �7 8 9 � : � ; <; <; <; < � �� �� �� � (ZZZZ, [ � E 2[ � E 2[ � E 2[ � E 2 8������������ \ ]\ ]\ ]\ ] )

CircuitBlock-B

enable_a

bus_data

CircuitBlock-A

data_b

data_a

MUX

enable_b

7 87 87 87 8 10.21

Page 67: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.6 ) * +) * +) * +) * + , -, -, -, - . / �. / �. / �. / � � 0� 0� 0� 0

� ^ � _^ � _^ � _^ � _ ` 2` 2` 2` 2 � � � � a �a �a �a �

� c a s e �" @� e � % case � � O � � 9 4 f � � � �

� i f � � � " G el se 7 8 � q � 4 � � �

�?#J?#J?#J?#J T a b % c � T a b % c � T a b % c � T a b % c � a �a �a �a �

�@� e � % T U � � O " i 3 J U / � � b j P � f +

� d ef au l t / � f +

Page 68: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.6 )*+)*+)*+)*+ , -, -, -, - . / �. / �. / �. / � � 0� 0� 0� 0

� � �� �� �� � a � d 2a � d 2a � d 2a � d 2 case e e e e ffff

module case_latch(sel, in1, in2, y_out);input [1:0] sel;input [3:0] in1, in2;output [3:0] y_out;reg [3:0] y_out;

always @(sel or in1 or in2) begincase(sel)

2'b10 : y_out = in1;2'b01 : y_out = in2;

endcaseend

endmodule @A@A@A@A 10.42

Page 69: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.6 )*+)*+)*+)*+ , -, -, -, - . / �. / �. / �. / � � 0� 0� 0� 0

� � �� �� �� � a � d 2a � d 2a � d 2a � d 2 case e e e e ffff

09090909 10.42���� $ % & � '$ % & � '$ % & � '$ % & � ' ( )( )( )( )

Page 70: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.6 )*+)*+)*+)*+ , -, -, -, - . / �. / �. / �. / � � 0� 0� 0� 0

� � �� �� �� � a � d 2a � d 2a � d 2a � d 2 case e e e e ffff

09090909 10.42���� � :� :� :� : ( )( )( )( )

A 6A 6A 6A 6

Page 71: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.6 )*+)*+)*+)*+ , -, -, -, - . / �. / �. / �. / � � 0� 0� 0� 0

� � �� �� �� � a � d 2a � d 2a � d 2a � d 2 i f e e e e ffff

module if_latch(a, b, y_out);input a, b;output [3:0] y_out;reg [3:0] y_out;

always @(a or b) beginif (({a, b}) == 2'b11) y_out = 5;else if(({a, b}) == 2'b10) y_out = 2;else if(({a, b}) == 2'b01) y_out = 3; // No else block

endendmodule @A@A@A@A 10.43

Page 72: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.6 )*+)*+)*+)*+ , -, -, -, - . / �. / �. / �. / � � 0� 0� 0� 0

� � �� �� �� � a � d 2a � d 2a � d 2a � d 2 i f e e e e ffff

09090909 10.43���� � :� :� :� : ( )( )( )( )

A 6A 6A 6A 6

Page 73: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.6 )*+)*+)*+)*+ , -, -, -, - . / �. / �. / �. / � � 0� 0� 0� 0

� case e ge ge ge g d ef au l t e �e �e �e � h " Gh " Gh " Gh " G i =i =i =i =

� � � e 5 r 4 f � �

module case_no_latch1(sel, in1, in2, y_out);input [1:0] sel, in1, in2;output [1:0] y_out;reg [1:0] y_out;

always @(sel or in1 or in2) begincase(sel)

2'b10 : y_out = in1;2'b01 : y_out = in2;default : y_out = 2'bx;

endcaseend

endmodule @A@A@A@A 10.44

Page 74: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.6 )*+)*+)*+)*+ , -, -, -, - . / �. / �. / �. / � � 0� 0� 0� 0

� case e ge ge ge g d ef au l t e �e �e �e � h " Gh " Gh " Gh " G i =i =i =i =

09090909 10.44���� � :� :� :� : ( )( )( )( )

Page 75: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.6 )*+)*+)*+)*+ , -, -, -, - . / �. / �. / �. / � � 0� 0� 0� 0

� case e �e �e �e � j � k �j � k �j � k �j � k � 1 21 21 21 2 i =i =i =i =

� � � e 5 r 4 f � �

module case_no_latch2(memce0, memce1, cs, en, addr);output memce0, memce1, cs;input en;input [31:30] addr;reg memce0, memce1, cs;

always @(addr or en) begin{memce0, memce1, cs} = 3'b0; // ������������ � � � �

casez({addr, en})3'b101: memce0 = 1'b1;3'b111: memce1 = 1'b1;3'b0?1: cs = 1'b1;

endcaseend

endmodule @A@A@A@A 10.45

Page 76: Hanbat National University Prof. Lee Jaeheungartoa.hanbat.ac.kr/lecture_data/digital_system_design/... · 2012. 8. 2. · Hanbat National University Prof. Lee Jaeheung Multiplexer

�������� � �� �� �� � � �� �� �� � Hanbat National University Prof. Lee Jaeheung

10.6 )*+)*+)*+)*+ , -, -, -, - . / �. / �. / �. / � � 0� 0� 0� 0

� case e �e �e �e � j � k �j � k �j � k �j � k � 1 21 21 21 2 i =i =i =i =

09090909 10.45���� � :� :� :� : ( )( )( )( )