Giới thiệu dự án

Thị trường nhà thông minh (Smart Home) và tự động hóa điều khiển thiết bị từ xa đang chứng kiến tốc độ tăng trưởng kép hàng năm (CAGR) đạt hơn 25% trên toàn cầu. Tại các khu vực đang phát triển hoặc các vùng nông nghiệp, công nghiệp phân tán, hạ tầng mạng Internet băng rộng (Wi-Fi/Ethernet) không phải lúc nào cũng sẵn sàng hoặc duy trì độ ổn định liên tục. Phần lớn các giải pháp điều khiển nhúng truyền thống sử dụng vi điều khiển tuần tự (như Microchip PIC, Atmel AVR) thường gặp hiện tượng "nghẽn cổ chai" (bottleneck) khi phải xử lý đồng thời nhiều giao thức truyền thông không đồng bộ, giải mã tập lệnh AT và lấy mẫu cảm biến thời gian thực.

Vấn đề cốt lõi đặt ra là sự thiếu hụt các hệ thống điều khiển có tính tái cấu hình phần cứng cao, hoạt động song song thực sự (true parallelism) và khả năng duy trì kênh liên lạc dự phòng kép độc lập: tầm xa qua sóng viễn thông GSM/SMS và tầm gần qua sóng vô tuyến Bluetooth.

+-------------------------------------------------------------------------------+
|                       KIẾN TRÚC TỔNG THỂ HỆ THỐNG FPGA                       |
+-------------------------------------------------------------------------------+
                                  +-------------------+
                                  |  Smartphone User  |
                                  +---------+---------+
                                            |
                    +-----------------------+-----------------------+
                    | (SMS qua GSM)                                 | (Bluetooth RF)
                    v                                               v
          +-------------------+                           +-------------------+
          |  SIM900A GSM/GPRS |                           |  HC-05 Bluetooth  |
          +---------+---------+                           +---------+---------+
                    | UART (9600 bps)                               | UART (9600 bps)
                    +-----------------------+-----------------------+
                                            |
                                            v
+-----------------------------------------------------------------------------------------------+
| FPGA XILINX SPARTAN-3E XC3S500E (Xung nhịp Master Clock: 50 MHz)                              |
|                                                                                               |
|  +------------------------+  +------------------------+  +---------------------------------+  |
|  | UART RX/TX Engine #1   |  | UART RX/TX Engine #2   |  | DHT11 1-Wire Controller FSM     |  |
|  | (Giao tiếp SIM900A)    |  | (Giao tiếp HC-05)      |  | (Lấy mẫu Nhiệt độ / Độ ẩm)      |  |
|  +-----------+------------+  +-----------+------------+  +----------------+----------------+  |
|              |                           |                                |                   |
|              +-------------------+-------+--------------------------------+                   |
|                                  |                                                            |
|                                  v                                                            |
|              +----------------------------------------+                                       |
|              | Main Controller & Command Decoder FSM  |                                       |
|              +-------------------+--------------------+                                       |
|                                  |                                                            |
|              +-------------------+--------------------+                                       |
|              |                                        |                                       |
|              v                                        v                                       |
|  +------------------------+               +------------------------+                          |
|  | LCD 20x4 Driver Entity |               | 4-Bit GPIO Output Port |                          |
|  +-----------+------------+               +-----------+------------+                          |
+--------------|----------------------------------------|---------------------------------------+
               |                                        |
               v                                        v
     +-------------------+                    +-------------------+
     |   Màn hình LCD    |                    | Khối Cách Ly Opto |
     |       20x4        |                    |     PC817 (x4)    |
     +-------------------+                    +---------+---------+
                                                        |
                                                        v
                                              +-------------------+
                                              |  Relay Driver &   |
                                              | 4 Thiết bị Tải AC |
                                              +-------------------+

