HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN
THƠNG CƠ SỞ TẠI THÀNH PHỐ HỒ CHÍ
MINH
KHOA KỸ THUẬT ĐIỆN TỬ II
BÁO CÁO MƠN HỌC
THIẾT KẾ LOGIC
SỐ
NIÊN KHĨA: 2018 – 2023
Sinh viên thực hiện
: Nguyễn Quốc Doanh
Mã số sinh viên
: N18DCDT007
Lớp
: D18CQDT01-N
Giáo viên hướng dẫn
: ThS. PHẠM XUÂN MINH
TP.HCM – Tháng 10 năm 2021
MỤC LỤC
CHƯƠNG I :GIỚI THIỆU
RTL Kỹ sư thiết kế nên có các nguyên tắc cơ bản về thiết
kế logic. Chương này mô tả về sự phát triển của phương
pháp luận thiết kế thiết kế logic và những điều cơ bản của
Verilog HDL. Chương này thảo luận về quy trình tổng hợp
và mơ phỏng Verilog cơ bản.
Tóm Tắt Chương này thảo luận về tổng quan của các cấp độ trừu tượng của thiết kế và
sự phát triển của thiết kế logic theo quan điểm của thiết kế hệ thống. Chương này chủ yếu
tập trung vào việc làm quen với các kiểu mô hình khác nhau của Verilog HDL và các tốn
tử Verilog. Chương này được tổ chức theo cách mà nó bao gồm các tình huống cơ bản
đến thực tế một cách chi tiết. Tất cả các toán tử Verilog với các ví dụ có ý nghĩa được mơ
tả trong chương này để dễ hiểu.
Từ Khóa RTL *IEEE 1364-2005 *Behavioral model *Structural model *Verilog
*VHDL *Moore’s law * Concurrent *Sequential *Procedural blocks *Always *Fourvalue logic *Operators *Arithmetic *Shift *Logical *Bitwise *Concatenation
*Case equality *Case inequality *Continuous assignments *Net *Variable *Data types
1.1 Sự Phát Triển Của Thiết Kế Logic Số
Trong năm 1958, Jack Kilby, một kỹ sư điện trẻ tuổi tại Texas Instrument đã tìm ra cách
đặt các phần tử mạch điện trở, transistor và tụ điện trên mảnh Germanium nhỏ. Nhưng
trước năm 1958, nhiều ý tưởng mang tính cách mạng hơn đã được xuất bản và hình thành
ý tưởng.
Gottfried Leibniz là một nhà tốn học và triết học nổi tiếng người Đức và ông đã định
nghĩa lại hệ thống số nhị phân vào năm 1676 - 1679. Sau khi xác định lại thành công các
hệ thống số, nhà toán học nổi tiếng George Boole trong năm 1854 đã phát minh ra đại số
Boolean và cuộc cách mạng của thiết kế logic số bắt đầu chuyển động.
Phát minh thực tế của mơ hình bóng bán dẫn ngun mẫu vào năm 1946 - 1947 tại
phịng thí nghiệm Bell của Shockley Bardeen Brattain đã tạo ra một cuộc cách mạng
trong việc sử dụng chất bán dẫn trong lý thuyết chuyển mạch và thiết kế chip. Thiết kế
của bóng bán dẫn hoạt động đầu tiên là đóng góp lớn nhất của Morris Tanenbaum trong
năm 1954 tại Texas Instruments.
Việc phát minh ra lôgic CMOS trong năm 1963 đã làm cho việc tích hợp các ơ logic
trở nên rất dễ dàng và người đồng sáng lập Intels Gordon Moore đã dự đốn rằng mật độ
của các ơ logic cho cùng một khu vực silicon sẽ tăng gấp đôi sau mỗi 18 đến 24 tháng.
Đây là những gì chúng tơi gọi là luật Moores.
Dự đoán của Moores đã đúng như thế nào mà các kỹ sư có kinh nghiệm có thể nhận
được với các thiết kế chip ASIC dựa trên VLSI phức tạp. Trong thập kỷ hiện tại, diện tích
chip đã thu hẹp đủ và xử lý nút công nghệ mà các xưởng đúc thiết kế đang làm việc là 14
nm và chip có hàng tỷ tế bào có kích thước khuôn silicon nhỏ. Với sự phát triển trong
công nghệ thiết kế và sản xuất, hầu hết các thiết kế được thực hiện bằng cách sử dụng
Ngôn ngữ mô tả phần cứng mạch tích hợp tốc độ rất cao ( V HSICCHDL) hoặc sử dụng
Verilog. Chúng tôi đang tập trung vào Verilog làm ngôn ngữ mô tả phần cứng. Sự phát
triển trong ngành EDA đã mở ra những con đường hiệu quả mới để các kỹ sư thiết kế
hoàn thành các mốc quan trọng trong thời gian ngắn hơn.
1.2 Tóm Tắt Thiết Kế Hệ Thống và Logic
Như đã thể hiện trong Hình 1.1, hầu hết các thiết kế có các mức độ trừu tượng khác
nhau. Cách tiếp cận thiết kế có thể là từ trên xuống hoặc từ dưới lên. Nhóm thực hiện đưa
ra quyết định về cách tiếp cận phù hợp tùy thuộc vào độ phức tạp của thiết kế và sự sẵn
có của các nguồn lực thiết kế. Hầu hết các thiết kế phức tạp đang sử dụng cách tiếp cận
từ trên xuống thay vì cách tiếp cận từ dưới lên.
Ban đầu, thiết kế được mơ tả là mơ hình chức năng và kiến trúc và kiến trúc vi mô của
thiết kế được mô tả bằng cách hiểu các đặc điểm kỹ thuật của thiết kế chức năng. Thiết kế
kiến trúc liên quan đến việc ước lượng logic và thông lượng của bộ xử lý bộ nhớ với
logic keo liên kết và các yêu cầu thiết kế chức năng. Thiết kế kiến trúc dưới dạng các
khối chức năng và thể hiện chức năng của thiết kế dưới dạng sơ đồ khối.
Kiến trúc vi mô là đại diện chi tiết của mọi khối kiến trúc và nó mơ tả giao diện chi
tiết của khối và cấp khối con và các kết nối chân và các chi tiết thiết kế phân cấp. Thông
tin về các thiết kế đồng bộ hoặc không đồng bộ, đồng hồ và cây thiết lập lại cũng có thể
được mô tả trong tài liệu kiến trúc vi mô.
RTL là viết tắt của Register Transfer Level. Thiết kế RTL sử dụng kiến trúc vi mô
làm tài liệu thiết kế tham chiếu và thiết kế có thể được mã hóa bằng Verilog RTL cho
chức năng thiết kế cần thiết. Hướng dẫn thiết kế và mã hóa hiệu quả ở giai đoạn này đóng
vai trị quan trọng và RTL hiệu quả làm giảm yêu cầu thời gian tổng thể trong giai đoạn
thực hiện. Kết quả của thiết kế RTL là netlist cấp cổng. Netlist mức cổng là đầu ra từ giai
đoạn thiết kế RTL sau khi thực hiện tổng hợp RTL và nó là đại diện của thiết kế chức
năng dưới dạng các ô logic tổ hợp và tuần tự.
Cuối cùng, thiết kế chuyển cấp là phần trừu tượng được sử dụng tại bố cục để thể
hiện thiết kế dưới dạng công tắc. PMOS NMOS và CMOS.
Thiết Kế Theo Chứ Năng
Hệ Thống
Phương pháp
tiếp cận từ dưới
lên
Kiến Trúc Vi Mô
Thiết Kế RTL
Phương pháp
tiếp cận từ trên
xuống
Thiết Kế Cấp Cổng
Thiết Cấp Chuyển Cấp
Hình 1.1 Thiết kế trừu tượng
1.3 Phương Pháp và Thiết Kế Vi Mạch Tích Hợp
Với sự phát triển của công nghệ thiết kế VLSI, các thiết kế ngày càng trở nên phức tạp
hơn và các thiết kế dựa trên SOC có tính khả thi trong thời gian chu kỳ thiết kế ngắn hơn.
Nhu cầu của khách hàng để có được sản phẩm trong thời gian chu kỳ thiết kế ngắn hơn là
có thể bằng cách sử dụng quy trình thiết kế hiệu quả. Thiết kế cần được phát triển từ giai
đoạn đặc điểm kỹ thuật đến bố cục cuối cùng. Việc sử dụng các cơng cụ EDA với các
tính năng phù hợp đã giúp có được các thiết kế khơng có lỗi với chức năng đã được
chứng minh. Quy trình thiết kế được thể hiện trong Hình 1.2 và nó bao gồm ba bước
chính để tạo danh sách mạng.
1.3.1 Thiết Kế RTL
Thiết kế chức năng được mô tả dưới dạng tài liệu sử dụng kiến trúc và kiến trúc vi mô.
Thiết kế RTL sử dụng Verilog sử dụng tài liệu kiến trúc vi mô để viết mã thiết kế. Nhà
thiết kế RTL sử dụng các hướng dẫn thiết kế và mã hóa phù hợp trong khi triển khai thiết
kế RTL. Một thiết kế RTL hiệu quả ln đóng vai trị quan trọng trong q trình thực
hiện. Trong q trình này, nhà thiết kế mơ tả cấp khối và chức năng cấp cao nhất bằng
cách sử dụng Verilog RTL hiệu quả.
Thiết Kế RTL Verilog
Các Ràng Buộc Về
Thiết Kế
Tổng Hợp
Xác Minh Chức Năng
Gặp Hạn
Chế
Yes
Chuyển
Tiếp
No
Thiết Kế Vật Lý
Hình 1.2 Quy trình mơ phỏng và tổng hợp
1.3.2 Xác định chức năng
Sau khi hoàn thành hiệu quả Verilog RTL cho các thông số kỹ thuật thiết kế nhất định,
chức năng thiết kế được xác minh bằng cách sử dụng trình mơ phỏng tiêu chuẩn cơng
nghiệp. Mơ phỏng trước khi tổng hợp khơng có bất kỳ sự chậm trễ nào và trong quá trình
này, trọng tâm là xác minh chức năng thiết kế của thiết kế. Nhưng thực tế phổ biến trong
ngành là xác minh chức năng thiết kế bằng cách viết testbench. Testbench buộc kích
thích tín hiệu đến thiết kế và giám sát kết quả đầu ra từ thiết kế. Trong tình huống hiện
tại, tự động hóa quy trình xác minh và các phương pháp xác minh mới đã phát triển và
được sử dụng để xác minh chức năng thiết kế phức tạp trong khoảng thời gian ngắn hơn
bằng cách sử dụng các nguồn lực thích hợp. Vai trò của kỹ sư xác minh là kiểm tra sự
không phù hợp chức năng giữa sản lượng dự kiến và sản lượng thực tế. Nếu sự không
phù hợp chức năng được tìm thấy trong q trình mơ phỏng thì nó cần được sửa trước
khi chuyển sang bước tổng hợp. Xác minh chức năng là một quá trình lặp đi lặp lại và
cho đến khi thiết kế đáp ứng được chức năng cần thiết và phạm vi mục tiêu.
1.3.3 Tổng hợp
Khi các yêu cầu chức năng của thiết kế được đáp ứng, bước tiếp theo là tổng hợp.
Công cụ tổng hợp sử dụng mã RTL Verilog, các ràng buộc thiết kế và thư viện làm đầu
vào và tạo danh sách mạng cấp cổng dưới dạng đầu ra. Tổng hợp là một quá trình lặp đi
lặp lại cho đến khi các ràng buộc thiết kế được đáp ứng. Các hạn chế thiết kế chính là
diện tích, tốc độ, và sức mạnh. Nếu các ràng buộc thiết kế không được đáp ứng thì cơng
cụ tổng hợp sẽ thực hiện tối ưu hóa hơn trên thiết kế RTL. Sau khi tối ưu hóa, nếu quan
sát thấy rằng các ràng buộc không được đáp ứng, bắt buộc phải sửa đổi mã RTL hoặc
chỉnh sửa kiến trúc vi mô. Công cụ tổng hợp tạo ra diện tích, tốc độ và sức mạnh báo cáo
và danh sách mạng cấp cổng dưới dạng đầu ra.
1.3.4 Thiết kế vật lý
Nó liên quan đến quy hoạch tầng của thiết kế, quy hoạch nguồn điện, địa điểm và tuyến
đường, Cây đồng hồ tổng hợp, xác minh bố cục bài đăng, phân tích thời gian tĩnh và tạo
GDSII cho một thiết kế ASIC. Bước này nằm ngoài phạm vi của các cuộc thảo luận tiếp
theo.
1.4 Verilog HDL
Verilog được chuẩn hóa theo tiêu chuẩn IEEE 1364 và được sử dụng để mô tả các mạch
điện tử kỹ thuật số. Verilog HDL được sử dụng chủ yếu trong thiết kế và xác minh ở cấp
độ trừu tượng RTL. Verilog được tạo ra bởi Prabhu Goel và Phil Moorby trong năm 1984
tại nhà máy thiết kế Gateway. Các tiêu chuẩn IEEE của Verilog là Verilog-95 (IEEE
1364-1995), Verilog-2001 (IEEE 1364-2001) và Verilog-2005 (IEEE 1364-2005). Verilog
phân biệt chữ hoa chữ thường và trước khi chúng ta tiếp tục thảo luận về thiết kế và tổng
hợp RTL, điều cần thiết là phải có hiểu biết cơ bản về cấu trúc mã Verilog (Hình 1.3).
Như được hiển thị trong mẫu cấu trúc mã Verilog.
// chỉ ra đây là dịng chú thích, bình luận
<module_name> là tên của mơ-đun. Đặt một số tên có ý nghĩa trong khi
khai báo mơ-đun.
là tên của cổng đầu vào hoặc đầu ra.
<size> là chiều rộng của cổng đầu vào, cổng đầu ra hoặc mạng
wire và reg là các loại net, wire không chứa bất kỳ dữ liệu nào và được sử
dụng để gán liên tục. Reg được sử dụng để lưu trữ dữ liệu và được sử dụng
cho các phép gán thủ tục.
Always và assign là từ khóa và được sử dụng để mô tả chức năng thiết
kế. <net_name> là tên của net được khai báo
Các câu lệnh gán là các phép gán liên tục và thực hiện song song.
khối always là khối thủ tục và tất cả các câu lệnh bên trong khối always
được thực thi tuần tự. Nhiều các khối luôn được thực thi đồng thời.
Mọi mã Verilog đều bắt đầu bằng từ khóa "module" và kết thúc bằng "endmodule". Môđun bao gồm khai báo cổng, khai báo mạng và chức năng của thiết kế.
1.5 Mô tả thiết kế Verilog
/
Cấu trúc mã xác minh
/
Verilog là ngôn ngữ phân biệt chữ hoa và chữ
thường
Mã Verilog bắt đầu bằng mơ-đun
từ khóa. Khai báo mơ-đun bao
gồm tên mơ-đun và danh sách
cổng.
/
mã Verilog bắt đầu với định nghĩa của mô-đun
module < tên module > ( < danh sách cổng vào ra >); //module là từ khóa
input <kích thước > < tên port>;
input<tên port>;
output <kích thước> <tên port>;
output <tên port>;
wire <kích thước> <tên net>;
wire <tên net> ;
reg <kích thước> <tên net hoặc tên port>;
reg < tên net hoặc tên port >;
// Chức năng thiết kế
always @ (< danh sách tín hiệu, net, port >)
begin
// viết code ở đây
end
assign < tên port hoặc tên net > = // viết biểu thức
hàm; endmodule
Hình 1.3 Mẫu cấu trúc mã Verilog
1.5 Mô tả thiết kế Verilog
Trong các tình huống thực tế, Verilog HDL được phân loại thành ba loại mơ tả mã hóa
khác nhau. Các kiểu mơ tả mã hóa khác nhau là RTL có cấu trúc, hành vi và có thể tổng
hợp. Hãy xem xét cấu trúc thiết kế của một nửa bộ cộng được hiển thị trong Hình 1.4c
mơ tả các kiểu mã hóa khác nhau. Hình 1.4 cho thấy bảng sự thật, hiện thực hóa cấu
trúc giản đồ và logic cho bộ cộng nửa.
1.5.1 Thiết kế kết cấu
Thiết kế cấu trúc xác định cấu trúc dữ liệu của thiết kế và nó được mô tả dưới dạng
của netlist bằng cách sử dụng kết nối mạng cần thiết. Thiết kế cấu trúc chủ yếu là
Hình 1.4 Cấu trúc logic cho “basic_Verilog”
tạo ra các khối logic kỹ thuật số có độ phức tạp nhỏ khác nhau. Về cơ bản nó là một thiết
kế kết nối các mô-đun nhỏ để nhận ra logic vừa phải hoặc phức tạp. Thí dụ 1.1 mơ tả
kiểu mã cấu trúc cho mơ-đun “basic_verilog” (Hình 1.4).
/ Kiểu mã cấu trúc Verilog
module basic_verilog (A,B,S,C);
input A;
khai báo mô-đun Verilog
'basic_verilog' với các
cổng đầu vào 'A', 'B' và
các cổng đầu ra 'S', 'C'
input B;
output S;
Thuyết minh các thành phần
thứr xor gate và "and_gate".
Giả định rằng xor_gate và
and_gate được biên dịch trước
là có sẵn trong thư viện
output C;
wire A,B;
wire S,C;
// Chức năng của thiết kế
xor_gate U1 ( .A(A), .B(B), .S(S));
and_gate U2 ( .A(A), .B(B), .C(C));
endmodule
Ví dụ 1.1 Kiểu cấu trúc cho “basic_verilog”
/ Kiểu mã hành vi xác minh
module basic_verilog (A,B,S,C);
input A,B;
khai báo mô-đun Verilog
'basic_verilog' với các
cổng đầu vào 'A', 'B' và
Ví dụ 1.2 Phong cách hành vi cho basic_verilog
1.5.2 Thiết kế hành vi
Bản thân cái tên nói lên bản chất của phong cách mã hóa. Theo phong cách hành vi
của Verilog mã, chức năng được mã hóa từ bảng sự thật cho thiết kế cụ thể. Nó là giả
định rằng thiết kế là hộp đen với các đầu vào và đầu ra. Chính ý định của nhà thiết kế
là lập bản đồ chức năng ở đầu ra theo bộ đầu vào yêu cầu (Ví dụ 1.2).
/ Kiểu mã RTL tổng hợp có thể xác minh được
module basic_verilog (A,B,S,C);
input A;
khai báo mô-đun Verilog
'basic_verilog' với các cổng đầu
vào 'A', 'B' và các cổng đầu ra 'S',
'C'
input B;
output S;
output
C; reg S;
reg C;
/ Chức năng thiết kế
always@(A or B)
begin
Mô tả kết quả đầu ra 'S', 'C' ở dạng
biểu thức logic và được sử dụng
cho thiết kế ít phức tạp hơn!
S= A^ B;
C=A&B;
end
endmodule
Ví dụ 1.3 Mã xác minh RTL có thể tổng hợp cho “basic_verilog”
1.5.3 Thiết kế RTL có thể tổng hợp
Mã RTL có thể tổng hợp được sử dụng trong môi trường thực tế để mô tả chức năng của
thiết kế bằng cách sử dụng các cấu trúc có thể tổng hợp. Kiểu mã RTL là mô tả cấp cao của
chức năng bằng cách sử dụng các cấu trúc có thể tổng hợp. RTL phong cách mã hóa được
khuyến nghị bằng cách sử dụng các cấu trúc Verilog có thể tổng hợp (Ví dụ 1.3).
1.6 Các thuật ngữ xác minh chính
Trước khi thảo luận tiếp theo về các thuật ngữ Verilog, điều cần thiết là hiểu cách
Verilog hoạt động. Tại sao nó là một ngơn ngữ mơ tả phần cứng?
• Verilog khác với các ngơn ngữ phần mềm vì nó được sử dụng để mơ tả phần
cứng. Verilog hỗ trợ mô tả thời gian lan truyền và độ nhạy.
• Verilog hỗ trợ thực thi đồng thời (song song) các câu lệnh và thậm chí thực thi
tuần tự các câu lệnh.
• Verilog hỗ trợ các bài tập chặn (‘=’) và thậm chí cả các bài tập khơng chặn
(‘<=’). Phép gán khối được sử dụng để mô tả logic tổ hợp và
các phép gán nonblocking được sử dụng để mô tả logic tuần tự. Những chỉ định
này sẽ được thảo luận trong các chương tiếp theo.
•
Verilog hỗ trợ khai báo các cổng đầu vào, đầu ra và hai chiều (inout).
• Verilog hỗ trợ định nghĩa các hằng số và tham số. Verilog hỗ trợ tệp sự điều
khiển.
• Verilog hỗ trợ lôgic bốn giá trị: lôgic ‘0’, lôgic ‘1’, trở kháng cao ‘z’, và ‘X’
khơng xác định. • Verilog hỗ trợ các khối thủ tục sử dụng các từ khóa “ln ln”
và “ban đầu”.
Khối thủ tục với từ khóa “ln ln” cho biết q trình chạy tự do và ln thực thi
trên khối sự kiện và thủ tục với từ khóa "ban đầu" cho biết việc thực thi khối chỉ
một lần. Cả hai khối thủ tục đều thực thi tại trình mô phỏng thời gian ‘0’. Các khối
này sẽ được thảo luận trong các chương tiếp theo.
• Verilog hỗ trợ các cấu trúc có thể tổng hợp cũng như các cấu trúc khơng thể tổng
hợp.
•
Verilog hỗ trợ sử dụng các tác vụ và chức năng để sử dụng đệ quy.
• Verilog hỗ trợ Giao diện ngơn ngữ chương trình (PLI) để chuyển biểu mẫu điều
khiển Verilog tới các hàm được viết bằng ngôn ngữ ‘C’. Mẫu được hiển thị bên
dưới mô tả các cấu trúc Verilog chính được sử dụng để mơ tả hầu hết các thiết kế
logic tổ hợp (Hình 1.5).
1.6.1 Các toán tử số học Verilog
Verilog hỗ trợ cộng, trừ, nhân và chia và mô đun toán tử để thực hiện các phép toán số
học. Bảng 1.1 mơ tả số học tốn tử (Ví dụ 1.4).
1.6.2 Các tốn tử lơgic của Verilog
Verilog hỗ trợ các toán tử logic AND, OR và phủ định để thực hiện hoạt động logic. Các
toán tử logic được sử dụng để trả về giá trị bit đơn ở cuối hoạt động. Bảng 1.2 mô tả việc
sử dụng chức năng của các tốn tử logic (Ví dụ 1.5).
1.6.3 Các tốn tử bình đẳng và bất bình đẳng trong Verilog
Tốn tử bình đẳng Verilog được sử dụng để trả về giá trị true hoặc false sau khi so sánh
hai toán hạng. Bảng 1.3 mơ tả chức năng của các tốn tử (Ví dụ 1.6).
1. Tiếp tục bài tập bằng cách sử dụng 'chỉ định'
// ’y' được coi là cổng đầu ra và 'a', 'b' là cổng đầu vào
assign y = a
assign y = a ^ b
assign y = ~a
2. Sử dụng khối thủ tục 'always'
//Hãy xem xét các cổng đầu vào được coi là 'a'., 'b', 's' và cổng đầu ra được coi là 'y'
always ( a or b or s )
if (s)
y = a;
else
y = b;
3. Khai báo bằng 'wire'
// 'wire' và 'reg' được sử dụng để tính tốn các lưới và biến reg tương ứng
wire y = a ^ b;
4. Khai báo sử dụng 'reg'
// 'y' được coi là cổng đầu ra và được sử dụng trong khối 'always'
reg y;
always @ ( a or b or s )
y = (s) ? a:b ;
5. Sử dụng cấu trúc 'case'
// Các cổng đầu vào được coi là 'a', 'b', 's' và cổng đầu ra được coi là 'y'
always ( a or b or s )
case (s)
1’b0 : y=a;
1’b1 : y=b;
Bảng 1.1 Các toán tử số học Verilog
Toán tử
+
Ph
-
Ph
*
Ph
/
Ph
%
Ph
// Toán tử số học Verilog
module arithmetic_operation (a, b,y1, y2, y3, y4, y5 );
input [3:0] a, b;
output [4:0] y1;
output [5:0] y3;
output [3:0] y2, y4, y5;
reg [4:0] y1;
Sau các phép toán số học, đầu ra tương ứng 'y'
được gán với máy tính giá trị
Ví dụ 1.4 Tốn tử số học Verilog
1.6.4 Điều hành dấu trong Verilog
Verilog hỗ trợ các toán tử ‘+’ hoặc ‘-’ để gán dấu cho tốn hạng. Bảng 1.4 mơ tả các tốn
hạng dấu (Ví dụ 1.7).
Ví dụ 1.4 (tiếp theo)
Bảng 1.2 Các tốn tử logic Verilog
Toán tử
&&
// toán tử logic xác minh
modele logical_operator (a, b, c, d, e, f, y );
input [2:0] a, b, c, d,e, f;
output y;
reg y;
always @(a or b or c or d or e or f)
Ví dụ 1.5 Các tốn tử logic Verilog
Bảng 1.3 Các tốn tử bình đẳng và bất bình đẳng trong Verilog
Tốn tử
==
Tên
!=
Chức năng
Bằng
Kh
ơng
bằn
g
Để so sánh hai tốn hạng
Được sử dụng để tìm ra sự bất bình đẳng cho hai tốn hạng
// Tốn tử bình đẳng Verilog
module equality_operator (a, b, y1, y2,
y3 ); input [7:0] a, b;
output y1, y2;
Đầu ra so sánh true '1' hoặc false '0' được gán
cho đầu ra tương ứng 'y'
output [7:0] y3;
reg y1, y2;
reg [7:0] y3;
always @ (a or b)
begin
y1 = a ==b;
y2 = a !=b;
if ( a==b )
y3 = a ;
else
y3 = b;
end
endmodule
Ví dụ 1.6 Tốn tử bình đẳng và bất bình đẳng Verilog
1.6.5 Các tốn tử Bitwise Verilog
Verilog hỗ trợ các hoạt động bitwise. Toán tử bitwise logic sử dụng hai đơn lẻ hoặc
toán hạng nhiều bit và trả về giá trị nhiều bit. Verilog không hỗ trợ NAND
và NOR. Bảng 1.5 mô tả chức năng và việc sử dụng các tốn tử bitwise (Ví dụ
1.8). Bảng 1.4 Các toán tử ký hiệu Verilog
Toán tử
+
Tên
Chức năng
Dấu cộng
Gán dấu dương cho tốn hạng số ít
-
Dấu trừ
Để gán dấu âm cho tốn hạng số ít
module sign_operators (a, b, y1, y2 );
input [1:0] a, b;
output [3:0] y1, y2;
always @ (a or b )
begin
y1 = -a+-b;
Sau khi thực hiện thao tác được chỉ định trên
các số ký hiệu, đầu ra được gán cho 'y1', 'y2'
tương ứng
y2 = a*-b;
end
endmodule
Ví dụ 1.7 Các tốn tử ký hiệu Verilog
Bảng 1.5 Các toán tử bitwise của Verilog
Toán tử
Tên
&
Bitwise AND
|
Bitwise OR
Bitwise
XOR
^
Để thực hiện bitwise XOR trên hai toán hạng nhị phân
// Toán tử Bitwise
module bitwise_operator (a, b,y );
input [6:0] a;
input [5:0] b;
output [6:0] y;
reg [6:0] y;
always @(a or b)
begin
Kết quả theo bit được gán cho đầu
ra tương ứng 'y [0] đến y [6]'
y[0] = ( a[0] & b[0] );
y[1] = !(a[1] & b[1] );
y[2] = (a[2] | b[2] );
y[3] = !(a[3] & b[3] );
y[4] = (a[4] ^ b[4] );
y[5] = (a[5] ~^ b[5] );
y[6] = ![6];
end
endmodule
Ví dụ 1.8 Các tốn tử theo bit trong Verilog
1.6.6 Toán tử quan hệ Verilog
Verilog hỗ trợ toán tử quan hệ để so sánh hai số nhị phân và trả về giá trị true (‘1’) hoặc
false (‘0’) sau khi so sánh hai toán hạng. Bảng 1.6 mơ tả các tốn tử quan hệ (Ví dụ 1.9).
1.6.7 Các toán tử kết hợp và sao chép Verilog
Verilog hỗ trợ tập trung và sao chép cho bất kỳ chuỗi nhị phân nào. Bảng 1.7 mô tả
chức năng của các tốn tử tập trung và sao chép (Ví dụ 1.10).
Ví dụ 1.8 (tiếp theo)
Bảng 1.6 Tốn tử quan hệ trong Verilog
Toán tử
>
>=
<
<=
1.6.8 Toán tử giảm trong Verilog
Verilog hỗ trợ các toán tử giảm và trả về giá trị bit đơn sau giảm bitwise. Bảng 1.8 mơ tả
các tốn tử giảm (Ví dụ 1.11).
module relationl_operator (a, b, y1, y2, y3, y4 );
input [7:0] a, b;
output y1, y2, y3, y4 ;
reg y1, y2, y3, y4 ;
Đầu ra bit đơn được gán cho cổng
đầu ra tương ứng sau khi so sánh
các tốn hạng, 'a', 'b'.
Ví dụ 1.9 Các toán tử quan hệ Verilog
1.6.9 Các toán tử Shift Verilog
Verilog sử dụng các toán tử shift và yêu cầu hai toán hạng. Các toán tử này là được sử dụng
để thực hiện các hoạt động chuyển dịch. Bảng 1.9 mơ tả chức năng của sự thay đổi
tốn tử (Ví dụ 1.12).