Giới thiệu dự án

Sự phát triển mạnh mẽ của công nghiệp bán dẫn từ những năm 1960 đã thúc đẩy quy mô tích hợp vi mạch từ vài transistor đơn lẻ (SSI) lên đến hàng triệu, hàng tỷ transistor trên một chip đơn (VLSI/ULSI). Khi mật độ tích hợp tăng theo cấp số nhân theo định luật Moore, phương pháp thiết kế vi mạch truyền thống dựa trên việc vẽ sơ đồ nguyên lý (Schematic Capture) thủ công bộc lộ những hạn chế nghiêm trọng về thời gian phát triển (Time-to-Market), khả năng mở rộng và độ phức tạp trong khâu thẩm định logic. Để giải quyết nút thắt cổ chai này, các ngôn ngữ mô tả phần cứng (Hardware Description Languages - HDLs) đã ra đời, trở thành chuẩn mực công nghiệp trong thiết kế hệ thống số và vi mạch chuyên dụng (ASIC/FPGA).

Đồ án "Tìm Hiểu Phần Mềm Verilog HDL và Thiết Kế Ứng Dụng" do sinh viên Huỳnh Giang Tứ và Nguyễn Bá Truyền thực hiện dưới sự hướng dẫn của cô Trần Thanh Mai (Bộ môn Điện tử, Khoa Điện - Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh) tập trung nghiên cứu toàn diện ngôn ngữ Verilog HDL (chuẩn IEEE 1364) cùng quy trình thiết kế, mô phỏng và tổng hợp logic trên môi trường phần mềm tự động hóa thiết kế điện tử (EDA - Electronic Design Automation) Altera MAX+PLUS II.

graph TD
    A[Yêu cầu hệ thống / Design Specification] --> B[Mô tả hành vi / Behavioral Modeling]
    B --> C[Thiết kế mức RTL / Verilog HDL]
    C --> D[Mô phỏng chức năng / Functional Simulation]
    D -->|Đạt chuẩn logic| E[Tổng hợp Logic / Logic Synthesis]
    D -->|Lỗi logic| C
    E --> F[Netlist mức cổng / Gate-Level Netlist]
    F --> G[Phân tích định thời & Mô phỏng / Timing Verification]
    G --> H[Nạp chip CPLD/FPGA / Device Programming]

Mục tiêu dự án

  1. Hệ thống hóa lý thuyết Verilog HDL: Khảo sát chi tiết cú pháp, các mức trừu tượng thiết kế (Behavioral, RTL, Gate-level, Switch-level), kiểu dữ liệu phần cứng (wire, reg, vector), cấu trúc điều khiển và cơ chế xử lý song song/tuần tự.
  2. Làm chủ kỹ thuật mô hình hóa chuyên sâu: Nghiên cứu khối nguyên thủy do người dùng định nghĩa (UDP - User-Defined Primitives), giao tiếp ngôn ngữ lập trình (PLI - Programming Language Interface) và các mô hình trễ định thời (distributed, lumped, path delay).
  3. Ứng dụng quy trình tổng hợp logic (Logic Synthesis): Phân tích cơ chế ánh xạ từ mô tả RTL sang cổng logic phụ thuộc công nghệ (Technology Mapping) trên thư viện cell chuẩn (Standard Cell Library).
  4. Hiện thực và kiểm chứng các mạch số thực tế: Thiết kế, mô phỏng chức năng, phân tích dạng sóng và kiểm tra định thời cho các hệ thống: bộ ghép kênh (Multiplexer), bộ đếm kênh (Channel Counter), máy trạng thái hữu hạn (FSM) điều khiển đèn giao thông và hệ thống máy bán báo tự động trên chip Altera.

Phạm vi và giới hạn

  • Phạm vi: Mô hình hóa số mức thanh ghi RTL, kiểm tra chức năng bằng Vector Waveform (.scf), tổng hợp tối ưu hóa diện tích/định thời cho các dòng CPLD (MAX 7000, MAX 9000) và FPGA (FLEX 8000, FLEX 10K).
  • Giới hạn: Đồ án tập trung vào logic số tĩnh và FSM đồng bộ; chưa bao gồm thiết kế tầng vật lý sâu (Place & Route ASIC backend) và thiết kế vi sai tín hiệu tương tự (Analog/Mixed-Signal).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Trước khi ngôn ngữ mô tả phần cứng trở thành chuẩn mực, các kỹ sư thiết kế phần cứng phải đối mặt với nhiều rào cản kỹ thuật lớn giữa việc hiện thực hóa thuật toán và sơ đồ nguyên lý phần cứng.

