Nghiên cứu và Thiết kế Bộ Truyền Nhận Giao Thức SPI-Wishbone trên Nền Tảng FPGA


Tóm tắt nghiên cứu

  • Câu hỏi nghiên cứu chính (Research Question): Làm thế nào để xây dựng một lõi IP (Intellectual Property Core) truyền nhận dữ liệu nối tiếp tốc độ cao theo chuẩn giao thức SPI (Serial Peripheral Interface), có khả năng tích hợp linh hoạt vào hệ thống trên chip (SoC) thông qua chuẩn giao tiếp bus mở Wishbone, đồng thời cho phép cấu hình mềm dẻo ở cả hai chế độ Master và Slave với mức tiêu hao tài nguyên phần cứng tối ưu trên vi mạch FPGA?
  • Phương pháp luận (Methodology Snapshot): Nghiên cứu ứng dụng quy trình thiết kế vi mạch số chuẩn RTL (Register Transfer Level) sử dụng ngôn ngữ mô tả phần cứng Verilog HDL. Hệ thống được tổ chức phân cấp rõ ràng gồm khối giao tiếp Wishbone Bus, khối điều khiển thanh ghi (Control, Status, Buffer, Shift registers), khối logic truyền (TX) và nhận (RX). Thiết kế được biên dịch, tổng hợp logic trên công cụ Quartus Prime Lite và kiểm tra xác minh chức năng (functional verification), phân tích giản đồ dạng sóng xung nhịp 50MHz thông qua phần mềm mô phỏng chuyên dụng QuestaSim 10.2.
  • Phát hiện chính (Key Findings): Module SPI-Wishbone được thiết kế hoàn chỉnh, thực thi thành công việc truyền nhận dữ liệu song công toàn phần (full-duplex) 8-bit giữa Master và Slave với độ chính xác tuyệt đối (khớp 100% mẫu dữ liệu thử nghiệm 8'hda, 8'hf7). Cơ chế cờ trạng thái và ngắt (Interrupt) như cảnh báo tràn bộ đệm truyền/nhận (ROE, TOE) hay sẵn sàng truyền/nhận (TRDY, RRDY) phản hồi tức thời, chính xác theo đúng đặc tả kỹ thuật.
  • Hàm ý nghiên cứu (Implications): Đề tài cung cấp một giải pháp IP Core mã nguồn mở hiệu quả, sẵn sàng tích hợp vào các kiến trúc vi xử lý và hệ thống SoC lớn hơn dùng bus Wishbone (như OpenRISC, RISC-V). Đây cũng là tài liệu học thuật và thực nghiệm có giá trị cao phục vụ công tác nghiên cứu, đào tạo chuyên ngành Kỹ thuật Điện tử - Vi mạch tại các trường đại học kỹ thuật.

Bối cảnh và tầm quan trọng

Thực trạng kiến trúc phần cứng và vi mạch tích hợp (Current state of knowledge)

Trong kỷ nguyên công nghiệp 4.0 và làn sóng phát triển mạnh mẽ của ngành công nghiệp bán dẫn, các hệ thống nhúng (Embedded Systems) và hệ thống trên một vi mạch (System-on-Chip - SoC) ngày càng đòi hỏi khả năng xử lý song song với tốc độ cao, kích thước vi mạch thu nhỏ và khả năng tiết kiệm năng lượng vượt trội. Trọng tâm của mọi kiến trúc SoC là việc trao đổi dữ liệu hiệu quả giữa khối xử lý trung tâm (CPU Core/MCU) và các thiết bị ngoại vi đa dạng như bộ nhớ flash (EEPROM, SD Card), cảm biến số, bộ chuyển đổi ADC/DAC, màn hình hiển thị hoặc đồng hồ thời gian thực (RTC).