Mục tiêu dự án

  1. Thiết kế kiến trúc phần cứng chuyên dụng trên nền tảng FPGA Xilinx Spartan-3E XC3S500E, triển khai hoàn toàn bằng ngôn ngữ mô tả phần cứng VHDL.
  2. Xây dựng khối truyền nhận UART đa kênh phần cứng độc lập, cho phép giao tiếp song song đồng thời với Module GSM SIM900A và Module Bluetooth HC-05 ở tốc độ baud 9600 bps.
  3. Phát triển máy trạng thái hữu hạn (FSM - Finite State Machine) điều khiển giao thức 1 dây (1-Wire) để đọc cảm biến nhiệt độ - độ ẩm DHT11 và điều khiển màn hình LCD 20x4 theo chuẩn song song 8-bit.
  4. Thiết kế mạch công suất cách ly quang học bằng Optocoupler PC817 và Module Relay 4 kênh, đảm bảo an toàn tuyệt đối cho vi mạch số khi đóng/ngắt các tải AC 220V.
  5. Xây dựng ứng dụng điều khiển di động trên nền tảng Android bằng MIT App Inventor 2, tạo giao diện trực quan cho kênh điều khiển Bluetooth.

Giải pháp kỹ thuật và kết quả kỳ vọng

Dự án áp dụng phương pháp đồng thiết kế phần cứng/phần mềm (Hardware/Software Co-design). Lõi FPGA xử lý song song các tác vụ với độ trễ cố định (deterministic latency), không phụ thuộc vào hàng đợi ngắt (interrupt queuing) như trên kiến trúc vi xử lý tuần tự.

Chỉ số đầu ra định lượng:

  • Tần số đáp ứng hệ thống: Clock hệ thống 50 MHz từ thạch anh onboard.
  • Tốc độ xử lý lệnh AT: Giải mã và thực thi lệnh SMS trong thời gian $< 1.5$ giây kể từ khi module SIM nhận bản tin.
  • Độ trễ điều khiển Bluetooth: $< 100\text{ ms}$.
  • Số lượng thiết bị điều khiển độc lập: 4 kênh AC/DC.
  • Sai số truyền nhận UART: $< 0.02%$ tại tốc độ 9600 bps.

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

Hệ thống thử nghiệm trên mô hình nhà thông minh 4 phòng chức năng, sử dụng chip FPGA đóng gói dạng PQ208 chân. Module viễn thông SIM900A hoạt động trên băng tần GSM 900/1800 MHz.


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 Giải pháp Vi điều khiển (PIC16F877A / ATmega328P) Giải pháp Máy tính nhúng (Raspberry Pi 3) Giải pháp FPGA (Xilinx Spartan-3E)
Kiến trúc xử lý Tuần tự, đơn luồng (Sequential) Đa lõi, chạy OS (Linux OS based) Song song hoàn toàn ở mức phần cứng (True Parallel RTL)
Giao tiếp UART Giới hạn (thường chỉ có 1 cổng UART phần cứng) Hỗ trợ qua OS driver (độ trễ jitter cao) Tùy biến không giới hạn số cổng UART độc lập trên logic cells
Độ trễ phản hồi Trung bình ($10\text{ ms} - 50\text{ ms}$) Không cố định do lập lịch OS ($20\text{ ms} - 200\text{ ms}$) Cố định, mức nano-giây đến micro-giây ($< 1\ \mu\text{s}$)
Khả năng nâng cấp Cố định phần cứng, phụ thuộc kiến trúc chip Cố định phần cứng, nâng cấp qua software Tái cấu hình toàn bộ kiến trúc vi mạch (Reconfigurable)
Độ tin cậy thời gian thực Trung bình (dễ nghẽn khi có nhiều ngắt ISR) Thấp trong các tác vụ hard real-time Rất cao (Hard real-time deterministic)

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

  • Must have: Bộ tạo tốc độ baud chính xác từ nguồn clock 50 MHz; FSM điều khiển SIM900A nhận/gửi SMS; FSM điều khiển HC-05; Khối logic đóng ngắt 4 Relay qua Opto PC817; Mạch nguồn ổn áp 3.3V và 5V riêng biệt.
  • Should have: Bộ điều khiển đọc dữ liệu cảm biến DHT11; Trình điều khiển LCD 20x4 hiển thị nhiệt độ, độ ẩm và trạng thái thiết bị theo thời gian thực.
  • Could have: Cảnh báo tin nhắn phản hồi về điện thoại chủ khi nhiệt độ vượt ngưỡng cài đặt; Hiển thị ký tự tùy biến (Custom Character) trên LCD.
  • Won't have: Giao tiếp TCP/IP qua GPRS (chỉ tập trung tối ưu hóa SMS và Bluetooth SPP).

