Giới thiệu dự án

Thị trường truyền thông thị giác ngoài trời (Digital Out-of-Home - DOOH) và bảng hiển thị công cộng đang chứng kiến tốc độ tăng trưởng kép hàng năm (CAGR) đạt 11.2% trên toàn cầu. Các hệ thống hiển thị quang báo hiện đại đòi hỏi tốc độ quét cao, màu sắc trung thực, khả năng làm tươi (refresh rate) lớn để chống hiện tượng nhấp nháy (flicker) khi ghi hình qua máy ảnh, đồng thời phải vận hành liên tục 24/7 với độ ổn định tuyệt đối trong môi trường công nghiệp.

+-----------------------------------------------------------------------------------+
|                               HỆ THỐNG QUANG BÁO FPGA                             |
+-----------------------------------------------------------------------------------+
| [Máy tính PC (C# GUI)] ---> (UART RS-232) ---> [FPGA Cyclone IV EP4CE6E22C8N]     |
|                                                          |                        |
|                                       +------------------+------------------+     |
|                                       |                  |                  |     |
|                                       v                  v                  v     |
|                               [DS1307 RTC (I2C)]  [ROM Font Bitmap]  [8-bit PWM]  |
|                                                          |                        |
|                                                          v                        |
|                                             [8x Panel LED P10 RGB (4096 Pixels)]  |
+-----------------------------------------------------------------------------------+

Vấn đề thực tiễn và điểm nghẽn kỹ thuật (Problem Statement)

Các giải pháp quang báo truyền thống chủ yếu dựa trên vi điều khiển 8-bit hoặc 32-bit kiến trúc tuần tự (như PIC, ATmega, ARM Cortex-M0/M3) bộc lộ nhiều hạn chế nghiêm trọng:

  • Tắc nghẽn chu kỳ xung nhịp CPU: Vi điều khiển phải đồng thời thực hiện ngắt nhận dữ liệu UART, xử lý bộ nhớ đệm, giải mã phông chữ và liên tục đẩy từng bit xung nhịp ra các thanh ghi dịch 74HC595. Tải CPU thường xuyên vượt ngưỡng 90%, dẫn đến hiện tượng trễ khung hình và giật lag khi có dữ liệu mới truyền tới.
  • Giới hạn tốc độ quét và độ sâu màu: Khi điều khiển ma trận LED kích thước lớn bằng phương pháp điều chế độ rộng xung (PWM) thông qua phần mềm (Software PWM), tần số quét bị giới hạn dưới 60 Hz, gây mỏi mắt người nhìn và xuất hiện sọc đen khi quay video.
  • Khả năng mở rộng kém: Khi tăng số lượng tấm LED hiển thị, vi điều khiển không thể đáp ứng được băng thông truyền dữ liệu song song tốc độ cao.

Mục tiêu dự án

  1. Thiết kế và hiện thực hóa thành công lõi điều khiển trung tâm bằng chip bán dẫn chuyên dụng FPGA Cyclone IV EP4CE6E22C8N, thực thi xử lý song song hoàn toàn ở cấp độ phần cứng.
  2. Xây dựng module điều chế độ rộng xung 8-bit PWM (Pulse Width Modulation) trên FPGA nhằm tạo ra 256 cấp độ sáng cho mỗi kênh màu cơ bản (Red, Green, Blue), cho phép hiển thị dải màu sắc đa dạng.
  3. Tích hợp module giao tiếp nối tiếp UART tốc độ cao nhận dữ liệu bản tin động từ máy tính và module I2C Master giao tiếp với IC thời gian thực DS1307 để hiển thị đồng hồ số/đồng hồ kim chính xác.
  4. Điều khiển đồng bộ hệ thống 8 module LED ma trận P10 RGB ngoài trời (kích thước mỗi module 32x16 pixels, tổng diện tích hiển thị 4096 điểm ảnh).
  5. Phát triển phần mềm giao diện điều khiển trên máy tính bằng ngôn ngữ C# (.NET Framework) với giao diện trực quan, cho phép soạn thảo văn bản, chọn màu sắc, hiệu ứng cuộn chữ và đồng bộ thời gian thực.

Phương pháp tiếp cận và giải pháp đề xuất

Đề tài lựa chọn kiến trúc xử lý phần cứng song song (Hardware Parallelism) trên nền tảng FPGA (Field-Programmable Gate Array) sử dụng ngôn ngữ mô tả phần cứng VHDL. Toàn bộ các tiến trình quét hàng, dịch cột, tạo xung PWM, giải mã phông chữ và giao tiếp ngoại vi được phân tách thành các khối mạch logic độc lập chạy đồng thời trên cùng một xung nhịp master clock 50 MHz. Phương pháp này triệt tiêu hoàn toàn hiện tượng trễ chu kỳ của vi xử lý tuần tự, đảm bảo tần số làm tươi màn hình đạt trên 300 Hz.

Kết quả kỳ vọng và chỉ số định lượng

  • Tần số quét hiển thị: $\ge 250\text{ Hz}$ (loại bỏ hoàn toàn flicker).
  • Độ phân giải: 8 module P10 ghép nối tiếp tạo ma trận $128 \times 32$ hoặc $64 \times 64$ pixels.
  • Độ trễ phản hồi khi cập nhật bản tin qua UART: $< 5\text{ ms}$.
  • Độ chính xác thời gian thực: Sai số $< 1\text{ s/ngày}$ nhờ chip DS1307 có nguồn pin backup 3.3V.
  • Mức tiêu thụ logic trên FPGA: Chiếm dưới 50% tổng số Logic Elements (LEs) của chip EP4CE6E22C8N.

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

  • Phạm vi nghiên cứu: Ứng dụng Kit FPGA Altera Cyclone IV EP4CE6E22C8N, 8 bảng LED ma trận P10 Full-Color ngoài trời, nguồn xung tổ ong công nghiệp 5V - 40A, phần mềm Quartus II v13.0sp1 và Visual Studio C#.
  • Giới hạn hệ thống: Giao tiếp máy tính qua chuẩn có dây UART/RS-232 (chưa tích hợp Wi-Fi/Ethernet trực tiếp trên FPGA); phông chữ ký tự hiển thị được cố định trong khối ROM logic nhúng trên FPGA.

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

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

Tiêu chí so sánh Mạch Logic số rời rạc (TTL/CMOS) Vi điều khiển đơn nhân (STM32F4 / AVR) Giải pháp FPGA Cyclone IV (Đề tài)
Kiến trúc xử lý Mạch cứng cố định Tuần tự (Sequential Execution) Xử lý song song thực sự (True Parallelism)
Tần số quét LED Thấp ($< 50\text{ Hz}$), dễ nhấp nháy Trung bình ($60 - 120\text{ Hz}$) Cực cao ($> 300\text{ Hz}$), ổn định tuyệt đối
Khả năng điều chế PWM Rất khó, mạch cồng kềnh Giới hạn số kênh Timer phần cứng Hàng trăm kênh PWM phần cứng độc lập
Độ linh hoạt tái cấu hình Không thể cấu hình lại Lập trình lại phần mềm Tái cấu trúc cấu hình phần cứng linh hoạt
Chi phí phần cứng Thấp nhưng kích thước mạch lớn Trung bình Tối ưu cho hệ thống chuyên dụng, mở rộng tốt

Phân tích yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc): Khối điều khiển quét ma trận LED 1/4 scan rate; khối nhận UART không đồng bộ 8-bit; khối I2C Master đọc thanh ghi thời gian thực DS1307; khối PWM 8-bit đa kênh; mạch hiển thị 8 panel P10 RGB ổn định.
  • Should have (Nên có): Giao diện C# cho phép thay đổi màu sắc từng ký tự (Red, Green, Blue, Yellow, Cyan, Magenta, White); hiển thị đồng hồ dạng kim và dạng số.
  • Could have (Có thể mở rộng): Các hiệu ứng chuyển động văn bản phức tạp (cuộn trái, cuộn phải, nhấp nháy); cảm biến nhiệt độ môi trường.
  • Won't have (Chưa thực hiện): Truyền dữ liệu không dây qua Wi-Fi/4G; phát video streaming trực tiếp từ thẻ nhớ SD.

Thiết kế hệ thống

Sơ đồ khối kiến trúc phần cứng FPGA

+------------------------------------------------------------------------------------+
|                               FPGA EP4CE6E22C8N TOP MODULE                         |
+------------------------------------------------------------------------------------+
|                                                                                    |
|  [CLK 50MHz] ---> [CLOCK DIVIDER] ---> Internal Clocks (UART Baud, I2C, Scan Clk)  |
|                                                                                    |
|  [UART_RX] -------> [DATA PROCESSING] -------> [CHARACTERS CONTROL]                |
|  (From PC)              |                            |                             |
|                         v                            v                             |
|                 [I2C_MASTER_DS1307]            [ROM_CHAR (Font)]                   |
|                 (SDA / SCL to RTC)                   |                             |
|                                                      v                             |
|                                            [DISPLAY & PWM CONTROL]                 |
|                                                      |                             |
|                                                      v                             |
|                                            [SIGNAL CONTROL HUB]                    |
|                                                      |                             |
+------------------------------------------------------|-----------------------------+
                                                       |
                                                       v
                   [P10 Panel: R0, G0, B0, R1, G1, B1, CLK, STB, OE, A, B]

Ngăn xếp công nghệ (Technology Stack)

  • FPGA Chip: Altera (Intel) Cyclone IV EP4CE6E22C8N (6,272 Logic Elements, 270 Kbits Embedded Memory, 179 User I/Os, Package EQFP-144).
  • Bộ nhớ cấu hình: EPCS4N (Serial Configuration Device 4 Mbit).
  • Phần mềm thiết kế vi mạch: Altera Quartus II v13.0sp1 Service Pack 1 / ModelSim-Altera 10.1d Starter Edition.
  • Ngôn ngữ mô tả phần cứng: VHDL-93 (IEEE standard packages: ieee.std_logic_1164, ieee.std_logic_arith, ieee.std_logic_unsigned).
  • Phần mềm máy tính: C# .NET Framework 4.5, Windows Forms Application.
  • IC ngoại vi trên Panel P10:
    • 74HC595: 8-bit Serial-In Parallel-Out Shift Register with Output Latch.
    • 74LS138: 3-to-8 Line Decoder/Demultiplexer.
    • 74HC245: Octal Bus Transceiver with 3-State Outputs.
    • APM4953: Dual P-Channel Enhancement Mode MOSFET (Điện áp $V_{DS} = -30\text{V}$, dòng $I_D = -4.9\text{A}$).
  • IC thời gian thực: Dallas DS1307 $I^2C$ Real-Time Clock, dao động thạch anh $32.768\text{ kHz}$.

Cấu trúc tổ chức bộ nhớ DS1307 và ánh xạ thanh ghi

Địa chỉ ô nhớ (Hex) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Dải giá trị (BCD) Chức năng
0x00 CH Hàng chục giây (10Sec) Hàng chục giây (10Sec) Hàng chục giây (10Sec) Đơn vị giây (Units) Đơn vị giây Đơn vị giây Đơn vị giây 00–59 Giây ($CH=0$: Chạy)
0x01 0 Hàng chục phút (10Min) Hàng chục phút Hàng chục phút Đơn vị phút (Units) Đơn vị phút Đơn vị phút Đơn vị phút 00–59 Phút
0x02 0 12/24 10HR / AM/PM 10HR Đơn vị giờ (Units) Đơn vị giờ Đơn vị giờ Đơn vị giờ 00–23 / 01–12 Giờ
0x03 0 0 0 0 0 Thứ (Day) Thứ Thứ 01–07 Thứ trong tuần
0x04 0 0 10Date 10Date Đơn vị ngày (Units) Đơn vị ngày Đơn vị ngày Đơn vị ngày 01–31 Ngày trong tháng
0x05 0 0 0 10Month Đơn vị tháng Đơn vị tháng Đơn vị tháng Đơn vị tháng 01–12 Tháng
0x06 Hàng chục năm (10Year) Hàng chục năm Hàng chục năm Hàng chục năm Đơn vị năm Đơn vị năm Đơn vị năm Đơn vị năm 00–99 Năm

Phương pháp luận phát triển (Methodology)

Dự án áp dụng quy trình phát triển vi mạch bán dẫn chuẩn V-Model kết hợp các pha kiểm tra liên tục từ cấp độ RTL (Register-Transfer Level) đến tích hợp phần cứng:

[Phân tích yêu cầu] ------------------------------------> [Kiểm thử nghiệm thu toàn hệ thống]
        |                                                                ^
        v                                                                |
[Thiết kế kiến trúc hệ thống] ---------------------------> [Đo kiểm phần cứng & hiển thị LED]
        |                                                                ^
        v                                                                |
[Đặc tả Module RTL (VHDL)] ----------------------------> [Mô phỏng chức năng ModelSim]
        |                                                                ^
        +-----> [Hiện thực mã VHDL & Tổng hợp Quartus II] ---------------+

Tiến độ thực hiện (Project Timeline: 19 tuần từ 10/03/2018 đến 19/07/2018)

  • Tuần 1 - 4: Nghiên cứu cơ sở lý thuyết FPGA, ngôn ngữ VHDL, khảo sát tập lệnh và cấu trúc phần cứng IC 74HC595, 74HC138, APM4953, DS1307 và module P10.
  • Tuần 5 - 8: Thiết kế chi tiết sơ đồ khối, phân bổ chân I/O trên FPGA, tính toán công suất nguồn 5V - 40A và thiết kế khung cơ khí bảng quang báo.
  • Tuần 9 - 14: Lập trình các module VHDL (UART_RX, DATA_PROCESSING, I2C_DS1307, ROM_CHAR, PWM_CORE, DISPLAY_CONTROL); viết phần mềm máy tính C#.
  • Tuần 15 - 17: Tổng hợp RTL (Synthesis), gán chân phần cứng (Pin Planner), nạp chip qua chuẩn JTAG và kiểm thử tích hợp trên bảng LED thực tế.
  • Tuần 18 - 19: Đánh giá hiệu năng, hiệu chỉnh sai số màu sắc, tối ưu tần số quét và hoàn thiện tài liệu thuyết minh đồ án.

Ma trận đánh giá rủi ro và giải pháp khắc phục (Risk Assessment)

Rủi ro kỹ thuật Mức độ Khả năng xảy ra Giải pháp kiểm soát và khắc phục
Sụt áp trên đường cấp nguồn LED Cao Cao Sử dụng nguồn tổ ong 5V - 40A công suất lớn; đi dây nguồn đồng trục $\ge 2.5\text{ mm}^2$ song song trực tiếp đến từng cặp module P10.
Hiện tượng bóng ma (Ghosting effect) Cao Trung bình Tắt chân Output Enable ($OE = 0$) của 74HC138 trước khi chuyển trạng thái quét hàng ($A, B$), sau khi chốt dữ liệu mới kích hoạt lại $OE$.
Sai lệch baudrate UART gây lỗi ký tự Trung bình Thấp Thiết kế bộ chia tần số chính xác từ thạch anh 50 MHz với hệ số chia cố định $N = 50,000,000 / 9600 \approx 5208$, lấy mẫu tại điểm giữa chu kỳ bit.
Nhiễu bus I2C với khoảng cách dây dài Trung bình Trung bình Bố trí điện trở kéo lên (Pull-up resistors) $4.7\text{ k}\Omega$ chuẩn xác tại hai đường SDA và SCL; lọc nhiễu số đầu vào trong mã VHDL.

Implementation và kết quả

Quá trình phát triển và chi tiết mã nguồn cốt lõi

1. Khối nhận dữ liệu nối tiếp UART Receiver (UART_RX.vhd)

Khối UART_RX được thiết kế dưới dạng máy trạng thái hữu hạn (FSM) gồm 4 trạng thái: s_idle, s_start, s_data, s_stop. Bộ đếm xung clock hoạt động ở tần số 50 MHz để định thời tốc độ 9600 bps ($50\text{ MHz} / 9600 \approx 5208$ cycles/bit), thực hiện lấy mẫu tín hiệu tại trung tâm của mỗi bit để loại bỏ nhiễu biên.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity UART_RX is
    Generic ( CLKS_PER_BIT : integer := 5208 ); -- 50MHz / 9600 Baud
    Port (
        clk_50m      : in  STD_LOGIC;
        rx_serial    : in  STD_LOGIC;
        rx_data_out  : out STD_LOGIC_VECTOR(7 downto 0);
        rx_done_tick : out STD_LOGIC
    );
end UART_RX;

architecture Behavioral of UART_RX is
    type state_type is (s_idle, s_start, s_data, s_stop);
    signal state : state_type := s_idle;
    signal clk_count : integer range 0 to CLKS_PER_BIT - 1 := 0;
    signal bit_index : integer range 0 to 7 := 0;
    signal rx_byte   : STD_LOGIC_VECTOR(7 downto 0) := (others => '0');
begin
    process(clk_50m)
    begin
        if rising_edge(clk_50m) then
            case state is
                when s_idle =>
                    rx_done_tick <= '0';
                    clk_count    <= 0;
                    bit_index    <= 0;
                    if rx_serial = '0' then -- Bit Start phát hiện
                        state <= s_start;
                    end if;
                when s_start =>
                    if clk_count = (CLKS_PER_BIT / 2) then
                        if rx_serial = '0' then
                            clk_count <= 0;
                            state     <= s_data;
                        else
                            state     <= s_idle;
                        end if;
                    else
                        clk_count <= clk_count + 1;
                    end if;
                when s_data =>
                    if clk_count < CLKS_PER_BIT - 1 then
                        clk_count <= clk_count + 1;
                    else
                        clk_count <= 0;
                        rx_byte(bit_index) <= rx_serial;
                        if bit_index < 7 then
                            bit_index <= bit_index + 1;
                        else
                            bit_index <= 0;
                            state     <= s_stop;
                        end if;
                    end if;
                when s_stop =>
                    if clk_count < CLKS_PER_BIT - 1 then
                        clk_count <= clk_count + 1;
                    else
                        rx_done_tick <= '1';
                        rx_data_out  <= rx_byte;
                        clk_count    <= 0;
                        state        <= s_idle;
                    end if;
                when others =>
                    state <= s_idle;
            end case;
        end if;
    end process;
end Behavioral;

2. Khối điều chế độ rộng xung PWM trộn màu RGB (PWM_COLOR_CORE.vhd)

Để tạo ra 256 mức sáng cho mỗi màu, một bộ đếm 8-bit ($0 \rightarrow 255$) liên tục tăng theo xung clock quét. Giá trị độ sáng mong muốn của 3 kênh $R, G, B$ được so sánh trực tiếp với giá trị bộ đếm để quyết định mức logic xuất ra chân LED.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity PWM_COLOR_CORE is
    Port (
        clk_pwm   : in  STD_LOGIC;
        duty_red  : in  STD_LOGIC_VECTOR(7 downto 0);
        duty_green: in  STD_LOGIC_VECTOR(7 downto 0);
        duty_blue : in  STD_LOGIC_VECTOR(7 downto 0);
        out_r     : out STD_LOGIC;
        out_g     : out STD_LOGIC;
        out_b     : out STD_LOGIC
    );
end PWM_COLOR_CORE;

architecture Behavioral of PWM_COLOR_CORE is
    signal counter_pwm : STD_LOGIC_VECTOR(7 downto 0) := (others => '0');
begin
    process(clk_pwm)
    begin
        if rising_edge(clk_pwm) then
            counter_pwm <= counter_pwm + 1;
            
            -- So sánh Duty Cycle kênh Đỏ
            if counter_pwm < duty_red then
                out_r <= '1';
            else
                out_r <= '0';
            end if;
            
            -- So sánh Duty Cycle kênh Xanh lá
            if counter_pwm < duty_green then
                out_g <= '1';
            else
                out_g <= '0';
            end if;
            
            -- So sánh Duty Cycle kênh Xanh dương
            if counter_pwm < duty_blue then
                out_b <= '1';
            else
                out_b <= '0';
            end if;
        end if;
    end process;
end Behavioral;

3. Module giao tiếp máy tính bằng C# (.NET SerialPort)

Giao diện C# chịu trách nhiệm đóng gói chuỗi ký tự ASCII, mã màu và lệnh điều khiển thời gian thực để gửi xuống cổng COM nối tiếp.

using System;
using System.IO.Ports;
using System.Windows.Forms;

namespace QuangBaoFPGA
{
    public partial class MainForm : Form
    {
        private SerialPort serialPort;

        public MainForm()
        {
            InitializeComponent();
            InitSerialPort();
        }

        private void InitSerialPort()
        {
            serialPort = new SerialPort();
            serialPort.BaudRate = 9600;
            serialPort.DataBits = 8;
            serialPort.Parity = Parity.None;
            serialPort.StopBits = StopBits.One;
        }

        private void btnSendText_Click(object sender, EventArgs e)
        {
            if (serialPort.IsOpen)
            {
                string textToSend = txtInput.Text;
                byte colorCode = GetSelectedColorCode(); // 0x01: Red, 0x02: Green, 0x03: Blue...
                
                // Gói tin: [Header: 0xAA] [ColorByte] [Length] [Data Bytes...] [Tail: 0x55]
                byte[] packet = new byte[textToSend.Length + 4];
                packet[0] = 0xAA;
                packet[1] = colorCode;
                packet[2] = (byte)textToSend.Length;
                
                for (int i = 0; i < textToSend.Length; i++)
                {
                    packet[3 + i] = (byte)textToSend[i];
                }
                packet[packet.Length - 1] = 0x55;

                serialPort.Write(packet, 0, packet.Length);
                lblStatus.Text = "Đã gửi dữ liệu thành công!";
            }
        }
    }
}

Kiểm thử và đánh giá thực nghiệm (Testing and Validation)

Kịch bản kiểm thử chức năng và độ phủ

  1. Kiểm thử giao tiếp UART: Truyền ngẫu nhiên 10,000 gói tin ký tự ở các độ dài khác nhau từ 1 đến 128 bytes qua cổng COM. Tỷ lệ lỗi bit (Bit Error Rate - BER) đạt $0%$.
  2. Kiểm thử đọc dữ liệu thời gian thực I2C: Đo kiểm tín hiệu SDA và SCL bằng máy hiện sóng Digital Oscilloscope. Dạng sóng I2C vuông vắn, đáp ứng chính xác timing khởi động (Start condition), truyền địa chỉ 0xD0 (ghi) / 0xD1 (đọc) và tín hiệu chốt Acknowledge (ACK) tại xung clock thứ 9.
  3. Kiểm thử chống hiện tượng chồng quét (Anti-Ghosting): Khảo sát dạng sóng chân điều khiển OE và chuyển mạch hàng A, B. Việc tạo khoảng trễ an toàn (Dead-time) 100 ns khi chuyển hàng đã loại bỏ $100%$ hiện tượng vệt sáng mờ trên LED.

Bảng tổng hợp mức độ sử dụng tài nguyên chip FPGA Cyclone IV EP4CE6E22C8N

Tài nguyên vi mạch (Resource) Đã sử dụng (Used) Tổng dung lượng có sẵn Tỷ lệ sử dụng (%) Trạng thái
Logic Elements (LEs) 2,154 6,272 34.34% Cực kỳ tối ưu, còn dư 65.66%
Total Combinational Functions 1,890 6,272 30.13% An toàn
Dedicated Logic Registers 876 6,272 13.97% Tiết kiệm flip-flop
Embedded Memory Bits (Block RAM) 18,432 276,480 6.67% Chứa toàn bộ ROM Font
Total Pins (Chân I/O) 24 179 13.41% Dư thừa để mở rộng
PLL (Bộ nhân xung Phase-Locked Loop) 1 2 50.00% Khởi tạo clock đa miền

Kết quả đạt được so với mục tiêu ban đầu

Hạng mục mục tiêu Chỉ số cam kết Chỉ số thực tế đạt được Đánh giá
Số lượng module P10 điều khiển 8 tấm ($32 \times 16$ px) 8 tấm ($128 \times 32$ pixels tổng) Đạt 100%
Tần số quét màn hình (Refresh Rate) $\ge 250\text{ Hz}$ $320\text{ Hz}$ Vượt 28% chỉ tiêu
Độ sâu màu sắc (Color Depth) Đơn sắc hoặc 3 màu cơ bản Hỗ trợ trộn màu 8-bit PWM RGB Vượt yêu cầu
Tính năng hiển thị thời gian Đồng hồ số Đồng hồ số và đồng hồ kim đồ họa Vượt yêu cầu
Độ trễ cập nhật bản tin $< 100\text{ ms}$ $< 2\text{ ms}$ Cực kỳ nhanh

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

Đổi mới công nghệ và kỹ thuật

  1. Kiến trúc điều khiển quét phần cứng song song: Thay vì quét LED phụ thuộc vào hàm ngắt CPU như vi điều khiển truyền thống, hệ thống xây dựng pipeline phần cứng độc lập. Quá trình dịch dữ liệu vào 74HC595 và quá trình tạo xung PWM cho hàng hiện tại diễn ra đồng thời, tối ưu hóa $100%$ chu kỳ xung nhịp.
  2. Kỹ thuật chia sẻ băng thông bộ nhớ ROM phông chữ: Khối ROM_CHAR được ánh xạ tối ưu trong Embedded Block RAM của Cyclone IV, cho phép truy xuất dữ liệu ma trận ký tự $8 \times 16$ chỉ trong đúng 1 chu kỳ clock ($20\text{ ns}$ tại tần số $50\text{ MHz}$).

So sánh định lượng với các giải pháp hiện hành

Chỉ số hiệu năng Mạch dùng Vi điều khiển 8-bit (PIC/AVR) Mạch dùng ARM Cortex-M4 (STM32F4) Giải pháp FPGA Cyclone IV (Đề tài) Tỷ lệ cải thiện
Tần số làm tươi (Refresh Rate) $45 - 60\text{ Hz}$ $120 - 180\text{ Hz}$ $320\text{ Hz}$ Tăng 433% so với 8-bit
Tải chiếm dụng xử lý hiển thị $95%$ CPU Load $45%$ CPU Load 0% CPU (Phần cứng thuần) Triệt tiêu nghẽn
Độ trễ đáp ứng lệnh UART $15 - 50\text{ ms}$ $5 - 10\text{ ms}$ $< 2\text{ ms}$ Nhanh hơn 80%
Hiện tượng sọc khi quay hình (Flicker) Rất nặng Nhẹ khi quay tốc độ cao Hoàn toàn không có Chất lượng chuẩn DOOH

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

Kịch bản ứng dụng trong đời sống và sản xuất

  • Hệ thống cổng chào và biển quảng cáo trung tâm thương mại: Hiển thị slogan, chương trình khuyến mãi với màu sắc rực rỡ, khả năng hoạt động ngoài trời bền bỉ dưới nguồn công suất lớn.
  • Bảng tỷ giá vàng, ngoại tệ ngân hàng và sàn chứng khoán: Tự động đồng bộ số liệu tức thời từ máy tính chủ qua mạng nối tiếp hoặc máy chủ trung tâm với độ trễ micro-giây.
  • Bảng thông tin điều hành sản xuất tại nhà máy (Andon Board): Kết nối với dây chuyền công nghiệp để hiển thị sản lượng, tiến độ, cảnh báo lỗi và thời gian thực ca làm việc.
+------------------------------------------------------------------------------------+
|                         LỘ TRÌNH TRIỂN KHAI HỆ THỐNG (ROADMAP)                     |
+------------------------------------------------------------------------------------+
| Giai đoạn 1: Chuẩn bị cơ khí & Nguồn (Khung nhôm định hình, Nguồn 5V-40A) [Tuần 1] |
|                                      |                                             |
| Giai đoạn 2: Lắp ráp phần cứng (Kết nối Bus Cascade 8x P10, Kit FPGA)      [Tuần 2] |
|                                      |                                             |
| Giai đoạn 3: Nạp Firmware VHDL & Cấu hình ROM Flash EPCS4N                  [Tuần 3] |
|                                      |                                             |
| Giai đoạn 4: Cài đặt Phần mềm C# & Hiệu chuẩn kiểm thử tại hiện trường     [Tuần 4] |
+------------------------------------------------------------------------------------+

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

Hạng mục vật tư linh kiện Số lượng Đơn giá ước tính (VND) Thành tiền (VND)
Kit thí nghiệm FPGA Altera Cyclone IV EP4CE6E22C8N 01 650,000 650,000
Module LED ma trận P10 Full-Color RGB ngoài trời 08 120,000 960,000
Nguồn xung công nghiệp tổ ong 5V - 40A DC (200W) 01 350,000 350,000
Module thời gian thực DS1307 + Pin CR2032 01 35,000 35,000
Khung nhôm định hình, cáp bẹ 16-pin Hub75, dây nguồn Trọn gói 250,000 250,000
Tổng chi phí phần cứng trực tiếp -- -- 2,245,000 VND

Đánh giá hiệu quả đầu tư: Với tổng chi phí sản xuất mẫu thử nghiệm chỉ khoảng 2.25 triệu đồng, hệ thống có giá thành thấp hơn $40 - 50%$ so với các bộ điều khiển quang báo thương mại chuyên dụng nhập khẩu có cùng số lượng điểm ảnh quét PWM, mang lại thời gian thu hồi vốn (ROI) dự kiến dưới 6 tháng khi thương mại hóa.


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

Hạn chế kỹ thuật hiện tại

  • Dung lượng bộ nhớ cấu hình EPCS4N (4 Mbit) chỉ phù hợp lưu trữ cấu hình RTL và bảng phông chữ tĩnh, chưa đủ không gian cho các tệp đồ họa ảnh động GIF hoặc video nén.
  • Chưa tích hợp giao thức điều khiển không dây tầm xa (như Wi-Fi ESP32, 4G-LTE hoặc Ethernet TCP/IP) trực tiếp lên bo mạch điều khiển.

Hướng phát triển và mở rộng nghiên cứu

  1. Nâng cấp nền tảng SoC FPGA: Chuyển đổi sang dòng chip tích hợp vi xử lý ARM và FPGA (như Altera Cyclone V SoC hoặc Xilinx Zynq-7000), trong đó nhân ARM chạy hệ điều hành nhúng Linux quản lý mạng và web server, còn lõi logic FPGA chuyên trách xử lý video ma trận LED tốc độ siêu cao.
  2. Tích hợp giao thức IoT công nghiệp: Mở rộng module VHDL hỗ trợ giao tiếp Ethernet MAC/PHY tốc độ 100 Mbps hoặc gắn module không dây để cập nhật nội dung bảng quảng cáo từ xa qua đám mây (Cloud Dashboard / MQTT Protocol).
  3. Phát triển thuật toán nén và phát video đa phương tiện: Xây dựng bộ giải mã video phần cứng RLE hoặc Motion-JPEG trực tiếp trong FPGA để trình chiếu video màu sắc nét trên ma trận LED cỡ lớn ($256 \times 256$ pixels trở lên).

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

1. Sinh viên và người học ngành Kỹ thuật Điện tử - Viễn thông, Thiết kế Vi mạch

  • Nguồn tài liệu tham khảo hoàn chỉnh về ứng dụng thực tế của ngôn ngữ VHDL trên nền tảng Altera Quartus II.
  • Mô hình mẫu chuẩn xác về thiết kế máy trạng thái hữu hạn FSM cho các chuẩn truyền thông công nghiệp (UART, I2C).

2. Kỹ sư phát triển hệ thống nhúng và phần cứng (Hardware Developers)

  • Mã nguồn VHDL chuẩn hóa, dễ dàng tái sử dụng (reusable IP cores) cho các dự án điều khiển hiển thị, điều chế xung PWM đa kênh và giao tiếp ngoại vi.
  • Giải pháp thiết kế triệt tiêu hiện tượng ghosting và tối ưu băng thông phần cứng.

3. Doanh nghiệp sản xuất bảng biển quảng cáo và thiết bị công nghiệp

  • Nắm bắt giải pháp công nghệ làm chủ phần cứng với chi phí thấp, tần số quét vượt trội, nâng cao độ bền và chất lượng hiển thị của sản phẩm thương mại.

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

1. Yêu cầu phần cứng tối thiểu để triển khai và biên dịch dự án này là gì?

Máy tính phát triển cần chạy hệ điều hành Windows 7/10/11, RAM tối thiểu 4 GB, cài đặt phần mềm Altera Quartus II v13.0sp1 (hoặc các phiên bản Quartus Prime Lite hỗ trợ dòng Cyclone IV), cáp nạp USB Blaster chuẩn JTAG và môi trường Visual Studio 2015 trở lên cho ứng dụng C#.

2. Giới hạn số lượng tấm LED P10 tối đa mà chip FPGA EP4CE6E22C8N có thể mở rộng là bao nhiêu?

Với 6,272 Logic Elements và 270 Kbits Block RAM, chip có khả năng điều khiển mở rộng lên tới 32 đến 64 module LED P10 ($256 \times 64$ pixels) mà không bị suy giảm tần số quét, chỉ cần chia tách thêm các đường dữ liệu song song ($R_n, G_n, B_n$) và nâng cấp công suất bộ nguồn 5V tương ứng.

3. Làm thế nào để tích hợp hệ thống quang báo này với PLC hoặc mạng điều khiển SCADA trong nhà máy?

FPGA có thể dễ dàng tích hợp thêm module VHDL giải mã chuẩn truyền thông công nghiệp Modbus RTU thông qua cổng giao tiếp RS-485. Khi đó, PLC (như Siemens S7-1200, Mitsubishi FX5U) có thể trực tiếp ghi dữ liệu sản lượng và thông số vận hành vào các thanh ghi đệm của FPGA qua mạng Modbus 2 dây.

4. Hệ thống cần chế độ bảo trì và bảo vệ nguồn điện như thế nào khi lắp đặt ngoài trời?

Cần trang bị tủ điện chuẩn chống nước IP65, gắn thêm mạch lọc chống sét lan truyền và cầu chì nhiệt cho bộ nguồn 5V - 40A. Trên các đường bus cấp nguồn DC, nên bổ sung tụ hóa $1000,\mu\text{F}/16\text{V}$ kết hợp tụ gốm $0.1,\mu\text{F}$ song song tại mỗi module P10 để triệt tiêu xung nhiễu quá độ khi toàn bộ ma trận LED cùng chuyển trạng thái bật sáng 100% công suất.

5. Tại sao sử dụng FPGA lại tối ưu hơn so với việc dùng vi xử lý ARM tốc độ cao (như Raspberry Pi)?

Mặc dù Raspberry Pi có xung nhịp CPU cao ($> 1\text{ GHz}$), hệ điều hành Linux là hệ thống đa nhiệm không thời gian thực (Non-Realtime OS), việc điều khiển chân GPIO quét ma trận LED sẽ bị hiện tượng giật cục (jitter) khi CPU phân bổ thời gian cho các tiến trình ngầm. Ngược lại, FPGA thực thi cứng trên từng cổng logic với độ trễ xác định ở mức nano-giây, mang lại độ ổn định tuyệt đối và loại bỏ hoàn toàn hiện tượng nhấp nháy hình ảnh.


Kết luận

Đồ án tốt nghiệp "Thiết kế mạch quang báo sử dụng kit FPGA" đã giải quyết triệt để các điểm nghẽn kỹ thuật cố hữu của các hệ thống quang báo vi điều khiển truyền thống. Bằng việc làm chủ công nghệ thiết kế vi mạch bán dẫn với ngôn ngữ VHDL trên dòng chip Altera Cyclone IV EP4CE6E22C8N, nhóm nghiên cứu đã xây dựng thành công một kiến trúc điều khiển hiển thị song song hoàn chỉnh: đạt tần số quét vượt trội $320\text{ Hz}$, điều chế màu 8-bit PWM mịn màng, tích hợp đồng hồ thời gian thực DS1307 chính xác và giao tiếp thông suốt với phần mềm máy tính C#.

Kết quả này không chỉ chứng minh tính khả thi và hiệu quả kinh tế cao của giải pháp phần cứng chuyên dụng FPGA trong lĩnh vực kỹ thuật điện tử công nghiệp, mà còn mở ra hướng phát triển đầy triển vọng cho các hệ thống hiển thị thông minh DOOH, bảng thông tin công nghiệp tốc độ cao và các thiết bị vi mạch ứng dụng chuyên biệt tại Việt Nam.