Bảng 3.1: Các kiểu PID [1] Loại PID Tên PID 4 bit thấp của PID Q 3 →Q 0 0101B 1101B Địa chỉ của chức năng và số điểm cuối của chức năng trong giao tác truyền từ host tới chức năng Đị
Trang 1Chương 0: Mở đầu
Trong thời đại bùng nổ công nghệ thông tin như hiện nay, tin học đã, đang và sẽ được ứng dụng rộng rãi trong rất nhiều lĩnh vực của đời sống xã hội Không nằm ngoài tầm ảnh hưởng mạnh mẽ của tin học là những người làm công tác giảng dạy, đào tạo, nghiên cứu, Khi nói đến họ thì ta có thể thấy ngay rằng công việc của họ sẽ thật khó suôn sẻ khi thiếu chiếc máy tính cá nhân và các phần mềm đi kèm như bộ Microsoft office với Word, Excel, PowerPoint và nhiều những ứng dụng khác Bên cạnh Word và Excel đã tỏ rõ sức mạnh từ lâu thì thời gian gần đây, PowerPoint cùng với chiếc máy chiếu càng ngày càng cho thấy ưu điểm vượt trội của nó trong việc tăng hiệu quả diễn đạt cho một vấn đề bất kỳ Như vậy đi kèm với các gói phần mềm thì để sử dụng chúng một cách hiệu quả còn có những thiết bị đầu cuối Các thiết bị đầu cuối làm tăng đáng kể khả năng cho chiếc máy tính cá nhân Trước đây các thiết bị đầu cuối được ghép nối với máy tính thông qua rất nhiều giao diện như cổng com, cổng máy in, PS/2 Hiện nay thì dường như đã dần quy về một mối,
đó chính là ghép nối thiết bị đầu cuối với máy tính thông qua cổng USB Cổng USB với đường truyền đa năng đúng như tên gọi của nó (Universal Serial Bus),
có khả năng cung cấp nhiều phương thức truyền dẫn cũng như tốc độ truyền khác nhau cho các ứng dụng khác nhau Chính vì vậy đồ án này sẽ tập trung tìm hiểu về chuẩn USB 2.0 và ứng dụng chuẩn USB để thiết kế điều khiển từ
xa cho trình diễn PowerPoint
Sản phẩm bao gồm: Một bộ phát là thiết bị cầm tay dùng pin, có 3 nút bấm Nút Up giúp người sử dụng trở lại slide ngay trước slide hiện hành, nút Down giúp đi tới slide ngay sau slide hiện hành còn nút light thì bật đèn laser tạo ra đốm sáng nhỏ giúp cho việc trình diễn đạt hiệu quả diễn đạt cao hơn
Trang 2Không thể thiếu là một bộ thu ghép nối với máy tính thông qua cổng USB Bộ thu này nhận lệnh từ bộ phát và truyền đạt lại lệnh đó tới máy tính Bộ thu dễ
sử dụng, không cần driver và lấy nguồn từ máy tính
Hiện nay để thiết kế thành công sản phẩm trên thì có khá nhiều phương
án như: Bộ phát có thể dùng sóng cao tần hoặc năng lượng hồng ngoại để truyền lệnh điều khiển tới bộ thu Về phía bộ thu, để thực hiện chức năng giao tiếp USB với máy tính thì cần có một bộ điều khiển USB Để thực hiện bộ điều khiển này thì có thể dùng các công nghệ như: µC; PSoC; SPLD; CPLD; FPGA
Phương án thì có nhiều như vậy nên vấn đề ở đây là lựa chọn phương án nào cho hợp lý và khả thi nhất Sau một thời gian tìm hiểu, phương án đã được lựa chọn cho đề tài là: bộ phát sử dụng sóng cao tần để truyền lệnh điều khiển,
về phía bộ thu sẽ thực hiện bộ điều khiển USB bằng vi điều khiển có tích hợp một bộ điều khiển USB chưa được cấu hình
Với những gì đã được giới thiệu ở trên thì có thể thấy rằng để thực hiện
đề tài cần có kiến thức cơ bản về một số mảng chính sau: Chuẩn USB 2.0, họ vi điều khiển PIC (vì vi điều khiển mà ta sử dụng trong đề tài là vi điều khiển PIC của hãng MicroChip), truyền tín hiệu điều khiển sử dụng sóng cao tần Chính
vì vậy mà trong khuôn khổ của đồ án này sẽ tập trung trình bày các nội dung sau:
¾ Phần I: Sơ lược về chuẩn USB (gồm 6 chương):
• Chương 1: Giới thiệu chung về chuẩn USB Chương này sẽ đưa ra cái nhìn khái quát, sơ lược về USB gồm khái niệm, ưu điểm của USB, mô tả hệ thống USB và cáp USB
• Chương 2: Mô hình luồng dữ liệu USB Chương này mô tả cách thực hiện một kết nối USB, cách
mà theo đó dữ liệu được truyền qua USB
Trang 3• Chương 3: Tầng giao thức USB
Chương này đem lại một cái nhìn từ dưới lên trên của giao thức USB, bắt đầu với các định nghĩa trường và gói, sau đó là
mô tả các giao tác và cuối cùng là việc đồng bộ và thử lại
• Chương 4: Các lớp thiết bị được định nghĩa
Chương này giới thiệu các lớp thiết bị được định nghĩa, giúp những người thiết kế thiết bị đầu cuối USB nhận định xem sản phẩm của mình có thuộc lớp thiết bị được định nghĩa hay không (nếu thuộc lớp thiết bị được định nghĩa thì có thể bỏ qua khâu viết driver cho sản phẩm)
• Chương 5: Lớp thiết bị giao diện người sử dụng Chương này sẽ trình bày về lớp HID với mục đích giúp người đọc nhận định xem một thiết bị nào đó có phù hợp để gán vào lớp HID hay không Chỉ ra các yêu cầu đối với vi chương trình (firmware) để định nghĩa một thiết bị thuộc lớp HID và cho phép nó trao đổi dữ liệu với máy tính chủ
• Chương 6: Quá trình tìm hiểu của máy chủ đối với thiết bị Chương này mô tả những bước xử lý của máy chủ để máy chủ có thể tìm hiểu các thông tin về thiết bị như: Tốc độ của thiết bị, các bộ mô tả của thiết bị Và việc gán một bộ điều khiển (driver) cho thiết bị
¾Phần II: Thiết kế sản phẩm (gồm 2 chương):
• Chương 7: Thiết kế bộ phát Chương này sẽ trình bày một số lưu ý khi thiết kế điều khiển từ xa sử dụng sóng cao tần (RF), sơ đồ khối hệ thống cho sản phẩm của đề tài và phần thiết kế bộ phát của sản phẩm
• Chương 8: Thiết kế bộ thu Chương này sẽ giới thiệu sơ qua về họ vi điều khiển PIC-loại vi điều khiển mà ta sử dụng cho sản phẩm của đề tài và phần phân tích thiết kế bộ thu
Trang 4Trong phần I thì các kiến thức về chuẩn USB mới chỉ được trình bày vắn tắt và còn thiếu một số kiến thức đáng quan tâm của chuẩn USB Do yêu cầu về sự súc tích của nội dung đồ án cũng như lý do là các phần đó không liên quan trực tiếp đến việc thiết kế sản phẩm nên không trình bày ở đây
Trang 5PHẦN I: SƠ LƯỢC VỀ CHUẨN
USB 2.0
Trang 6Chương 1: Giới thiệu chung về USB
Chương này sẽ đưa ra cái nhìn khái quát, sơ lược về USB gồm khái niệm, ưu điểm của USB, mô tả hệ thống USB và cáp USB
1.1 Khái niệm về USB
USB (Universal Serial Bus) là bus nối tiếp đa năng cho phép các thiết bị đầu cuối giao tiếp với máy tính chủ (Host Computer)
1.2 Các mục tiêu hướng tới khi sử dụng USB
- Dễ dàng mở rộng các thiết bị đầu cuối của PC
- Cung cấp giải pháp chi phí thấp song vẫn hỗ trợ truyền dẫn với tốc độ lên đến 480Mb/s
- Hỗ trợ ứng dụng thời gian thực như voice, audio, video,
- Giao thức linh hoạt cho các chế độ hỗn hợp: isochronous data transfers
và asynchronous messaging
- Tích hợp công nghệ thiết bị tiện nghi
- Được Windows và các hệ điều hành khác hỗ trợ do đó có thể không cần driver mức thấp cho các thiết bị USB
- Đa năng do đó nhiều thiết bị có thể ghép nối với PC thông qua chuẩn USB
- Độ tin cậy cao
Trang 7+ Kiến trúc Bus: Mô hình kết nối giữa các thiết bị USB và Host
+ Những mối quan hệ Inter-layer : Dưới dạng một tập khả năng, các tác
vụ USB được thực hiện tại mỗi lớp trong hệ thống
+ Các mô hình luồng dữ liệu: Là hình thức mà trong đó dữ liệu di chuyển trong hệ thống qua USB
+ Lập trình USB: USB cung cấp một sự kết nối dùng chung Việc truy cập tới kết nối được lập trình theo thứ tự để hỗ trợ truyền dữ liệu đẳng thời và khử sự phân xử ban đầu
1.3.1 Kiến trúc Bus
Bus tuần tự đa năng nối các thiết bị USB với Host USB Về mặt kết nối vật lý USB đó là một kiến trúc tầng sao Một Hub ở tại trung tâm của mỗi sao mỗi đoạn dây là một kết nối từ điểm tới điểm giữa Host và một Hub hoặc một chức năng nào đó, hoặc một Hub nối tới Hub khác hoặc chức năng khác Với 7 bit địa chỉ, ngoài máy chủ USB ra nó có thể quản lý tối đa 127 thiết bị ngoại vi Hình 1.1 sẽ minh hoạ kiến trúc của USB
Trang 8Hình 1.1: Kiến trúc Bus [1]
1.3.1.1 Máy chủ USB (USB Host)
Chỉ có duy nhất một Host trong một hệ thống USB bất kỳ Giao diện USB tới hệ thống máy chủ được xem như bộ điều khiển Host Bộ điều khiển Host có thể được thực hiện trong một kết hợp gồm phần cứng, vi chương trình (firmware) hoặc phần mềm Một Hub gốc (root hub) được tích hợp chỉ trong hệ thống Host để cung cấp một hoặc nhiều điểm lắp thêm
1.3.1.2 Các thiết bị USB
Thiết bị USB có thể là một trong các thiết bị sau:
-Hub: cung cấp điểm lắp thêm vào USB
-Các chức năng: Cung cấp các khả năng cho hệ thống như một kết nối ISDN, digital joystick, hoặc speakers
-Thiết bị hiểu được giao thức USB
Trang 91.4 Cáp USB
USB truyền tín hiệu và nguồn qua một cáp 4 sợi hình 1.2
Có 3 tốc độ truyền dữ liệu:
-USB tốc độ cao (USB high-speed): 480Mb/s
-USB toàn tốc (USB full-speed): 12Mb/s
-USB tốc độ thấp (USB low-speed): 1.2Mb/s
Hình 1.2: USB Cable [1]
Cáp USB bao gồm 4 dây, D+ và D- được dùng để truyền tín hiệu, Vbus
và GND để cấp nguồn cho thiết bị ( Thường thì Vbus =5V còn GND=0V tại nguồn) USB cho phép chiều dài các đoạn cáp có thể thay đổi lên tới vài mét
Ở phía máy chủ Host thì D+ và D- được nối đất qua các điện trở Rpd còn
về phía thiết bị ngoại vi, các đầu dây D+, D- được bảo vệ bởi điện trở cuối (đó chính là các điện trở Rpu Thiết bị tốc độ cao hoặc toàn tốc cần có điện trở nối +3.3 V cho đầu D+, thiết bị tốc độ thấp cần có điện trở nối lên 3.3 V cho đầu D- Những điện trở này tạo nên các mức điện thế khác nhau giữa D+ và D- giúp cho máy chủ phát hiện được việc cắm vào hay rút ra của thiết bị cũng như tốc độ truyền dữ liệu của thiết bị
Trang 10Chương 2: Mô hình luồng dữ liệu USB
Chương này mô tả cách thực hiện một kết nối USB, cách mà dữ liệu được truyền qua USB
2.1 Các thành phần trong việc thực hiện kết nối USB
Việc thực hiện kết nối USB gồm các thành phần:
- Thiết bị USB vật lý: Một phần cứng ở đầu cuối của cáp USB thi hành một vài chức năng hữu dụng với người sử dụng
- Client Software: Phần mềm thi hành trên máy chủ, đáp ứng cho thiết
bị USB Phần mềm này có thể được cung cấp bởi hệ điều hành hoặc được cung cấp cùng với thiết bị USB
- USB System Software: Là phần mềm hỗ trợ USB trong một hệ điều hành cụ thể Phần mềm hệ thống USB thường được cung cấp kèm với hệ điều hành, nó không hề phụ thuộc vào một thiết bị USB cụ thể nào cũng như phần mềm client cụ thể nào
- USB Host Cotroller: Bao gồm phần cứng và phần mềm cho phép các thiết bị USB kết nối tới Host
Hình 2.1 sau sẽ chỉ ra sự tương tác giữa một số lớp và thực thể trong một kết nối đơn giản giữa host và thiết bị
Trang 11Hình 2.1: Các vùng thực hiện trong một kết nối USB [1]
-USB Bus interface Layer cung cấp kết nối vật lý, gói tin, báo hiệu giữa Host và một thiết bị
-USB Decive Layer cho thấy hệ điều hành hỗ trợ thiết bị USB cần có một phần mềm hệ thống để thực hiện việc quản lý thiết bị USB logic
-Function Layer cung cấp khả năng được thêm vào cho Host qua phần mềm khách (client software) Chính client software sẽ giúp thể hiện chức năng của thiết bị USB trên Host
- Mối liên quan giữa chức năng và phần mềm khách (client software)
Trang 122.2.1 USB Host
Kết cấu logic của Host được chỉ ra trong hình 2.2 gồm có
- Bộ điều khiển Host
- Phần mềm hệ thống USB đã được gộp chung (thực chất nó gồm: USB Driver, Host Controller Driver và Host software)
- Giao diện bus USB
- Thiết bị USB logic
- Chức năng
Trang 13Hình 2.3: Kết cấu thiết bị vật lý [1]
Các thiết bị USB vật lý cung cấp các chức năng bổ sung cho Host Các thiết bị USB khác nhau thì cung cấp các chức năng khác nhau Mặc dù vậy thì các thiết bị USB logíc có nối ghép tới Host cơ bản giống nhau
2.2.3 Kiến trúc bus vật lý (Physical Bus Topology)
Kết nối vật lý của các thiết bị USB thông qua kiến trúc tầng sao (tiered star topology) như ở hình 2.4 Các điểm nối USB được thông qua bởi một lớp thiết bị USB đặc biệt được hiểu là Hub Các điểm nối bổ sung được kết nối thông qua Hub được gọi là các cổng Host bao gồm cả một Hub được nối với
nó gọi là Hub gốc (root hub) Các kết nối được thực hiện tại các cổng của Hub gốc Các thiết bị cung cấp các chức năng bổ sung cho Host được hiểu là các chức năng (function)
Trang 14Hình 2.4: Kiến trúc bus vật lý USB [1]
2.2.4 Kiến trúc bus logic
Trong khi các thiết bị vật lý được kết nối tới Host theo kiến trúc tầng sao thì quá trình truyền thông giữa Host với mỗi thiết bị logic được xem như là kết nối trực tiếp tới cổng gốc (root port) Trong trường hợp này thì bản thân các hub cũng là các thiết bị logic, nhưng hình 2.5 dưới đây không vẽ ra để cho hình
vẽ đơn giản dễ hiểu
Hình 2.5: Kiến trúc bus logic USB [1]
2.2.5 Mối quan hệ giữa chức năng và phần mềm khách
Trong quá trình hoạt động, phần mềm khách nên độc lập với các thiết bị khác có thể được gắn tới USB
Trang 152.3 Luồng truyền thông USB
USB cung cấp một dịch vụ truyền thông giữa phần mềm trên Host và chức năng USB của nó Các chức năng có thể có yêu cầu luồng truyền thông khác nhau cho các tương tác client-to-function khác nhau USB cung cấp sự sử dụng bus toàn diện hơn bằng cách tách các luồng truyền thông khác nhau tới một chức năng USB Mỗi luồng truyền thông được kết thúc tại một điểm cuối trên trên một thiết bị Điểm cuối của thiết bị được sử dụng để xác định hướng của mỗi luồng truyền thông Hình 2.6 thuyết minh cách các luồng thông tin được truyền qua các ống dẫn (đường truyền) giữa các điểm cuối và các bộ nhớ đệm phía Host Phần mềm trên Host giao tiếp với một thiết bị logic qua một tập các luồng truyền thông Tập các luồng truyền thông được chọn bởi các nhà thiết kế phần cứng/phần mềm để đáp ứng một cách có hiệu quả các nhu cầu của thiết bị tới đặc tính truyền tải được cung cấp bởi USB
Hình 2.6: Luồng truyền thông USB [1]
2.4 Các loại truyền dữ liệu USB
USB truyền dữ liệu qua một ống dẫn (đường truyền) giữa một bên là bộ nhớ đệm được liên kết với một phần mềm khách trên máy chủ với một bên là một điểm cuối trên thiết bị USB USB cung cấp các dạng truyền tải khác nhau
đã được tối ưu hoá để đáp ứng một cách thích hợp nhất các nhu cầu của phần
Trang 16mềm khách và chức năng USB cung cấp 4 loại truyền dữ liệu: truyền điều khiển (control transfer); truyền ngắt (interrupt transfer); truyền đẳng thời (isochronous transfer) và truyền khối (bulk transfer)
2.4.1 Truyền điều khiển
Truyền điều khiển là truyền theo kiểu hai chiều Loại truyền này thườngđược sử dụng để cài đặt thiết bị ngoại vi Giao thức truyền điều khiển được bắt đầu bằng một giai đoạn thông báo (token stage), tiếp theo là giai đoạn dữ liệu (data stage) và kết thúc là giai đoạn bắt tay (handshake stage) Mọi thiết bị ngoại vi USB đều phải xử lý được loại truyền này
2.4.2 Truyền ngắt
Truyền ngắt là kiểu truyền một chiều Loại truyền này được dùng cho các thiết bị ngoại vi như bàn phím, chuột, joystick Vì Host không thể ngắt nên các ngắt từ thiết bị ngoại vi được xử lý trong vòng đợi Người lập trình hệ thống có nhiệm vụ xử lý vòng đợi này Giao thức truyền ngắt khởi động khi máy chủ (Host) bắt đầu bằng một thông báo IN (IN Token) Thiết bị ngoại vi trả lời bằng một gói NAK nếu không có ngắt Trong trường hợp có ngắt thì thiết bị ngoại vi trả lời bằng một gói dữ liệu Khi nhận hết dữ liệu máy chủ sẽ trả lời bằng một gói ACK nếu dữ liệu không có lỗi hoặc không trả lời gì nếu có lỗi Nếu bị nghẽn ở điểm cuối của thiết bị ngoại vi, nó sẽ gửi đến máy chủ gói STALL và đợi phần mềm hệ thống trên máy chủ xử lý
2.4.3 Truyền đẳng thời
Truyền đẳng thời là phương pháp truyền một chiều, hướng cuộc truyền
có thể từ thiết bị ngoại vi về máy chủ hoặc ngược lại Vì thế cuộc truyền cần hai điểm cuối ở thiết bị ngoại vi hoặc hai đường ống dẫn phần mềm ở phía máy chủ nếu thiết bị cần dùng kiểu truyền này để thông tin 2 chiều Giao thức truyền đẳng thời bắt đầu bằng gói IN hoặc OUT từ máy chủ tuỳ thuộc vào hướng truyền và loại điểm cuối Ví dụ trong trường hợp gói IN, thiết bị truyền
Trang 17dữ liệu về máy chủ Trong trường hợp OUT, máy chủ tiếp tục bằng cách truyền
dữ liệu Truyền đẳng thời không dùng gói bắt tay để thông báo kết quả truyền nên thông tin có thể bị thất lạc Loại truyền này thường được dùng cho điện thoại hay loa
2.4.4 Truyền khối
Truyền khối là phương pháp truyền một chiều Hướng truyền có thể từ điểm cuối về máy chủ hay ngược lại Như vậy một thiết bị ngoại vi cần cả hai chiều dữ liệu sẽ cần có hai điểm cuối Giao thức truyền khối gồm có 3 giai đoạn: Thông báo, dữ liệu và gói bắt tay Nếu thiết bị bị kẹt sẽ không có giai đoạn dữ liệu mà chỉ có thông báo và bắt tay Dữ liệu sẽ được truyền qua ống dẫn từ một vùng đệm dữ liệu trong bộ nhớ của chương trình tương ứng tới một điểm cuối của thiết bị ngoại vi
Trang 18Chương 3: Tầng giao thức USB
Chương này đem lại một cái nhìn từ dưới lên trên của giao thức USB, bắt đầu với các định nghĩa trường và gói, sau đó là mô tả các giao tác và cuối cùng là việc đồng bộ và thử lại
3.1 Thứ tự Byte/Bit
Các bit trong một Byte truyền trên bus sẽ được truyền lần lượt từ bit LSB cho đến MSB Trong các mục dưới đây thì các gói sẽ được biểu diễn bởi các bit và các trường sắp xếp theo thứ tự từ trái qua phải, đó cũng chính là thứ
tự mà chúng được gửi qua bus
3.2 Trường đồng bộ
Tất cả các gói đều bắt đầu bởi trường đồng bộ Nó được sử dụng bởi mạch đầu vào để căn chỉnh dữ liệu vào với xung đồng hồ nội Trường đồng bộ được định nghĩa có độ dài 8 bit cho truyền tốc độ toàn tốc hoặc tốc độ thấp và
32 bit cho truyền tốc độ cao 2 bít cuối cùng của trường đồng bộ đánh dấu sự kết thúc của trường đồng bộ và sự bắt đầu của PID (Packet Identifier Field) Hình 3.1 sau sẽ cho thấy khuôn mẫu của trường đồng bộ với truyền tốc độ thấp hoặc toàn tốc
Hình 3.1: Mẫu đồng bộ [1]
Trang 19Mẫu đồng bộ 32 bit cho truyền tốc độ cao có dạng hoàn toàn tương tự như sau: 01010101010101010101010101010100 Trường đồng bộ chỉ được dùng như một cơ chế đồng bộ nên trong các biểu đồ của các gói được trình bày sau đây sẽ không chỉ ra trường này nữa ( ta ngầm hiểu là nó nằm ở đầu mỗi gói)
3.3 Định dạng các trường của gói
Phần này sẽ trình bày về định dạng các trường của các loại gói trong USB là: Gói thông báo (token), gói dữ liệu (data), gói bắt tay (handshake) và gói đặc biệt (special)
3.3.1 Trường nhận dạng gói
Trường nhận dạng gói PID (Packet Identifier Field) theo ngay sau trường đồng bộ của các gói Một PID gồm một trường dạng gói 4 bit và theo sau đó là trường 4 bit kiểm tra như hình 3.2 PID cho biết kiểu gói, định dạng của gói và kiểu phát hiện lỗi được áp dụng cho gói chứa nó Trường kiểm tra 4 bit của PID là để đảm bảo quá trình giải mã là đúng đắn Một lỗi PID xảy ra nếu 4 bit của trường kiểm tra PID không phải là những sự bổ sung đảo của các bít định dạng gói tương ứng
Hình 3.2: Định dạng PID [1]
Host và tất cả các chức năng phải thực hiện quá trình giải mã một cách đầy đủ đối với tất cả các trường PID nhận được Bất kỳ PID nào nhận được với trường kiểm tra sai hoặc là kết quả giải mã đem đến một giá trị không được định nghĩa thì cho rằng PID hỏng và phía nhận sẽ bỏ qua Nếu chức năng nhận được PID là hoàn toàn đúng đắn đối với kiểu giao tác hoặc hướng của giao thức mà nó không hỗ trợ thì chức năng không trả lời lại Các kiểu PID và mô tả của nó được liệt kê trong bảng 3.1 trang sau
Trang 20Bảng 3.1: Các kiểu PID [1]
Loại
PID Tên PID
4 bit thấp của PID (Q 3 →Q 0 )
0101B 1101B
Địa chỉ của chức năng và số điểm cuối của chức năng trong giao tác truyền từ host tới chức năng
Địa chỉ của chức năng và số điểm cuối của chức năng trong giao tác truyền từ chức năng tới host
Đánh dấu sự khởi đầu của một khung
và số khung Địa chỉ của chức năng và số điểm cuối của chức năng trong giao tác thiết lập
từ host tới chức năng qua một ống điều khiển
PID của gói dữ liệu chẵn PID của gói dữ liệu lẻ PID của gói dữ liệu tốc độ cao, giao tác đẳng thời băng tần cao trong một
vi khung PID gói dữ liệu tốc độ cao cho giao tác phân chia và giao tác đẳng thời băng tần cao
Bên thu có thể nhận và đã nhận được gói dữ liệu không có lỗi
Thiết bị thu chưa thể nhận dữ liệu hoặc thiết bị phát chưa thể gửi dữ liệu Điểm cuối bị dừng hoặc yêu cầu về ống điều khiển không được hỗ trợ Chưa có đáp ứng từ phía thu
Đoạn thông báo khởi đầu được phát ra bởi host cho phép lưu lượng downstream bus truyền tới các thiết bị tốc độ thấp
Gói bắt tay cho phép một hub tốc độ cao thông báo có lỗi trên bus toàn tốc hoặc bus tốc độ thấp
Thông báo giao tác phân chia tốc độ cao
Thông báo rằng luồng tốc độ cao điều khiển thăm dò một điểm cuối điều khiển hoặc khôi
PID dự trữ
Trang 21Ghi chú: Các bit của PID được chỉ ra trong bảng theo thứ tự từ trái qua phải tương ứng với MSb đến LSb do đó khi truyền trên bus thì sẽ được truyền theo thứ tự phải trước trái sau
3.3.2 Các loại trường địa chỉ
Chức năng điểm cuối được địa chỉ hoá bằng cách sử dụng hai trường: trường địa chỉ chức năng và trường điểm cuối Đối với chức năng thì nó cần phải giải mã hoàn toàn cả trường địa chỉ lẫn trường điểm cuối Nếu địa chỉ hoặc điểm cuối mà chưa được cho phép hoặc có một sự không phù hợp ở mỗi trường thì gói mã thông báo (token packet) sẽ bị bỏ qua Việc truy nhập tới các điểm cuối mà các điểm cuối đó không được khởi tạo thì gói mã thông báo cũng
sẽ bị bỏ qua
3.3.2.1 Trường địa chỉ
Trường địa chỉ chức năng (ADDR) chỉ ra chức năng là nguồn hay đích của một gói dữ liệu dựa vào giá trị của mã thông báo PID Hình 3.3 cho thấy tổng cộng có 128 địa chỉ được xác định bởi ADDR (7 bit) Mỗi giá trị của trường địa chỉ chỉ ra địa chỉ của một chức năng duy nhất Khi hệ thống được cấp nguồn hoặc reset thì địa chỉ của chức năng được mặc định có giá trị 0000000b (tức Host và thiết bị sẽ cùng coi 0000000b là địa chỉ của thiết bị khi khởi tạo) do đó nó cần được lập trình bởi host để cung cấp cho chức năng một địa chỉ mới để tiện trao đổi sau này khi có nhiều chức năng USB cùng được gắn với Host Cũng từ đây ta thấy rằng địa chỉ 0000000b chỉ nên dùng với mục đích cung cấp địa chỉ khởi tạo mặc định mà không nên dùng vào mục đích khác
Hình 3.3: Trường địa chỉ (ADDR Field) [1]
Trang 223.3.2.2 Trường điểm cuối
Một trường điểm cuối được thêm vào như trong hình 3.4 cho phép việc đánh địa chỉ chức năng mềm dẻo hơn khi có nhiều hơn một điểm cuối được cần đến Trường điểm cuối được định nghĩa cho các thông báo IN, SETUP, OUT
và thông báo đặc biệt PING Tất cả các chức năng phải hỗ trợ một ống điều khiển tại điểm cuối 0 (the Default Control Pipe) Thiết bị tốc độ thấp hỗ trợ tối
đa 3 ống dẫn cho một chức năng Các chức năng toàn tốc hay tốc độ cao có thể
hỗ trợ tối đa tới16 điểm cuối
Hình 3.4: Trường điểm cuối [1]
3.3.3 Trường số khung
Trường số khung là một trường 11 bit do Host tăng thêm trên mỗi khung
cơ sở Trường số lên tới con số cực đại là 7FFh và chỉ được gửi trong các mã thông báo SOF (Start Of Frame) bắt đầu của mỗi khung
3.3.4 Trường dữ liệu
Trường dữ liệu của giao thức USB cho phép có kích thước từ 0 đến
1024 Byte và phải là một số nguyên lần của Byte Hình 3.5 cho thấy khuôn dạng cho nhiều Byte Các bit dữ liệu bên trong mỗi Byte được chuyển ra ngoài theo thứ tự từ LSb cho đến MSb
Hình 3.5: Định dạng trường dữ liệu [1]
Trang 233.3.5 Các trường kiểm độ dư vòng (Cyclic Redundancy Checks)
Các trường kiểm độ dư vòng được dùng để bảo vệ tất cả các trường không phải là trường PID trong các gói mã thông báo và gói dữ liệu Tất cả các CRC được tạo thông qua các trường tương ứng của nó ở bộ phận phát trước khi thực hiện việc nhồi các bit Tương tự như vậy, các CRC được giải mã ở bộ phận nhận sau khi loại bỏ việc nhồi các bit Nếu một CRC bị hỏng thì các trường được bảo vệ bởi CRC đó sẽ bị bên nhận bỏ qua Trong đa số trường hợp thì bên nhận sẽ bỏ qua toàn bộ gói
3.3.5.1 Token CRCs
Một trường CRC 5 bit được cung cấp cho các trường ADDR và điểm cuối của các thông báo IN, SETUP và OUT hoặc cho trường nhãn thời gian của thông báo SOF Các thông báo đặc biệt PING và SPLIT cũng được bảo vệ trong một trường CRC 5 bit Đa thức sinh có dạng:
3.4 Các định dạng gói
Phần này sẽ trình bày về dịnh dạng gói của các loai gói sau: gói thông báo (token packet), gói dữ liệu (data packet) và gói bắt tay (handshake packet)
Trang 24Các trường trong mỗi gói sẽ được thể hiện trong các hình vẽ theo đúng thứ tự
mà chúng được dịch ra bus
3.4.1 Các loại gói thông báo
Hình 3.6 chỉ ra khuôn dạng các trường cho một gói thông báo Các gói thông báo bao gồm 1 trường PID chỉ rõ đây là loại gói IN, OUT hay SETUP, ngoài ra còn có các trường ADDR và ENDP Gói thông báo đặc biệt PING cũng có khuôn dạng tương tự như trên Đối với các giao tác OUT và SETUP thì các trường địa chỉ và điểm cuối chỉ để chỉ ra điểm cuối sẽ nhận gói dữ liệu theo sau Đối với giao tác IN thì các trường này sẽ chỉ ra điểm cuối nào sẽ gửi một gói dữ liệu tới Host Còn đối với giao tác PING thì các trường này chỉ ra điểm cuối sẽ đáp ứng lại với một gói bắt tay Chỉ có Host mới có thể phát ra các gói thông báo Một IN PID chỉ ra một giao tác dữ liệu từ chức năng tơi Host Các PID loại OUT và SETUP chỉ ra giao tác dữ liệu từ Host tới chức năng Một PID loại PING chỉ ra một giao tác bắt tay từ chức năng gửi tới Host
Hình 3.6: Khuôn dạng gói thông báo [1]
Các gói thông báo có trường CRC 5 bit để bảo vệ cho các trường ADDR
và ENDP như hình trên Trường CRC không bảo vệ cho trường PID bởi trường PID đã có một trường kiểm tra riêng cho chính bản thân nó
3.4.2 Các loại gói thông báo đặc biệt của giao tác phân chia
USB định nghĩa một gói thông báo đặc biệt cho giao tác phân chia đó là SPLIT Đây là một gói thông báo 4 byte khác với 3 byte của một gói thông báo thông thường Gói thông báo giao tác phân chia cung cấp các dạng giao tác bổ sung với thông tin chỉ rõ giao tác được thêm vào Thông báo giao tác phân chia
Trang 25được sử dụng để hỗ trợ việc phân biệt giữa quá trình giao tiếp của bộ điều khiển host với hub tại tốc độ cao với quá trình giao tiếp của hub với các thiết bị toàn tốc hoặc tốc độ thấp gắn với hub Do việc giao tiếp giữa bộ điều host và hub thường được đảm nhiệm bởi chip trên main board nên ở đây ta không đề cập sâu thêm vấn đề này (chi tiết về vấn đề này có thể tham khảo tại mục 8.4.2 của tài liệu [1])
3.4.3 Gói bắt đầu khung SOF (Start-of-Frame Packet)
Các gói SOF được phát ra bởi máy chủ host với tốc độ thường là khoảng
1 ms ±0.0005ms một lần cho bus toàn tốc và khoảng 125 µs ±0.0625 µs cho bus tốc độ cao Các gói SOF gồm một PID chỉ ra loại gói và theo sau đó là trường số khung 11 bit, cuối cùng là CRC 5 bit
Hình 3.7: Khuôn dạng gói SOF
Thông báo SOF bao hàm một giao tác đánh dấu điểm bắt đầu khung và
số khung đáp ứng khoảng cách thời gian chính xác để bắt đầu một khung khác Các chức năng toàn tốc và tốc độ cao bao gồm cả hub sẽ là nơi nhận gói SOF
và dù nhận được hay không, đúng hay sai thì cũng sẽ không có bất kỳ thông tin phản hồi nào về việc đó tới Host
3.4.4 Gói dữ liệu
Một gói dữ liệu bao gồm một trường PID 8 bit, tiếp là trường dữ liệu (có thể từ 0 byte tới 1024 byte) và cuối cùng là trường CRC 16 bit Trường CRC chỉ được tạo từ trường dữ liệu mà không tính cả trường PID Kích thước tải tin tối đa cho phép đối với thiết bị tốc độ thấp là 8 byte, với thiết bị toàn tốc là
Trang 261023 byte và với thiết bị tốc độ cao là 1024 byte Kích thước của phần tải tin (DATA) phải là một số nguyên lần của một byte
Hình 3.8: Khuôn dạng gói dữ liệu [1]
3.4.5 Các loại gói bắt tay
Các gói bắt tay (handshake packets) chỉ có một trường PID Các gói bắt tay này được dùng để báo tình trạng của một giao tác dữ liệu và có thể trả về những giá trị để cho biết quá trình tiếp nhận dữ liệu thành công, chấp nhận lệnh hoặc từ chối lệnh, điều khiển luồng và dừng hoạt động Các tín hiệu bắt tay thường được trả về trong các pha bắt tay của một giao tác hoặc có thể được trả
về ngay trong pha dữ liệu bằng cách gửi thông tin bắt tay thay vì gửi dữ liệu Các gói bắt tay được phân định bởi một EOP theo ngay sau chỉ một byte Nếu việc giải mã PID bắt tay đem lại giá trị hợp lệ cho một gói bắt tay song lại không kết thúc bởi một EOP thì phía thu coi như gói không hợp lệ và bỏ qua
Hình 3.9: Gói bắt tay [1]
Có tất cả là 5 loại gói bắt tay:
• ACK: Tín hiệu bắt tay này báo rằng gói dữ liệu nhận được mà không
có lỗi nhồi bit hoặc các lỗi CRC ở trường dữ liệu và PID của gói nhận được là đúng đắn ACK có thể được phát ra khi chuỗi bit phù hợp và bên nhận có thể nhận dữ liệu, cũng như khi chuỗi bit không phù hợp và bên phát và bên thu phải đồng bộ lại lẫn nhau Một gói ACK chỉ được ứng dụng trong các giao tác
mà dữ liệu đã được truyền đi và đang mong chờ tín hiệu bắt tay trả lời ACK có
Trang 27thể được trả về bởi host trong giao tác IN và được trả về bởi chức năng cho các giao tác OUT, SETUP hoặc PING
• NAK: Tín hiệu bắt tay này chỉ ra rằng một chức năng chưa cho phép
nhận dữ liệu từ host trong giao tác OUT hoặc một chức năng không có dữ liệu
để gửi tới Host trong giao tác IN NAK có thể chỉ được trả về bởi chức năng trong pha dữ liệu của giao tác IN hoặc pha bắt tay của giao tác OUT hoặc PING Host có thể không bao giờ phát NAK Ngoài ra, tín hiệu bắt tay NAK còn được sử dụng cho những mục đích điều khiển luồng để báo rằng một chức năng tạm thời không thể truyền hoặc nhận dữ liệu, nhưng chức năng đó sẽ dần dần có khả năng để truyền hoặc nhận dữ liệu mà không cần sự can thiệp của host
• STALL: tín hiệu bắt tay này được trả về bởi một chức năng trong đáp
ứng một thông báo IN hoặc sau pha dữ liệu của một giao tác OUT hoặc trong đáp ứng một giao tác PING STALL chỉ ra rằng chức năng chưa cho phép truyền hay nhận dữ liệu hoặc một nhu cầu ống điều khiển không được hỗ trợ Trạng thái của một chức năng sau khi trả về một gói STALL không được định nghĩa (đối với bất kỳ một điểm cuối nào trừ điểm cuối mặc định) Host không được phép trả lại một gói STALL trong bất kỳ tình huống nào
Gói bắt tay STALL được sử dụng bởi một thiết bị do một trong hai nguyên nhân sau:
- Nguyên nhân thứ nhất được gọi là “Functional Stall”, đặc tính dừng này liên quan đến việc thiết lập điểm cuối của cuộc truyền Một trường hợp đặc biệt của function stall là “Commanded stall”, nó xảy
ra khi mà host dứt khoát thiết lập đặc tính dừng trên điểm cuối Một điểm cuối của chức năng mà bị dừng thì nó liên tục trả về gói bắt tay STALL cho đến khi tình trạng đó chấm dứt nhờ sự can thiệp của host
- Nguyên nhân thứ hai được gọi là “Protocol Stall” Protocol stall chỉ liên quan tới các ống điều khiển Một protocol STALL được trả về trong giai đoạn dữ liệu hoặc giai đoạn trạng thái của truyền điều
Trang 28khiển và trạng thái STALL kết thúc tại thời điểm bắt đầu của truyền điều khiển tiếp theo (trong giao tác SETUP)
• NYET: Đây chỉ là gói bắt tay cho truyền tốc độ cao và được trả về
trong hai trường hợp Nó được trả về bởi một điểm cuối tốc độ cao như một phần của giao thức PING NYET cũng có thể được trả về bởi một hub trong đáp ứng giao tác phân chia khi giao tác tốc độ thấp hoặc toàn tốc chưa hoàn thành hay khi hub không có khả năng điều khiển giao tác phân chia
• ERR: Đây cũng là một gói bắt tay tốc độ cao được trả về để cho phép
một hub tốc độ cao thông báo một lỗi trên bus toàn tốc hoặc tốc độ thấp
3.4.6 Các đáp ứng bắt tay
Các chức năng truyền và nhận phải trả về các tín hiệu bắt tay dựa trên thứ tự của các mức ưu tiên được trình bày chi tiết trong các bảng 3.2 đến 3.4 Các tín hiệu bắt tay trả về phụ thuộc vào kiểu của giao tác và phụ thuộc vào tín hiệu bắt tay do chức năng hay host đưa ta Chú ý rằng nếu một lỗi xuất hiện trong thời gian truyền mã thông báo tới chức năng thì chức năng sẽ không trả lời với bất kỳ gói nào cho đến khi mã thông báo tiếp theo được nhận và giải mã thành công
3.4.6.1 Đáp ứng của chức năng đối với giao tác IN
Bảng 3.2 chỉ ra các đáp ứng có thể có của một chức năng với một thông báo IN Nếu chức năng không có khả năng gửi dữ liệu thì dựa vào nguyên nhân
là tình trạng dừng hay ống điều khiển không được hỗ trợ mà nó phát một STALL hay một NAK Nếu thông báo nhận được bị hỏng thì chức năng sẽ không trả lại một gói bắt tay nào
Bảng 3.2: Đáp ứng của chức năng cho giao tác IN [1]
Thông báo
được nhận bị
hỏng
Đặc tính dừng điểm cuối
Chức năng có thể phát dữ liệu Hành động tương ứng
Có Không quan tâm Không quan tâm Không trả lại gói bắt
tay nào cả Không Được thiết lập Không quan tâm Phát gói bắt tay
Trang 29STALL Không Không thiết lập Không Phát gói bắt tay NAK Không Không thiết lập Có Phát gói dữ liệu
3.4.6.2 Đáp ứng của host cho giao tác IN
Bảng 3.3 chỉ ra đáp ứng của host cho giao tác IN Host chỉ có thể trả lại một loại gói bắt tay duy nhất đó là ACK Nếu host nhận được một gói dữ liệu hỏng nó sẽ loại bỏ và không đưa ra đáp ứng Nếu host không thể nhận dữ liệu
từ một chức năng (ví dụ như do tràn bộ đệm) thì tình trạng này được coi như là một lỗi và host cũng sẽ không đưa ra đáp ứng nào Nếu host có thể nhân dữ liệu
và gói dữ liệu mà nó nhận được không có lỗi thì host chấp nhận dữ liệu và phát một gói bắt tay ACK
Bảng 3.3: Đáp ứng của host cho giao tác IN [1]
Gói dữ liệu bị
hỏng Host có thể nhận dữ liệu Gói bắt tay được trả lại bởi Host
Có Không quan tâm Huỷ dữ liệu, không trả lại đáp ứng bắt tay nào cả
ứng bắt tay nào cả
3.4.6.3 Đáp ứng của chức năng cho giao tác OUT
Đáp ứng bắt tay của chức năng cho một giao tác OUT được chỉ ra trong bảng 3.4 Giả thiết rằng việc giải mã đối với mã thông báo thành công thì chức năng sẽ dựa trên các gói dữ liệu nhận được mà có thể trả lại bất kỳ một trong ba loại gói bắt tay Nếu gói dữ liệu bị hỏng thì không trả lại bắt tay Nếu gói dữ liệu nhận được không có lỗi và điểm cuối của chức năng nhận bị dừng thì chức năng sẽ trả lại tín hiệu bắt tay STALL Nếu giao tác đang duy trì chuỗi bit đồng
bộ và phát hiện ra sự không phù hợp thì chức năng đáp ứng bằng một gói ACK
và huỷ bỏ dữ liệu Nếu chức năng có thể nhận dữ liệu và dữ liệu nhận được không có lỗi thì nó trả lại một gói ACK Nếu chức năng không thể nhận dữ liệu
vì lý do điều khiển luồng nó sẽ đáp trả gói NAK
Trang 30Bảng 3.4: Đáp ứng của chức năng cho giao tác OUT [1]
STALL
Không Không thiết
Không Không thiết
lập
Không Không thiết
3.4.6.4 Đáp ứng của chức năng cho giao tác SETUP
SETUP được định nghĩa là một dạng đặc biệt của giao tác dữ liệu từ Host tới chức năng SETUP cho phép host khởi tạo một đồng bộ bít tới các điểm cuối của host Từ việc nhận một thông báo SETUP một chức năng nào đó buộc phải chấp nhận dữ liệu Một chức năng có thể không đáp ứng thông báo SETUP bởi một gói bắt tay STALL hay NAK song chức năng đang có nhiệm
vụ nhận dữ liệu thì phải chấp nhận gói dữ liệu theo sau thông báo SETUP Nếu một điểm cuối đang không chịu điều khiển nhận một thông báo SETUP nó phải
bỏ qua giao tác và không đưa ra đáp ứng bắt tay nào cả
3.5 Các chuỗi gói giao tác
Các gói của một giao tác sẽ biến thiên dựa vào loại điểm cuối Có 4 loại điểm cuối là: khối (bulk), điều khiển (control), ngắt (interrupt) và đẳng thời (isochronous)
3.5.1 Các giao tác khối
Các loại giao tác khối được đặc trưng bởi khả năng bảo đảm phân phát
dữ liệu không có lỗi giữa host và một chức năng bằng cách bắt lỗi và thử lại Các giao tác khối sử dụng một giao tác ba pha gồm gói thông báo, gói dữ liệu,
Trang 31gói bắt tay như được trình bày trong hình 3.10 Trong những điều kiện dừng và điều khiển luồng nào đó thì pha dữ liệu có thể được thay thế bởi pha bắt tay kết quả là có một giai tác 2 pha và sẽ không có dữ liệu được truyền Các gói PING
và NYET chỉ được sử dụng với các thiết bị tốc độ cao
Hình 3.10: Khuông dạng giao tác khối [1]
Khi host sẵn sàng để nhận dữ liệu khối lớn thì nó phát ra một thông báo
IN Điểm cuối chức năng đáp ứng lại bằng một gói dữ liệu hoặc sẽ đáp ứng lại bằng gói bắt tay NAK hay STALL nếu chức năng chưa có khả năng đáp ứng lại bằng dữ liệu Gói NAK chỉ ra rằng chức năng tạm thời chưa có khả năng trả về
dữ liệu (ví dụ: chưa có dữ liệu để truyền tới host), trong khi STALL chỉ ra rằng điểm cuối thường xuyên bị dừng và yêu cầu có sự can thiệp của phần mềm hệ thống USB Nếu host nhận được một gói dữ liệu hợp lệ nó sẽ đáp ứng với một gói bắt tay ACK Nếu host phát hiện thấy lỗi khi nhận dữ liệu thì nó không đưa
ra đáp ứng tới chức năng
Khi host sẵn sàng để phát một khối dữ liệu thì ban đầu nó phát ra một gói thông báo OUT và theo ngay sau là một gói dữ liệu ( ngoài ra ban đâu nó còn có thể phát một gói thông báo đặc biệt PING) Nếu chức năng nhận dữ liệu
mà không có lỗi thì nó sẽ trả lời bằng một trong ba (hoặc là 4 bao gồm NYET đối với thiết bị làm việc ở tốc độ cao) gói bắt tay:
• ACK để cho biết gói dữ liệu nhận được không có lỗi và host có thể gửi gói tiếp theo
Trang 32• NAK để chỉ ra rằng gói dữ liệu đã nhận không có lỗi nhưng host nên gửi lại dữ liệu vì chức năng đang tạm thời ở trong tình trạng không cho phép nhận dữ liệu (ví dụ như tràn bộ đệm)
• Nếu điểm cuối bị dừng thì STALL được trả về để báo cho host rằng không nên cố thử lại giao tác bởi vì có tình trạng lỗi tại chức năng
Nếu gói dữ liệu đã nhận có lỗi CRC hoặc lỗi nhồi bít thì sẽ không có đáp ứng nào từ phía chức năng
Hình 3.11 cho thấy chuỗi đọc và ghi dữ liệu truyền khối Host luôn bắt đầu giao tác đầu tiên bằng một DATA0 PID giao tác tiếp theo sẽ là một DATA1 PID nếu bên phát dữ liệu nhận được gói ACK Còn về phía thu thì khi nhận một gói dữ liệu thành công nó sẽ hiểu là gói dữ liệu tiếp theo sẽ có DATA PID trái với DATA PID của gói nó vừa nhận
Hình 3.11: Đọc và ghi truyền khối [1]
3.5.2 Các giao tác truyền điều khiển
Các giao tác truyền điều khiển có tối thiểu hai giai đoạn giao tác là Setup và Status Truyền điều khiển có thể tuỳ chọn có hay không một giai đoạn
dữ liệu ở giữa giai đoạn Setup và giai đoạn Status Trong suốt giai đoạn Setup, một giao tác Setup được sử dụng để truyền thông tin tới điểm cuối điều khiển của một chức năng Hình 3.12 cho thấy khuôn dạng giao tác Setup Một giao tác Setup luôn sử dụng một DATA0 PID cho trường dữ liệu của giao tác Setup Một chức năng có nhiệm vụ nhận một giao tác Setup phải chấp nhận dữ liệu của gói Setup và đáp ứng lại một gói ACK Nếu dữ liệu bị hỏng thì huỷ bỏ dữ liệu và không trả lại đáp ứng bắt tay
Trang 33Hình 3.12: Giao tác SETUP điều khiển [1]
Trong giai đoạn dữ liệu, nếu nó được diễn ra thì đối với truyền điều khiển sẽ gồm một hay nhiều giao tác IN hoặc OUT và có luật giao thức tương
tự như truyền khối Tất cả các giao tác trong giai đoạn dữ liệu phải có cùng hướng (hoặc tất cả dữ liệu là IN hoặc tất cả dữ liệu là OUT) Số lượng dữ liệu được gửi trong giai đoạn dữ liệu và hướng của nó đã được chỉ rõ trong giai đoạn Setup Nếu lượng dữ liệu vượt quá kích thước cho phép của một gói dữ liệu thì dữ liệu sẽ được gửi trong nhiều giao tác IN hoặc OUT
Giai đoạn Status của truyền điều khiển là giao tác cuối cùng của chuỗi các giao tác Giai đoạn Status cho các thiết bị làm việc ở tốc độ cao còn bao gồm giao thức PING Giai đoạn Status được chỉ ra bởi một sự thay đổi về hướng của luồng dữ liệu so với giai đoạn trước đó và luôn sử dụng một DATA1 PID Ví dụ nếu giai đoạn dữ liệu bao gồm các giao tác OUT thì giai đoạn Status sẽ là một giao tác IN Nếu chuỗi điều khiển không có giai đoạn dữ liệu thì nó bao gồm một giai đoạn Setup được theo sau bởi một giai đoạn Status gồm một giao tác IN
Hình 3.13 cho thấy thứ tự các giao tác, giá trị chuỗi bit dữ liệu và loại PID dữ liệu cho chuỗi đọc và ghi điều khiển
Trang 34Hình 3.13: Chuỗi điều khiển đọc và ghi [1]
Khi một gói bắt tay STALL được gửi bởi một điểm cuối điều khiển trong giai đoạn dữ liệu cũng như giai đoạn Status của một truyền điều khiển thì gói bắt tay STALL phải được trả lại trên tất cả các truy cập thành công tới điểm cuối cho đến khi một SETUP PID được nhận Điểm cuối không bị yêu cầu trả lại một gói bắt tay STALL sau khi nó nhận một SETUP PID Một mặc định đối với điểm cuối đó là nếu một gói bắt tay ACK được trả lời cho giao tác SETUP thì host chờ đợi điểm cuối tự động khôi phục để thoát khỏi trạng thái gây ra STALL và điểm cuối phải làm việc một cách bình thường
3.5.3 Các giao tác ngắt
Các giao tác ngắt có thể gồm giao tác IN hoặc OUT Dựa trên việc nhận một thông báo IN, thì một chức năng có thể trả lời bằng một gói dữ liệu, một NAK hay một STALL Nếu điểm cuối không có thông tin ngắt mới để trả lời thì chức năng trả lời bằng một gói bắt tay NAK trong pha dữ liệu Nếu trạng thái dừng được thiết lập cho điểm cuối ngắt thì chức năng sẽ trả lại một gói bắt tay STALL Nếu một ngắt chưa quyết định thì chức năng sẽ trả lại thông tin ngắt như một gói dữ liệu Host trong đáp ứng nhận gói dữ liệu sẽ trả lời bằng một gói ACK nếu dữ liệu được nhận không có lỗi và trả lời một gói bắt tay nào nếu dữ liệu nhận được có lỗi Hình 3.14 cho thấy khuôn dạng giao tác ngắt
Trang 35Hình 3.14: Khuôn dạng giao tác ngắt [1]
3.5.4 Các giao tác đẳng thời
Các giao tác đẳng thời có một pha thông báo và một pha dữ liệu, không
có pha bắt tay như được thấy trong hình 3.15 Host phát ra một thông báo IN hoặc OUT và theo sau là pha dữ liệu trong pha dữ liệu thì điểm cuối (đối với giao tác IN) hoặc host (đối với giao tác OUT) sẽ phát dữ liệu Các giao tác đẳng thời không hỗ trợ pha bắt tay cũng như khả năng thử lại
Hình 3.15: Khuông dạng giao tác đẳng thời [1]