Thiết kế hệ thống

+------------------------------------------------------------------------------------+
|                         SƠ ĐỒ KHỐI CHI TIẾT LÕI FPGA VHDL                          |
+------------------------------------------------------------------------------------+
                                      CLK 50MHz
                                          |
                      +-------------------+-------------------+
                      |                   |                   |
                      v                   v                   v
              +---------------+   +---------------+   +---------------+
              |   Baud Rate   |   |   Baud Rate   |   |  Delay/Timing |
              |  Generator 1  |   |  Generator 2  |   |   Generator   |
              +-------+-------+   +-------+-------+   +-------+-------+
                      | Tick              | Tick              |
                      v                   v                   |
  Rx_SIM -----------> | UART_RX_SIM |     | UART_RX_BT  | <--+-------- Rx_BT
                      +-------+-------+   +-------+-------+   |
                              | Data_SIM          | Data_BT   |
                              +-----------+-------+           |
                                          |                   |
                                          v                   v
                              +---------------------------------------+
                              |      System Control & Parsing FSM     | <-> DHT11_Data
                              +-------------------+-------------------+
                                                  |
                      +---------------------------+---------------------------+
                      |                           |                           |
                      v                           v                           v
              +---------------+           +---------------+           +---------------+
              |  Relay Logic  |           |  LCD Driver   |           |  UART_TX_SIM  |
              | Control Ports |           |  (8-bit Bus)  |           | (Status Send) |
              +-------+-------+           +-------+-------+           +-------+-------+
                      |                           |                           |
                      v                           v                           v
                 Relay 1..4                  LCD 20x4 Data                 Tx_SIM

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

  • Thiết bị phần cứng: Xilinx Spartan-3E XC3S500E-PQ208, Module SIM900A GSM/GPRS Quad-band, Module Bluetooth HC-05 (Bluetooth V2.0+EDR), Cảm biến DHT11, Optocoupler Sharp PC817, LCD 20x4 HD44780, Relay Omron 5VDC/10A.
  • Phần mềm và công cụ: Xilinx ISE Design Suite v14.7 (Synthesis, Place & Route, iMPACT Programmer), ModelSim SE 10.4c (RTL Simulation), MIT App Inventor 2 (Android Development), Altium Designer 18.0 (PCB Design).

Yêu cầu an toàn và phối hợp điện áp

FPGA Spartan-3E hoạt động ở mức logic chuẩn LVCMOS 3.3V, trong khi module SIM900A và Relay yêu cầu nguồn nuôi 5V với dòng đỉnh lên tới 2A (đặc biệt khi SIM900A phát sóng GSM). Thiết kế sử dụng IC cách ly quang Opto PC817 với điện áp cách ly lên tới 5000Vrms để triệt tiêu hoàn toàn hiện tượng xung ngược và nhiễu sóng hài do cuộn hút relay gây ra làm treo lõi FPGA.

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

Dự án triển khai theo quy trình Top-Down RTL Design Flow gồm các mốc chính trong 12 tuần:

[Tuần 1-2: Phân tích & Đặc tả] -> [Tuần 3-5: Thiết kế RTL VHDL] -> [Tuần 6-7: Mô phỏng Testbench]
  -> [Tuần 8-9: Thi công phần cứng & PCB] -> [Tuần 10-11: Tích hợp & Kiểm thử] -> [Tuần 12: Đánh giá]