Giao tiếp SPI (Serial Peripheral Interface) do Motorola khởi xướng từ lâu đã trở thành chuẩn kết nối đồng bộ 4 dây (SCK, MOSI, MISO, SS_N) phổ biến nhờ ưu điểm truyền dữ liệu nối tiếp toàn phần (full-duplex), tốc độ truyền tải cao và không bị phân mảnh thành các gói dữ liệu phức tạp như I2C hay UART.

                    +--------------------------------+
                    |        Bộ xử lý trung tâm      |
                    +--------------------------------+
                                   │
                           Wishbone Bus Giao tiếp
                                   │
                                   ▼
                    +--------------------------------+
                    |    Module SPI Master/Slave     |
                    +--------------------------------+
                        │        │         │       │
                     (SCK)    (MOSI)    (MISO)  (SS_N)
                        │        │         │       │
                        ▼        ▼         ▼       ▼
                    +--------------------------------+
                    |  Thiết bị ngoại vi (Peripherals)|
                    +--------------------------------+

Khoảng trống nghiên cứu (Research Gap)

Mặc dù đã có nhiều công trình nghiên cứu về bộ điều khiển SPI gắn với các chuẩn bus on-chip như APB (AMBA), OPB hay Wishbone, phần lớn các tài liệu sẵn có thường chỉ mô tả ở mức tổng quan hoặc các thiết kế đơn giản mang tính đóng kín (black-box). Thiếu vắng các nghiên cứu công khai trình bày chi tiết từ kiến trúc vi mô cấp thanh ghi (RTL schematic), sơ đồ phân chia máy trạng thái FSM, cơ chế ánh xạ bộ đệm chuyển tiếp dữ liệu đến việc đánh giá định lượng về dạng sóng timing, độ trễ và tài nguyên tiêu hao trên các dòng FPGA hiện đại. Hơn nữa, việc tích hợp cả hai vai trò Master và Slave trong cùng một module có khả năng chuyển đổi cấu hình linh hoạt thông qua bus logic Wishbone vẫn chưa được giải trình mạch lạc trong các tài liệu tiếng Việt.

Tính thời điểm và ý nghĩa thực tiễn (Timeliness, Relevance & Impact)

Nghiên cứu này được thực hiện tại Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) nhằm trực tiếp giải quyết bài toán tự chủ thiết kế IP Core vi mạch. Việc sử dụng chuẩn bus mở Wishbone (chuẩn mở phổ biến trong cộng đồng OpenCores) kết hợp với FPGA mở ra tiềm năng lớn trong việc chế tạo các chip chuyên dụng (ASIC), giảm phụ thuộc vào các thư viện IP thương mại đắt đỏ, đồng thời thúc đẩy năng lực nghiên cứu vi mạch thực chiến của kỹ sư trẻ.


Methodology và approach

Thiết kế nghiên cứu và quy trình phát triển RTL (Research Design)

Nghiên cứu triển khai phương pháp thiết kế phần cứng từ trên xuống (Top-Down Hardware Design Flow). Kiến trúc tổng thể được phân rã thành các module chức năng độc lập, giao tiếp với nhau thông qua tín hiệu logic xác định:

  1. Khối giao tiếp Wishbone (Wishbone Interface Block): Xử lý các tín hiệu chuẩn (CLK_I, RST_I, ADR_I, DAT_I, DAT_O, WE_I, CYC_I, STB_I, ACK_O, INT_O), thực hiện giải mã địa chỉ và điều khiển chu kỳ bus.
  2. Khối thanh ghi điều khiển và trạng thái (Register Bank): Gồm 5 thanh ghi 8-bit cốt lõi:
    • REG_RXDATA (Địa chỉ 0x00, Read-only): Lưu dữ liệu nhận từ đường truyền SPI.
    • REG_TXDATA (Địa chỉ 0x04, Read/Write): Lưu dữ liệu chuẩn bị đưa ra ngoài qua SPI.
    • REG_STATUS (Địa chỉ 0x08, Read-only): Cập nhật trạng thái tức thời của hệ thống.
    • REG_CONTROL (Địa chỉ 0x0C, Read/Write): Cho phép cấu hình các chế độ ngắt và hoạt động.
    • REG_SSMASK (Địa chỉ 0x10, Read/Write): Quản lý việc chọn thiết bị Slave (SS_N).
  3. Khối máy phát xung và thanh ghi dịch (Clock Divider & Shift Registers): Tạo xung SCLK đồng bộ thông qua hệ số chia CLOCK_SEL, điều phối việc dịch từng bit dữ liệu đồng thời qua hai đường MOSIMISO.
                    +---------------------------------------------+
                    |            WISHBONE INTERFACE               |
                    +---------------------------------------------+
                        │               │              │
                        ▼               ▼              ▼
                 +-------------+ +-------------+ +-------------+
                 | REG_CONTROL | | REG_STATUS  | | REG_SSMASK  |
                 +-------------+ +-------------+ +-------------+
                        │               │              │
                        ▼               ▼              │
                 +-------------+ +-------------+       │
                 | REG_TXDATA  | | REG_RXDATA  |       │
                 +-------------+ +-------------+       │
                        │               ▲              │
                        ▼               │              │
                 +-------------+ +-------------+       │
                 | TX_SHIFT    | | RX_SHIFT    |       │
                 +-------------+ +-------------+       │
                        │               │              │
                        ▼               │              ▼
                      MOSI             MISO           SS_N
                                (SPI Lines)

