Giới thiệu dự án

Trong kỷ nguyên bùng nổ của vi điện tử và công nghệ bán dẫn, xu hướng tích hợp hệ thống trên một vi mạch (System-on-Chip - SoC) đang trở thành tiêu chuẩn cốt lõi cho các thiết bị thông minh, điện thoại di động và hệ thống nhúng IoT (Internet of Things). Theo các báo cáo công nghiệp bán dẫn quốc tế, hơn 70% diện tích vi mạch SoC hiện đại được tối ưu hóa cho việc kết nối không đồng nhất giữa các lõi xử lý trung tâm (CPU đa lõi, DSP) hiệu năng cao và hàng chục khối ngoại vi điều khiển tốc độ thấp. Thách thức lớn nhất trong kiến trúc SoC là sự chênh lệch băng thông và tần số hoạt động cực lớn: trong khi vi xử lý chính giao tiếp qua các bus dữ liệu song song băng thông rộng với xung nhịp hàng trăm Megahertz đến Gigahertz, thì các linh kiện ngoại vi (như cảm biến môi trường, EEPROM, RTC, bộ chuyển đổi ADC/DAC) lại sử dụng các giao thức nối tiếp tốc độ thấp như I2C với tốc độ từ 100 Kbps đến vài Megabit/giây.

Sự bất đối xứng này tạo ra điểm nghẽn cổ chai nghiêm trọng (bottleneck): nếu vi xử lý AXI phải đợi trực tiếp phản hồi từ ngoại vi I2C trên từng chu kỳ bit, toàn bộ bus hệ thống sẽ bị treo (CPU stall), làm suy giảm nghiêm trọng hiệu suất tổng thể của vi mạch. Đề tài "Thiết kế bộ chuyển đổi giao thức AXI – APB – I2C" do nhóm sinh viên Phạm Hiếu Hạnh và Cao Đạo Cường thực hiện dưới sự hướng dẫn của ThS. Lê Minh Thành tại Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) giải quyết trực tiếp bài toán ghép nối phân tầng này.

Mục tiêu dự án

  1. Thiết kế kiến trúc cầu chuyển đổi 2 tầng (Two-stage Bridge Architecture): Xây dựng cầu nối trung gian từ chuẩn bus hiệu năng cao AMBA AXI4 (Advanced eXtensible Interface) sang bus ngoại vi công suất thấp AMBA APB4 (Advanced Peripheral Bus), sau đó chuyển đổi từ APB4 sang giao diện nối tiếp đồng bộ I2C (Inter-Integrated Circuit).
  2. Hỗ trợ 4 dải tốc độ chuẩn của I2C: Hiện thực hóa bộ chia xung nhịp (Clock Divider) có thể tái cấu hình động qua thanh ghi, hỗ trợ 4 chế độ truyền: Standard-mode (100 Kbps), Fast-mode (400 Kbps), Fast-mode Plus (1 Mbps), và High-speed mode (3.4 Mbps).
  3. Hiện thực hóa cơ chế đệm bất đồng bộ và ngắt thông minh: Tích hợp 2 khối hàng đợi FIFO 16 tầng (16-depth × 8-bit) cho hai chiều truyền phát (TX_FIFO) và tiếp nhận (RX_FIFO), kết hợp hệ thống ngắt toàn diện (Interrupt Management) giúp giảm thiểu tối đa tải xử lý của CPU.
  4. Mô tả phần cứng và kiểm thử logic hoàn chỉnh: Lập trình thiết kế hoàn toàn bằng ngôn ngữ mô tả phần cứng Verilog HDL, thực hiện mô phỏng kiểm tra dạng sóng tín hiệu trên phần mềm Xilinx Vivado và tổng hợp phần cứng bằng Synopsys Design Compiler (DC Compile).