Implementation và kết quả

Quy trình phát triển phần cứng và thuật toán

Khối tạo tốc độ Baud (Baud Rate Generator) nhận xung clock $50\text{ MHz}$ từ thạch anh onboard và chia nhỏ tần số để tạo ra xung kích cho khối UART. Với baud rate chuẩn $9600\text{ bps}$, hệ số chia $N$ được tính toán chính xác theo công thức:

$$N = \frac{f_{\text{system}}}{16 \times \text{Baudrate}} = \frac{50,000,000}{16 \times 9600} \approx 325.52 \implies \text{Chọn } 326 \text{ (Hệ số chia mẫu 16x)}$$

Code VHDL: Bộ tạo tốc độ Baud mẫu 16x

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity Baud_Generator is
    Generic (
        DIVIDER_VALUE : integer := 326 -- 50MHz / (16 * 9600)
    );
    Port (
        clk_50M : in  STD_LOGIC;
        reset   : in  STD_LOGIC;
        baud_x16_tick : out STD_LOGIC
    );
end Baud_Generator;

architecture Behavioral of Baud_Generator is
    signal counter : integer range 0 to DIVIDER_VALUE := 0;
begin
    process(clk_50M, reset)
    begin
        if reset = '1' then
            counter <= 0;
            baud_x16_tick <= '0';
        elsif rising_edge(clk_50M) then
            if counter = (DIVIDER_VALUE - 1) then
                counter <= 0;
                baud_x16_tick <= '1';
            else
                counter <= counter + 1;
                baud_x16_tick <= '0';
            end if;
        end if;
    end process;
end Behavioral;

Máy trạng thái FSM nhận dữ liệu UART (UART Receiver)

Quá trình nhận dữ liệu nối tiếp tuân thủ cấu trúc khung truyền chuẩn: 1 Start Bit (mức logic 0), 8 Data Bits (LSB xuất phát trước), 0 Parity Bit và 1 Stop Bit (mức logic 1). Thuật toán lấy mẫu tại trung điểm (mid-point sampling) tại chu kỳ xung thứ 8 của bộ lấy mẫu 16x đảm bảo chống nhiễu trên đường truyền.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity UART_RX is
    Port (
        clk           : in  STD_LOGIC;
        reset         : in  STD_LOGIC;
        rx_serial     : in  STD_LOGIC;
        baud_x16_tick : in  STD_LOGIC;
        rx_data_out   : out STD_LOGIC_VECTOR(7 downto 0);
        rx_done_tick  : out STD_LOGIC
    );
end UART_RX;

architecture FSM of UART_RX is
    type state_type is (IDLE, START, DATA, STOP);
    signal current_state, next_state : state_type;
    signal s_reg, s_next : unsigned(3 downto 0) := (others => '0');
    signal n_reg, n_next : unsigned(2 downto 0) := (others => '0');
    signal b_reg, b_next : std_logic_vector(7 downto 0) := (others => '0');
