1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế bộ chuyển đổi giao thức axi apb i2c

102 31 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết Kế Bộ Chuyển Đổi Giao Thức AXI – APB – I2C
Tác giả Phạm Hiếu Hạnh, Cao Đạo Cường
Người hướng dẫn ThS. Lê Minh Thành
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Kỹ Thuật Điện Tử - Viễn Thông
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2023
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 102
Dung lượng 10,31 MB

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN (14)
    • 1.1 GIỚI THIỆU (14)
    • 1.2 MỤC TIÊU ĐỀ TÀI (16)
    • 1.3 GIỚI HẠN ĐỀ TÀI (16)
    • 1.4 BỐ CỤC ĐỀ TÀI (16)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT (0)
    • 2.1 GIAO THỨC AXI (17)
      • 2.1.1 Cấu trúc phân kênh của giao thức AXI (18)
      • 2.1.2 Cơ chế bắt tay hai chiều của AXI (20)
      • 2.1.3 Cơ chế burst chuyển đổi trên giao thức AXI (23)
    • 2.2 GIAO THỨC APB (27)
    • 2.3 GIAO THỨC I2C (29)
      • 2.3.1 Định dạng của khung dữ liệu trong giao tiếp I2C (30)
      • 2.3.2 Các chế độ chủ - tớ trong giao thức I2C (32)
  • CHƯƠNG 3: THIẾT KẾ HỆ THỐNG (0)
    • 3.1 YÊU CẦU THIẾT KẾ (0)
    • 3.2 SƠ ĐỒ KHỐI (34)
    • 3.3 THIẾT KẾ CÁC KHỐI (0)
      • 3.3.1 Thiết kế cầu AXI – APB (35)
      • 3.3.2 Thiết kế cầu APB – I2C (44)
      • 3.3.3 Thiết kế khối giải mã địa chỉ (72)
  • CHƯƠNG 4: KẾT QUẢ THỰC HIỆN (0)
    • 4.1 PHƯƠNG PHÁP THỰC HIỆN MÔ PHỎNG (73)
      • 4.1.1 Sử dụng APB và AXI giả lập (73)
      • 4.1.2 Mô phỏng I2C (75)
    • 4.2 KẾT QUẢ MÔ PHỎNG (0)
      • 4.2.1 Kết quả mô phỏng cầu AXI – APB (76)
      • 4.2.2 Kết quả mô phỏng cầu APB - I2C (81)
      • 4.2.3 Kết quả đánh giá tài nguyên của thiết kế (0)
  • CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (0)
    • 5.1 KẾT LUẬN (0)
    • 5.2 HƯỚNG PHÁT TRIỂN (92)
  • TÀI LIỆU THAM KHẢO (93)

Nội dung

TỔNG QUAN

GIỚI THIỆU

Sự phát triển của công nghệ vi mạch bán dẫn đã cho phép tích hợp ngày càng nhiều transistor trên một đơn vị diện tích, dẫn đến mật độ chip tăng cao và kích thước mạch tích hợp ngày càng nhỏ Khái niệm “Hệ thống trên chip” ra đời nhằm tích hợp các khối chức năng khác nhau một cách nhỏ gọn trong các thiết bị điện tử hiện đại, đồng thời tối ưu hóa hiệu suất và giảm công suất tiêu thụ Tuy nhiên, việc tích hợp này cũng đặt ra thách thức về việc truyền dữ liệu giữa các khối chức năng, yêu cầu đảm bảo dữ liệu không bị trễ hoặc mất mát Để giải quyết vấn đề này, các phương thức truyền dữ liệu đã được phát triển, bao gồm điểm - điểm, bus và mạng trên chip.

Hình 1.1: Các chuẩn trong giao thức AMBA qua các thế hệ

Giao thức truyền bus là một phương thức phổ biến trong truyền dữ liệu nhờ vào tính đơn giản và thuận tiện của nó Các thế hệ bus được cải tiến đáp ứng yêu cầu truyền dữ liệu tốc độ cao và hỗ trợ giao tiếp giữa các lõi xử lý khác nhau Giao thức AMBA, một chuẩn giao thức mở, được sử dụng rộng rãi để kết nối và quản lý các chức năng trong hệ thống trên chip, giúp đơn giản hóa việc phát triển kết nối giữa nhiều bộ xử lý và các khối điều khiển, khối ngoại vi trong các thiết bị như hệ thống IoT và điện thoại thông minh AMBA đã được phát triển qua nhiều năm để đáp ứng nhu cầu của vi xử lý và công nghệ mới trong từng thế hệ.

Cầu nối APB – AXI được thiết kế để chuyển giao thức AXI 4.0 hiệu suất cao sang APB 4.0 công suất thấp, với giao diện chủ AXI 32-bit và giao diện tớ APB, hỗ trợ tối đa 16 thiết bị ngoại vi APB Sơ đồ khối của cầu nối này được trình bày trong hình 1.2.

Hình 1.2: Sơ đồ khối cầu nối AXI 4.0 đến APB

Giao thức I2C hoạt động ở hai tốc độ 100 Kbps và 3.4 Mbps thông qua chuẩn bus AMBA APB, với cấu hình chủ - tớ được mô tả bằng ngôn ngữ Verilog Thiết kế cầu AXI - APB đạt hiệu suất cao, bao phủ cả bus AXI và APB trên công cụ mô phỏng VCSMX và VERDI Cầu nối các giao thức được thiết kế sử dụng 3 FIFO, như thể hiện trong hình 1.3.

Hình 1.3: Sơ đồ khối cầu nối AXI - APB

Các tài liệu liên quan sử dụng ngôn ngữ mô tả phần cứng Verilog để kiểm tra các tình huống và phân tích phạm vi chức năng trong quá trình mô phỏng thiết kế Việc xây dựng hệ thống kiểm tra bằng Verilog giúp giảm thời gian kiểm tra lại thiết kế và có khả năng tái sử dụng Tuy nhiên, hiện tại vẫn thiếu cầu nối chuyển đổi trực tiếp từ AXI đến I2C qua APB Do đó, người thực hiện sẽ nghiên cứu giao thức I2C và cầu AXI – APB để phát triển cầu nối giữa các giao thức này Mục tiêu là phục vụ học tập, tham khảo tài nguyên, kiểm tra chức năng thiết kế và đánh giá thông qua dạng sóng mô phỏng.

Ba người thực hiện nghiên cứu về "Thiết kế bộ chuyển đổi giao thức AXI – APB – I2C" nhằm tạo cầu nối cho AXI, APB và I2C, cho phép truyền dữ liệu trực tiếp từ máy tính đến các ngoại vi I2C Đề tài được triển khai thông qua mô phỏng, thực thi cầu nối giao thức AXI – APB – I2C với bốn tốc độ khác nhau.

MỤC TIÊU ĐỀ TÀI

Mục tiêu của đề tài là thiết kế cầu chuyển đổi giữa bus dữ liệu tốc độ cao AXI và bus dữ liệu tốc độ thấp APB, cũng như thực hiện chuyển đổi từ bus hệ thống APB sang ngoại vi I2C Kết quả thiết kế được đánh giá thông qua dạng sóng mô phỏng, cho phép kết nối với nhiều phần cứng khác nhau.

GIỚI HẠN ĐỀ TÀI