Phương pháp tiếp cận và phạm vi

  • Phương pháp tiếp cận: Sử dụng kiến trúc module hóa phân tầng (Hierarchical Modular Design) chuẩn hóa theo đặc tả kỹ thuật AMBA 4.0 của ARM. Thiết kế tách biệt pha địa chỉ và pha dữ liệu, áp dụng máy trạng thái hữu hạn (Finite State Machine - FSM) cho bộ điều khiển giao thức I2C và cơ chế bắt tay hai chiều (Two-way Handshake) chuẩn VALID/READY của AXI.
  • Phạm vi và giới hạn: Thiết kế tập trung vào cấp độ chuyển giao thanh ghi (RTL - Register-Transfer Level), cấu hình Master/Slave cho I2C chế độ địa chỉ 7-bit; kiểm chứng chức năng toàn diện thông qua mô phỏng dạng sóng thời gian thực và tổng hợp logic ASIC/FPGA; chưa tích hợp kiểm chứng trên phần cứng kit thực tế.

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

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

Trong các hệ thống nhúng SoC vi mạch, có nhiều phương án kết nối vi xử lý trung tâm với các thiết bị ngoại vi nối tiếp. Việc lựa chọn kiến trúc cầu nối quyết định trực tiếp đến diện tích silicon (die area), điện năng tiêu thụ và độ trễ truyền thông.

Tiêu chí kỹ thuật Kết nối trực tiếp AXI - I2C Cầu nối AXI - APB truyền thống (Polling) Cầu nối phân tầng AXI - APB - I2C (Đề tài)
Độ phức tạp phần cứng Rất cao (lãng phí tài nguyên logic AXI) Trung bình (cần phần mềm can thiệp liên tục) Tối ưu hóa phân tầng, cân đối tài nguyên
Tắc nghẽn bus hệ thống (Bus Stall) Cao (kênh AXI bị chiếm dụng chờ I2C) Trung bình (chiếm dụng chu kỳ bus APB) Không (Triệt tiêu nhờ đệm song song FIFO 16 byte)
Cơ chế đệm dữ liệu Không có hoặc đệm đơn byte Thanh ghi đơn (Single buffer) Hàng đợi TX_FIFO & RX_FIFO 16×8-bit độc lập
Khả năng mở rộng ngoại vi Kém (mỗi ngoại vi cần 1 giao diện AXI) Tốt (hỗ trợ nhiều slave trên APB) Rất cao (Hỗ trợ 16 ngoại vi APB + đa thiết bị I2C)
Hỗ trợ tốc độ I2C Thường chỉ cố định 100/400 Kbps Cố định 100 Kbps hoặc 3.4 Mbps riêng biệt Linh hoạt 4 cấp tốc độ: 100K, 400K, 1M, 3.4M

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must Have (Bắt buộc): Chuyển đổi chính xác 5 kênh giao tiếp AXI4; hỗ trợ các kiểu burst (FIXED, INCR, WRAP); tuân thủ giản đồ xung APB4 (trạng thái IDLE, SETUP, ACCESS); giao tiếp I2C 2 dây SDA/SCL với logic cực máng hở (Open Drain); cơ chế phản hồi ACK/NACK.
  • Should Have (Nên có): Bộ chia xung clock linh hoạt cho 4 dải tốc độ I2C; hàng đợi đệm FIFO 16 byte hai chiều; hệ thống 4 tín hiệu ngắt độc lập (int_tif, int_rif, int_oif, int_if).
  • Could Have (Có thể có): Hỗ trợ chế độ Master và Slave song công/bán song công; cơ chế phát hiện lỗi địa chỉ và strobe PSLVERR/BRESP/RRESP.
  • Won't Have (Chưa thực hiện đợt này): Chế độ đánh địa chỉ mở rộng 10-bit I2C; cơ chế phân xử đa chủ (Multi-master Arbitration) đồng thời trên đường bus vật lý.

Thiết kế hệ thống

Toàn bộ hệ thống được chia thành 3 khối lõi chính: AXI-to-APB Bridge, Address Decoder, và APB-to-I2C Controller Core.

1. Cấu trúc phân kênh AXI4 và ánh xạ sang APB4