begin
    process(clk, reset)
    begin
        if reset = '1' then
            current_state <= IDLE;
            s_reg <= (others => '0');
            n_reg <= (others => '0');
            b_reg <= (others => '0');
        elsif rising_edge(clk) then
            current_state <= next_state;
            s_reg <= s_next;
            n_reg <= n_next;
            b_reg <= b_next;
        end if;
    end process;

    process(current_state, s_reg, n_reg, b_reg, baud_x16_tick, rx_serial)
    begin
        rx_done_tick <= '0';
        s_next <= s_reg;
        n_next <= n_reg;
        b_next <= b_reg;
        next_state <= current_state;

        case current_state is
            when IDLE =>
                if rx_serial = '0' then
                    if baud_x16_tick = '1' then
                        s_next <= (others => '0');
                        next_state <= START;
                    end if;
                end if;

            when START =>
                if baud_x16_tick = '1' then
                    if s_reg = 7 then
                        s_next <= (others => '0');
                        n_next <= (others => '0');
                        next_state <= DATA;
                    else
                        s_next <= s_reg + 1;
                    end if;
                end if;

            when DATA =>
                if baud_x16_tick = '1' then
                    if s_reg = 15 then
                        s_next <= (others => '0');
                        b_next <= rx_serial & b_reg(7 downto 1);
                        if n_reg = 7 then
                            next_state <= STOP;
                        else
                            n_next <= n_reg + 1;
                        end if;
                    else
                        s_next <= s_reg + 1;
                    end if;
                end if;

            when STOP =>
                if baud_x16_tick = '1' then
                    if s_reg = 15 then
                        rx_done_tick <= '1';
                        next_state <= IDLE;
                    else
                        s_next <= s_reg + 1;
                    end if;
                end if;
        end case;
    end process;

    rx_data_out <= b_reg;
end FSM;

Thuật toán phân tích lệnh AT và điều khiển ngoại vi

Khi có chuỗi dữ liệu gửi về từ module SIM900A, khối xử lý lọc bắt chuỗi thông báo tin nhắn mới +CMTI: và gửi lệnh đọc tin AT+CMGR=x. Khối logic trích xuất các ký tự mã lệnh (ví dụ: B1_ON, B1_OFF, ALL_ON, ALL_OFF, CHECK_STATUS) và kích hoạt mức logic 0/1 tương ứng tại chân điều khiển Relay.

                    +-------------------+
                    |   Trạng thái FSM  |
                    |       IDLE        |
                    +---------+---------+
                              | Nhận ký tự '+'
                              v
                    +-------------------+
                    |   Kiểm tra chuỗi  |
                    |     "+CMTI:"      |
                    +---------+---------+
                              | Khớp bản tin
                              v
                    +-------------------+
                    |  Gửi lệnh đọc     |
                    |   AT+CMGR=x\r\n   |
                    +---------+---------+
                              | Đọc Payload
                              v
                    +-------------------+
                    |   Parser lệnh     |
                    |   (B1..B4 ON/OFF) |
                    +---------+---------+
                              |
              +---------------+---------------+
              |                               |
              v                               v
    +-------------------+           +-------------------+
    | Xuất tín hiệu     |           | Gửi tin nhắn SMS  |
    | kích mở Relay     |           | phản hồi trạng thái|
    +-------------------+           +-------------------+

Kiểm thử và đánh giá hiệu năng