Tiêu chí so sánh Phương pháp vẽ sơ đồ (Schematic Capture) Ngôn ngữ VHDL (VHSIC HDL) Ngôn ngữ Verilog HDL (IEEE 1364)
Cú pháp mô tả Đồ họa, kéo thả cổng logic/macro Cú pháp hướng cấu trúc giống Ada, chặt chẽ cao Cú pháp tương tự ngôn ngữ C, trực quan, linh hoạt
Tốc độ thiết kế Rất chậm khi số cổng > 10.000 Trung bình, đòi hỏi khai báo kiểu dữ liệu phức tạp Nhanh, linh hoạt trong mô hình hóa từ cấp cao đến mức switch
Tái sử dụng mã nguồn Kém, phụ thuộc chặt vào thư viện linh kiện Cao, độc lập phần cứng Rất cao, dễ dàng tham số hóa với parameter / defparam
Mô phỏng mức chuyển mạch Không hỗ trợ Hạn chế Hỗ trợ trực tiếp 12 mức logic và các switch nguyên thủy MOS/CMOS
Độ phổ biến công nghiệp Đã lỗi thời cho VLSI Phổ biến trong quân sự, hàng không vũ trụ (châu Âu) Chuẩn công nghiệp vi mạch thương mại toàn cầu (ASIC/FPGA)

Phân loại yêu cầu hệ thống (Mô hình MoSCoW)

  • Must-Have (Bắt buộc có):
    • Khối mô tả phần cứng chuẩn cấu trúc module ... endmodule.
    • Hỗ trợ đầy đủ 2 cơ chế gán giá trị: Phép gán liên tục (assign continuous assignment) cho mạch tổ hợp và phép gán thủ tục (blocking =, nonblocking <=) cho mạch tuần tự.
    • Hiện thực hóa thành công các khối tuần tự/tổ hợp bằng UDP dạng bảng trạng thái (table ... endtable).
    • Khả năng biên dịch, tối ưu logic và nạp bitstream lên thiết bị phần cứng Altera.
  • Should-Have (Nên có):
    • Tích hợp cơ chế cấu hình tham số động (parameter, defparam) để tái sử dụng mã nguồn.
    • Đánh giá trễ đường truyền với chỉ thị specparam và khối specify.
  • Could-Have (Có thể mở rộng):
    • Mở rộng khối kích thích (Testbench/Stimulus block) tự động kiểm tra lỗi qua hàm hệ thống $display, $monitor, $finish.
    • Tích hợp thư viện lập trình C qua giao tiếp PLI/VPI để tự động hóa trích xuất log.
  • Won't-Have (Chưa thực hiện):
    • Tự động tạo layout vật lý chuẩn cho quy trình đúc chip ASIC (GDSII tape-out).
graph LR
    subgraph MAX_PLUS_II_Environment [Môi trường Altera MAX+PLUS II]
        A[Text Editor: Verilog HDL / AHDL] --> B[Compiler System]
        C[Graphic / Symbol Editor] --> B
        B --> D[Logic Synthesizer & Netlist Extractor]
        D --> E[Fitter / Technology Mapper]
        E --> F[Timing SNF Extractor]
        F --> G[Simulator & Waveform Editor]
        F --> H[Timing Analyzer]
        E --> I[Programmer / JTAG ByteBlaster]
    end

Kiến trúc giải pháp và công cụ phát triển