Giao thức AXI4 bao gồm 5 kênh giao tiếp độc lập:

  • Kênh địa chỉ ghi (AW - Write Address): AWADDR[31:0], AWLEN[7:0], AWSIZE[2:0], AWBURST[1:0], AWVALID, AWREADY.
  • Kênh dữ liệu ghi (W - Write Data): WDATA[31:0], WSTRB[3:0], WLAST, WVALID, WREADY.
  • Kênh phản hồi ghi (B - Write Response): BRESP[1:0], BVALID, BREADY.
  • Kênh địa chỉ đọc (AR - Read Address): ARADDR[31:0], ARLEN[7:0], ARSIZE[2:0], ARBURST[1:0], ARVALID, ARREADY.
  • Kênh dữ liệu đọc (R - Read Data): RDATA[31:0], RRESP[1:0], RLAST, RVALID, RREADY.

Khối APB Interface chuyển đổi các giao dịch burst của AXI thành các chu kỳ APB đơn lẻ gồm 3 trạng thái: IDLE (nghỉ) $\rightarrow$ SETUP (PSEL = 1, PENABLE = 0) $\rightarrow$ ACCESS (PSEL = 1, PENABLE = 1). Quá trình này được đồng bộ thông qua cờ PREADY.

2. Bản đồ thanh ghi điều khiển lõi APB-I2C (Register Mapping)

Lõi APB-I2C tích hợp 8 thanh ghi chức năng 32-bit (truy cập byte thấp [7:0]):

Tên thanh ghi Địa chỉ Offset Quyền truy cập Mô tả chức năng chi tiết
CON (Control) 0x00 R/W CON[0]: Chế độ Master (1) / Slave (0); CON[1]: Reset RX_FIFO; CON[2]: Reset TX_FIFO.
SE (Status/Enable) 0x04 R/W SE[0]: Cho phép lõi (Enable); SE[1]: TX_FIFO chưa đầy (TXNF); SE[2]: RX_FIFO có dữ liệu (RXNE); SE[3]: Cờ bận (BUSY).
ADD (Own Address) 0x08 R/W ADD[6:0]: Chứa 7-bit địa chỉ của thiết bị khi hoạt động ở chế độ Slave.
COM (Command) 0x0C R/W COM[0]: Hướng đọc/ghi (RW: 1-Read, 0-Write); COM[1]: Tạo điều kiện Start/Stop (SP); COM[2]: Lặp lại điều kiện bắt đầu (RS - Repeated Start).
DT (Data Buffer) 0x10 R/W Ghi vào: đẩy 8-bit dữ liệu vào TX_FIFO; Đọc ra: lấy 8-bit dữ liệu từ RX_FIFO.
IE / IR / IF 0x14 - 0x1C R/W Quản lý ngắt: IE (Cho phép ngắt), IR (Cờ ngắt thô), IF (Trạng thái ngắt sau che mask = IE & IR). Bit 0: Overrun, Bit 1: TX Empty, Bit 2: RX Full.
CLK (Clock Prescaler) 0x20 R/W Cấu hình tốc độ I2C: 2'b00 (100 Kbps), 2'b01 (400 Kbps), 2'b10 (1 Mbps), 2'b11 (3.4 Mbps).
TADD (Target Address) 0x24 R/W TADD[6:0]: Địa chỉ Slave mục tiêu mà Master cần truy xuất.

Methodology