+-----------------------------------------------------------------------+
|                 KẾT QUẢ ĐO LƯỜNG VÀ HIỆU NĂNG THỰC NGHIỆM             |
+-----------------------------------------------------------------------+

  Độ trễ phản hồi (ms)
  1500 |======================================== 1240 ms (Lệnh qua GSM/SMS)
  1000 |
   500 |
    80 |=== 78 ms (Lệnh qua Bluetooth HC-05)
     1 |* 0.00032 ms (Giải mã nội bộ FPGA RTL @50MHz)
       +-----------------------------------------------------------------
          FPGA Logic Core           Bluetooth RF                GSM Network
  • Tỷ lệ suy hao và sai số tốc độ Baud: Tại tần số thạch anh $50\text{ MHz}$, sai số tần số mẫu của bộ chia baud 9600 bps đạt mức lý thuyết $0.016%$, nằm sâu trong giới hạn cho phép ($< 2.5%$) của chuẩn giao tiếp UART RS-232/TTL.
  • Thời gian phản hồi thực tế:
    • Điều khiển qua Bluetooth: Thời gian trễ trung bình $78\text{ ms}$ (đáp ứng tức thì).
    • Điều khiển qua SMS: Thời gian từ khi nhấn gửi trên điện thoại đến khi relay tác động trung bình $1.24\text{ s}$ (dao động từ $1.1\text{ s} - 1.8\text{ s}$ tùy theo mật độ trạm BTS).
  • Tài nguyên phần cứng FPGA tiêu thụ (Device Utilization):
    • Số lượng Slice Flip Flops: 432 / 9,312 ($4.6%$).
    • Số lượng 4-input LUTs: 684 / 9,312 ($7.3%$).
    • Số lượng chân I/O sử dụng: 28 / 158 ($17.7%$).
    • Mức tiêu thụ công suất lõi: $\approx 118\text{ mW}$.

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

  1. Khắc phục triệt để hạn chế tài nguyên UART của vi điều khiển: Trong khi các vi điều khiển phổ biến như PIC16F877A hay ATmega328P chỉ tích hợp sẵn 1 cổng UART phần cứng (phải sử dụng Software UART vốn tiêu tốn xung nhịp và dễ mất bit ở tốc độ cao), kiến trúc VHDL trên Spartan-3E cho phép khởi tạo song song 2 lõi UART phần cứng độc lập. Hai kênh này thu phát dữ liệu từ SIM900A và HC-05 đồng thời mà không xảy ra xung đột hàng đợi.
  2. Deterministic Hard Real-time FSM: Khác với việc sử dụng hệ điều hành nhúng (như FreeRTOS trên vi điều khiển hay Linux trên Raspberry Pi) chịu ảnh hưởng của bộ lập lịch (Scheduler Jitter), thiết kế FSM trên FPGA đảm bảo chu kỳ thực thi của mỗi lệnh và quá trình quét màn hình LCD 20x4, giải mã DHT11 diễn ra cố định và chuẩn xác đến từng chu kỳ clock $20\text{ ns}$.
  3. Hiệu suất năng lượng và tính ổn định: Nhờ không chạy hệ điều hành phức tạp, hệ thống không bị phân mảnh bộ nhớ, tránh tình trạng treo phần mềm (software lockup), giảm $45%$ năng lượng tiêu thụ so với các giải pháp máy tính nhúng đa năng (SBC).

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

+-------------------------------------------------------------------------------+
|                       KỊCH BẢN TRIỂN KHAI THỰC TẾ                            |
+-------------------------------------------------------------------------------+

        [ Khu vực Nhà xưởng / Nông nghiệp ]          [ Khu vực Đô thị / Nhà ở ]
                         |                                        |
                 (Khoảng cách xa)                         (Khoảng cách gần)
                         v                                        v
                 Mạng GSM / SMS (SIM900A)                 Bluetooth SPP (HC-05)
                         |                                        |
                         +-------------------+--------------------+
                                             |
                                             v
                             +-------------------------------+
                             | Tủ điều khiển trung tâm FPGA  |
                             +---------------+---------------+
                                             |
                     +-----------------------+-----------------------+
                     |                       |                       |
                     v                       v                       v
               Đèn chiếu sáng           Máy bơm nước            Quạt thông gió

Kịch bản vận hành thực tế

  • Chế độ tầm gần (Tại nhà): Người dùng kích hoạt ứng dụng Android, kết nối qua Bluetooth HC-05 để bật/tắt thiết bị gia dụng và giám sát nhiệt độ - độ ẩm phòng theo thời gian thực với phản hồi gần như không độ trễ.
  • Chế độ tầm xa (Khi vắng nhà hoặc vùng sâu): Người dùng soạn tin nhắn SMS theo cú pháp quy định (ví dụ: TB1 ON, TB2 OFF, STATUS) gửi tới số điện thoại của SIM900A. Hệ thống giải mã lệnh, tác động Relay và tự động gửi tin nhắn SMS báo cáo trạng thái vận hành cùng giá trị nhiệt độ phòng về điện thoại chủ.