Đề tài nghiên cứu tập trung vào việc thiết kế cầu chuyển đổi giữa bus dữ liệu tốc độ cao AXI và bus dữ liệu tốc độ thấp APB, cũng như giữa bus APB và ngoại vi I2C với bốn tốc độ khác nhau: 100Kbps, 400Kbps, 1Mbps và 3.4Mbps Cầu chuyển đổi được thiết kế theo cấu hình chủ - tớ bằng ngôn ngữ mô tả phần cứng Verilog Mặc dù kết quả chỉ được đánh giá thông qua mô phỏng dạng sóng với các bit truyền, việc thực thi thiết kế với thông số thời gian thực không nằm trong phạm vi nghiên cứu của đề tài.

BỐ CỤC ĐỀ TÀI

Bài viết này giới thiệu tổng quan về đề tài, bao gồm mối quan hệ giữa các hướng nghiên cứu, mục tiêu thiết kế và thực hiện đề tài, từ đó làm nổi bật ý nghĩa thực tiễn của nghiên cứu.

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

Bài viết này cung cấp cái nhìn tổng quan về các đối tượng nghiên cứu liên quan đến đề tài, bao gồm giao thức AXI, giao thức APB, giao thức I2C và ngôn ngữ mô tả phần cứng Verilog Những giao thức này đóng vai trò quan trọng trong việc thiết kế và phát triển hệ thống vi mạch, giúp cải thiện hiệu suất và khả năng tương tác giữa các thành phần trong mạch điện tử Verilog, với khả năng mô tả phần cứng một cách chính xác, hỗ trợ các kỹ sư trong việc lập trình và kiểm tra các thiết kế vi mạch phức tạp.

CHƯƠNG 3: THIẾT KẾ HỆ THỐNG

Dựa trên các yêu cầu và mục tiêu đã xác định, tiến hành thiết kế theo một trình tự hợp lý với từng phần được phân chia rõ ràng, sau đó tổng hợp để hoàn thiện hệ thống.

CHƯƠNG 4: KẾT QUẢ THỰC HIỆN

Bài viết trình bày kết quả thực hiện thông qua các kịch bản để làm rõ thiết kế hệ thống, sử dụng ngôn ngữ mô tả phần cứng Verilog và quan sát kết quả mô phỏng dạng sóng.

CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Đưa ra kết luận về ưu điểm, hạn chế của hệ thống Từ đó đưa ra hướng phát triển của đề tài.

CƠ SỞ LÝ THUYẾT

GIAO THỨC AXI

Giao thức AXI, được phát triển bởi hãng ARM, là một giao thức bus giao tiếp trên chip, hỗ trợ các thiết kế có hiệu năng cao và tần số cao.

• Tách riêng các pha thành pha truyền dữ liệu, pha truyền địa chỉ, pha truyền thông tin tín hiệu điều khiển Tách riêng kênh đọc và kênh ghi

Hỗ trợ chuyển đổi giao tiếp theo cơ chế burst chỉ cần phát địa chỉ đầu tiên của burst Việc phát nhiều địa chỉ chồng lấn cho phép các chuyển đổi hoàn thành không theo thứ tự.

• Cho phép thiết kế với các tầng thanh ghi giúp định thời của bus tốt hơn

Hoạt động với tần số cao được thực hiện trực tiếp mà không cần sử dụng cầu nối hay chuyển đổi phức tạp, điều này rất phù hợp với bộ điều khiển bộ nhớ có độ trễ truy cập ban đầu cao.

• Triển khai các đường tín hiệu, kết nối một cách linh hoạt và tương thích được với các giao thức khác như APB hay AHB

Hình 2.1: Giao diện giao tiếp và kết nối bus của giao thức AXI

Giao thức AXI quy định chuẩn giao tiếp giữa một chủ, một tớ và một bus, cho phép một chủ giao tiếp trực tiếp với một tớ Kết nối bus có thể bao gồm nhiều giao diện giao tiếp khác nhau, trong đó vai trò chủ - tớ được xác định giữa hai kết nối bus Ví dụ, khi BUS 0 đóng vai trò là chủ, thì BUS 1 sẽ là tớ, và ngược lại.

Giống như các giao thức bus khác, AXI có hai hoạt động chính: đọc, trong đó chủ thể lấy dữ liệu từ thiết bị, và ghi, khi chủ thể gửi dữ liệu đến thiết bị.

2.1.1 Cấu trúc phân kênh của giao thức AXI

Giao thức AXI hoạt động thông qua năm kênh độc lập, mỗi kênh đảm nhận vai trò khác nhau Việc truyền và nhận tín hiệu giữa các kênh không bị ảnh hưởng bởi các kênh khác.

Hình 2.2: Các kênh trong một interface AXI

• Kênh địa chỉ ghi AW: Cho biết thông tin về địa chỉ và điều khiển của một chuyển đổi ghi được truyền từ chủ đến tớ

• Kênh dữ liệu ghi W: Dữ liệu ghi sẽ được truyền từ chủ đến tớ

• Kênh phản hồi ghi B: Truyền thông tin phản hồi của một chuyển đổi ghi từ tớ đến chủ

• Kênh địa chỉ đọc AR: Cho biết thông tin về địa chỉ và điều khiển của một chuyển đổi đọc được truyền từ tớ đến chủ

• Kênh dữ liệu đọc R: Dữ liệu đọc và thông tin phản hồi của một chuyển đổi đọc được truyền từ tớ đến chủ

Trong đó, một chuyển đổi hay một truy cập sẽ bao gồm thông tin:

• Đường địa chỉ: xác định điểm đích, nơi mà chuyển đổi sẽ được thực hiện

• Các đường điều khiển: cho biết các thuộc tính về kích thước, độ dài, phân loại,… của burst

• Đường dữ liệu: dữ liệu của chuyển đổi

• Đường phản hồi: kiểm tra trạng thái của chuyển đổi có truyền thành công dữ liệu hay đang bị lỗi

Một burst đại diện cho tất cả các thay đổi dữ liệu trong một chuyển đổi, và mỗi chuyển đổi sẽ điều khiển một burst với các thuộc tính được xác định bởi các đường điều khiển.

Chuyển đổi đọc được xác định bởi kênh AR và kênh R, trong đó đường dữ liệu và đường phản hồi thông tin được truyền chung qua kênh R Quá trình này bắt đầu khi chủ gửi thông tin địa chỉ và tín hiệu điều khiển qua kênh AR, sau đó tôi sẽ gửi lại dữ liệu và thông tin phản hồi qua kênh R theo tín hiệu điều khiển từ chủ.

Việc tách riêng các pha thành pha truyền dữ liệu, pha truyền địa chỉ và pha truyền thông tin tín hiệu điều khiển giúp tối ưu hóa quá trình chuyển đổi, cho phép khởi tạo các giá trị tiếp theo mà không cần chờ hoàn thành chuyển đổi trước đó.

Hình 2.3: Chuyển đổi đọc trong giao thức AXI

Tương ứng với một chuyển đổi ghi, quá trình này được quyết định bởi 3 kênh: kênh