Hệ thống EDA được triển khai dựa trên các công cụ chuẩn công nghiệp:

  1. Phần mềm thiết kế chính: Altera MAX+PLUS II (Multiple Array Matrix Programmable Logic User System) phiên bản 10.x, cung cấp môi trường tích hợp từ soạn thảo mã nguồn, kiểm tra cú pháp, tổng hợp logic, tối ưu hóa công nghệ đến phân tích định thời tĩnh (STA).
  2. Thư viện công nghệ mục tiêu:
    • CPLD Altera MAX 7000S (EPM7128SLC84), MAX 9000.
    • FPGA Altera FLEX 10K (EPF10K10TC144), hỗ trợ cấu trúc khối logic nhúng (Embedded Array Block - EAB) và khối logic khả trình (Logic Array Block - LAB).
  3. Quy trình tổng hợp logic: Áp dụng mô hình Top-Down kết hợp Bottom-Up: $$\text{RTL Description} \xrightarrow{\text{Translation}} \text{Generic Boolean Netlist} \xrightarrow{\text{Optimization}} \text{Technology Mapping} \xrightarrow{\text{Gate-Level Netlist}}$$

Implementation và kết quả

Chi tiết các kỹ thuật cốt lõi và mã nguồn hiện thực

1. Mô hình hóa khối nguyên thủy do người dùng định nghĩa (UDP)

Đồ án đi sâu vào việc xây dựng các khối UDP tổ hợp và tuần tự nhằm tối ưu hóa bảng chân trị ở mức cổng thấp nhất, giảm thiểu số lượng cổng logic trung gian.

  • UDP tổ hợp: Thiết kế bộ dồn kênh 4 sang 1 (MUX 4-to-1)
// Thiết kế MUX4_to_1 sử dụng User-Defined Primitive (UDP)
primitive mux4_to_1 (out, i0, i1, i2, i3, s0, s1);
    output out;
    input  i0, i1, i2, i3, s0, s1;

    table
    // i0  i1  i2  i3  s0  s1 : out
       1   ?   ?   ?   0   0  : 1;
       0   ?   ?   ?   0   0  : 0;
       ?   1   ?   ?   1   0  : 1;
       ?   0   ?   ?   1   0  : 0;
       ?   ?   1   ?   0   1  : 1;
       ?   ?   0   ?   0   1  : 0;
       ?   ?   ?   1   1   1  : 1;
       ?   ?   ?   0   1   1  : 0;
       // Xử lý trạng thái tùy định s0, s1
       1   1   ?   ?   x   0  : 1;
       0   0   ?   ?   x   0  : 0;
       ?   ?   1   1   x   1  : 1;
       ?   ?   0   0   x   1  : 0;
    endtable
endprimitive
  • UDP tuần tự: Thiết kế bộ chốt dữ liệu 1-bit tác động mức có tín hiệu Clear bất đồng bộ
// Thiết kế Latch 1-bit tác động mức với Clock và Clear bất đồng bộ
primitive latch_udp (q, d, clock, clear);
    output reg q;
    input d, clock, clear;

    initial q = 1'b0; // Khởi tạo ngõ ra mức 0

    table
    //  d   clock   clear  :  q  :  q_next
        ?     ?       1    :  ?  :    0   ; // Tín hiệu clear tích cực mức 1
        1     1       0    :  ?  :    1   ; // Latch dữ liệu d = 1 khi clock = 1
        0     1       0    :  ?  :    0   ; // Latch dữ liệu d = 0 khi clock = 1
        ?     0       0    :  ?  :    -   ; // Duy trì trạng thái ổn định khi clock = 0
    endtable
endprimitive

2. Xử lý điều kiện chạy đua (Race Condition) với phép gán Blocking và Non-blocking

Đồ án đã phân tích chính xác sự khác biệt bản chất giữa phép gán dạng Blocking (=)Non-blocking (<=) trong các khối always hoặc initial thực thi đồng thời:

  • Blocking (=): Biểu thức bên phải được tính toán và gán ngay lập tức cho biến bên trái, ngăn chặn (block) các lệnh kế tiếp thực thi cho đến khi phép gán hoàn tất. Dễ gây ra hiện tượng Race Condition trong mạch tuần tự đa tầng.
  • Non-blocking (<=): Toàn bộ giá trị bên phải được tính toán đồng thời tại thời điểm kích hoạt cạnh xung clock, sau đó việc cập nhật giá trị cho biến bên trái diễn ra đồng loạt ở cuối bước thời gian mô phỏng, loại bỏ hoàn toàn hiện tượng tranh chấp dữ liệu giữa các Flip-Flop mắc nối tiếp.
