Đồ án tốt nghiệp Mở đầu Lê Ngọc Du - Lớp ĐT7 - K46 - ĐHBKHN 1
Chươ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.
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.
Đồ án tốt nghiệp Mở đầu Lê Ngọc Du - Lớp ĐT7 - K46 - ĐHBKHN 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
Đồ án tốt nghiệp Sơ lược về chuẩn USB 2.0 Lê Ngọc Du - Lớp ĐT7 - K46 - ĐHBKHN 5 PHẦN I: SƠ LƯỢC VỀ CHUẨN
USB 2.0
Đồ án tốt nghiệp Sơ lược về chuẩn USB 2.0
Đồ án tốt nghiệp Sơ lược về chuẩn USB 2.0 Lê Ngọc Du - Lớp ĐT7 - K46 - ĐHBKHN 7 1.3 Mô tả hệ thống USB
Một hệ thống USB được mô tả bởi ba định nghĩa:
- Kết nối USB
- Các thiết bị USB
- USB host
•Kết nối USB được hiểu là kiểu kết nối mà trong đó các thiết bị USB
được kết nối và giao tiếp với máy tính chủ. Kết nối USB bao gồm các vấn đề
sau:
+ 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.
ISDN, digital joystick, hoặc speakers.
-Thiết bị hiểu được giao thức USB
Đồ án tốt nghiệp Sơ lược về chuẩn USB 2.0 Lê Ngọc Du - Lớp ĐT7 - K46 - ĐHBKHN 9
1.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, V
bus
và GND để cấp nguồn cho thiết bị ( Thường thì V
bus
=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.
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à 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ị.
Đồ án tốt nghiệp Sơ lược về chuẩn USB 2.0 Lê Ngọc Du - Lớp ĐT7 - K46 - ĐHBKHN 11
USB Driver, Host Controller Driver và Host software).
- Phần mềm khách (client software).
Hình 2.2: Kết cấu Host [1]
2.2.2 Các thiết bị USB
Kết cấu logic của một thiết bị USB vật lý được chỉ ra trong hình 2.3
gồm :
- Giao diện bus USB.
- Thiết bị USB logic.
- Chức năng.
Đồ án tốt nghiệp Sơ lược về chuẩn USB 2.0 Lê Ngọc Du - Lớp ĐT7 - K46 - ĐHBKHN 13
Hì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
Lê Ngọc Du - Lớp ĐT7 - K46 - ĐHBKHN 15
2.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
Đồ án tốt nghiệp Sơ lược về chuẩn USB 2.0
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
Đồ án tốt nghiệp Sơ lược về chuẩn USB 2.0 Lê Ngọc Du - Lớp ĐT7 - K46 - ĐHBKHN 17
dữ 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.
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.
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]
Đồ án tốt nghiệp Sơ lược về chuẩn USB 2.0 Lê Ngọc Du - Lớp ĐT7 - K46 - ĐHBKHN 19
Đồ án tốt nghiệp Sơ lược về chuẩn USB 2.0 Lê Ngọc Du - Lớp ĐT7 - K46 - ĐHBKHN 20
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
)
Mô tả
Thông
báo
OUT IN SOF
từ host tới chức năng qua một ống
điều khiển
Dữ liệu
DATA0
DATA1
DATA2 MDATA 0011B
1011B
0111B 1111B 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ắt tay
ACK
PING Reserved
1100B
1100B 1000B
0100B 0000B
Đ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
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]
Đồ án tốt nghiệp Sơ lược về chuẩn USB 2.0 Lê Ngọc Du - Lớp ĐT7 - K46 - ĐHBKHN 22
3.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
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:
G(X)=X
5
+X
2
+1.
Mẫu bit biểu diễn cho đa thức này là 00101B. Nếu tất cả các thông báo
được nhận mà không có lỗi thì 5 bit tương ứng nhận được ở phía thu là 01100B.
3.3.5.2 Data CRCs
CRC dữ liệu gồm 16 bit bảo vệ cho trường dữ liệu của một gói dữ liệu.
Đa thức sinh là:
G(X)=X
16
+X
15
+X
2
+1
Mẫu bit biểu diễn cho đa thức này là 1000000000000101B. Nết tất cả dữ
liệu và các bit CRC được nhận đúng thì 16 bit tương ứng phía thu sẽ
là:1000000000001101B.
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).
Đồ án tốt nghiệp Sơ lược về chuẩn USB 2.0
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
Đồ án tốt nghiệp Sơ lược về chuẩn USB 2.0 Lê Ngọc Du - Lớp ĐT7 - K46 - ĐHBKHN 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.