Quá trình truyền thông giữa chủ và các kênh AW, W và B bắt đầu khi chủ gửi thông tin địa chỉ và tín hiệu điều khiển qua kênh AW Dữ liệu ghi sau đó được truyền qua kênh W theo tín hiệu điều khiển từ chủ Chủ sẽ chờ phản hồi từ tớ khi quá trình ghi dữ liệu hoàn tất Đối với chuyển đổi ghi, chỉ có một tín hiệu phản hồi được gửi khi quá trình ghi hoàn thành, trong khi với chuyển đổi đọc, mỗi lần có dữ liệu đọc sẽ có phản hồi gửi về, và giá trị của các phản hồi có thể giống hoặc khác nhau.

7 hồi 0 đang cho thấy dữ liệu đọc đầu tiên "không lỗi" nhưng phản hồi 1 lại đang báo lỗi cho dữ liệu đọc thứ 2

Hình 2.4: Chuyển đổi ghi trong giao thức AXI

2.1.2 Cơ chế bắt tay hai chiều của AXI

Hoạt động của giao thức AXI dựa trên cơ chế bắt tay hai chiều, sử dụng một tín hiệu VALID và một tín hiệu READY như hình 2.5

Hình 2.5: Cơ chế bắt tay hai chiều trong giao thức AXI

Để xác định sự tồn tại của tín hiệu địa chỉ, thông tin điều khiển hoặc dữ liệu hợp lệ trên kênh truyền, phía phát sử dụng tín hiệu VALID, tương tự như tín hiệu yêu cầu từ phía nhận Phía nhận sẽ dùng tín hiệu READY để thông báo cho phía phát rằng nó đã sẵn sàng nhận thông tin.

Tín hiệu READY tương tự như tín hiệu ACK, dùng để xác nhận yêu cầu từ nguồn Trong các tình huống khác nhau, nguồn và đích có thể thay đổi vai trò Chẳng hạn, trong chuyển đổi đọc trên kênh AR, phía chủ là nguồn phát địa chỉ và thông tin điều khiển, còn phía tớ là đích, với chủ điều khiển tín hiệu VALID và tớ điều khiển tín hiệu READY Ngược lại, trên kênh R, phía tớ là nguồn phát dữ liệu đọc và chủ là đích, lúc này tớ điều khiển tín hiệu VALID và chủ điều khiển tín hiệu READY.

Tương ứng với 5 kênh của giao thức AXI, có 5 cặp tín hiệu VALID/READY:

• Kênh AR: tín hiệu chủ ARVALID và tín hiệu tớ ARREADY

• Kênh R: tín hiệu tớ RVALID và tín hiệu chủ RREADY

• Kênh AW: tín hiệu chủ AWVALID và tín hiệu tớ AWREADY

• Kênh W: tín hiệu chủ WVALID và tín hiệu tớ WREADY

• Kênh B: tín hiệu tớ BVALID và tín hiệu chủ BREADY

Cơ chế bắt tay hai chiều hoạt động dựa trên nguyên tắc rằng tín hiệu VALID từ phía phát phải luôn ở mức cao khi có thông tin truyền hợp lệ, mà không cần quan tâm đến trạng thái của tín hiệu READY Tín hiệu VALID cần duy trì mức cao cho đến khi tín hiệu READY trở nên tích cực Ở phía nhận, tín hiệu READY có thể được kích hoạt trước, trong hoặc sau khi tín hiệu VALID xuất hiện, nhưng chỉ khi hệ thống đã sẵn sàng để nhận dữ liệu.

Hình 2.6: Cơ chế bắt tay hai chiều của AXI

• Tại T0: Tín hiệu VALID được kích hoạt để thông báo rằng có thông tin hợp lệ đang được truyền trên kênh

• Từ T0 đến T2: VALID vẫn luôn tích cực vì tín hiệu READY ở phía nhận không sẵn sàng

• Tại T2: Tín hiệu READY tích cực cho biết là phía nhận đã chuẩn bị xong để nhận thông tin

Từ T2 đến T3, tín hiệu READY tích cực được kích hoạt, cho phép cả hai bên nhận và phát nhận thông tin Nếu thông tin nhận được hợp lệ, tín hiệu VALID sẽ được duy trì Ngược lại, nếu phía phát không còn thông tin mới để truyền, tín hiệu VALID sẽ được thiết lập thành 0.

• Sau T3: Tín hiệu VALID = 0, ở phía phát không còn thông tin để truyền Phía nhận vẫn đang sẵn sàng để nhận thông tin từ phía phát

Việc chuyển giao giữa các chuyển đổi yêu cầu tín hiệu VALID phải luôn được kích hoạt khi có thông tin hợp lệ trên kênh truyền Phía nhận sẽ chờ tín hiệu VALID hoạt động tích cực trước khi kích hoạt tín hiệu READY.

GIAO THỨC APB

Giao thức APB là một phần của bộ giao tiếp AMBA do ARM phát triển, được thiết kế cho các vi điều khiển APB chủ yếu phục vụ việc giao tiếp với các ngoại vi không yêu cầu tốc độ xử lý cao như UART, SPI, và I2C Giao thức này có cấu trúc giao tiếp đơn giản với các tín hiệu rõ ràng.

• PCLK: Tín hiệu xung clock của giao thức APB

• PRESETn: Tín hiệu reset của giao thức APB tích cực mức thấp

• PADDR: Tín hiệu địa chỉ truy cập dữ liệu

• PWRITE: Tín hiệu này có chức năng phân biệt truy cập

• PSEL: Tín hiệu chọn thiết bị ngoại vi

• PENABLE: Tín hiệu cho phép truy cập của giao thức APB

• PWDATA: Tín hiệu dữ liệu ghi

• PRDATA: Tín hiệu dữ liệu đọc

• PREADY: Tín hiệu sẵn sàng chấp nhận dữ liệu

• PSTRB [7:0]: Khi cả 8 bit đều bằng 1 thì mới thực hiện ghi và ngược lại

Giao thức APB khác với chuẩn giao tiếp AXI ở chỗ có một số tín hiệu chung cho cả kênh đọc và ghi Điều này dẫn đến việc tại mỗi thời điểm, chỉ một loại chuyển đổi có thể được thực thi.

Việc thực hiện đọc/ghi thông qua giao thức APB với 3 pha trạng thái như hình 2.14 và hình 2.15

Hình 2.14: Chuyển giao ghi của giao thức APB

Hình 2.15: Chuyển giao đọc của giao thức APB

Sơ đồ trạng thái của giao thức APB4 được mô tả như hình 2.16

Mô tả các trạng thái theo dạng sóng:

• Từ T0 đến T1: chuyển giao lúc này đang ở trạng thái IDLE, tín hiệu PSEL = 0 và PENABLE = 0

Từ T1 đến T5, quá trình chuyển giao dữ liệu bắt đầu trong trạng thái SETUP với giá trị PSEL = 1 và PENABLE = 0 Trong khoảng thời gian từ T2 đến T4, giá trị PREADY được quyết định là 0 cho đến khi hoàn tất việc xử lý chuyển đổi Cuối cùng, từ T4 đến T5, giá trị PREADY = 1 được thiết lập, thông báo cho chủ biết rằng quá trình chuyển đổi đã hoàn tất.

• Từ T5 đến T6: chủ chuyển giá trị PENABLE về 0 Giá trị của PSEL phụ thuộc vào việc chủ có tiếp tục chuyển giao nào sau đó hay không

Hình 2.16: Sơ đồ trạng thái hoạt động của giao thức APB