// Ví dụ mô tả thanh ghi dịch 2 tầng bằng Non-blocking Assignment (Không gây Race Condition)
module shift_reg_2stage (
    input  wire clk,
    input  wire reset_n,
    input  wire data_in,
    output reg  data_out
);
    reg q1;

    always @(posedge clk or negedge reset_n) begin
        if (!reset_n) begin
            q1       <= 1'b0;
            data_out <= 1'b0;
        end else begin
            q1       <= data_in; // Cập nhật đồng thời tại cạnh lên xung nhịp
            data_out <= q1;
        end
    end
endmodule

3. Mô hình hóa máy trạng thái hữu hạn (FSM) ứng dụng

Đồ án đã thiết kế hoàn chỉnh hai ứng dụng phức tạp:

  • Hệ thống điều khiển đèn giao thông tại ngã tư: Máy trạng thái tuần tự kiểm soát 3 pha đèn (Xanh - Vàng - Đỏ) cho hai trục giao thông chính - phụ, có tích hợp bộ đếm định thời trễ thích ứng.
  • Máy bán báo tự động (Automatic Newspaper Vending Machine): FSM nhận diện đồng xu mệnh giá kép, tự động tích lũy số dư, kích hoạt cơ cấu mở khóa khi đạt ngưỡng giá và trả lại tiền thừa chính xác theo chu kỳ xung nhịp.
stateDiagram-v2
    [*] --> ResetState : Khởi động / RST=0
    ResetState --> MainGreen_SideRed : Bắt đầu chu kỳ
    MainGreen_SideRed --> MainYellow_SideRed : Hết thời gian Xanh chính (30s)
    MainYellow_SideRed --> MainRed_SideGreen : Hết thời gian Vàng chính (5s)
    MainRed_SideGreen --> MainRed_SideYellow : Hết thời gian Xanh phụ (20s)
    MainRed_SideYellow --> MainGreen_SideRed : Hết thời gian Vàng phụ (5s)

Kết quả kiểm chứng và thẩm định

Toàn bộ các module phần cứng được thẩm định chức năng thông qua trình tạo xung kiểm tra (Vector Waveform File .scf) và công cụ phân tích định thời tĩnh (Timing Analyzer) trong MAX+PLUS II:

Khối chức năng thiết kế Mục tiêu chức năng Mức tài nguyên tiêu thụ (Altera CPLD/FPGA) Tần số hoạt động tối đa ($F_{max}$) Trạng thái thẩm định
Bộ dồn kênh MUX 4-1 (UDP) Chuyển mạch 4 kênh dữ liệu 1-bit 1 Macrocell (1 Logic Element) > 125 MHz Đạt chuẩn 100% không glitch
Bộ đếm kênh 4-bit / 8-bit Đếm tuần tự có tín hiệu Preset/Clear 4 / 8 Logic Elements (LEs) 98.5 MHz Đạt chuẩn, dạng sóng đồng bộ
FSM Đèn giao thông Điều khiển chu kỳ 4 trạng thái 12 Macrocells / 18 Flip-Flops 75.2 MHz Hoạt động chính xác theo chu kỳ định thời
FSM Bán báo tự động Nhận xu, tính tổng & mở khóa 16 Macrocells / 22 Flip-Flops 68.0 MHz Xử lý đúng 100% các tổ hợp tiền vào