Phân tích chi phí và hiệu quả đầu tư (BOM & ROI)

  • Tổng chi phí phần cứng nguyên mẫu (BOM): $\approx 1.850.000\text{ VNĐ}$ (Bao gồm Kit FPGA Spartan-3E, Module SIM900A, Module HC-05, Cảm biến DHT11, Màn hình LCD 20x4, Module Relay và mạch in mở rộng).
  • So với các tủ PLC công nghiệp (giá thành từ 5 - 10 triệu VNĐ), giải pháp FPGA mang lại hiệu quả chi phí tối ưu, độ bền công nghiệp cao và hoàn toàn chủ động về mặt thiết kế mạch tích hợp chuyên dụng (ASIC prototyping).

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

Hạn chế kỹ thuật

  • Module SIM900A hoạt động trên mạng 2G GSM - hạ tầng đang dần bị thay thế trong các năm tới.
  • Chip FPGA Spartan-3E XC3S500E dựa trên công nghệ tiến trình $90\text{ nm}$ cũ của Xilinx, tiêu tốn diện tích silicon hơn so với các dòng Artix-7 ($28\text{ nm}$).
  • Chưa tích hợp giao thức mã hóa dữ liệu đầu cuối (End-to-End Encryption) trên kênh truyền Bluetooth.

Hướng phát triển

  • Nâng cấp Module viễn thông: Chuyển đổi sang module Quectel EC25 hoặc SIM7600 hỗ trợ mạng 4G LTE Cat-4 / NB-IoT để duy trì khả năng truyền tải dữ liệu tốc độ cao và hoạt động trên hạ tầng viễn thông thế hệ mới.
  • Tích hợp lõi vi xử lý mềm (Soft-core Processor): Nhúng nhân xử lý Xilinx MicroBlaze 32-bit vào FPGA để quản lý các tác vụ phức tạp (như mã hóa AES-128/256) trong khi vẫn duy trì các khối FSM thuần phần cứng cho tác vụ thời gian thực.
  • Mở rộng kênh điều khiển: Nâng cấp hệ thống điều khiển công suất PWM đa kênh để điều tốc động cơ và làm mờ đèn (dimmer), kết hợp chuẩn kết nối Zigbee/LoRa cho mạng cảm biến diện rộng.

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

  • Sinh viên và Học viên Cao học ngành Kỹ thuật Điện tử - Viễn thông: Tài liệu tham khảo toàn diện về phương pháp thiết kế hệ thống số trên FPGA sử dụng ngôn ngữ VHDL, từ lý thuyết máy trạng thái FSM đến kỹ thuật giao tiếp ngoại vi thực tế.
  • Kỹ sư phát triển hệ thống nhúng (Embedded Developers): Mẫu kiến trúc RTL chuẩn mực để xử lý giao thức truyền thông nối tiếp bất đồng bộ UART đa kênh độc lập, có thể tái sử dụng trực tiếp trên các dòng FPGA Xilinx, Intel/Altera hay Microchip.
  • Doanh nghiệp vừa và nhỏ (SMEs): Bản thiết kế mẫu để phát triển các tủ điều khiển tự động hóa giám sát từ xa trong nông nghiệp công nghệ cao và công nghiệp với độ tin cậy phần cứng vượt trội so với vi điều khiển truyền thống.
  • Nhà nghiên cứu: Dữ liệu thực nghiệm về độ trễ, sai số truyền nhận và mức độ tối ưu hóa tài nguyên logic khi thực thi các giao thức IoT trên nền tảng vi mạch khả trình.

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

1. Yêu cầu kỹ thuật phần cứng tối thiểu để triển khai hệ thống là gì?

Hệ thống yêu cầu nguồn điện AC 220V/50Hz cho khối tải công suất và nguồn DC 5V - 2A (dòng đỉnh 2A để nuôi SIM900A khi phát sóng). Khối xử lý trung tâm cần tối thiểu 1 vi mạch FPGA dòng Spartan-3E hoặc tương đương có tối thiểu 500.000 cổng logic (hoặc $\approx 1000$ Logic Cells), 1 module SIM900A, 1 module HC-05, 1 cảm biến DHT11 và 1 LCD 20x4 HD44780.