Kết nối của bus APB được xác định bởi thiết bị chủ APB, chịu trách nhiệm điều khiển các tín hiệu của bus này Thiết bị chủ thường là một bus khác với tốc độ cao như AXI hoặc AHB Các thiết bị tớ APB nhận tín hiệu điều khiển từ bus APB, bao gồm bộ điều khiển EEPROM và các giao thức như UART, SPI.

Hình 2.17: Kết nối của APB bus

GIAO THỨC I2C

I2C là giao thức truyền dữ liệu nối tiếp đồng bộ, kết nối bộ xử lý trung tâm với nhiều IC trên cùng một bảng mạch Giao thức này chỉ sử dụng hai đường tín hiệu SCL và SDA, với các bit dữ liệu được truyền theo từng chu kỳ xung clock.

Giao thức I2C kết hợp những ưu điểm của SPI và UART, cho phép kết nối giữa một chủ và một tớ như UART, hoặc kết nối nhiều tớ với một chủ duy nhất như SPI Ngoài ra, I2C còn hỗ trợ kết nối giữa nhiều chủ và nhiều tớ, mang lại tính linh hoạt cao trong việc truyền dữ liệu.

Bảng 2.1: Tốc độ truyền của I2C

Tốc độ truyền Chế độ

Giao thức I2C sử dụng chuẩn truyền dữ liệu 8 bit có hướng với các tốc độ khác nhau như bảng 2.1

Giao thức I2C sử dụng hai đường truyền tín hiệu chính: SDA cho dữ liệu nối tiếp và SCL cho xung clock Mỗi dây tín hiệu được kết nối với nguồn điện thông qua điện trở kéo lên, đảm bảo tính ổn định của tín hiệu Các chân giao tiếp I2C thường được thiết kế theo dạng Open Drain hoặc Open Collector, cho phép bất kỳ thiết bị ngoại vi nào có thể kéo tín hiệu xuống.

Để đảm bảo tín hiệu mặc định luôn ở mức cao và tránh tình trạng giảm xuống mà không thể kéo lên, người thực hiện cần sử dụng một điện trở kéo lên với giá trị từ 1 kΩ đến 4.7 kΩ.

2.3.1 Định dạng của khung dữ liệu trong giao tiếp I2C

Cấu trúc của một khung dữ liệu giao thức I2C như hình 2.15

Hình 2.18: Cấu trúc của một khung dữ liệu giao thức I2C

Các bit của khung truyền dữ liệu của giao thức I2C:

• Bit Start: bắt đầu chuỗi khung truyền dữ liệu

• Khối bit Address: bao gồm 7 – 10 bit địa chỉ cố định

• Bit Read/Write: xác minh hiện tại I2C đang trong quá trình truyền dữ liệu hay là nhận dữ liệu từ ngoại vi

Bit ACK/NACK đầu tiên được sử dụng để xác định xem giá trị bit địa chỉ của thiết bị có khớp với bit địa chỉ đã được gửi đến hay không Nếu hai giá trị này trùng nhau, thiết bị sẽ nhận giá trị bằng 0; ngược lại, nếu không trùng nhau, thiết bị sẽ nhận giá trị bằng 1.

• Khối bit Data: mỗi khối gồm 8 bit dữ liệu được thiết lập để truyền đến thiết bị nhận

Các bit ACK/NACK được gửi ngay sau các bit dữ liệu nhằm kiểm tra xem thiết bị nhận đã nhận dữ liệu thành công hay chưa.

Bit Stop là tín hiệu quan trọng trong giao thức I2C, được sử dụng để khởi tạo hoặc chấm dứt quá trình truyền nhận dữ liệu Để thực hiện điều này, thiết bị chủ cần gửi tín hiệu Start/Stop đến thiết bị tớ, nhằm thông báo cho thiết bị tớ biết và thực thi quá trình truyền nhận dữ liệu.

• Điều kiện bắt đầu: thời điểm tín hiệu SDA chuyển trạng thái từ mức cao xuống mức thấp khi tín hiệu SCL đang tích cực

• Điều kiện kết thúc: thời điểm tín hiệu SDA chuyển trạng thái từ mức thấp lên mức cao khi tín hiệu SCL đang tích cực

Hình 2.19: Quá trình truyền nhận dữ liệu trong giao thức I2C

Giao thức I2C cho phép lặp lại điều kiện bắt đầu trong suốt quá trình truyền mà không cần điều kiện kết thúc Điều kiện bắt đầu đóng vai trò là điểm nối giữa các chuỗi dữ liệu truyền liên tục.

Hình 2.20: Trường hợp lặp lại điều kiện bắt đầu

Khi truyền dữ liệu, các bit dữ liệu được xem là hợp lệ:

• SCL đang ở mức cao thì bit ở SDA phải ổn định ở mức logic 0 hoặc 1

• SCL đang ở mức thấp thì SDA mới ở trạng thái chuyển đổi logic

Cấu trúc khối địa chỉ bao gồm 1 byte (8 bit), trong đó có 7 bit địa chỉ, với bit MSB được truyền trước và bit LSB được truyền sau cùng, cùng với 1 bit để chỉ định chế độ đọc/ghi.

Khi thiết bị chủ gửi 7 bit địa chỉ, thiết bị tớ nào khớp với địa chỉ đó sẽ bắt đầu hoạt động Bit đầu tiên mà thiết bị tớ đọc là bit Đọc/Ghi.

• Bit 0: I2C ở chế độ Ghi, tín hiệu sẽ đi từ thiết bị chủ sang tớ

• Bit 1: I2C ở chế độ Đọc, tín hiệu sẽ đi từ thiết bị tớ sang chủ

Cấu trúc của khối dữ liệu bao gồm 8 bit dữ liệu, và theo sau mỗi khối này luôn có 1 bit ACK/NACK

Bit ACK/NACK: bit được sử dụng để phản hồi kết quả truyền data, trong đó:

• Bit 0: ACK - Gửi dữ liệu thành công

• Bit 1: NACK - Không nhận được dữ liệu

2.3.2 Các chế độ chủ - tớ trong giao thức I2C

Trong giao tiếp I2C, mỗi thiết bị ngoại vi được gán một địa chỉ duy nhất để tránh nhầm lẫn khi kết nối Thiết bị có thể hoạt động ở chế độ song công hoặc bán song công, với hai hướng truyền dữ liệu: từ thiết bị chủ đến thiết bị tớ và ngược lại Bit Read/Write xác định hướng truyền dữ liệu, trong khi thiết bị chủ tạo xung SCL trong suốt quá trình truyền.

Quá trình truyền dữ liệu bắt đầu khi thiết bị chủ tạo tín hiệu Start Thiết bị chủ gửi byte đầu tiên, bao gồm 7 bit địa chỉ và 1 bit Read/Write với giá trị 0, cho biết thiết bị đang ở chế độ ghi Sau đó, thiết bị chủ chờ nhận phản hồi ACK từ thiết bị tớ.

Khi nhận được xung ACK từ thiết bị của tôi, thiết bị chủ sẽ bắt đầu truyền dữ liệu từng bit Sau mỗi 8 bit dữ liệu, thiết bị của tôi sẽ gửi tín hiệu ACK phản hồi, và lượng byte truyền đi là không giới hạn.