Đổi mới và đóng góp

  1. Chuẩn hóa phương pháp luận thiết kế số mức RTL: Thay thế phương pháp vẽ sơ đồ cổng rời rạc truyền thống bằng quy trình lập trình mô tả phần cứng cấu trúc Top-Down, cho phép quản lý độ phức tạp mạch lên đến hàng chục nghìn cổng logic chỉ qua vài trăm dòng mã Verilog.
  2. Khai thác tối ưu khối nguyên thủy UDP: Chứng minh rằng việc sử dụng UDP cho các mạch tổ hợp/tuần tự cơ bản giúp trình tổng hợp logic của MAX+PLUS II giảm từ 18% đến 25% số lượng cổng trung gian so với việc tổng hợp từ các biểu thức đại số Boolean thông thường.
  3. Phân tích toàn diện và triệt tiêu xung đột định thời: Làm rõ cơ chế hoạt động của mô hình trễ phân bố (Distributed Delay), trễ tập trung (Lumped Delay) và trễ đường dẫn (Path Delay qua phát biểu specparam), cung cấp hướng dẫn rõ ràng về việc sử dụng phép gán Non-blocking để loại trừ hoàn toàn lỗi Race Condition trong thiết kế vi mạch.
  4. Tài liệu học thuật và giáo trình mẫu đầu tiên về Verilog tại ĐH SPKT TP.HCM: Ở thời điểm năm 2002, khi tài liệu tiếng Việt về Verilog HDL còn rất khan hiếm, đồ án đã đóng góp hệ thống bài giảng, ví dụ mã nguồn mẫu và quy trình thực hành từ mức logic đến nạp chip hoàn chỉnh cho sinh viên ngành Điện tử - Viễn thông.

Ứng dụng thực tế và triển khai

Trường hợp sử dụng thực tế (Use Cases)

  • Bộ điều khiển giao thông thông minh: Module FSM đèn giao thông có thể nạp trực tiếp vào vi mạch CPLD Altera EPM7128S để điều khiển trực tiếp hệ thống đèn công suất thông qua mạch kích relay hoặc opto-triac cách ly.
  • Giao tiếp phần cứng tốc độ cao: Bộ đếm kênh và bộ ghép kênh MUX là thành phần cốt lõi trong các bộ chuyển đổi song song - nối tiếp (Serializer/Deserializer - SerDes) trên các bus dữ liệu vi xử lý và card mạng.
  • Hệ thống tự động hóa bán hàng: Module FSM máy bán báo tự động là nền tảng điều khiển cho các thiết bị thanh toán, máy bán hàng tự động, máy đếm tiền công nghiệp.
graph TD
    subgraph Hardware_Deployment [Mô hình Triển khai Phần cứng Thực tế]
        A[Nguồn phát xung Clock 50MHz] --> B[Altera CPLD EPM7128S / FPGA FLEX 10K]
        C[Cảm biến nút nhấn / Công tắc vào] --> B
        B --> D[Bộ điều khiển FSM & Logic Xử lý Verilog]
        D --> E[Driver Công suất / ULN2803]
        D --> F[Hiển thị LED 7 Đoạn / Dạng sóng Bus]
        E --> G[Đèn tín hiệu / Động cơ nhả báo]
    end

Hướng dẫn quy trình triển khai trên phần mềm MAX+PLUS II

  1. Khởi tạo Project:
    • Mở MAX+PLUS II $\rightarrow$ Chọn File $\rightarrow$ New $\rightarrow$ Verilog HDL File (.v).
    • Nhập mã nguồn module thiết kế (ví dụ traffic_light.v).
    • Chọn File $\rightarrow$ Project $\rightarrow$ Set Project to Current File.
  2. Cấu hình phần cứng mục tiêu (Device Assignment):
    • Chọn menu Assign $\rightarrow$ Device $\rightarrow$ Family: MAX7000S $\rightarrow$ Device: EPM7128SLC84-15.
  3. Biên dịch và Tổng hợp Logic:
    • Mở trình Compiler $\rightarrow$ Nhấn Start để thực hiện Translation, Logic Synthesis và Fitter.
  4. Mô phỏng chức năng và Định thời:
    • Mở Waveform Editor $\rightarrow$ Nhập danh sách chân I/O $\rightarrow$ Tạo xung kích thích ngõ vào $\rightarrow$ Lưu file .scf.
    • Mở trình Simulator $\rightarrow$ Nhấn Start $\rightarrow$ Kiểm tra dạng sóng ngõ ra để xác thực không có lỗi định thời ($t_{setup}, t_{hold}$).
  5. Nạp chip (Device Programming):
    • Kết nối máy tính với bo mạch thí nghiệm qua cáp nạp Altera ByteBlaster (JTAG).
    • Mở trình MAX+PLUS II Programmer $\rightarrow$ Nhấn Program để nạp file cấu hình .pof hoặc .sof vào chip.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Công cụ EDA thế hệ cũ: Môi trường MAX+PLUS II chỉ hỗ trợ chuẩn Verilog-1995 cơ bản, chưa hỗ trợ các cú pháp mở rộng mạnh mẽ của Verilog-2001 (như danh sách port kiểu ANSI C, toán tử signed arithmetic) và SystemVerilog.
  • Quy mô phần cứng thử nghiệm: Các dòng CPLD MAX 7000 có số lượng Macrocell giới hạn (dưới 512 Macrocells), chỉ phù hợp cho các khối logic điều khiển vừa và nhỏ, chưa đủ tài nguyên để nhúng các lõi vi xử lý RISC 32-bit (như MIPS, RISC-V).
  • Kiểm tra tự động hóa (Automated Self-Checking Testbench): Kiểm tra chức năng chủ yếu dựa trên việc quan sát trực quan đồ thị dạng sóng Waveform (.scf) thay vì sử dụng Testbench tự động với các hàm so sánh $assert nâng cao.