Phương pháp phân tích và kiểm chứng (Analysis Techniques & Verification)

  • Kỹ thuật thu thập và kiểm tra dữ liệu: Xây dựng môi trường kiểm thử (Testbench) toàn diện trên phần mềm QuestaSim 10.2. Tạo lập chuỗi vector kiểm tra bao gồm các byte dữ liệu ngẫu nhiên và đặc biệt (8'hda, 8'hf7) với tần số xung hệ thống Wishbone là 50MHz.
  • Kịch bản kiểm thử (Test Cases):
    • Test Case 1: Master truyền dữ liệu từ Wishbone sang đường truyền SPI $\rightarrow$ Slave nhận dữ liệu và xuất sang bus Wishbone nội bộ.
    • Test Case 2: Slave nạp dữ liệu từ bus $\rightarrow$ Master tạo xung SCLK thu thập dữ liệu về thanh ghi REG_RXDATA và đẩy lên Wishbone Master.
  • Độ tin cậy và tính hợp lệ (Validity & Reliability): Tính toàn vẹn của dữ liệu được thẩm định bằng việc so sánh từng bit truyền tại ngõ vào DAT_I với ngõ ra DAT_Omosi_dataout sau 8 chu kỳ xung SCLK. Kiểm tra khả năng chịu lỗi thông qua việc ép hệ thống vào các trạng thái tràn bộ đệm (Overrun Error) để xác thực mạch phát cờ ngắt INT_O.

Phát hiện chính