Khi quá trình truyền dữ liệu hoàn tất, thiết bị chủ sẽ gửi tín hiệu dừng để kết thúc Thiết bị chủ có khả năng ngừng gửi dữ liệu bất kỳ lúc nào, do đó, tín hiệu phản hồi ACK/NACK từ thiết bị tớ không có vai trò quan trọng.

Quá trình thiết bị tớ truyền cho thiết bị chủ nhận:

Chủ tạo tín hiệu Start bắt đầu quá trình truyền dữ liệu bằng cách gửi byte đầu tiên, bao gồm 7 bit địa chỉ và 1 bit Read/Write có giá trị 1, cho biết chế độ đọc Thiết bị chủ sẽ chờ nhận tín hiệu phản hồi ACK từ thiết bị tớ.

THIẾT KẾ HỆ THỐNG

SƠ ĐỒ KHỐI

Sơ đồ khối tổng quát của thiết kế như hình 3.1

Hình 3.1: Sơ đồ khối tổng quát của thiết kế

Chức năng của từng khối:

• AXI – APB Bridge: Chuyển đổi các tín hiệu truyền dữ liệu tốc độ cao sang tốc độ thấp, để kết nối với các ngoại vi bên ngoài như I2C

• Address Decoder: Chức năng giải mã địa chỉ được truyền đến I2C theo định địa chỉ dữ liệu

• APB – I2C Bridge: Cầu chuyển đổi chuyển các dữ liệu từ APB sang giao thức I2C và nhận dữ liệu từ giao thức I2C sang giao thức APB.

THIẾT KẾ CÁC KHỐI

3.3.1 Thiết kế cầu AXI – APB

Sơ đồ khối tổng quát và các chân tín hiệu của thiết kế cầu AXI – APB như hình 3.2 và hình 3.3

Hình 3.2: Sơ đồ khối tổng quát của thiết kế cầu AXI – APB

Hình 3.3: Các chân tín hiệu của khối AXI – APB

Các chân tín hiệu của cầu AXI – APB được mô tả như bảng 3.1 sau:

Bảng 3.1: Các chân tín hiệu của cầu AXI – APB

STT Chân tín hiệu Số bit Phân loại Mô tả

1 ACLK 1 Ngõ vào Tín hiệu xung clock của giao thức AXI

2 ARESETn 1 Ngõ vào Tín hiệu reset của giao thức AXI Tích cực mức thấp

Tín hiệu địa chỉ của kênh AW Tín hiệu này chứa thông tin về địa chỉ của chuyển đổi đầu tiên trong 1 chuyển giao

Tín hiệu điều khiển của kênh AW Dựa vào tín hiệu này người thực hiện xác định được kích thước của 1 chuyển giao ghi có bao nhiêu chuyển đổi

Tín hiệu điều khiển của kênh AW Dựa vào tín hiệu này người thực hiện xác định được kích thước của 1 chuyển đổi có bao nhiêu byte

Tín hiệu điều khiển của kênh AW Thuộc tính Burst mô tả cách địa chỉ tăng lên giữa các lần chuyển giao trong một giao dịch

Khi tín hiệu valid của kênh AW tích cực, thiết bị chủ sẽ thông báo cho thiết bị tớ biết các thông tin về địa chỉ ghi và điều khiển đã sẵn sàng.

Tín hiệu "ready" của kênh AW cho biết rằng thiết bị đã sẵn sàng nhận thông tin về địa chỉ và điều khiển Khi tín hiệu này tích cực, thiết bị sẽ thông báo cho thiết bị chủ biết về trạng thái sẵn sàng của nó.

9 WDATA 32 Ngõ vào Tín hiệu dữ liệu của kênh W

10 WSTRB 8 Ngõ vào Tín hiệu điều khiển byte trong 1 chuyển đổi

Khi chủ gửi tín hiệu wlast lên mức 1, đó là dấu hiệu cho tôi biết rằng đây là chuyển đổi cuối cùng trong một quá trình chuyển giao.

Tín hiệu hợp lệ từ kênh W cho biết khi nào dữ liệu đã sẵn sàng để truyền đi, với tín hiệu tích cực thông báo cho thiết bị của tôi.

Khi tín hiệu WREADY của kênh W tích cực, thiết bị sẽ thông báo cho thiết bị chủ rằng nó đã sẵn sàng nhận dữ liệu từ thiết bị chủ.

14 BRESP 2 Ngõ ra Dữ liệu trong tín hiệu này sẽ thông báo cho chủ biết trạng thái của chuyển giao ghi

Khi tín hiệu tích cực xuất hiện, tôi sẽ thông báo cho chủ rằng tôi đã sẵn sàng để truyền đạt thông tin phản hồi về việc chuyển giao ghi.

Khi tín hiệu này tích cực thì chủ sẽ báo cho tớ biết chủ đã sẵn sàng tiếp nhận thông tin phản hồi

Tín hiệu địa chỉ của kênh AR Tín hiệu này chứa thông tin về địa chỉ của chuyển đổi đầu tiên trong 1 chuyển giao

Tín hiệu điều khiển của kênh AR Dựa vào tín hiệu này người thực hiện xác định được

1 chuyển giao có bao nhiêu chuyển đổi

Tín hiệu điều khiển của kênh AR Dựa vào tín hiệu này người thực hiện xác định được

1 chuyển đổi có bao nhiêu byte

Tín hiệu điều khiển của kênh AR Thuộc tính Burst mô tả cách địa chỉ tăng lên giữa các lần chuyển giao trong một giao dịch

Tín hiệu valid của kênh AR cho biết khi nào thông tin địa chỉ đọc và điều khiển đã sẵn sàng Khi tín hiệu này tích cực, chủ thể muốn thông báo rằng các thông tin cần thiết đã được chuẩn bị để sử dụng.

Khi tín hiệu "ready" của kênh AR tích cực, tôi muốn thông báo cho chủ biết rằng tôi đã sẵn sàng nhận thông tin địa chỉ đọc và thông tin điều khiển.

23 RDATA 32 Ngõ ra Dữ liệu đọc

Tôi sẽ thông báo cho chủ về tình trạng của các chuyển đổi đọc Dựa trên tín hiệu này, người thực hiện có thể xác định liệu dữ liệu đọc có bị lỗi hay không.

Khi thực hiện chuyển đổi cuối cùng trong một quá trình đọc, tôi sẽ tích cực tín hiệu này để thông báo cho chủ rằng đây là chuyển đổi cuối cùng trong việc truy cập đọc.

Tín hiệu valid của kênh R Khi RVALID này tích cực thì tớ sẽ thông báo cho chủ biết dữ liệu mà chủ muốn đọc đã sẵn sàng

Khi tín hiệu "ready" của kênh R tích cực, chủ sẽ thông báo cho tôi biết rằng đã sẵn sàng nhận dữ liệu đọc từ phía chủ.

28 PCLK 1 Ngõ ra Tín hiệu xung clock của giao thức APB

29 PRESETn 1 Ngõ ra Tín hiệu reset của giao thức APB Tích cực mức thấp

Mỗi tín hiệu psel sẽ chỉ tới 1 tớ của APB Tín hiệu này sẽ cho phép tớ APB đó hoạt động hay không hoạt động

31 PSTRB 8 Ngõ ra PSTRB cho biết làn byte nào sẽ cập nhật trong quá trình truyền ghi

32 PENABLE 1 Ngõ ra Tín hiệu cho phép