Hướng phát triển đề xuất

  1. Nâng cấp nền tảng EDA: Chuyển đổi toàn bộ thiết kế sang môi trường Intel Quartus Prime hoặc Synopsys Design Compiler để tiếp cận quy trình thiết kế chip siêu vi mô dưới 28nm.
  2. Mô hình hóa vi xử lý hoàn chỉnh: Phát triển tiếp từ các khối ALU, thanh ghi và bộ đếm đã xây dựng để tạo thành lõi vi xử lý 8-bit/16-bit hoàn chỉnh theo kiến trúc Harvard/von Neumann.
  3. Ứng dụng giao tiếp C/C++ qua PLI/VPI: Tận dụng triệt để giao tiếp ngôn ngữ lập trình PLI để xây dựng môi trường đồng mô phỏng (Co-simulation) phần mềm - phần cứng, phục vụ thiết kế hệ thống trên chip (SoC).

Đối tượng hưởng lợi

  • Sinh viên ngành Kỹ thuật Điện tử - Viễn thông, Kỹ thuật Máy tính: Nắm vững tài liệu giáo khoa hoàn chỉnh, từ các khái niệm cơ bản về kiểu dữ liệu net/reg đến kỹ thuật mô hình hóa FSM và phân tích định thời thực tế.
  • Kỹ sư thiết kế FPGA/RTL Designer: Có được tài liệu tham khảo thực tế về các quy tắc thiết kế phần cứng tránh race condition, tối ưu hóa diện tích cổng thông qua khối nguyên thủy UDP và phương pháp cấu trúc hóa module Top-Down.
  • Các doanh nghiệp sản xuất thiết bị số & R&D Vi mạch: Tiếp cận quy trình tiêu chuẩn hóa mã nguồn Verilog có khả năng tái sử dụng cao trên nhiều nền tảng chip khác nhau (Altera, Xilinx, ASIC Standard Cell) mà không phụ thuộc vào một nhà cung cấp linh kiện cố định.
  • Giảng viên và Nhà nghiên cứu: Sử dụng làm đề cương tham khảo để xây dựng giáo trình thực hành Thiết kế Vi mạch số và Tự động hóa thiết kế (EDA) trong các trường đại học kỹ thuật.

Câu hỏi thường gặp

1. Tại sao nên sử dụng Verilog HDL thay vì vẽ sơ đồ nguyên lý (Schematic Capture) khi thiết kế vi mạch?

Khi quy mô tích hợp vi mạch vượt quá vài nghìn transistor, việc vẽ sơ đồ cổng rời rạc trở nên bất khả thi do không thể quản lý các kết nối phức tạp và dễ phát sinh lỗi thao tác thủ công. Verilog HDL cho phép mô tả hoạt động của mạch ở mức trừu tượng cao (RTL hoặc Behavioral) thông qua mã nguồn dạng văn bản tương tự ngôn ngữ C, cho phép mô phỏng, debug thuật toán nhanh chóng và tự động hóa khâu tổng hợp logic bằng phần mềm máy tính (EDA Synthesis Tools).

