Bối cảnh và vấn đề nghiên cứu
Từ thập niên 1960, ngành công nghiệp vi mạch tích hợp (Integrated Circuit - IC) đã có những bước tiến vượt bậc, phát triển từ việc chỉ tích hợp một vài transistor trên một phiến bán dẫn cho đến khả năng tích hợp hàng triệu transistor trên một chip. Sự bùng nổ của thời đại công nghệ thông tin đặt ra những yêu cầu khắt khe về tốc độ xử lý và tính tiện dụng của các thiết bị điện tử, đưa ngành sản xuất IC trở thành một ngành công nghiệp then chốt. Để đáp ứng việc thiết kế các hệ thống mạch tích hợp cỡ lớn (VLSI) với độ phức tạp cao mà các phương pháp vẽ sơ đồ nguyên lý thủ công truyền thống không thể đáp ứng được, các ngôn ngữ mô tả phần cứng (Hardware Description Languages - HDLs) đã ra đời và phát triển mạnh mẽ.
Trong số các ngôn ngữ mô tả phần cứng, Verilog HDL nổi lên như một chuẩn công nghiệp quan trọng nhờ cú pháp gần gũi với ngôn ngữ lập trình C, khả năng kết hợp nhiều mức trừu tượng và hỗ trợ mạnh mẽ từ các công cụ thiết kế tự động hóa điện tử (EDA/CAD). Đề tài đồ án tốt nghiệp kỹ sư ngành Điện - Điện tử tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (thực hiện tháng 07/2002) được thực hiện nhằm hệ thống hóa lý thuyết về ngôn ngữ Verilog HDL và ứng dụng vào thiết kế mạch số.
Mục tiêu và nhiệm vụ nghiên cứu của đồ án bao gồm:
- Nghiên cứu tổng quan về các ngôn ngữ mô tả phần cứng (HDLs) và các đặc tính nổi bật của Verilog HDL.
- Trình bày chi tiết cú pháp, các kiểu dữ liệu, các phép toán, cấu trúc điều khiển, chương trình con, mô hình trễ và các mức trừu tượng trong thiết kế mạch với Verilog HDL.
- Tìm hiểu các chủ đề nâng cao bao gồm khối chức năng do người dùng định nghĩa (User Defined Primitives - UDP), giao diện lập trình ngôn ngữ C (Programmable Language Interface - PLI) và quy trình tổng hợp logic (Logic Synthesis).
- Khảo sát các công cụ CAD chuyên dụng trong mô phỏng, tổng hợp vi mạch và môi trường phần mềm MAX+PLUS II của hãng Altera.
- Hiện thực hóa các thiết kế mạch số ứng dụng cụ thể bằng ngôn ngữ Verilog HDL trên phần mềm MAX+PLUS II.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Cú pháp, ngữ nghĩa, mô hình mô phỏng - tổng hợp của ngôn ngữ Verilog HDL; phần mềm thiết kế và mô phỏng mạch số MAX+PLUS II.
- Phạm vi nghiên cứu: Thiết kế logic số ở các mức trừu tượng từ mức hành vi (behavioral), mức truyền thanh ghi (RTL), mức cổng (gate-level) đến mức chuyển mạch (switch-level); triển khai các khối mạch số kinh điển và mạch điều khiển ứng dụng.
Cơ sở lý thuyết và phương pháp
Khung lý thuyết và mô hình tiếp cận
Đồ án xây dựng trên nền tảng lý thuyết ngôn ngữ mô tả phần cứng, xuất phát từ ý tưởng năm 1972 của hai kỹ sư C. Gordon Bell và Alan Newell tại Đại học Carnegie Mellon (công bố trong sách Computer Structures mô tả máy tính PDP-8), dẫn đến sự hình thành của các ngôn ngữ HDL hiện đại (Verilog HDL, VHDL, ELLA).
Verilog HDL kết hợp khả năng mô tả cấu trúc phần cứng thực và mô tả hành vi trừu tượng của mạch. Hai phương pháp luận thiết kế hệ thống số chính được áp dụng:
- Phương pháp thiết kế từ trên xuống (Top-down): Bắt đầu từ định nghĩa hệ thống mức cao nhất, phân rã thành các khối chức năng con (subroutines) cho đến các phần tử cơ bản (leaf cells).
- Phương pháp thiết kế từ dưới lên (Bottom-up): Xây dựng từ các khối phần tử cơ bản rồi ghép nối dần thành hệ thống hoàn chỉnh.
Phương pháp nghiên cứu
Đồ án sử dụng phương pháp nghiên cứu thiết kế kỹ thuật kết hợp thực nghiệm mô phỏng trên máy tính:
- Phương pháp phân tích cú pháp và mô hình hóa: Phân tích ngữ pháp của Verilog HDL, chuẩn hóa cách khai báo module, cổng giao tiếp, kiểu dữ liệu vật lý/trừu tượng và cơ chế định thời.
- Phương pháp tổng hợp logic và ánh xạ công nghệ: Phân tích quá trình chuyển đổi từ mã mô tả mức RTL sang danh sách liên kết cổng (Gate-level Netlist) thông qua thư viện tế bào chuẩn (Standard Cell Library / Technology Library) thỏa mãn các ràng buộc về định thời (timing), diện tích (area/không gian) và công suất tiêu thụ (power consumption).
- Phương pháp thực nghiệm kiểm tra: Xây dựng khối kích thích (testbench/stimulus block), gán vector kiểm tra và quan sát dạng sóng ngõ ra để thẩm định chức năng (functional verification) và kiểm tra logic (logic verification).
Nguồn dữ liệu
Tài liệu sử dụng các thông số kỹ thuật chuẩn của Verilog HDL, tài liệu hướng dẫn phần mềm MAX+PLUS II của Altera Corporation, cùng các tài liệu kỹ thuật từ các hãng phần mềm EDA như Cadence Design Systems, Mentor Graphics, Synopsys và Exemplar Logic.
Thiết kế và triển khai
Lưu đồ thiết kế vi mạch VLSI tiêu chuẩn được đồ án trình bày gồm 8 giai đoạn tuần tự:
- Đặc tính thiết kế (Design Specification): Xác định chức năng, giao tiếp, tốc độ và cấu trúc hệ thống.
- Mô tả hành vi (Behavioral Description): Xây dựng lưu đồ giải thuật cho toàn bộ hệ thống.
- Mô tả RTL (RTL Description): Sử dụng Verilog HDL để mô tả dòng truyền dữ liệu và thanh ghi.
- Thẩm định và thẩm tra chức năng (Functional Verification & Testing): Dùng trình mô phỏng logic kiểm tra dạng sóng và tập tin kết quả.
- Tổng hợp logic (Logic Synthesis): Dùng công cụ CAD biên dịch và tối ưu hóa mã RTL thành Gate-level Netlist dựa trên thư viện công nghệ.
- Thẩm định và kiểm tra logic (Logical Verification & Testing): Kiểm tra lại tập tin netlist bằng dạng sóng.
- Thiết kế vật lý (Physical Design): Tạo sơ đồ bố trí linh kiện (layout).
- Thẩm định bố cục (Layout Verification): Kiểm tra định thời và chức năng trước khi chuyển sang giai đoạn chế tạo (Fabrication) và đóng vỏ (Packing).
Trong môi trường phần mềm MAX+PLUS II (Multiple Array Matrix Programmable Logic User System) của hãng Altera, quy trình thiết kế và triển khai được thực hiện qua các công cụ tích hợp:
- Soạn thảo thiết kế thông qua Text Editor, Graphic Editor hoặc Waveform Editor.
- Thiết lập tên đồ án trùng với tên của thiết kế mức đỉnh (Top-level design).
- Lựa chọn thiết bị mục tiêu thuộc các dòng phần cứng Altera: MAX 5000, MAX 7000, MAX 9000, FLEX 6000, FLEX 8000, FLEX 10K.
- Sử dụng trình biên dịch (Compiler) kết hợp trích xuất tệp kiểm tra định thời (Timing SNF Extractor).
- Tiến hành phân tích định thời (Timing Analyzer) và mô phỏng chức năng với tệp vector kích thích (Vector Channel File -
.scf).
- Nạp chương trình vào chip phần cứng thông qua MAX+PLUS II Programmer.
Nội dung chính theo từng chương
Đồ án được kết cấu thành 2 phần chính với 11 chương chi tiết:
Phần I: Giới thiệu Verilog HDL
Chương 1: Tổng quan về HDLs
Trình bày lịch sử hình thành ngôn ngữ mô tả phần cứng từ năm 1972 tại CMU; phân tích ưu điểm của việc mô tả hành vi trừu tượng song song với mô tả cấu trúc phần cứng thực; phân tích xu hướng kết hợp thiết kế Top-down và Bottom-up; giải thích tính phổ biến của Verilog HDL do có cú pháp tương đồng ngôn ngữ C, khả năng mô tả đa mức trừu tượng, hỗ trợ giao diện lập trình PLI và tương thích với hầu hết các thư viện kỹ thuật của các nhà sản xuất IC.
Chương 2: Mô hình thiết kế có hệ thống
Phân tích cấu trúc cơ bản của một module trong Verilog (bắt đầu bằng module, kết thúc bằng endmodule); cách định nghĩa danh sách cổng (input, output, inout); quá trình hiện thực module (instantiation) để tạo ra các đối tượng cụ thể (instance); quy tắc kết nối cổng với tín hiệu bên ngoài theo 2 cách: kết nối theo thứ tự vị trí và kết nối theo tên cổng; cấu trúc khối thiết kế (Design block) hoàn chỉnh.
Chương 3: Các thành phần cơ bản và các kiểu dữ liệu trong Verilog
Định nghĩa hệ thống từ khóa, định danh (dài tối đa 1024 ký tự, có phân biệt chữ hoa - chữ thường); cách viết chú thích đơn dòng (//) và đa dòng (/* */); cách biểu diễn hằng số có kích thước (sized) và không kích thước (unsized) ở các hệ thập phân ('d), nhị phân ('b), thập lục phân ('h), bát phân ('o); 4 giá trị logic chuẩn (0, 1, x - tùy định, z - tổng trở cao).
| Nhóm phần tử |
Tên kiểu / Toán tử |
Đặc điểm và cú pháp trong Verilog |
| Kiểu dữ liệu vật lý |
wire (net) |
Đại diện đường nối mạch vật lý, không lưu trữ, mặc định 1-bit giá trị z |
|
reg |
Biến lưu trữ giá trị, mặc định 1-bit giá trị x |
|
Vector |
Khai báo độ rộng bit: [MSB:LSB] cho cả kiểu net và reg |
| Kiểu dữ liệu trừu tượng |
integer, real, time |
Dùng cho tính toán số học, biến đếm vòng lặp, xử lý thời gian |
| Hàm chuẩn & Chỉ thị |
$display, $finish, $stop, `define |
Hiển thị thông tin, kết thúc/treo mô phỏng, định nghĩa macro |
| Khai báo hằng số |
parameter, defparam |
Định nghĩa tham số cấu hình và ghi đè tham số khi hiện thực module |
| Toán tử số học & logic |
+, -, *, /, %, !, &&, || |
Tính toán giá trị số học (binary/unary) và điều kiện logic |
| Toán tử quan hệ & so sánh |
<, <=, >, >=, ==, !=, ===, !== |
So sánh thông thường và so sánh bao gồm cả giá trị x, z (===, !==) |
| Toán tử bit & rút gọn |
~, &, |, ^, ^~, &A, ~&A, |A, ^A |
Thao tác trên từng bit hoặc rút gọn toàn bộ bit của một vector về 1-bit |
| Toán tử ghép & điều kiện |
{}, <<, >>, ?: |
Ghép vector bit, dịch bit trái/phải, rẽ nhánh điều kiện rút gọn |
| Phép gán (Assignments) |
Phép gán liên tục (assign) |
Dùng cho biến kiểu net bên ngoài thủ tục |
|
Phép gán chặn (=) |
Dùng trong thủ tục (initial/always), thực thi tuần tự |
|
Phép gán không chặn (<=) |
Dùng trong thủ tục, thực thi đồng thời, khử tranh chấp chạy đua |
Chương 4: Các lệnh điều khiển và vòng lặp
Phân loại khối lệnh tuần tự (begin-end) và khối lệnh song song (fork-join); tính kết hợp lồng nhau và cơ chế đặt tên khối lệnh để khai báo biến cục bộ; cú pháp và lưu đồ thuật toán của câu lệnh điều kiện if-else (3 dạng); câu lệnh rẽ nhánh đa đường case, endcase; các cấu trúc vòng lặp: while, for, repeat (lặp với số lần cố định) và forever; lệnh thoát khối hoặc ngắt vòng lặp disable.
Chương 5: Chương trình con
Phân tích khái niệm và vai trò của chương trình con trong việc module hóa mã nguồn. Phân biệt rõ hai loại chương trình con:
- Thủ tục (
task): Có thể chứa các phát biểu điều khiển định thời (delay, sự kiện), có thể nhận/xuất nhiều đối số kiểu input, output, inout, không trả về giá trị trực tiếp qua tên thủ tục.
- Hàm (
function): Thực thi tại một thời điểm mô phỏng (không chứa trễ #), bắt buộc trả về một giá trị qua tên hàm, chỉ chứa các đối số ngõ vào (input), không chứa phát biểu always hoặc initial.
Chương 6: Trễ (Delay)
Nghiên cứu các mô hình trễ trong Verilog nhằm mô phỏng sát với thực tế vật lý: trễ phân bố (distributed delay), trễ tập trung (lumped delay) và trễ đường dẫn (path delay / pin-to-pin delay); cú pháp khai báo tham số định thời specparam; cấu hình trễ đường dẫn song song, kết nối đầy đủ và trễ đường dẫn có điều kiện; định nghĩa ba giá trị trễ cho một cổng: trễ cạnh lên (rise delay), trễ cạnh xuống (fall delay) và trễ ngắt mạch (turn-off delay).
Chương 7: Các mức thiết kế
Khảo sát các mức mô tả mạch trong Verilog:
- Mức chuyển mạch (Switch-level): Mô tả các khóa chuyển mạch MOS, CMOS, nguồn (
supply1), đất (supply0) và các kết nối hai hướng (bidirectional switches).
- Mức cổng (Gate-level): Sử dụng các cổng logic nguyên thủy có sẵn (primitives) bao gồm các cổng nhiều ngõ vào một ngõ ra (
and, nand, or, nor, xor, xnor) và các cổng một ngõ vào nhiều ngõ ra (buf, not, bufif0, bufif1, notif0, notif1).
- Mức hành vi/thủ tục: Sử dụng hai cấu trúc khối chính là
initial (chạy một lần duy nhất tại $t=0$) và always (lặp lại liên tục theo danh sách độ nhạy sự kiện).
Chương 8: Các chủ đề nâng cao trong Verilog
- UDP (User Defined Primitives): Cơ chế định nghĩa các khối nguyên thủy tổ hợp và tuần tự bằng bảng trạng thái (
table - endtable), chỉ cho phép duy nhất một ngõ ra 1-bit ở vị trí đầu danh sách cổng, giúp tối ưu hóa bộ nhớ và tốc độ mô phỏng.
- PLI (Programmable Language Interface): Giao diện liên kết giữa Verilog và ngôn ngữ C, cho phép người dùng mở rộng các tác vụ hệ thống tự định nghĩa (UDST), truy xuất và can thiệp trực tiếp vào cấu trúc dữ liệu nội bộ của trình mô phỏng thông qua tập hàm VPI (Verilog Procedural Interface) và ACC.
- Tổng hợp logic (Logic Synthesis): Phân tích quá trình chuyển đổi tự động từ mô tả RTL sang Netlist mức cổng. Trình bày chi tiết mối quan hệ tỉ lệ nghịch giữa hai ràng buộc cơ bản: định thời (tốc độ) và không gian (diện tích chip).
[Mô hình đánh đổi trong tổng hợp logic]
KHÔNG GIAN
(Diện tích)
Chậm Nhanh (Tốc độ)
Chương 9: Giới thiệu các công cụ CAD
Khảo sát toàn diện hệ sinh thái phần mềm tự động hóa thiết kế vi mạch (EDA/CAD) thời điểm nghiên cứu:
- Trình mô phỏng Verilog: Verilog-XL và NC-Verilog (Cadence), Modelsim / QuickHDL (Mentor Graphics), VCS (ViewLogic / Chronologic), Polaris / Purespeed (Avant), Finsim (Fintronic), Silos II (Simucad), Tausim (Tau Simulation), VeriWell (WellSpring), VeriBest.
- Công cụ tổng hợp logic: Leonardo và Galileo (Exemplar Logic), Design Compiler và Behavioral Compiler (Synopsys), Synergy (Cadence), AutoLogic II (Mentor Graphics), Asyn (ACEO), High Level Designer (VeriBest).
- Công cụ hỗ trợ chuyển đổi và kiểm tra: Veri2VHDL & VHDL2Verilog (Alternative System Concepts), Vformal (ATG Technology), FormalCheck (Lucent Technology).
Phần II: Thiết kế mạch ứng dụng
Chương I: Giới thiệu trình mô phỏng MAX+PLUS II
Giới thiệu tổng quan phần mềm MAX+PLUS II của hãng Altera; cấu trúc 11 ứng dụng thành phần hỗ trợ quản lý dự án (Project), thiết kế đồ họa, văn bản, mô phỏng và nạp chip; khả năng tương thích với các tập tin Verilog HDL, VHDL, AHDL và EDIF; giới thiệu các thư viện hàm chức năng lớn (Megafunctions, Macrofunctions, LPM - Library of Parameterized Modules).
Chương II: Thiết kế mạch ứng dụng
Hiện thực hóa các bài toán mạch số kinh điển và mạch điều khiển logic:
- Bài tập 1: Thiết kế bộ dồn kênh 4 kênh sang 1 kênh (MUX 4:1): Triển khai bằng kỹ thuật UDP tổ hợp và bằng câu lệnh điều kiện toán tử/phát biểu RTL.
- Bài tập 2: Thiết kế bộ dồn kênh 8 kênh sang 1 kênh (MUX 8:1): Mở rộng ghép nối phân tầng các bộ dồn kênh nhỏ hơn.
- Bài tập 3: Thiết kế mạch điều khiển hệ thống đèn giao thông: Mô hình hóa máy trạng thái hữu hạn (FSM) điều khiển chu kỳ đèn xanh, vàng, đỏ tại giao lộ.
- Bài tập 4: Thiết kế máy tự động bán báo: Ứng dụng FSM tuần tự xử lý tín hiệu nhận tiền xu, tính tổng mệnh giá và kích hoạt cơ cấu nhả báo khi đủ tiền.
Kết quả và đóng góp
Kết quả chính
- Đã hệ thống hóa toàn bộ lý thuyết cú pháp, ngữ nghĩa và cấu trúc vận hành của ngôn ngữ Verilog HDL theo chuẩn IEEE.
- Làm rõ bản chất của quá trình tổng hợp logic tự động, chỉ ra được các bước chuyển đổi từ mô tả RTL trung gian sang sơ đồ mạng cổng tối ưu phụ thuộc vào thư viện kỹ thuật của nhà sản xuất.
- Xây dựng thành công các mô hình thiết kế mạch số cụ thể (Mux 4:1, Mux 8:1, Mạch đèn giao thông, Máy bán báo tự động, Bộ chốt Latch 1-bit) và kiểm chứng chức năng thông qua mô phỏng dạng sóng trên phần mềm Altera MAX+PLUS II.
Đóng góp của đề tài
- Cung cấp một tài liệu kỹ thuật hoàn chỉnh bằng tiếng Việt về ngôn ngữ Verilog HDL tại thời điểm năm 2002 - giai đoạn mà các tài liệu chuyên ngành vi mạch bằng tiếng Việt còn rất hạn chế.
- Đưa ra quy trình mẫu về thiết kế hệ thống số kết hợp giữa phương pháp Top-down và Bottom-up, từ khâu viết mã mô tả, kiểm tra ràng buộc định thời đến mô phỏng chức năng trên công cụ CAD.
Hạn chế và hướng nghiên cứu tiếp
- Hạn chế:
- Giao tiếp lập trình PLI (Programmable Language Interface) với ngôn ngữ C là một lĩnh vực chuyên sâu, đồ án chỉ dừng lại ở mức độ giới thiệu khái niệm, cấu trúc và chức năng mà chưa đi sâu hiện thực các tác vụ phức tạp bằng mã nguồn C thực tế.
- Các thiết kế ứng dụng chủ yếu dừng lại ở mức mô phỏng phần mềm và phân tích định thời trên MAX+PLUS II, chưa tiến hành nạp và kiểm tra thực tế trên các kit phần cứng FPGA/CPLD chuyên dụng.
- Hướng nghiên cứu tiếp:
- Nghiên cứu sâu hơn về công cụ tổng hợp mức hành vi (Behavioral Synthesis) cho phép chuyển đổi trực tiếp từ giải thuật sang phần cứng.
- Ứng dụng giao tiếp PLI để xây dựng các công cụ phân tích trễ dây nối (connection delay) liên kết trực tiếp với bản vẽ layout vật lý.
- Hiện thực các hệ thống số có quy mô lớn hơn (như bộ vi xử lý, khối xử lý tín hiệu DSP) trên các dòng chip Altera FLEX 10K hoặc APEX.
Giá trị tham khảo
Đồ án là tài liệu tham khảo hữu ích cho:
- Sinh viên ngành Kỹ thuật Điện tử, Viễn thông, Công nghệ Kỹ thuật Máy tính: Dùng làm tài liệu học tập nền tảng về ngôn ngữ Verilog HDL, phương pháp thiết kế mạch logic khả trình và kỹ năng sử dụng phần mềm mô phỏng MAX+PLUS II.
- Kỹ sư thiết kế vi mạch và FPGA: Tham khảo bảng tra cứu chi tiết về độ ưu tiên toán tử, sự khác biệt giữa các phép gán blocking/non-blocking, cơ chế khai báo UDP và các lưu ý trong tổng hợp logic tối ưu hóa diện tích/tốc độ.
Câu hỏi thường gặp
1. Ý tưởng ban đầu về ngôn ngữ mô tả phần cứng (HDLs) xuất phát từ đâu và ứng dụng đầu tiên là gì?
Ý tưởng đầu tiên về HDLs được hai kỹ sư C. Gordon Bell và Alan Newell tại Đại học Carnegie Mellon (Mỹ) đề cập trong cuốn sách Computer Structures xuất bản năm 1972. Họ đã sử dụng thử nghiệm thành công HDL để mô tả hành vi của dòng máy tính PDP-8, làm tiền đề cho sự ra đời của các ngôn ngữ như Verilog HDL, VHDL và ELLA.
2. Phép gán Blocking (=) và Non-blocking (<=) trong Verilog khác nhau như thế nào?
- Phép gán Blocking (
=): Được thực thi tuần tự theo thứ tự xuất hiện trong khối lệnh. Biểu thức phía sau chỉ được thực thi sau khi phép gán phía trước hoàn thành.
- Phép gán Non-blocking (
<=): Được thực thi đồng thời và không phụ thuộc vào vị trí dòng lệnh trong khối. Phép gán non-blocking được sử dụng để mô tả các mạch tuần tự đồng bộ và giúp loại bỏ hoàn toàn hiện tượng tranh chấp chạy đua dữ liệu (race conditions).
3. Trong Verilog, kiểu dữ liệu wire và reg khác nhau ở điểm nào?
- Kiểu
wire (thuộc nhóm net): Đại diện cho đường dây nối vật lý thực tế trong mạch, không có khả năng lưu trữ giá trị, có giá trị mặc định là z (tổng trở cao) và được gán giá trị thông qua phát biểu assign (continuous assignment).
- Kiểu
reg: Dùng để lưu trữ giá trị trạng thái, có giá trị mặc định là x (tùy định) và bắt buộc phải được gán giá trị bên trong các khối thủ tục (initial hoặc always).
4. Tổng hợp logic (Logic Synthesis) là gì và vì sao hai ràng buộc định thời và không gian lại tỉ lệ nghịch?
Tổng hợp logic là quá trình tự động chuyển đổi mô tả thiết kế mức cao (RTL) sang mô tả tối ưu ở mức cổng (Gate-level Netlist) dựa trên các cell có sẵn trong thư viện kỹ thuật chuẩn. Hai ràng buộc này tỉ lệ nghịch vì: để mạch chạy nhanh hơn (tối ưu định thời), người thiết kế phải sử dụng cấu trúc xử lý song song, dẫn đến diện tích mạch lớn hơn; ngược lại, để mạch nhỏ gọn (tối ưu không gian), mạch phải chia sẻ tài nguyên và xử lý tuần tự, làm giảm tốc độ hoạt động.
5. Khối chức năng do người dùng định nghĩa (UDP) trong Verilog có những quy tắc bắt buộc nào?
- UDP phải được định nghĩa độc lập (cùng cấp với
module, không lồng trong module).
- Chỉ được phép khai báo duy nhất một cổng ngõ ra có độ rộng đúng 1-bit và ngõ ra này phải đứng đầu danh sách port.
- Tất cả các ngõ vào chỉ có độ rộng 1-bit. Không cho phép khai báo cổng kiểu
inout.
- Bảng trạng thái (
table) chỉ chấp nhận các mức logic 0, 1, x (giá trị z được xử lý tương đương x).
Kết luận
Đồ án "Tìm hiểu phần mềm Verilog HDL và thiết kế ứng dụng" là một công trình nghiên cứu toàn diện và có tính hệ thống cao về phương pháp thiết kế vi mạch số bằng ngôn ngữ mô tả phần cứng Verilog HDL. Tác giả đã phân tích sâu sắc từ các thành phần cú pháp, quy tắc gán, cấu trúc điều khiển cho đến các kỹ thuật nâng cao như UDP, PLI và cơ chế tổng hợp logic trên công cụ CAD. Việc hoàn thiện các bài toán thiết kế ứng dụng trên môi trường Altera MAX+PLUS II đã minh chứng rõ nét khả năng ứng dụng thực tiễn của Verilog HDL trong việc rút ngắn thời gian và nâng cao độ chính xác cho quy trình thiết kế vi mạch hiện đại.