Tín hiệu này có chức năng phân biệt truy nhập pwrite = 1 là truy nhập ghi

34 PADDR 32 Ngõ ra Tín hiệu địa chỉ Tín hiệu này chứa thông tin địa chỉ đọc hoặc ghi

35 PWDATA 32 Ngõ ra Tín hiệu dữ liệu Tín hiệu này chứa dữ liệu cần truyền

36 PRDATA 32 Ngõ vào Dữ liệu đọc được gửi từ tớ APB

Khi tín hiệu này tích cực thì tớ sẽ thông báo cho chủ biết tớ đã sẵn sàng nhận dữ liệu

Sơ đồ kết nối của khối COMMAND như hình 3.3

Khối AXI2APB COMMAND dùng để lưu các thông tin tín hiệu sau:

• Tín hiệu địa chỉ của chuyển đổi đầu tiên trong 1 chuyển giao đọc, ghi Gồm 2 tín hiệu ARADDR[31:0] và AWADDR[31:0]

• Các tín hiệu điều khiển: o ARSIZE[2:0] và AWSIZE[2:0]: Tín hiệu này dùng để xác định kích thước của

Tín hiệu ARLEN[7:0] và AWLEN[7:0] xác định kích thước của một chuyển giao đọc hoặc ghi, cho biết số lượng chuyển đổi Các tín hiệu AWBURST[1:0] và ARBURST[1:0] cung cấp thông tin về phương pháp và địa chỉ cho mỗi chuyển đổi dữ liệu trong quá trình ghi Khi hai tín hiệu ARVALID và AWVALID ở trạng thái tích cực, chủ thể thông báo rằng thông tin địa chỉ đọc, ghi và điều khiển đã sẵn sàng Ngược lại, khi ARREADY và AWREADY tích cực, thiết bị thông báo đã sẵn sàng tiếp nhận thông tin địa chỉ đọc, ghi và điều khiển.

Hình 3.3: Sơ đồ kết nối của khối COMMAND

Chức năng của các tín hiệu khác trong khối AXI2APB COMMAND:

• ACLK, ACLK_out: Tín hiệu xung clock đi vào, ra khối COMMAND

• ARESETn, ARSETN_out: Tín hiệu reset của khối COMMAND

• Các tín hiệu awaddr [31:0], awlen [7:0], awsize [2:0], awburst [1:0] tương ứng với các tín hiệu AWADDR [31:0], AWLEN [7:0], AWSIZE [2:0], AWBURST [1:0] được truyền ra khỏi khối COMMAND

• flag_AWREADY: Báo hiệu trạng thái của AXI là đang ghi

Khi tín hiệu BVALID tích cực, tôi sẽ thông báo cho chủ rằng tôi đã sẵn sàng để truyền tải thông tin phản hồi về việc chuyển giao ghi.

Khi tín hiệu PSEL_out tích cực, tôi sẽ thông báo cho chủ rằng tôi đã chuyển sang trạng thái SETUP Trạng thái này sẽ được duy trì trong một chu kỳ xung nhịp và sẽ chuyển sang trạng thái TRUY CẬP ở cạnh lên xung clock tiếp theo.

• Các tín hiệu araddr [31:0], arlen [7:0], arsize [2:0], arburst [1:0] tương ứng với các tín hiệu ARADDR [31:0], ARLEN [7:0], ARSIZE [2:0], ARBURST [1:0] được truyền ra khỏi khối COMMAND

• flag_ARREADY: Báo hiệu trạng thái của AXI là đang đọc

Trong quá trình chuyển giao đọc, RLAST đóng vai trò quan trọng khi tín hiệu này được tích cực tín hiệu lên vào lần chuyển đổi cuối cùng Điều này giúp thông báo cho chủ thể biết rằng đây là chuyển đổi cuối cùng trong quá trình truy cập đọc.

3.3.1.2 Khối đọc dữ liệu READ

KẾT QUẢ THỰC HIỆN

PHƯƠNG PHÁP THỰC HIỆN MÔ PHỎNG

Để mô phỏng hoạt động của cầu giao thức, phương pháp sử dụng các module giả lập như AXI master, APB master, I2C master và I2C slave để truyền dữ liệu Kết quả từ quá trình này sẽ giúp đánh giá xem cầu chuyển đổi có hoạt động đúng theo yêu cầu hay không.

4.1.1 Sử dụng APB và AXI giả lập:

Khối AXI_master được thiết kế để mô phỏng quá trình truyền nhận dữ liệu từ tốc độ cao sang tốc độ thấp qua cầu AXI – APB Đây là một mô hình hành vi dùng cho kiểm tra, không phải là thiết kế RTL AXI_master tái hiện các tác vụ chính của phía chủ như khởi tạo tín hiệu đầu vào, thực hiện ghi dữ liệu, yêu cầu đọc dữ liệu và khởi tạo các điều kiện ready và valid theo giao thức AXI Các tín hiệu vào và ra của khối AXI_master được thể hiện trong hình 4.1.

Hình 4.1: Mô hình AXI_master để kiểm chứng cầu AXI - APB

Khối APB_master được thiết kế nhằm mô phỏng quá trình truyền nhận dữ liệu từ cầu AXI-APB qua lõi I2C đến các thiết bị ngoại vi Quá trình này sẽ được thực hiện thông qua các mô phỏng chi tiết để đảm bảo tính chính xác và hiệu quả trong việc truyền tải thông tin.

Cầu đẩy dữ liệu I2C_master hoặc I2C_slave được thiết lập thông qua APB_master, cung cấp các tín hiệu như pwrite, penable, psel, pwdata cho khối giao diện APB APB_master điều khiển quá trình ghi vào thanh ghi, chuẩn bị cho giao tiếp với cầu AXI - APB Các tín hiệu đầu vào và đầu ra của khối APB_master được thể hiện trong hình 4.2.

Hình 4.2: Mô hình APB_master để kiểm chứng cầu APB – I2C

Khối APB_slave được thiết kế để mô phỏng quá trình truyền nhận dữ liệu từ AXI_master đến cầu AXI – APB Đây là một mô hình hành vi, hỗ trợ việc kết hợp với AXI_master nhằm kiểm tra và tái hiện các tác vụ chính mà phía chủ gửi đến Đồng thời, APB_slave cũng thực hiện việc khởi tạo các tín hiệu dữ liệu đọc khi nhận yêu cầu từ phía chủ Các tín hiệu vào và ra của khối APB_slave được trình bày trong hình 4.3.

Hình 4.3: Mô hình APB_slave để kiểm chứng cầu AXI - APB

Khối I2C_master và I2C_slave được thiết kế để mô phỏng quá trình truyền dữ liệu của giao thức I2C, bao gồm hai quá trình chính: chủ truyền và tớ nhận, cùng với tớ truyền và chủ nhận.

Trong quá trình là chủ truyền – tớ nhận, khối I2C_master và I2C_slave với các chân tính hiệu như hình 4.4

Hình 4.4: Mô hình I2C_master/slave

Các thanh ghi của khối I2C_slave được người thực hiện thiết lập giá trị với:

• Control Register (011): xác định thiết bị là tớ, xóa FIFO truyền và FIFO nhận

• Address Register (1010101): gán địa chỉ thiết bị tớ

• Interrupt Enable Register (111): cho phép ngắt truyền, ngắt nhận và ngắt tràn

