You are on page 1of 31

LOGIC KHẢ TRÌNH &

THIẾT KẾ LOGIC

Giảng viên : TS. Lê Đức Hùng


ThS. Cao Trần Bảo Thương

Khoa Điện Tử - Viễn Thông


Đại Học Khoa Học Tự Nhiên – TP.HCM
1
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Các mức thiết kế số

Hành vi f

RTL

AND
Cổng logic OR

Chuyển
mạch
2
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Các mức thiết kế số


Ít chi tiết, thiết kế
Hành vi nhanh nhưng
không tối ưu

RTL

Cổng logic
Chi tiết về mặt
kỹ thuật, thiết kế
mất nhiều thời
Chuyển gian nhưng tối
mạch ưu
3
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Các mức thiết kế số


Ví dụ : Thiết kế mạch cộng 4 bit
Mức cổng logic Mức hành vi
module HA (A, B, S, Cout); module adder4bit (A, B, S);
…………………………….. input [3:0] A, B;
module FA (A, B, Cin, S, Cout); output [4:0] S;
…………………………….. assign S = A + B ;
module adder4bit (A, B, S); endmodule
…………………………….. 4
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Mô tả mức hành vi
Ưu điểm
Nhanh, dễ dàng
Đoạn code ngắn

Khuyết điểm
Không biết được cấu trúc mạch
Mạch logic không tối ưu

5
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Toán tử
Có tất cả 8 loại toán tử trong Verilog HDL

Các toán tử giúp cho việc mô tả hệ thống phần cứng


trong Verilog HDL rất linh hoạt, từ mức hành vi đến
mức cổng

6
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Toán tử
Toán tử logic

Symbol Operation # Ops


& and 2
| or 2
~ not 1
^ xor 2

7
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Bài tập
Toán tử logic
A= 4'b1011; B = 4'b0001;
Cho biết kết quả của phép gán :
1/ assign out = A & B ; // out = ?
2/ assign out = (~A)|B ; // out = ?
3/ assign out = A ^ B ; // out = ?

8
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Bài tập
Toán tử logic
Mô tả mạch mã hóa nhị phân  Gray 4 bit

Mô tả mạch giải mã Gray  nhị phân 4 bit

9
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Toán tử
Toán tử logic đại số Bool

Symbol Operation # of Ops


&& 'Logical' and 2
|| 'Logical' or 2
! negation 1

Có 2 giá trị : true (0), false (=0)


