Professional Documents
Culture Documents
2.verilog - Toan Tu
2.verilog - Toan Tu
THIẾT KẾ LOGIC
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
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
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
6
Phần 4 : Verilog HDL và mạch tổ hợp
CTBT_FETEL_HCMUS
Toán tử
Toán tử logic
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
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
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
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
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
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
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
- 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
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
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