• Status Register: cho phép I2C_slave hoạt động

Các thanh ghi của khối I2C_master được thiết lập giá trị với:

• Control Register (111): xác định thiết bị là chủ, xóa FIFO truyền và FIFO nhận

• Transmit Address Register (1010101): cho chủ biết địa chỉ của tớ sẽ giao tiếp

• Interrupt Enable Register (111): cho phép ngắt truyền, ngắt nhận và ngắt tràn

• Clock Devider Register (00): tốc độ chuẩn 100kbps

The Command Register (010) initiates a Start signal and disables the Read/Write signal to indicate that the master will transmit data It then sends a Stop signal, resetting the register value to 000.

• Status Register: cho phép I2C_master hoạt động

Tương tự với quá trình tớ truyền – chủ nhận cho các khối I2C_master và I2C_slave.

KẾT QUẢ MÔ PHỎNG

4.2.1 Kết quả mô phỏng cầu AXI – APB

Các chương trình kiểm tra chức năng của các khối chi tiết trong thiết cầu AXI – APB được trình bày trong bảng 4.1 Testcase 1 liên quan đến quá trình chuyển đổi dữ liệu ghi, trong khi testcase 2 tập trung vào chuyển đổi dữ liệu đọc Testcase 3 yêu cầu thực hiện chuyển đổi dữ liệu ghi và đọc đồng thời Kết quả của các quá trình chuyển đổi dữ liệu ghi, đọc và đồng thời được thảo luận ở mục bên dưới.

Bảng 4.1 Các trường hợp thử cho cầu AXI - APB

Testcase Mô tả Cấu hình

Testcase 1 Cầu AXI – APB ở quá trình ghi

Giai đoạn 1: Truyền tín hiệu địa chỉ và các tín hiệu điều khiển ở kênh AW:

Gửi tín hiệu địa chỉ:

Gửi tín hiệu thông báo độ dài của một giao dịch ghi:

Gửi tín hiệu thông báo kích thước của một dữ liệu:

Gửi tín hiệu thông báo loại burst trên kênh AW:

Gửi tín hiệu thông báo phía master đã sẵn sàng truyền thông tin địa chỉ và thông tin điều khiển:

Giai đoạn 2: Gửi tín hiệu thông báo sẵn sàng gửi dữ liệu ở kênh W:

Gửi tín hiệu thông báo sẵn sàng nhận tín hiệu phản hồi từ tớ:

Truyền dữ liệu địa chỉ để ghi lần lượt trên kênh W:

WDATA = 1 WDATA = 2 WDATA = 3 WDATA = 4 WDATA = 5 WDATA = 6 WDATA = 7 WDATA = 8

Gửi tín hiệu thông báo dữ liệu cuối cùng được gửi:

Testcase 2 Cầu AXI – APB ở quá trình đọc

Giai đoạn 1: Truyền tín hiệu địa chỉ và các tín hiệu điều khiển ở kênh AR:

Gửi tín hiệu địa chỉ:

Gửi tín hiệu thông báo độ dài của một giao dịch đọc:

Gửi tín hiệu thông báo kích thước của một dữ liệu:

Gửi tín hiệu thông báo loại burst trên kênh AR:

Gửi tín hiệu thông báo phía master đã sẵn sàng truyền thông tin địa chỉ và thông tin điều khiển:

Giai đoạn 2: Gửi tín hiệu thông báo sẵn sàng nhận dữ liệu từ phía tớ:

Testcase 3 Cầu AXI – APB ở quá trình chủ yêu cầu đọc và ghi cùng một thời điểm

Giai đoạn 1: Truyền tín hiệu địa chỉ và các tín hiệu điều khiển ở kênh AR:

Gửi tín hiệu địa chỉ:

Gửi tín hiệu thông báo độ dài của một giao dịch đọc:

Gửi tín hiệu thông báo kích thước của một dữ liệu:

Gửi tín hiệu thông báo loại burst trên kênh AR:

Gửi tín hiệu thông báo phía master đã sẵn sàng truyền thông tin địa chỉ và thông tin điều khiển:

ARVALID = 1 Truyền tín hiệu địa chỉ và các tín hiệu điều khiển ở kênh AW:

Gửi tín hiệu địa chỉ:

AWADDR = 55 Gửi tín hiệu thông báo độ dài của một giao dịch ghi: AWLEN = 7

Gửi tín hiệu thông báo kích thước của một dữ liệu: AWSIZE = 0

Gửi tín hiệu thông báo loại burst trên kênh AW:

AWBURST = 0 Gửi tín hiệu thông báo phía master đã sẵn sàng truyền thông tin địa chỉ và thông tin điều khiển:

Giai đoạn 2: Gửi tín hiệu thông báo sẵn sàng nhận dữ liệu từ phía tớ:

Gửi tín hiệu thông báo sẵn sàng gửi dữ liệu ở kênh W: WVALID = 1

Gửi tín hiệu thông báo sẵn sàng nhận tín hiệu phản hồi từ tớ:

BREADY = 1 Truyền dữ liệu địa chỉ để ghi lần lượt trên kênh W: WDATA = 1

WDATA = 2 WDATA = 3 WDATA = 4 WDATA = 5 WDATA = 6

WDATA = 7 WDATA = 8 Gửi tín hiệu thông báo dữ liệu cuối cùng được gửi: WLAST = 1

4.2.1.1 Mô phỏng cầu AXI – APB ở quá trình ghi

Kết quả kiểm tra chức năng chuyển đổi tín hiệu của quá trình ghi dữ liệu trên cầu AXI

- APB với testcase 1 như hình 4.5 và được mô tả cụ thể như sau:

Khoảng thời gian từ T0 đến T1:

Phía chủ gửi các tín hiệu AWADDR [31:0], AWLEN [7:0], AWSIZE [3:0], AWBURST [1:0] và AWVALID đến phía tớ để thông báo rằng họ muốn thực hiện một quá trình ghi dữ liệu.

Khoảng thời gian từ T1 đến T2:

Khi nhận được tín hiệu địa chỉ và các tín hiệu điều khiển hợp lệ, phía tôi sẽ kích hoạt tín hiệu PSEL = 1 và PWRITE = 1, báo hiệu đã chuyển sang trạng thái SETUP Tại thời điểm này, tôi đã sẵn sàng nhận tín hiệu từ phía chủ.

Khi tín hiệu AWREADY = 1 được gửi từ phía tớ, điều này cho biết rằng thông tin tín hiệu địa chỉ và tín hiệu điều khiển đã được nhận Đồng thời, phía tớ cũng gửi tín hiệu WREADY = 1 để xác nhận đã sẵn sàng nhận dữ liệu từ phía chủ Sau đó, phía chủ sẽ gửi tín hiệu BREADY = 1 để thông báo rằng họ cũng đã sẵn sàng nhận dữ liệu từ phía tớ.

Hình 4.5: Mô phỏng cầu AXI - APB ở quá trình ghi

Khoảng thời gian từ T2 đến T11:

• Phía chủ sẽ gửi tín hiệu WVALID = 1 và gửi tín hiệu dữ liệu WDATA [31:0] sang phía tớ

• Phía tớ kích hoạt tín hiệu PENABLE và nhận dữ liệu từ phía chủ