Quy trình phát triển tuân thủ phương pháp thiết kế vi mạch chuyên nghiệp (ASIC/FPGA Design Flow):

  1. Phân tích yêu cầu & Lập đặc tả vi kiến trúc (Microarchitecture Specification): Xác định các trạng thái FSM, tính toán bộ chia tần từ xung hệ thống PCLK (ví dụ: 50 MHz hoặc 100 MHz) ra các mức SCL (100 kHz, 400 kHz, 1 MHz, 3.4 MHz).
  2. Mô tả phần cứng RTL: Viết mã Verilog tuân thủ chuẩn tổng hợp được (Synthesizable Verilog IEEE 1364-2001), tách bạch giữa logic tổ hợp và mạch tuần hoàn.
  3. Xây dựng Bus Functional Model (BFM) Testbench: Tạo các khối giả lập AXI_Master, APB_Slave, và I2C_Slave/Master để kiểm thử toàn diện mọi corner cases (trường hợp biên).
  4. Mô phỏng chức năng & Phân tích dạng sóng: Kiểm tra tính toàn vẹn tín hiệu trên công cụ Xilinx Vivado Simulator.
  5. Tổng hợp logic (Logic Synthesis): Sử dụng Synopsys Design Compiler với thư viện công nghệ chuẩn nhằm đánh giá tài nguyên cell logic, tần số hoạt động cực đại (Timing Slack) và công suất tiêu thụ (Power Dissipation).

Implementation và kết quả

Development process

Quá trình hiện thực hóa tập trung vào việc giải quyết bài toán đồng bộ bắt tay và điều khiển đường truyền hai chiều SDA/SCL.

1. Cơ chế bắt tay hai chiều AXI (Two-Way Handshake)

Trong kênh ghi AXI, tín hiệu AWVALID/WVALID phải giữ mức tích cực '1' cho đến khi phía Slave phản hồi AWREADY/WREADY = 1.

// Trích đoạn logic điều khiển bắt tay AXI2APB Command & Write Buffer
always @(posedge ACLK or negedge ARESETn) begin
    if (!ARESETn) begin
        AWREADY <= 1'b0;
        WREADY  <= 1'b0;
        write_state <= S_WR_IDLE;
    end else begin
        case (write_state)
            S_WR_IDLE: begin
                if (AWVALID) begin
                    AWREADY <= 1'b1;
                    latched_awaddr <= AWADDR;
                    latched_awlen  <= AWLEN;
                    latched_awsize <= AWSIZE;
                    write_state    <= S_WR_DATA;
                end
            end
            S_WR_DATA: begin
                AWREADY <= 1'b0;
                if (WVALID) begin
                    WREADY <= 1'b1;
                    tx_buffer[wr_ptr] <= WDATA[7:0];
                    wr_ptr <= wr_ptr + 1'b1;
                    if (WLAST) begin
                        write_state <= S_WR_RESP;
                    end
                end else begin
                    WREADY <= 1'b0;
                end
            end
            S_WR_RESP: begin
                WREADY <= 1'b0;
                BVALID <= 1'b1;
                BRESP  <= 2'b00; // Phản hồi OKAY
                if (BREADY) begin
                    BVALID <= 1'b0;
                    write_state <= S_WR_IDLE;
                end
            end
        endcase
    end
end

2. Máy trạng thái hữu hạn điều khiển giao thức I2C (FSM I2C Controller)

Khối điều khiển I2C Master quản lý chuỗi xung SCL và đường dữ liệu SDA qua các trạng thái: STATE_IDLE $\rightarrow$ STATE_START $\rightarrow$ STATE_ADDR $\rightarrow$ STATE_ACK1 $\rightarrow$ STATE_DATA $\rightarrow$ STATE_ACK2 $\rightarrow$ STATE_STOP.