Chỉ trả về 1 bit
10
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Bài tập
Toán tử logic đại số Bool
A= 4'b1011; B = 4'b0000;
Cho biết kết quả của phép gán :
1/ assign out = A > B ; // out = ?
2/ assign out = !((B+4'd9)>=A ); // out = ?
3/ assign out = !(A == 4'hB) ; // out = ?

11
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Toán tử
Toán tử rút gọn
Symbol Operation # of Ops
& ~& Rút gọn and / nand 1
| ~| Rút gọn or / nor 1

^ ~^ Rút gọn xor / xnor 1

Chỉ tác động lên 1 toán hạng


Chỉ trả về 1 bit
12
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Bài tập
Toán tử rút gọn
A= 4'b1010; B = 4'b0011;
Cho biết kết quả của phép gán :
assign out = &A ; // out = ?
assign out = ~^B ; // out = ?

13
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Toán tử
Toán tử điều kiện

Symbol Operation # of Ops


? : Điều kiện 3

asssign Y= A ? B : C ;
(nếu A đúng thì Y = B, ngược lại Y = C)

14
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Bài tập
Cho biết kết quả của phép gán
module test (A, B, C, D);
input A, B;
output C, D;
reg [1:0] tghi = 1;
assign C = (!tghi) ? A : B;
assign D = (~tghi) ? A : B;
endmodule 15
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Bài tập
Toán tử điều kiện
A= 4'b1011; B = 4'b1100;
Cho biết kết quả của phép gán :
assign out = !(|(A | B)) ? A : B ; // out = ?
assign out = (~^(A & B)) ? A : B ; // out = ?
assign out = (!(^(~A))) || (~&(~B)) ? A : B ; // out = ?

16
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Bài tập
Toán tử điều kiện
Mô tả mạch đa hợp 4-1 8 bit sử dụng toán tử điều kiện với:
Ngõ vào : in0[7:0], in1[7:0], in2[7:0], in3[7:0], select[1:0]
Ngõ ra : out[7:0]
module dahop ( input [7:0] in0, in1, in2, in3, input [1:0] select,
output [7:0] out ) ;
........................................................
........................................................
17
endmodule
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Bài tập a
Toán tử điều kiện f b
g
Mô tả mạch giải mã led 7 đoạn c
e
module led7doan ( input [3:0] Q, output [0:6] HEX) ; d
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
18
endmodule
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Toán tử
Toán tử so sánh
Symbol Operation # of Ops
> lớn hơn 2
< nhỏ hơn 2
>= lớn hơn hoặc bằng 2
<= nhỏ hơn hoặc bằng 2

Có 2 giá trị : true (0), false (=0)


Chỉ trả về 1 bit
19
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Bài tập
Toán tử so sánh
A= 4'b1011; B = 4'b0000;
Cho biết kết quả của phép gán :
assign out = A > B ; // out = ?
assign out = A > ~(B); // out = ?

20
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Toán tử
Toán tử so sánh bằng
Symbol Operation # of Ops
== bằng 2
!= khác 2
=== bằng (4 giá trị) 2
!== không bằng (4 giá trị) 2

Có 2 giá trị : true (0), false (=0)


Chỉ trả về 1 bit
21
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Bài tập
Toán tử so sánh bằng
A= 4'b1011; B = 4'b0000; C= 4'b111x ; D = 4'b111x
Cho biết kết quả của phép gán :
1/ assign out = (A == B) ; // out = ?
2/ assign out = (A == 4'o13) ; // out = ?
3/ assign out = (C == D) ; // out = ?
4/ assign out = (C === D) ; // out = ?
22
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Bài tập
Toán tử so sánh bằng
Mô tả mạch so sánh 2 số A và B (4 bit) với 2 ngõ ra AbangB
(A bằng B) và AlonB (A lớn hơn B) bằng Verilog HDL

23
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Toán tử
Toán tử số học

Symbol Operation # of Ops


+ Cộng 2

- Trừ 2

* Nhân 2

/ Chia 2
% Lấy phần dư 2
- Số âm 1

24
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Bài tập
Toán tử số học
A= 4'b1010; B = 4'b0011;
Cho biết kết quả của phép gán :
assign out = (A + B) ; // out = ?
assign out = (B % A) ; // out = ?

25
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Bài tập
Toán tử số học
Mô tả mạch logic có khả năng cộng/trừ 2 số 4 bit A và B
bằng Verilog HDL

26
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Bài tập
Toán tử số học
Mô tả mạch mã hóa BCD cho một số có 3 chữ số thập phân
Ví dụ : 1100111002= 41210= 0100 0001 0010BCD
module encoderBCD (input [8:0] nhiphan,
output [3:0] tram, chuc, donvi);
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
27
endmodule
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Toán tử
Toán tử ghép, sao chép

Symbol Operation # of Ops


{,} ghép 2 (hoặc hơn)
{ n{ } } sao chép 2

28
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Bài tập
Toán tử ghép, sao chép
A= 4'b1011; B = 4'b1100; C = 4'b011x;
Cho biết kết quả của phép gán :
assign out = {A[1:0] , B[3:2]}; // out = ?
assign out = {A[3:2] , C[1:0]}; // out = ?
assign out = {2{B[1:0]} , A[3:2]}; // out = ?

29
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Toán tử
Toán tử dịch
Symbol Operation # of Ops
>> Dịch phải 2
<< Dịch trái 2

>>> Dịch phải số học 2

<<< Dịch trái số học 2

30
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS

Bài tập
Toán tử dịch
A= 4'b1011; B = 4'b1100;
Cho biết kết quả của phép gán :
assign out = A >> 2; // out = ?
assign out = B << 4; // out = ?
assign out = A >>> 2; // out = ? //bảo toàn dấu

31

You might also like