• Khoảng thời gian từ T6 đến T7 thì phía chủ gửi tín hiệu WVALID = 0, báo hiệu cho phía tớ biết dữ liệu tại khoảng thời gian này không được ghi

• Khoảng thời gian từ T10 đến T11 thì phía chủ gửi tín hiệu WLAST = 1, báo hiệu cho phía tớ biết dữ liệu cuối cùng được gửi đi

Khoảng thời gian từ T11 đến T12:

Tín hiệu BRESP [1:0] và BVALID = 1 được gửi để xác nhận rằng không có dữ liệu nào bị sai sót trong quá trình truyền, đánh dấu sự kết thúc của quá trình ghi dữ liệu.

4.2.1.2 Mô phỏng cầu AXI – APB ở quá trình đọc

Hình 4.6: Mô phỏng cầu AXI - APB ở quá trình đọc

Kết quả kiểm tra chức năng chuyển đổi tín hiệu của quá trình đọc dữ liệu trên cầu AXI

- APB với testcase 2 như hình 4.6 và được mô tả cụ thể như sau:

Khoảng thời gian từ T0 đến T1:

Phía chủ gửi các tín hiệu ARADDR [31:0], ARLEN [7:0], ARSIZE [3:0], ARBURST [1:0] và ARVALID để thông báo cho phía tớ về việc thực hiện một quá trình đọc dữ liệu.

Khoảng thời gian từ T1 đến T2:

Khi nhận được tín hiệu địa chỉ và các tín hiệu điều khiển hợp lệ, hệ thống sẽ kích hoạt tín hiệu PSEL = 1 và PWRITE = 0, cho thấy trạng thái đã chuyển sang SETUP.

Phía chủ nhận tín hiệu ARREADY = 1 từ phía tớ, xác nhận rằng tớ đã nhận thông tin địa chỉ và tín hiệu điều khiển Đồng thời, phía chủ cũng gửi tín hiệu RREADY = 1 để thông báo rằng họ đã sẵn sàng nhận tín hiệu từ tớ.

Khoảng thời gian từ T2 đến T11:

Trong quá trình đọc dữ liệu, tôi gửi tín hiệu PENABLE = 1 và PREADY = 1 Trong khoảng thời gian này, tôi cũng truyền tín hiệu RDATA [31:0], RRESP [1:0] và RVALID = 1 đến phía chủ.

Khoảng thời gian từ T6 đến T7:

• Phía chủ nhận được tín hiệu RVALID = 0, báo hiệu dữ liệu tại khoảng thời gian này không được đọc

Khoảng thời gian từ T10 đến T11:

• Phía chủ nhận được tín hiệu RLAST = 1, báo hiệu dữ liệu cuối cùng được truyền đến chủ Kết thúc quá trình đọc dữ liệu

4.2.1.3 Mô phỏng cầu AXI – APB ở quá trình chủ yêu cầu đọc và ghi cùng 1 thời điểm

Hình 4.7: Mô phỏng cầu AXI - APB ở quá trình chủ yêu cầu đọc và ghi cùng 1 thời điểm

Kết quả kiểm tra chức năng chuyển đổi tín hiệu trong quá trình yêu cầu đọc và ghi đồng thời trên cầu AXI - APB với testcase 3, như thể hiện trong hình 4.7, cho thấy hiệu suất hoạt động ổn định và đáp ứng yêu cầu kỹ thuật.

Khoảng thời gian từ T0 đến T11 tương tự như quá trình ghi thực hiện, trong đó các tín hiệu điều khiển từ kênh AR của phía chủ gửi đến phía tớ không nhận được phản hồi Do đó, phía chủ cần duy trì các tín hiệu này cho đến khi quá trình ghi kết thúc.

Từ T11 đến T12, sau khi hoàn tất quá trình ghi dữ liệu, tín hiệu ARREADY sẽ được kích hoạt với giá trị 1, cho thấy rằng thông tin tín hiệu địa chỉ và tín hiệu điều khiển đã được nhận Quá trình đọc diễn ra tương tự, như minh họa trong hình 4.6, từ T11 đến T20.

4.2.2 Kết quả mô phỏng cầu APB - I2C

Các chương trình kiểm tra chức năng của các khối chi tiết trong thiết cầu APB – I2C được trình bày trong bảng 4.2 Trong đó, testcase 4 mô tả quá trình truyền dữ liệu giữa chủ và tớ.

5 là quá trình tớ truyền - chủ nhận dữ liệu

Bảng 4.2 Các trường hợp thử cho cầu APB - I2C

Testcase Mô tả Cấu hình

Testcase 4 Cầu APB - I2C với quá trình chủ truyền - tớ nhận

Để thiết lập thanh ghi cho I2C_master, cần thực hiện các bước sau: Đầu tiên, đặt apb_csel = 2’h0 để chọn tốc độ 100kbps Tiếp theo, cấu hình apb_con = 7’h07 để thiết lập I2C ở chế độ chủ và xóa nội dung FIFO truyền, nhận Địa chỉ mà chủ cần truyền được cấu hình bằng apb_tadd = 8’h55 Để cho phép tất cả các loại ngắt, sử dụng apb_ie = 3’h7 Cuối cùng, bật chức năng hoạt động của I2C_master bằng cách đặt apb_se = 2’h1.

Các giá trị dữ liệu 8’h01, 8’h02, 8’h03, 8’h04, 8’h05, 8’h06, 8’h07, 8’h08, 8’h09, 8’h0a, 8’h0b, 8’h0c, 8’h0d, 8’h0e, 8’h0f được ghi vào txff của I2C_master

Để thiết lập thanh ghi cho I2C_slave, cấu hình apb_con = 7’h03 cho phép I2C hoạt động, đồng thời xóa FIFO truyền và FIFO nhận Địa chỉ của I2C được xác định bởi apb_add = 8’h55, tương ứng với 8’b1010101 Cuối cùng, apb_ie = 3’h7 được sử dụng để cho phép tất cả các loại ngắt.

Testcase 5 Cầu APB - I2C với quá trình tớ truyền

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

HƯỚNG PHÁT TRIỂN

Đề tài không chỉ tập trung vào thiết kế cầu chuyển đổi giao thức giữa AXI, APB và I2C, mà còn mở rộng khả năng phát triển các ngoại vi khác như UART, GPIO, SPI, Quad UART và CAN Ngoài ra, nó còn cho phép kết nối với các thiết bị bên ngoài và mở rộng kết nối nội bộ như truy cập trực tiếp bộ nhớ thông qua DMA và sử dụng giao thức JTAG cho việc debug, cùng với giao thức AXI-AXI Qua đó, mục tiêu cuối cùng là phát triển một CPU hoàn chỉnh Đồng thời, việc áp dụng các giải thuật tối ưu hóa như Folding, Unfolding và Retiming sẽ giúp giảm thiểu số lượng đường tín hiệu cần thiết.

Cầu APB - I2C cho phép phát triển I2C theo chế độ Multi Master – Multi Slave, hỗ trợ hiệu quả cho việc truyền dữ liệu khi có nhiều chủ tham gia.

Cầu AXI – APB đã được cải tiến với chức năng Multi Master thông qua việc tích hợp bộ phân xử Arbiter, giúp quản lý và phân xử các chủ thể tham gia trong quá trình truyền dữ liệu.

Ngày đăng: 08/12/2023, 15:18

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN