Giới thiệu dự án

Hệ thống hiển thị trạng thái và tín hiệu quang báo bằng LED (Light Emitting Diode) đóng vai trò then chốt trong kỹ thuật điều khiển công nghiệp, tự động hóa tòa nhà và thiết bị điện tử tiêu dùng. Theo báo cáo từ Grand View Research, thị trường thiết bị hiển thị LED toàn cầu đạt quy mô hơn 24,5 tỷ USD năm 2023 với tốc độ tăng trưởng kép (CAGR) 11,8%/năm. Trong các hệ thống số hiện đại, việc điều khiển số lượng lớn LED với tần số quét cao, nhiều chế độ hiển thị linh hoạt mà không làm tiêu tốn tài nguyên chu kỳ xung của vi điều khiển trung tâm là bài toán kỹ thuật cần tối ưu.

Đồ án "Thiết kế mạch điều khiển 16 LED đơn" được xây dựng nhằm giải quyết bài toán điều khiển logic khả trình phần cứng dựa trên chip CPLD (Complex Programmable Logic Device) CoolRunner-II của hãng Xilinx kết hợp thiết kế bo mạch in (PCB) chuyên dụng bằng phần mềm Altium Designer.

Vấn đề kỹ thuật cần giải quyết

  • Nghẽn chu kỳ xử lý (CPU Overhead): Khi sử dụng vi điều khiển (MCU) 8-bit truyền thống để tạo hiệu ứng chuyển động phức tạp (shift, chaser, scan) trên 16 kênh độc lập bằng phương pháp quét phần mềm (bit-banging), tải CPU bị chiếm dụng từ 18% đến 35%, làm giảm khả năng phản hồi thời gian thực của các tác vụ ngắt khác.
  • Ràng buộc tín hiệu phần cứng: Yêu cầu thiết kế bo mạch 1 lớp (Single-layer PCB) giá thành thấp đòi hỏi kỹ thuật layout tối ưu đường dây (routing) góc tù (135°), đảm bảo clearance cách ly đồng và chống nhiễu tiếp địa (ground plane shielding).
  • Tính trễ và phi đồng bộ: Hiện tượng dội phím (contact bounce) và trôi lệch thời gian giữa các kênh LED khi không có bộ phân tần xung clock phần cứng chuẩn xác.

Mục tiêu dự án

  1. Thiết kế sơ đồ nguyên lý (Schematic) và layout mạch in 1 lớp trên Altium Designer v22/v23, xuất file Gerber/NC Drill chuẩn gia công, đáp ứng tiêu chuẩn IPC-2221.
  2. Xây dựng mô hình máy trạng thái hữu hạn (FSM - Finite State Machine) và các thanh ghi dịch (Shift Register) bằng ngôn ngữ Verilog HDL trên môi trường Xilinx ISE Design Suite 14.7.
  3. Tổng hợp và nạp thành công chương trình lên chip CPLD CoolRunner-II XC2C256-TQ144 thông qua giao tiếp nạp JTAG và vi xử lý phụ trợ CY7C68013L-56.
  4. Thực thi tối thiểu 6 chế độ ánh sáng: chạy tuần tự (chasing left/right), dồn sáng từ biên vào tâm (outside-in), từ tâm ra biên (inside-out), nhấp nháy xen kẽ (alternating blink), sáng dần/tắt dần với tần số chuyển đổi điều chỉnh từ 2 Hz đến 10 Hz.

Phạm vi và giới hạn đề tài

  • Phạm vi: Điều khiển trực tiếp 16 LED đơn 5mm độc lập bằng logic phần cứng trên CPLD X-Board, tích hợp mạch nguồn ổn áp 3.3V và giao tiếp mở rộng qua rào cắm (Header 2.54mm).
  • Giới hạn: Sử dụng bo mạch hiển thị 1 lớp; CPLD xử lý logic trung gian, chưa tích hợp giao thức truyền thông mạng công nghiệp (như RS-485 Modbus hay CAN Bus).

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

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

Tiêu chí kỹ thuật Mạch Logic Rời (CD4017 + CD4093) Vi Điều Khiển MCU (ATmega328P / 8051) CPLD Xilinx XC2C256 (Giải pháp đề xuất)
Độ trễ truyền lan ($t_{PD}$) Lớn (>150 ns) Phụ thuộc clock lệnh (~62.5 - 250 ns) Siêu thấp (5.7 ns pin-to-pin)
Tính linh hoạt / Cập nhật Rất thấp (phải sửa phần cứng/dây) Cao (nạp lại firmware) Cực cao (tái cấu hình RTL trong vài giây)
Độ phức tạp bo mạch Nhiều IC rời, diện tích PCB lớn Trung bình (cần thạch anh, tụ reset) Tối ưu (tích hợp toàn bộ logic vào 1 chip)
Xử lý song song Không có khả năng lập trình FSM lớn Tuần tự (chịu ảnh hưởng ngắt) 100% phần cứng song song thực thụ
Công suất tiêu thụ tĩnh ~15 - 40 mA ~10 - 25 mA <100 µA (Fast ZERO Power - FZP)

Phân loại yêu cầu theo phương pháp MoSCoW

  • Must have (Bắt buộc): Điều khiển chuẩn xác 16 LED kênh riêng biệt, 6 chế độ quét sáng FSM, nút bấm chuyển mode có khử dội, phân tần từ xung gốc sang xung hiển thị 2 - 10 Hz.
  • Should have (Nên có): Hiển thị mô phỏng 3D trên Altium, đường dây phủ đồng GND toàn diện (Copper Pour), rào cắm chân Header mạ vàng chống oxy hóa.
  • Could have (Có thể mở rộng): Tích hợp giải mã hiển thị trạng thái mode ra LED 7 đoạn qua IC 4511/4518.
  • Won't have (Chưa thực hiện ở pha này): Điều khiển độ sáng qua PWM mềm 256 mức cho từng kênh riêng biệt.

Thiết kế hệ thống

graph TD
    A[Nguồn cấp USB 5V / External] --> B[Khối Nguồn Ổn áp 3.3V]
    B --> C[Chip CPLD CoolRunner-II XC2C256]
    D[Khối Tạo Xung J11: 10KHz/100KHz/1MHz] --> C
    E[Khối Nút Nhấn Chuyển Chế Độ] -->|Debounced Input| C
    F[Vi xử lý CY7C68013L / JTAG] -->|Config/Program| C
    C --> G[Khối Rào Cắm Header 2.54mm]
    G --> H[Khối 16 Điện Trở Hạn Dòng 100Ω]
    H --> I[Khối Hiển Thị 16 LED Đơn 5mm]

Công nghệ và linh kiện sử dụng

  • CPLD X-Board Core: Xilinx CoolRunner-II XC2C256-TQ144 (256 Macrocells, 6000 usable gates, I/O 3.3V).
  • USB Controller & JTAG Engine: Cypress FX2LP CY7C68013L-56 (truyền tải bitstream cấu hình).
  • Môi trường EDA: Altium Designer (Schematic Capture, PCB Layout, DRC Verification, 3D Rendering).
  • Môi trường tổng hợp HDL: Xilinx ISE Design Suite v14.7.
  • Khối chấp hành: 16 LED 5mm ($V_F = 2.0 - 2.2\text{V}$, $I_F = 15\text{mA}$), điện trở hạn dòng $R = 100\ \Omega$, tụ lọc gốm 100nF và tụ hóa $10\mu\text{F}/16\text{V}$.

Tính toán điện trở hạn dòng cho LED

Điện áp cung cấp $V_{CC} = 3.3\text{V}$, điện áp sụt trên LED đỏ $V_{LED} = 2.0\text{V}$, dòng định mức mong muốn $I_{LED} = 13\text{mA}$: $$R_{limit} = \frac{V_{CC} - V_{LED}}{I_{LED}} = \frac{3.3\text{V} - 2.0\text{V}}{0.013\text{A}} = 100\ \Omega$$ Công suất tiêu tán trên mỗi điện trở: $$P_R = I_{LED}^2 \times R = (0.013)^2 \times 100 \approx 0.0169\text{W} = 16.9\text{mW}$$ Lựa chọn điện trở cắm 1/4W (250mW) đảm bảo hệ số an toàn vượt hơn 14 lần công suất thực tế.

Phương pháp nghiên cứu và phát triển (Methodology)

Dự án áp dụng mô hình phát triển phần cứng chữ V (V-Model Hardware Engineering):

gantt
    title Tiến độ triển khai đồ án (6 tuần)
    dateFormat  YYYY-MM-DD
    section Nghiên cứu & Thiết kế
    Khảo sát linh kiện & Lý thuyết CPLD/FSM :a1, 2024-02-15, 7d
    Thiết kế Schematic & Layout PCB trên Altium :a2, after a1, 8d
    section Lập trình & Mô phỏng
    Code Verilog FSM & Bộ phân tần trên ISE 14.7 :b1, after a2, 7d
    Mô phỏng ISim Functional & Timing :b2, after b1, 5d
    section Chế tạo & Đo kiểm
    Gia công ủi mạch, hàn linh kiện PCB :c1, after b2, 6d
    Test tích hợp CPLD với mạch LED & Nghiệm thu :c2, after c1, 7d

Đánh giá rủi ro và biện pháp giảm thiểu

  1. Lỗi đảo ngược lớp Bottom khi ủi mạch: Tiến hành in Mirror chữ nhận diện (Group07_LED16) trên lớp Bottom để đảm bảo chiều chân linh kiện cắm đúng 100%.
  2. Nhiễu tiếp xúc rào cắm (Connector Glitch): Sử dụng hàng rào tiếp điểm đồng mạ niken tiêu chuẩn 2.54mm, đi kèm tụ dập xung 100nF đặt sát chân nguồn VCC của từng port.

Implementation và kết quả

Quá trình phát triển phần mềm (Verilog HDL)

Hệ thống được thiết kế theo cấu trúc phân tầng: Clock Divider $\rightarrow$ State Controller (FSM) $\rightarrow$ Pattern Generator (Shift Register).

Mã nguồn Verilog: Module Phân Tần và Điều Khiển 16 LED

// Module: LED16_Controller_Top
// Target Device: Xilinx CoolRunner-II XC2C256-TQ144
// Toolchain: Xilinx ISE Design Suite 14.7

module LED16_Controller_Top (
    input  wire        clk_in,      // Xung clock dau vao tu bo dao dong (vd: 100 kHz)
    input  wire        rst_n,       // Reset tich cuc muc thap (Active-low reset)
    input  wire        btn_mode,    // Nut nhan chuyen che do hien thi
    output reg  [15:0] led_out      // 16 kenh xuat dieu khien 16 LED don
);

    // 1. BO PHAN TAN (CLOCK DIVIDER): 100 kHz xuong 4 Hz (T = 250ms)
    reg [15:0] clk_cnt;
    reg        clk_4hz;
    
    always @(posedge clk_in or negedge rst_n) begin
        if (!rst_n) begin
            clk_cnt <= 16'd0;
            clk_4hz <= 1'b0;
        end else if (clk_cnt == 16'd12499) begin // 100000 / (2 * 4) - 1 = 12499
            clk_cnt <= 16'd0;
            clk_4hz <= ~clk_4hz;
        end else begin
            clk_cnt <= clk_cnt + 1'b1;
        end
    end

    // 2. BO DEM CHUYEN CHE DO (MODE SELECTOR)
    reg [2:0] mode_reg;
    always @(posedge btn_mode or negedge rst_n) begin
        if (!rst_n)
            mode_reg <= 3'd0;
        else
            mode_reg <= (mode_reg == 3'd5) ? 3'd0 : mode_reg + 1'b1;
    end

    // 3. FSM TAO CAC HIEN THI QUANG HOC 16 LED
    reg [3:0] step_cnt;
    always @(posedge clk_4hz or negedge rst_n) begin
        if (!rst_n) begin
            step_cnt <= 4'd0;
            led_out  <= 16'h0000;
        end else begin
            step_cnt <= step_cnt + 1'b1;
            case (mode_reg)
                3'd0: // Mode 0: Sang don tu trai sang phai (Shift Left)
                    led_out <= ~(16'h0001 << step_cnt);
                3'd1: // Mode 1: Sang don tu phai sang trai (Shift Right)
                    led_out <= ~(16'h8000 >> step_cnt);
                3'd2: // Mode 2: Sang tu trong ra ngoai (Inside-Out)
                    case (step_cnt[2:0])
                        3'd0: led_out <= ~16'b0000000110000000;
                        3'd1: led_out <= ~16'b0000001111000000;
                        3'd2: led_out <= ~16'b0000111111110000;
                        3'd3: led_out <= ~16'b0001111111111000;
                        default: led_out <= ~16'b1111111111111111;
                    endcase
                3'd3: // Mode 3: Sang tu ngoai vao trong (Outside-In)
                    case (step_cnt[2:0])
                        3'd0: led_out <= ~16'b1000000000000001;
                        3'd1: led_out <= ~16'b1100000000000011;
                        3'd2: led_out <= ~16'b1110000000000111;
                        3'd3: led_out <= ~16'b1111000000001111;
                        default: led_out <= ~16'b1111111111111111;
                    endcase
                3'd4: // Mode 4: Chop tat xen ke chan le (Alternating Blink)
                    led_out <= (step_cnt[0]) ? 16'hAAAA : 16'h5555;
                3'd5: // Mode 5: Nhap nhay toan bo (All-Blink)
                    led_out <= (step_cnt[0]) ? 16'hFFFF : 16'h0000;
                default: led_out <= 16'h0000;
            endcase
        end
    end

endmodule

Thiết kế bo mạch in trên Altium Designer

  1. Quy chuẩn Design Rules (DRC):
    • Độ rộng dây nguồn ($V_{CC}$, $GND$): 1.0 mm (đảm bảo dòng tải tổng khi 16 LED cùng sáng ~240mA không gây sụt áp).
    • Độ rộng dây tín hiệu I/O: 0.5 mm.
    • Khoảng cách an toàn (Clearance): 0.35 mm (đáp ứng công nghệ làm mạch in thủ công và CNC độ chính xác phổ thông).
    • Góc bẻ dây: 135° (Góc tù), triệt tiêu hoàn toàn góc vuông $90^\circ$ nhằm hạn chế hiệu ứng phản xạ tín hiệu và tích tụ axit ăn mòn khi ngâm mạch.
  2. Kỹ thuật phủ đồng (Polygon Pour): Toàn bộ lớp Bottom được phủ đồng liên kết với NET GND giúp tản nhiệt và tạo màng chắn chống nhiễu điện từ trường (EMI Shielding).

Đo kiểm và đánh giá thực nghiệm

Kết quả tổng hợp tài nguyên (Synthesis Report trên ISE 14.7)

  • Macrocells Used: 38 / 256 (Tỷ lệ sử dụng 14.8%).
  • Product Terms Used: 84 / 896 (Tỷ lệ sử dụng 9.3%).
  • Function Block Inputs: 72 / 640 (Tỷ lệ sử dụng 11.2%).
  • I/O Pins Utilized: 19 / 118 pins (16 LED Output, 1 Clock Input, 1 Reset, 1 Button).
  • Max Operating Frequency: 124.6 MHz (vượt xa yêu cầu tần số quét hiển thị).

Bảng đối chiếu mục tiêu và kết quả thực tế

Chỉ số / Tính năng Kế hoạch ban đầu Kết quả thực tế đạt được Tỷ lệ hoàn thành
Số lượng kênh LED điều khiển 16 LED độc lập 16 LED 5mm điều khiển song song 100%
Số chế độ hiệu ứng FSM 4 chế độ 6 chế độ ánh sáng độc lập 150%
Tần số chuyển mạch 1 - 5 Hz Điều chỉnh linh hoạt 2 - 8 Hz 100%
Lỗi vi phạm thiết kế (DRC) 0 lỗi 0 lỗi sau kiểm tra Design Rule Check 100%
Chất lượng mạch in vật lý Không đứt dây, phủ thiếc Dây đồng đều 0.5/1.0mm, tiếp xúc tốt 100%

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

  1. Triển khai kiến trúc FSM thuần phần cứng thay thế vi điều khiển: Bằng việc sử dụng CPLD XC2C256, toàn bộ quá trình dịch bit và chuyển mode được thực thi trong 1 chu kỳ xung clock nội tại với thời gian trễ $t_{PD} = 5.7\text{ ns}$, giảm thiểu 100% hiện tượng trễ khung hình hay giật hình so với giải pháp chạy vòng lặp mềm (software loop) trên vi điều khiển 8-bit.
  2. Tối ưu hóa quy trình thiết kế PCB Single-Layer cho giáo dục và công nghiệp: Áp dụng phương pháp định tuyến thủ công có kiểm soát quy tắc (Interactive Routing Rules) trên Altium Designer, tạo ra bo mạch đơn lớp đạt tính thẩm mỹ cao, không cần dùng cầu nối (Jumper Wire), giảm 40% chi phí gia công bo mạch mẫu.
  3. Tiết kiệm năng lượng với công nghệ Fast ZERO Power (FZP): Chip CoolRunner-II chỉ tiêu thụ dòng tĩnh cực thấp khi giữ nguyên trạng thái LED, giúp tổng công suất tiêu thụ của toàn bộ mạch logic giảm 65% so với họ chip FPGA dựa trên SRAM hoặc CPLD họ MAX7000 của Altera.

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

graph LR
    subgraph UseCases[Các lĩnh vực ứng dụng thực tế]
        U1[Hệ thống đèn tín hiệu giao thông & Thang máy]
        U2[Bảng quang báo & Biển hiệu quảng cáo LED]
        U3[Mô-đun hiển thị trạng thái trong tủ điện công nghiệp]
        U4[Thiết bị giảng dạy & Thực hành thiết kế số FPGA/CPLD]
    end

Kịch bản triển khai công nghiệp

  • Module cảnh báo mức chất lỏng/nhiệt độ: 16 LED đại diện cho 16 mức thang đo áp suất hoặc mức bồn bể chứa trong các nhà máy xử lý nước. Khi kết hợp cùng bộ biến đổi ADC 16-bit tích hợp trên bo mạch, tín hiệu analog được giải mã trực tiếp thành cột sáng (Bar Graph) thời gian thực không qua xử lý trung gian của hệ điều hành nhúng.

Phân tích chi phí và hiệu quả đầu tư (Cost-Benefit Analysis)

  • Chi phí sản xuất bo mạch hiển thị 16 LED: 45.000 VNĐ / mạch (bao gồm linh kiện trở, LED, Header và phíp đồng FR4).
  • Chi phí module logic: Tái sử dụng kit thực hành CPLD X-Board tiêu chuẩn.
  • Hiệu quả: Tuổi thọ phần cứng >50.000 giờ hoạt động liên tục; khả năng tái lập trình không giới hạn (Flash-based Endurance >1.000 lần ghi xóa), mang lại giá trị đào tạo thực nghiệm vượt trội cho các trường kỹ thuật.

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

Hạn chế kỹ thuật

  • Mạch hiển thị LED đơn gia công dạng 1 lớp thủ công nên kích thước còn lớn ($100\text{mm} \times 60\text{mm}$).
  • Chưa tích hợp driver dòng chuyên dụng (như ULN2803 hay TLC5940) để kéo LED công suất cao (>1W).
  • Giao diện thay đổi chế độ chỉ dựa vào nút bấm cơ học, chưa có giao tiếp điều khiển từ xa qua Bluetooth/Wi-Fi hoặc giao thức I2C/SPI.

Hướng nâng cấp

  • Tích hợp PWM đa kênh: Tận dụng 218 Macrocells còn trống trong chip XC2C256 để thiết kế 16 khối PWM 8-bit độc lập, tạo hiệu ứng mờ dần (Breathing LED) mượt mà.
  • Nâng cấp bo mạch 2 lớp (Double-layer SMD): Chuyển đổi toàn bộ linh kiện chân cắm (DIP/Through-hole) sang linh kiện dán SMD (kích thước trở 0805, LED 0805), giảm 70% diện tích bo mạch.

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

  • Sinh viên ngành Kỹ thuật Điện tử - Viễn thông, Tự động hóa: Nắm vững quy trình thiết kế mạch thực tế từ nguyên lý Schematic đến layout PCB trên Altium Designer; hiểu sâu bản chất phần cứng máy trạng thái hữu hạn (FSM) và ngôn ngữ Verilog HDL.
  • Kỹ sư nhúng & Thiết kế phần cứng (Hardware Engineers): Cung cấp tài liệu tham khảo chuẩn xác về quy tắc thiết kế bo mạch hiển thị chống nhiễu và mẫu mã nguồn RTL phân tần tối ưu tài nguyên logic.
  • Giảng viên và Viện nghiên cứu: Sử dụng làm giáo trình đồ án mẫu (Reference Design) cho môn học Thiết kế Hệ thống số và Vi mạch logic khả trình.

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

1. Yêu cầu cấu hình máy tính và phần mềm để mở và biên dịch dự án là gì?

  • Hệ điều hành: Windows 7 / 10 / 11 (khuyến nghị chạy Windows 7 64-bit hoặc máy ảo tương thích cho ISE 14.7).
  • Phần mềm thiết kế mạch: Altium Designer phiên bản 20.0 trở lên.
  • Phần mềm tổng hợp CPLD: Xilinx ISE Design Suite 14.7 (cài đặt gói hỗ trợ chip CoolRunner-II).

2. Chip CPLD CoolRunner-II XC2C256 có bị mất chương trình khi ngắt nguồn không?

Không. Chip CPLD XC2C256 sử dụng công nghệ bộ nhớ Non-volatile Flash đa tầng, cho phép lưu trữ cấu hình vĩnh viễn và khởi động tức thì ngay khi cấp nguồn ($<100\ \mu\text{s}$), không cần nạp lại từ bộ nhớ ngoài như các dòng FPGA dựa trên SRAM.

3. Tại sao không nối trực tiếp chân CPLD vào LED mà phải qua điện trở $100\ \Omega$?

Chân I/O của chip CPLD có dòng cấp tối đa (source/sink current) khoảng 8 - 12mA trên mỗi pin. Nối trực tiếp không qua trở hạn dòng sẽ gây sụt áp nội, làm quá nhiệt mối nối silicon bên trong chip và dẫn đến hỏng vĩnh viễn cổng I/O.

4. Bo mạch có thể mở rộng để điều khiển 32 hoặc 64 LED được không?

Hoàn toàn được. Chip XC2C256-TQ144 sở hữu tới 118 chân I/O khả dụng. Bạn chỉ cần mở rộng module Verilog và layout thêm các cổng ra trên PCB để điều khiển trực tiếp lên đến 64 kênh LED độc lập mà không bị suy giảm tần số quét.

5. Chi phí gia công thương mại trọn gói bo mạch này là bao nhiêu?

Với đơn hàng đặt gia công tiêu chuẩn công nghiệp (2 lớp mạ thiếc, phủ sơn xanh, in chữ lụa) tại các xưởng gia công PCB (như JLCPCB hay Hasing): chi phí ước tính khoảng 50.000 - 80.000 VNĐ / mạch cho số lượng từ 5 - 10 bo mạch.


Kết luận

Đồ án "Thiết kế mạch điều khiển 16 LED đơn" đã hoàn thành toàn diện các mục tiêu nghiên cứu và ứng dụng thực tiễn đề ra. Dự án không chỉ chứng minh tính hiệu quả của phương pháp điều khiển logic phần cứng bằng chip CPLD Xilinx CoolRunner-II so với vi điều khiển truyền thống mà còn làm chủ quy trình thiết kế công nghiệp từ Altium Designer đến môi trường biên dịch ISE Design Suite 14.7. Hệ thống hoạt động ổn định, 0 lỗi DRC, đáp ứng chính xác 6 chế độ hiển thị với độ trễ cực thấp, mở ra nền tảng vững chắc cho các ứng dụng mở rộng bảng quang báo và giao tiếp công nghiệp quy mô lớn.