Quá trình mô phỏng chức năng và tổng hợp thiết kế đã đem lại những kết quả kỹ thuật cốt lõi:

                            Dạng sóng mô phỏng Test Case 1
                      (Truyền 1 Byte dữ liệu: DAT_I = 8'hda)

CLK_I       |¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|¯|
ADR_I       ------< 8'h0c >-------< 8'h10 >-------< 8'h04 (TXDATA) >------------------------
DAT_I       ------< 8'h8b >-------< 8'h01 >-------< 8'hda >---------------------------------
WE_I/STB_I  ________|¯¯¯¯¯¯¯¯¯|_____|¯¯¯¯¯¯¯¯¯|_____|¯¯¯¯¯¯¯¯¯¯¯¯¯|_________________________
SCLK        ________________________________________|¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|¯|_|_______
MOSI        ========================================< 1 > 1 > 0 > 1 > 1 > 0 > 1 > 0 >=======
ACK_O       ______________________________________________________|¯¯¯|_____________________
                                                                (Hoàn tất 8-bit: 8'hda)

1. Đồng bộ hóa truyền nhận song công chính xác tuyệt đối

Kết quả mô phỏng trên QuestaSim 10.2 xác nhận: Khi Master nhận lệnh ghi địa chỉ 0x04 với dữ liệu 8'hda, hệ thống kích hoạt tín hiệu STB_IWE_I. Sau chu kỳ bắt tay hoàn tất với phản hồi ACK_O = 1, khối logic phát tín hiệu chọn Slave SS_N = 0 và phát sinh chuỗi xung SCLK. Sau đúng 8 chu kỳ xung nhịp, byte dữ liệu 8'hda (8'b11011010) được dịch chuyển tuần tự không có bất kỳ độ lệch pha hay lỗi bit nào sang thanh ghi REG_RXDATA của phía Slave. Thử nghiệm tương tự với mẫu byte 8'hf7 (8'b11110111) cũng đạt độ chính xác 100%.

2. Khả năng tương thích và linh hoạt cấu hình Master/Slave

Thiết kế đã chứng minh khả năng cấu hình mềm dẻo. Module có thể chuyển đổi mượt mà giữa vai trò điều khiển (Master) và bị điều khiển (Slave) thông qua việc tái sử dụng hiệu quả các thanh ghi nội tại. Tần số SCLK được tạo ra ổn định theo đúng công thức: $$f_{\text{SCLK}} = \frac{f_{\text{CLK_I}}}{2 \times (\text{CLOCK_SEL} + 1)}$$ Với $f_{\text{CLK_I}} = 50\text{ MHz}$ và $\text{CLOCK_SEL} = 1$, tần số $f_{\text{SCLK}}$ đạt mức chính xác $12.5\text{ MHz}$.

3. Cơ chế kiểm soát luồng và xử lý lỗi ngắt ưu việt

Nghiên cứu làm sáng tỏ hoạt động của hệ thống thanh ghi quản lý trạng thái (REG_STATUS) và điều khiển ngắt (REG_CONTROL). Các trường hợp cạnh tranh bus hoặc xung đột dữ liệu được triệt tiêu hoàn toàn nhờ tầng đệm kép (Dual-buffering) giữa thanh ghi lưu trữ (TXDATA/RXDATA) và thanh ghi dịch (TX_SHIFT/RX_SHIFT). Khi xảy ra tình trạng ghi đè trong khi đang truyền hoặc đọc chậm khi nhận mới, các cờ ROE (Receive Overrun Error) và TOE (Transmit Overrun Error) lập tức được bật mức cao, kích hoạt tín hiệu ngắt phần cứng INT_O = 1 để thông báo cho vi xử lý trung tâm xử lý kịp thời.


Đóng góp khoa học

Khía cạnh Giá trị đóng góp của đề tài
Đóng góp lý thuyết (Theoretical Contributions) Chuẩn hóa mô hình toán học và lý thuyết máy trạng thái hữu hạn (FSM) cho việc ánh xạ dữ liệu giữa giao thức truyền thông nối tiếp SPI (bất đối xứng) và bus song song Wishbone (chuẩn đồng bộ).
Đổi mới phương pháp (Methodological Innovations) Đưa ra giải pháp thiết kế mô hình hóa phần cứng hoàn chỉnh bằng Verilog HDL với cấu trúc module hóa phân tầng rõ rệt, kết hợp cơ chế bộ đệm hai cấp giúp tối ưu hóa hiệu năng truyền dữ liệu.
Ứng dụng thực tiễn (Practical Applications) Cung cấp lõi IP SPI-Wishbone tin cậy, có thể tái sử dụng ngay lập tức trong các dự án SoC trên FPGA (Altera/Intel Cyclone, Xilinx Artix) hoặc thiết kế vi mạch chuyên dụng ASIC cho các thiết bị IoT công nghiệp.
Giá trị giáo dục & đào tạo (Educational Value) Đóng vai trò là bộ tài liệu tham khảo mẫu mực về quy trình thiết kế vi mạch số RTL, kỹ thuật viết testbench xác minh logic cho sinh viên và các nhóm nghiên cứu học thuật.

Đối tượng quan tâm

+-----------------------------------------------------------------------------+
|                            ĐỐI TƯỢNG HƯỞNG LỢI                             |
+-----------------------------------------------------------------------------+
       │                                     │                         │
       ▼                                     ▼                         ▼
[ Kỹ sư Thiết kế Vi mạch ]         [ Giảng viên & Sinh viên ]     [ Doanh nghiệp IoT/Nhúng ]
- Tái sử dụng IP Core SPI         - Giáo trình thực hành RTL     - Giảm chi phí bản quyền IP
- Tích hợp nhanh vào SoC/FPGA     - Bài giảng mẫu về Wishbone    - Tăng tốc độ R&D sản phẩm
  • Kỹ sư thiết kế phần cứng & vi mạch (ASIC/FPGA Engineers): Tiếp cận được một lõi IP giao tiếp ngoại vi tiêu chuẩn, mã nguồn sạch, dễ dàng tích hợp và mở rộng cho các kiến trúc vi xử lý mở như RISC-V, OpenRISC.
  • Giảng viên và Viện/Trường đào tạo kỹ thuật: Tài liệu giảng dạy trực quan, chi tiết phục vụ các môn học: Thiết kế vi mạch số (Digital IC Design), Ngôn ngữ mô tả phần cứng (Verilog/VHDL), Kiến trúc máy tính và Thiết kế hệ thống SoC.
  • Các nhà phát triển hệ thống nhúng và thiết bị công nghiệp: Nắm bắt phương pháp tối ưu hóa việc truyền nhận tín hiệu giữa vi điều khiển và các module ngoại vi, nâng cao độ tin cậy và chống nhiễu cho hệ thống.

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

1. Điểm nổi bật và quan trọng nhất của thiết kế này là gì?

Điểm cốt lõi là việc kết hợp thành công giao diện bus Wishbone chuẩn công nghiệp với bộ điều khiển SPI hai chiều linh hoạt (Master/Slave) trong cùng một kiến trúc RTL tinh gọn, có cơ chế đệm kép chống mất mát dữ liệu và hệ thống ngắt toàn diện.

2. Thiết kế này có gì vượt trội so với các lõi SPI truyền thống?

Các thiết kế SPI truyền thống thường chỉ chạy đơn lập hoặc gắn với các bus đóng gói riêng. Thiết kế này tuân thủ chuẩn bus logic Wishbone của OpenCores, không phụ thuộc vào công cụ của bên thứ ba, dễ dàng ghép nối với hàng ngàn lõi IP mở khác nhau trên cùng một vi mạch.

3. Kết quả mô phỏng có thể ứng dụng trực tiếp lên phần cứng thực tế (Generalizability) không?

Hoàn toàn khả thi. Toàn bộ mã nguồn Verilog được viết ở cấp độ tổng hợp được (Synthesizable RTL). Thiết kế đã được kiểm chứng tương thích với các dòng FPGA thương mại như Altera Cyclone thông qua Quartus Prime Lite và sẵn sàng nạp trực tiếp lên kit phần cứng.

4. Hướng phát triển tiếp theo của nghiên cứu này là gì?

Nhóm nghiên cứu định hướng:

  • Mở rộng hỗ trợ chế độ SPI đa kênh tốc độ cao (Dual-SPI, Quad-SPI).
  • Phát triển thêm cầu chuyển đổi tương thích với các chuẩn bus AMBA (APB/AHB/AXI) của ARM.
  • Thực hiện kiểm nghiệm đo đạc thực tế trên kit FPGA kết nối vật lý với cảm biến và chip nhớ ngoài.

5. Lợi ích thực tế khi ứng dụng vào sản phẩm thương mại là gì?

Giúp các công ty khởi nghiệp và doanh nghiệp vi mạch tiết kiệm hàng chục nghìn USD chi phí mua bản quyền IP Core từ các nhà cung cấp thương mại, đồng thời hoàn toàn làm chủ mã nguồn để tùy biến theo yêu cầu sản phẩm.


Kết luận

Công trình nghiên cứu khoa học "Thiết kế và thi công bộ truyền nhận theo giao thức SPI-Wishbone" của nhóm sinh viên Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) đã hoàn thành xuất sắc các mục tiêu đề ra. Nghiên cứu đã mô hình hóa thành công một giải pháp IP Core truyền thông số hoàn chỉnh, đạt hiệu năng cao, độ trễ thấp và khả năng hoạt động chính xác tuyệt đối qua các bài kiểm tra mô phỏng dạng sóng khắt khe trên QuestaSim 10.2.

Kết quả này không chỉ khẳng định năng lực nghiên cứu chuyên sâu của sinh viên trong lĩnh vực thiết kế vi mạch VLSI mà còn đóng góp một khối IP giá trị cho cộng đồng học thuật và công nghiệp bán dẫn. Các nhóm nghiên cứu và kỹ sư quan tâm được khuyến khích tiếp tục kế thừa, phát triển lõi IP này lên các chuẩn Quad-SPI hoặc tích hợp vào hệ sinh thái vi xử lý RISC-V mã nguồn mở trong tương lai.