Wednesday, September 26, 2018

Kiến thức cơ bản về chuẩn giao tiếp APB của ARM

1. Sơ lược về chuẩn giao tiếp APB.
Tài liệu tham khảo là APB specification của ARM v1.0.
Trong bài này mình sẽ trình bày vắn tắt về chuẩn giao tiếp APB. APB là viết tắt của từ “Advanced peripheral bus” được phát triển bởi công ty ARM dành cho các transfer băng thông thấp và không yêu cầu high performance. Có 2 loại transfer chính là write transfer và read transfer. Mỗi loại transfer sẽ bao gồm 7 tín hiệu cơ bản. Tuy nhiên trong thực tế chúng ta có thể thêm vào những tín hiệu khác nếu muốn đính kèm thêm thông tin cho gói dữ liệu ví dụ PADDITIONAL or PUSER….
Không giống như chuẩn giao tiếp AXI các kênh read/write độc lập với nhau, với APB vì write transfer và read transfer dùng chung một số tín hiệu nên tại một thời điểm chỉ có một loại loại transfer được thực thi. Để phân biệt được loại transfer là write hay read chúng ta cần tập trung vào tín hiệu PWRITE. Nếu PWRITE đạt giá trị cao tức là write transfer và ngược lại. Vì read transfer là data được gửi từ slave đến master còn write transfer thì data được gửi từ master đến slave nên tín hiệu DATA của hai transfer này cũng khác nhau. Như vậy nhìn chung các tín hiệu của write transfer và read transfer là giống nhau. Có hai điểm khác biệt cơ bản là:
Write transfer: PWRITE = 1 và tín hiệu data là PWDATA.
Read transfer: PWRITE = 0 và tín hiệu data là PRDATA.
Sự hoạt động của các tín hiệu còn lại là tương tự nhau.
Dưới đây là 2 loại transfer cơ bản:

Hình 1. Write transfer.

Hình 2. Read transfer.
2. Write transfer.
Tại thời điểm bắt đầu transfer, sẽ có 4 tín hiệu được phát đi từ phía master đó là: PADDR, PWRITE, PSEL, PWDATA.  Tại thời điểm mà cả PENABLE và PREADY cùng đạt giá trị 1, lúc đó quá trình transfer bắt đầu diễn ra. Với loại transfer này chúng ta có 2 loại trạng thái đó là : trạng thái chờ và không chờ. Sự khác biệt giữa hai trạng thái này là nằm ở việc tín hiệu PREADY sẽ tích cực khi nào.  Nếu PREADY tích cực cùng lúc với PENABLE thì dữ liệu của master ngay tại thời điểm sẵn sàng gửi cũng là lúc phía slave sẵn sàng nhận. Điều này có nghĩa là dữ liệu được gửi ngay lập tức khi nó có hiệu lực. Giống như kiểu bạn vừa nướng chín một cái bánh và bạn ăn nó ngay lập tức.
Đối với trạng thái chờ tín hiệu PREADY sẽ không lập tức đạt giá trị 1 mà nó sẽ chờ một khoảng vài chu kì sau khi PENABLE đã được đạt giá trị 1 trước đó.
Dưới đây là 2 trạng thái cơ bản của write transfer.

Hình 3. Trạng thái không chờ.

Hình 4. Trạng thái chờ.
3. Read transfer.
Tương tự như write transfer nhưng tại thời điểm bắt đầu chỉ có 3 tín hiệu được phát từ phía master là: PADDR, PWRITE, PSEL. Riêng đối với tín hiệu PRDATA sẽ chỉ được truyền từ slave khi cả PENABLE và PREADY tích cực mức 1.

Hình 5. PRDATA chỉ truyền khi cả PENABLE và PREADY là 1.
4. Một chút xíu về tín hiệu PSLVERR.
Cũng giống như chuẩn giao tiếp AXI, APB cũng hỗ trợ 1 tín hiệu để nhầm mục đích thông báo lỗi khi quá trình transfer diển ra. Tuy nhiên với APB, tín hiệu này chỉ có 1 bit. Khi PSLVERR bằng 1 nghĩa là quá trình transfer đang bị lỗi, ngược lại là không có vấn đề gì.

Hình 6. PSLVERR cho write transfer.

Hình 7. PSLVERR cho read transfer.

Như chúng ta đã biết một số cầu có chức năng chuyển đổi từ chuẩn giao tiếp AXI sang APB, hoặc AHB sang APB. Vậy tính iệu PSLVERR sẽ được chuyển đổi như thế nào.
Chúng ta xem xét trạng thái bên dưới của tín hiệu RESP của AXI.

 Tín hiệu RESP của chuẩn AXI sẽ có hai bit [1:0]. Để ý kĩ hơn ta sẽ thấy rõ nếu bit số 1 của tín hiệu RESP là 1 thì có lỗi xảy ra bằng 0 thì ngược lại. Như vậy dễ dàng chuyển đổi tín hiệu RESP sang PSLVERR bằng cách nối tín hiệu RESP[1] đến tín hiệu PSLVERR.
Tương tự cho chuẩn giao tiếp AHB.
Trên đây là một vài kiến thức nhỏ của bản thân. Hi vọng mọi người sẽ tìm được bài học bổ ích hơn cho mình.



No comments:

Post a Comment

Cách tính BW và latency trong 1 hệ thống SoC sử dụng chuẩn giao tiếp AXI protocol

Tác giả:  TrongTran Ngày:  31/12/2019 Nếu bạn nào đang làm về verification cho system performance (ST) thì bài này sẽ bổ ích cho bạn. Ngày ...