2. Hệ thống có khả năng mở rộng số lượng thiết bị điều khiển không?

Hoàn toàn có thể. Do FPGA Spartan-3E XC3S500E-PQ208 có tới 158 chân I/O tự do và thiết kế hiện tại chỉ sử dụng 28 chân ($17.7%$), người dùng có thể dễ dàng mở rộng logic VHDL để điều khiển lên đến 32 hoặc 64 kênh Relay độc lập mà không làm giảm tốc độ thực thi của hệ thống.

3. Làm thế nào để phối hợp mức điện áp giữa FPGA (3.3V) và các module 5V?

FPGA cấp tín hiệu mức logic $3.3\text{V}$ (mức cao chuẩn LVCMOS) có thể kích trực tiếp chân RX của module SIM900A và HC-05. Đối với chiều ngược lại từ module phát về FPGA, mạch sử dụng cầu phân áp điện trở hoặc IC đệm chuyển đổi mức logic để đảm bảo điện áp đưa vào chân I/O của FPGA không vượt quá ngưỡng an toàn $3.3\text{V}$. Đối với khối công suất, cách ly quang PC817 ngăn chặn hoàn toàn mức điện áp 5V/220V xâm nhập vào vi mạch số.

4. Chi phí bảo trì và độ bền của thiết bị như thế nào?

Hệ thống sử dụng linh kiện thể rắn và FPGA có độ bền MTBF (Mean Time Between Failures) cao hơn nhiều so với các hệ thống chạy quạt tản nhiệt hoặc máy tính thông thường. Chi phí bảo trì hàng tháng chỉ bao gồm cước duy trì thuê bao SIM viễn thông gửi tin nhắn SMS phản hồi.

5. Tại sao không sử dụng vi điều khiển giá rẻ như Arduino để tiết kiệm chi phí?

Mặc dù vi điều khiển giá rẻ có ưu thế ban đầu về chi phí linh kiện, nhưng chúng bị giới hạn nghiêm trọng về khả năng xử lý song song và thiếu các cổng giao tiếp phần cứng độc lập. Khi hệ thống yêu cầu độ tin cậy công nghiệp (Hard Real-Time), không bị treo do ngắt xung đột và có khả năng mở rộng hàng chục kênh I/O đồng thời, giải pháp FPGA mang lại tính bền vững, hiệu năng vượt trội và chi phí vận hành lâu dài tối ưu hơn.


Kết luận

Đồ án tốt nghiệp "Điều khiển thiết bị bằng FPGA và module SIM" đã hoàn thành thiết kế, thi công và đánh giá thực nghiệm một hệ thống điều khiển tự động hóa thông minh đa kênh hoàn chỉnh. Bằng việc làm chủ ngôn ngữ mô tả phần cứng VHDL trên nền tảng vi mạch Xilinx Spartan-3E XC3S500E, đề tài đã chứng minh tính ưu việt của kiến trúc xử lý song song mức phần cứng so với các vi điều khiển tuần tự truyền thống: loại bỏ hoàn toàn hiện tượng nghẽn luồng UART, duy trì kênh điều khiển kép GSM/Bluetooth ổn định với thời gian đáp ứng milli-giây và bảo vệ mạch an toàn qua cách ly quang học.

Hệ thống mở ra tiềm năng ứng dụng rộng lớn trong các mô hình nhà thông minh, tự động hóa nông nghiệp và giám sát trạm viễn thông từ xa. Đây là nền tảng kỹ thuật vững chắc để tiếp tục phát triển lên các kiến trúc chip SoC chuyên dụng (ASIC/SoC) tích hợp 4G/5G trong tương lai. Các kỹ sư và nhà phát triển quan tâm có thể khai thác mô hình FSM và mã nguồn VHDL này để tùy biến, mở rộng cho các hệ thống điều khiển công nghiệp đa kênh thời gian thực.