// Logic điều khiển chốt chân Open-Drain cho I2C SDA/SCL
assign sda = (sda_out_en == 1'b0) ? 1'b0 : 1'bz; // Kéo 0 hoặc thả nổi trở treo (Pull-up)
assign scl = (scl_out_en == 1'b0) ? 1'b0 : 1'bz;

// Bộ chia tần số xung nhịp linh hoạt cho 4 dải tốc độ
always @(posedge pclk or negedge prst_n) begin
    if (!prst_n) begin
        clk_cnt <= 16'd0;
        scl_clk <= 1'b1;
    end else begin
        if (clk_cnt >= div_val) begin
            clk_cnt <= 16'd0;
            scl_clk <= ~scl_clk;
        end else begin
            clk_cnt <= clk_cnt + 1'b1;
        end
    end
end

Testing và validation

Hệ thống được kiểm thử thông qua testbench tự động đa tầng với hơn 100 kịch bản truyền nhận:

  1. Kịch bản AXI Ghi Burst $\rightarrow$ APB $\rightarrow$ I2C Master Transmit: Kiểm tra việc truyền chuỗi 16 byte liên tục với địa chỉ tăng dần (INCR Burst). Kết quả dạng sóng xác nhận WREADY đáp ứng đúng thời điểm, dữ liệu được ghi tuần tự vào TX_FIFO và đẩy ra đường SDA theo đúng định dạng khung I2C với bit ACK trả về mức 0 từ I2C Slave.
  2. Kịch bản I2C Receive $\rightarrow$ RX_FIFO $\rightarrow$ APB $\rightarrow$ AXI Đọc: Ngoại vi I2C truyền 16 byte dữ liệu về Master. Dữ liệu được gom thành từng byte trong thanh ghi dịch, nạp vào RX_FIFO. Khi AXI Master gửi yêu cầu ARVALID, cầu nối chuyển đổi đọc qua APB và trả dữ liệu ra RDATA[31:0] kèm tín hiệu RLAST ở byte cuối cùng.
  3. Kịch bản chuyển mạch tốc độ thời gian thực: Cấu hình thanh ghi CLK lần lượt qua các giá trị 2'b00, 2'b01, 2'b10, 2'b11. Dạng sóng mô phỏng đo đạc chính xác chu kỳ xung SCL:
    • Chế độ 100 Kbps: Chu kỳ $T_{SCL} = 10.0\ \mu\text{s}$ ($\pm 0.1%$)
    • Chế độ 400 Kbps: Chu kỳ $T_{SCL} = 2.5\ \mu\text{s}$ ($\pm 0.1%$)
    • Chế độ 1.0 Mbps: Chu kỳ $T_{SCL} = 1.0\ \mu\text{s}$ ($\pm 0.2%$)
    • Chế độ 3.4 Mbps: Chu kỳ $T_{SCL} = 294.1\ \text{ns}$ ($\pm 0.5%$)
  4. Kiểm tra xử lý tranh chấp và lỗi: Kiểm tra cờ ngắt tràn hàng đợi (int_oif) khi cố tình ghi byte thứ 17 vào TX_FIFO đang đầy, và phản hồi PSLVERR khi phát hiện địa chỉ truy cập không hợp lệ (paddr[1:0] != 2'b00).
Sơ đồ dạng sóng mô phỏng tổng hợp (Waveform Verification):
ACLK      : __|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|
AWVALID   : ___|‾‾‾‾‾‾‾‾‾‾‾‾|_______________________________________________
AWREADY   : _______|‾‾‾‾‾‾‾‾|_______________________________________________
WDATA     : XXXXX< DATA 0 >< DATA 1 >< DATA 2 >XXXXXXXXXXXXXX< DATA 15 >XXXX
WLAST     : _________________________________________________|‾‾‾‾‾‾‾|______
PSEL      : _________|‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾|____
PENABLE   : ____________|‾‾‾‾‾‾‾|_____|‾‾‾‾‾‾‾|_____|‾‾‾‾‾‾‾|_______________
SCL       : _________________|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|________
SDA       : ‾‾‾‾‾‾\___<  ADDR  ><R/W>< ACK ><     DATA 00     >< ACK >______

Kết quả đạt được

Hệ thống đã được tổng hợp thành công trên công cụ Synopsys Design Compiler (DC Compile) với thư viện chuẩn thương mại.

Thông số phần cứng / Đánh giá Giá trị thiết kế đạt được Trạng thái kỹ thuật
Tổng số cổng logic tương đương (Gate Count) ~3,850 gates (bao gồm cả 2 khối FIFO) Tối ưu hóa diện tích cao
Tần số xung nhịp cực đại (Max Clock Freq - ACLK/PCLK) 166.7 MHz (độ trễ đường truyền thỏa mãn Slack > 0) Đáp ứng vượt mức tiêu chuẩn SoC
Tổng công suất tiêu thụ (Total Dynamic & Leakage Power) 1.42 mW (tại điện áp 1.2V, tần số 100 MHz) Siêu tiết kiệm năng lượng
Độ sâu hàng đợi đệm (Buffer Depth) 16-entry TX_FIFO, 16-entry RX_FIFO (8-bit width) Chống tràn dữ liệu tuyệt đối
Tỷ lệ hoàn thành chức năng thiết kế (Functional Coverage) 100% (5/5 kênh AXI, 3/3 pha APB, 4/4 tốc độ I2C) Đạt mọi tiêu chuẩn đề ra

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

Các điểm cải tiến kỹ thuật nổi bật

  1. Kiến trúc giải phóng xung nhịp (Zero CPU Stall Architecture): Khác biệt với các thiết kế cầu nối đồng bộ truyền thống bắt buộc CPU phải chờ tín hiệu xác nhận từ ngoại vi I2C, thiết kế này áp dụng cơ chế chuyển giao bất đồng bộ qua hệ đệm FIFO 16 byte. AXI Master có thể ghi toàn bộ gói dữ liệu 16-byte burst chỉ trong vài chu kỳ xung nhịp ACLK, sau đó tiếp tục thực thi tác vụ khác trong khi bộ điều khiển APB-I2C tự động giải phóng dữ liệu ra đường bus serial.
  2. Khối chia tần số tái cấu hình động (Dynamic Baud Rate Prescaler): Tích hợp bộ chia xung nhịp điều khiển bằng phần mềm thông qua thanh ghi CLK, cho phép chuyển đổi tức thời giữa 4 chế độ từ Standard (100 Kbps) đến High-speed (3.4 Mbps) mà không cần cấu hình lại phần cứng hay ngắt nguồn hệ thống.
  3. Kiến trúc phân tầng tương thích hoàn toàn chuẩn ARM AMBA: Đóng gói độc lập khối AXI-to-APB và APB-to-I2C giúp thiết kế có tính mô-đun hóa cực cao, có thể tái sử dụng trực tiếp trong các dự án vi mạch bán dẫn khác nhau.

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

Chỉ số so sánh Thiết kế OpenCores I2C Core Cầu nối AXI-I2C của Xilinx IP Core Giải pháp của đề tài (HCMUTE)
Giao diện Bus kết nối Wishbone / APB đơn giản AXI4-Lite trực tiếp AXI4 Full $\rightarrow$ APB4 $\rightarrow$ I2C
Hỗ trợ kiểu truyền Burst Không hỗ trợ Giới hạn chế độ Single beat Đầy đủ FIXED, INCR, WRAP
Dải tốc độ hoạt động Cố định 100/400 Kbps 100 Kbps, 400 Kbps Đa dạng 4 dải: 100K, 400K, 1M, 3.4M
Hiệu suất chu kỳ CPU Thấp (chiếm dụng >80% thời gian polling) Trung bình (gây gián đoạn vi xử lý) Tối ưu (Giảm 65% thời gian chiếm dụng bus)

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

Tình huống ứng dụng thực tế (Real-world Use Cases)

  • Hệ thống điều khiển trung tâm ô tô thông minh (Automotive Infotainment & Telematics ECU): Chip xử lý chính sử dụng lõi ARM Cortex-A cần giao tiếp với hàng loạt cảm biến nhiệt độ, áp suất lốp, chip quản lý nguồn (PMIC) và bộ giải mã âm thanh thông qua chuẩn I2C mà không làm suy hao năng lực tính toán đồ họa hay định vị bản đồ.
  • Thiết bị Gateway IoT công nghiệp (Industrial IoT Edge Routers): Xử lý luồng dữ liệu từ các cảm biến môi trường RS485/I2C, gom cụm dữ liệu trong FIFO và truyền burst tốc độ cao vào bộ nhớ chia sẻ của vi xử lý viễn thông 5G.

Hướng dẫn tích hợp và triển khai (Deployment Guide)

  1. Đóng gói IP Core: Đóng gói toàn bộ mã nguồn Verilog trong Xilinx Vivado IP Packager thành một IP hoàn chỉnh với giao diện AXI Slave.
  2. Ánh xạ bộ nhớ (Memory Mapping): Khai báo vùng nhớ cơ sở (Base Address, ví dụ: 0x4000_0000) trong Device Tree hoặc tệp tiêu đề C Header của hệ điều hành nhúng (FreeRTOS / Embedded Linux).
  3. Khởi tạo phần mềm (Driver Initialization Flow):
    • Bước 1: Ghi 0x03 vào thanh ghi CLK để chọn tốc độ High-speed 3.4 Mbps.
    • Bước 2: Cấu hình địa chỉ Slave ngoại vi vào thanh ghi TADD.
    • Bước 3: Đẩy mảng dữ liệu (tối đa 16 byte) vào thanh ghi DT.
    • Bước 4: Thiết lập bit STARTWRITE trong thanh ghi COM (COM = 0x02).
    • Bước 5: Bật cờ cho phép ngắt trong IE. Vi xử lý chuyển sang trạng thái Sleep hoặc thực thi tác vụ khác cho đến khi nhận tín hiệu ngắt int_tif.

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

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

  • Phạm vi kiểm chứng: Đề tài hoàn thành xuất sắc giai đoạn thiết kế kiến trúc RTL và mô phỏng dạng sóng logic chi tiết cùng tổng hợp ASIC, nhưng chưa thực hiện nạp trên kit FPGA thực tế (Hardware-in-the-loop) để đo đạc thông số điện áp vật lý trên chân chip.
  • Giới hạn chuẩn I2C: Hiện tại lõi chỉ hỗ trợ chế độ đánh địa chỉ 7-bit tiêu chuẩn; chưa tích hợp chế độ địa chỉ mở rộng 10-bit và tính năng đồng bộ xung (Clock Stretching) nâng cao khi Slave phản hồi quá chậm.

Hướng phát triển trong tương lai

  • Tích hợp kênh DMA (Direct Memory Access): Nâng cấp cầu nối cho phép DMA Master truy cập trực tiếp bộ nhớ hệ thống và tự động nạp dữ liệu vào I2C FIFO mà không cần bất kỳ sự can thiệp nào của CPU.
  • Hiện thực hóa trên phần cứng FPGA: Triển khai thiết kế lên board mạch Xilinx Zynq-7000 hoặc Artix-7, kết nối trực tiếp với cảm biến thực tế (MPU6050, cảm biến nhiệt độ I2C LM75) và đo lường bằng máy phân tích logic (Logic Analyzer).
  • Mở rộng giao thức: Phát triển thêm cầu nối đa năng hỗ trợ chuyển đổi linh hoạt giữa AXI sang SPI (Serial Peripheral Interface) và UART trên cùng một lõi điều khiển.

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

  • Sinh viên và học viên ngành Vi điện tử / Điện tử - Viễn thông: Là tài liệu tham khảo chuẩn mực, cung cấp mã nguồn RTL và quy trình thiết kế vi mạch hoàn chỉnh từ giao thức bus hệ thống phức tạp (AXI4, APB4) đến giao diện truyền thông nối tiếp (I2C).
  • Kỹ sư thiết kế RTL và hệ thống nhúng (SoC Design Engineers): Tiếp cận một giải pháp IP Core có sẵn, tiết kiệm ước tính 30 - 45 ngày công nghiên cứu và phát triển cầu nối bus cho các dự án vi mạch thương mại.
  • Doanh nghiệp thiết kế vi mạch và IoT: Giảm diện tích silicon trên chip SoC, hạ thấp chi phí bản quyền IP thương mại và tối ưu hóa hiệu suất năng lượng cho các dòng chip cận biên (Edge Computing).
  • Nhà nghiên cứu học thuật: Cung cấp dữ liệu thực nghiệm về diện tích cổng logic và công suất tiêu thụ khi tổng hợp thiết kế vi mạch cầu nối phân tầng.

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

1. Cần những công cụ phần mềm nào để mở và mô phỏng lại dự án này?

Người dùng cần cài đặt phần mềm Xilinx Vivado Design Suite (khuyến nghị phiên bản 2020.2 trở lên) để mở các file mã nguồn Verilog, chạy kịch bản Testbench và xem giản đồ xung. Để tổng hợp công suất và diện tích chi tiết cho chip bán dẫn, cần sử dụng công cụ Synopsys Design Compiler.

2. Thiết kế xử lý xung đột clock giữa miền tần số cao AXI và tần số thấp I2C như thế nào?

Cầu nối sử dụng giải pháp phân tách 2 miền xung nhịp thông qua bus APB đồng bộ trung gian và hàng đợi FIFO. Phía AXI/APB hoạt động ở xung nhịp cao (ACLK/PCLK lên tới 166.7 MHz), trong khi khối I2C FSM sử dụng bộ chia tần số tích hợp để tự tạo xung SCL mà không gây hiện tượng không ổn định trạng thái (Metastability).

3. Có thể mở rộng để điều khiển nhiều thiết bị I2C cùng lúc trên một bus không?

Hoàn toàn được. Chuẩn I2C cho phép kết nối tối đa 128 thiết bị trên cùng 2 đường dây SDA/SCL (với địa chỉ 7-bit). Lõi IP chỉ cần thay đổi giá trị trong thanh ghi TADD tương ứng với địa chỉ của từng cảm biến trước mỗi phiên giao dịch.

4. Tại sao cần qua bus trung gian APB mà không chuyển trực tiếp từ AXI sang I2C?

Bus AXI có giao diện điều khiển cực kỳ phức tạp với 5 kênh riêng biệt và hàng chục tín hiệu bắt tay. Nếu chuyển trực tiếp sang I2C, phần cứng logic chuyển đổi sẽ phình to, lãng phí tài nguyên vi mạch và khó gỡ lỗi. Bus APB đóng vai trò chuẩn hóa giao diện ghi/đọc thanh ghi đơn giản, giảm thiểu độ phức tạp và cho phép mở rộng ghép nối thêm nhiều ngoại vi khác trên cùng một hệ thống.

5. Bộ đệm FIFO 16 tầng mang lại lợi ích định lượng cụ thể gì?

Với FIFO 16 byte, CPU có thể chuyển giao trọn vẹn một gói dữ liệu cảm biến điển hình (8 - 16 byte) trong một lần burst duy nhất mất dưới 20 chu kỳ ACLK thay vì phải tốn hàng ngàn chu kỳ CPU chờ đợi đường truyền nối tiếp I2C.


Kết luận

Đồ án tốt nghiệp "Thiết kế bộ chuyển đổi giao thức AXI – APB – I2C" của nhóm tác giả Phạm Hiếu Hạnh và Cao Đạo Cường đã giải quyết trọn vẹn và xuất sắc bài toán then chốt trong thiết kế hệ thống trên chip (SoC): ghép nối đồng bộ giữa các bus hiệu năng cao và ngoại vi nối tiếp tốc độ thấp. Thiết kế nổi bật với kiến trúc phân tầng chuẩn hóa AMBA, hỗ trợ linh hoạt 4 dải tốc độ I2C từ 100 Kbps đến 3.4 Mbps, tích hợp hàng đợi FIFO 16 tầng chống tắc nghẽn bus và hệ thống quản lý ngắt toàn diện. Kết quả mô phỏng dạng sóng trên Xilinx Vivado và tổng hợp phần cứng trên Synopsys Design Compiler khẳng định tính đúng đắn, độ tin cậy và khả năng ứng dụng thực tiễn cao của IP Core trong các sản phẩm vi mạch và thiết bị IoT thương mại.