2. Sự khác biệt cốt lõi giữa biến kiểu wirereg trong Verilog là gì?

  • Biến kiểu wire (kiểu 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ữ trạng thái. Biến kiểu wire nhận giá trị liên tục từ ngõ ra của một cổng hoặc thông qua phát biểu gán liên tục assign.
  • Biến kiểu reg: Đại diện cho một phần tử lưu trữ dữ liệu (có thể được tổng hợp thành Latch hoặc D Flip-Flop tùy thuộc vào điều kiện kích hoạt). Biến kiểu reg giữ nguyên giá trị của nó cho đến khi có một phép gán thủ tục mới bên trong khối always hoặc initial.

3. Khi nào cần sử dụng phép gán Blocking (=) và Non-blocking (<=)?

  • Sử dụng Blocking (=): Khi thiết kế các mạch logic tổ hợp (Combinational Logic) bên trong khối always @(*). Các câu lệnh sẽ thực thi tuần tự từng dòng theo thứ tự xuất hiện.
  • Sử dụng Non-blocking (<=): Bắt buộc sử dụng khi thiết kế các mạch logic tuần tự (Sequential Logic) đồng bộ theo xung nhịp bên trong khối always @(posedge clk). Phép gán này cập nhật đồng thời tất cả các biến tại cùng thời điểm cạnh xung nhịp, triệt tiêu hoàn toàn xung đột chạy đua dữ liệu giữa các tầng Flip-Flop.

4. Khối nguyên thủy UDP (User-Defined Primitives) mang lại lợi ích gì so với khai báo module thông thường?

UDP cho phép người thiết kế định nghĩa trực tiếp bảng chân trị (đối với mạch tổ hợp) hoặc bảng chuyển trạng thái (đối với mạch tuần tự) ở cấp độ nguyên thủy thấp nhất của Verilog. Trình tổng hợp logic có thể đọc trực tiếp bảng này mà không cần trải qua bước phân tích cú pháp biểu thức Boolean phức tạp, từ đó tối ưu hóa số lượng cổng logic vật lý và tăng tốc độ mô phỏng mạch đáng kể.

5. Từ phần mềm MAX+PLUS II, làm thế nào để chuyển đổi thiết kế sang các công cụ hiện đại như Intel Quartus Prime?

Toàn bộ mã nguồn Verilog (.v) viết trên MAX+PLUS II tuân theo chuẩn IEEE 1364 nên hoàn toàn tương thích ngược với Intel Quartus Prime, Xilinx Vivado hay Synopsys Design Compiler. Người dùng chỉ cần tạo Project mới trên Quartus Prime, thêm các file .v hiện có, cấu hình lại dòng chip FPGA hiện đại (Cyclone, Arria, Stratix) và thiết lập file ràng buộc định thời SDC (Synopsys Design Constraints) thay thế cho công cụ Waveform cũ.


Kết luận

Đồ án "Tìm Hiểu Phần Mềm Verilog HDL và Thiết Kế Ứng Dụng" của Huỳnh Giang Tứ và Nguyễn Bá Truyền là một công trình nghiên cứu ứng dụng có giá trị học thuật và thực tiễn cao tại thời điểm công nghệ bán dẫn đang chuyển mình mạnh mẽ. Đồ án đã hệ thống hóa xuất sắc toàn bộ cấu trúc ngôn ngữ Verilog HDL chuẩn IEEE, từ các kiểu dữ liệu phần cứng, toán tử bitwise chuyên dụng, khối nguyên thủy UDP cho đến cơ chế giao tiếp PLI phức tạp.

Thông qua việc hiện thực hóa và kiểm chứng thành công các hệ thống mạch số ứng dụng (Multiplexer, Bộ đếm kênh, FSM Đèn giao thông và Máy bán báo tự động) trên phần mềm Altera MAX+PLUS II, đề tài đã chứng minh tính ưu việt vượt trội của quy trình thiết kế Top-Down bằng ngôn ngữ mô tả phần cứng so với phương pháp truyền thống. Đây không chỉ là tài liệu nền tảng phục vụ công tác giảng dạy và nghiên cứu thiết kế vi mạch tại Trường ĐH Sư phạm Kỹ thuật TP.HCM mà còn là cẩm nang thực hành giá trị cho các kỹ sư điện tử bước đầu tiếp cận công nghệ thiết kế ASIC/FPGA chuyên nghiệp.