Bạn tham khảo bài viết của pham_v_quang3idiễn đàn dientuvietnam nhé!
Tôi rất thích lĩnh vực ghép nối máy tính . Nhưng do khả năng có giới hạn nên chưa làm được nhiều việc. Tôi mạo muội đang đồ án USB của tôi . Mong mọi người đừng cười vì tôi làm nó năm thứ 3 đại học . Tôi định định hoàn thiện một cách chi tiết chuẩn USB nhưng điều kiện chưa cho phép . Mong các " Huynh - Đệ " trao đổi .
1, Chuẩn USB ra đời là một tất yếu
Với tình trạng có nhiều chuẩn như hiện nay , mà chưa có một chuẩn thống nhất nào dẫn đến gây khó khăn cho cả người sử dụng lẫn nhà sản xuất , các chuẩn hiện tại vẫn chưa đáp ứng được nhu cầu ngày càng cao của công nghiệp về mặt kĩ thuật , cũng như về mức tiện lợi khi sử dụng . Vì vậy chuẩn USB ra đời là một tất yếu và để trả lời cho câu hỏi đó . Các dao diện song song , nối tiếp, máy quét hình , máy ảnh số….. đều có thể đấu nối vào bus USB
USB là một chuẩn dữ liệu cho Bus ngoại vi do hai ông “ Vua” Intel phần cứng và Microsoft phần mềm phối hợp phát triển cùng với Compaq, IBM, NEC,Dagital Equipment …… công nghệ này được cung cấp miễn phí
USB được đưa vào sử dụng đầu tiên vào năm 1996 với một vài nhà sản xuất thiết kế cổng USB vào máy tính của mình
Tháng 10-1996 các hệ điều hành Windown cũng đã được cung cấp các driver điều khiển cho usb , cụ thể là trong Windown 98 và các hệ điều hành sau đấy( trên thực tế trong các phiên bản nâng cấp của Windown 95 đã bắt đầu có tính năng hỗ trợ)
Nhưng mãi đến năm 1998 usb mới được hỗ trợ đầy đủ và thể hiện vai trò và khi chiếc máy tính IMAC hỗ trợ usb bán chạy như "tôm tươi " + " Cá basa "thì chuẩn này mới trở nên phổ biến
Các máy tính đời mới đều được trang bị cổng usb , ngoài ra có các card mở rộng để tạo ra các cổng usb trên các máy tính ra đời trước đó ( Như PCI -USB 12$ - Công ty máy tính hà nội , USB-RS232 .....)
Qua ổ cắm USB ở phía sau máy tính có thể lấy ra điện áp +5v với dòng tiêu thụ khoảng 100mA , trong một số trường hợp có thể lấy ra dòng tiêu thụ đến 500mA
Hai đường dẫn dữ liệu D+ và D- là các tín hiệu vi sai với mức điện áp bằng 0/3,3V. Điện áp nguồn nuôi ở bus USB có thể đến +5.25 V
Và khi chụi dòng tải lớn có thể giảm xuống +4.2V, nếu bổ sung một vi mạch ổn áp có thể tạo ra một điện áp ổn định +3.3V
Toàn bộ hệ thống được thiết kế sao cho khi chịu dòng tải lớn điện áp nguồn cũng không vượt quá +4.2V. Khi thiết bị ghép nối cần dòng lớn hơn 100mA cần xem xét kĩ khả năng cung cấp và chịu tảI của các linh kiện trong máy tính
Đấy cũng chính là một trong các ưu điểm của usb là các thiết bị chức năng có thể lấy nguồn nuôi luôn từ host
Phần này là phần Kiến trúc chung của USB . Có 1 số hình ảnh nhưng tôi ko post được .
2, Kiến trúc USB
a, Kiến trúc chung
USB dùng để hỗ trợ việc trao đổi dữ liệu giữa một máy chủ ( host ) với các thiết bị ngoại vi được nối với nó . bus USB cho phép thiết bị ngoại vi được ghép nối với máy tính chủ được cấu hình , được sử dụng một cách độc lập trong khi máy tính chủ và thiết bị ngoại vi khác đang hoạt động ( đó chính là đặc tính Plug-and-Play )
Thiết bị ngoại vi làm việc ở vị trí tớ được nối trực tiếp với máy tính thông qua bộ tiếp nối HUB ( ta sẽ đề cập đến HUB ở phần sau)
Ưu điểm của usb là :
+Ghép nối đơn giản do ổ cám đã được chuẩn hoá
+Linh hoạt trong khi sử dụng
+ Triển khai đơn giản và rẻ tiền
+ Tốc độ tương đối cao so với một số chuẩn đã ra đời và có thể ghép nối nhiều thiết bị ngoại vi cùng một lúc
+ Có đặc tính Plug-and-play người sử dụng có thể cắm thêm hay dỡ bỏ thiết bị ngoại vi mà không cần tắt máy hoặc hkởi động lại hệ thống , thiết bị ngoại vi cũng không cần các bản mạch phụ vì chức năng này được phần mềm hệ thống đảm nhiệm khi phát hiện ra có ngoại vi mới được đấu nối vào thì hệ điều hành sẽ tự động cài đặt các phần mềm điều khiển.
(Sơ đồ cấu trúc ghép nối các thiết bị ngoại vi dùng USB - ko cho được hình ảnh lên )
Về mặt vật lý USB là một kiến trúc tầng sao(tiered star) . Một HUB ở tại trung tâm của mỗi sao , với 7 bit địa chỉ usb cho phép quản lý tối đa 127 thiết bị ngoại vi đây là con số mang tính lý thuyết bởi khi có càng nhiều thiết bị đấu nối thì tốc độ truyền càng chậm do dải thông của toàn bộ bus bị phân chia đến từng thiết bị
b,Chủ USB ( host USB)
Chủ USB chính là máy tính cá nhân với hệ điều hành có khả năng quản lí USB
Một mạng USB chỉ được phép có một chủ USB , máy tính sử dụng phần cứng phần mềm USB để làm việc như một chủ bus . Máy tính nhận biết việc cắm thêm hay dỡ bỏ một thiết bị ngoại vi để khởi động quá trình đánh số và các quá trình truyền dữ liệu khác trong bus. Máy tính cũng có trách nhiệm kiểm tra trạng thái ,thống kê hoạt động và kiểm tra ghép nối điện giữa bộ điều khiển chủ và các thiết bị USB ngoại vi.
c, Thiết bị USB
Các thiết bị USB có chức năng tớ trog mạng bus . Ta chia ra làm hai loại thiết bị USB :
• HUB
Một hub ngoài có một cổng hướng về máy chủ (upstream) và 4 cổng ra thiết bị ghép nối (downstream) trong máy PC cũng có một hub cắm ngay trên bản mạch chính hub này được gọi là hub gốc (roothub)
Hub thường gồm có một bộ điều khiển hub và một bộ nhắc lại (repeater) một hub có chức năng : chuyển một ổ cắm usb thành nhiều ổ cắm, nhận biết các thiết bị mới được đấu vào , xoá đi một
Thiết bị đã đấu nối vào bus nhung sau đấy được tháo ra để thực hiện được việc này có nhữngtrạng thái bus được tạo ra theo cách đặc biệt ( dựa vào mức điẹn áp , ta không đề cập đến kỉ thuật này ở đây)
Có thể nói trái tim của hub chính là vi điều khiển usb 8x930 là loại vi điều khiển 8 bit với bộ nhớ và cổng ngoại vi được cấy ở bên trong vi điều khiển này có thể xử lí được cả 4 loại truyền dữ liệu : điều khiển , ngắt đồng bộ cách biệt và khối. Truyền dữ liệu giữa thiết bị và máy chủ được thực hiện thông qua một cặp điểm cuối trong vi điều khiển này mỗi điểm cuối được trang bị một bộ đệm fifo phát và fifo thu . Tuỳ vào các ứng dụng mà ta cần các fifo có dung lượng khác nhau
Hoạt động của bộ điều khiển USB được lập trình thông qua các thanh ghi chức năng đặc biệt ., giao thức USB được cấy bên trong ROM của 8x930 vì vậy người lập trình không cần quan tâm đến vấn đề này
•Thiết bị chức năng
Là các thiết bị ngoại vi như : chuột, bàn phím. Màn hình, máy quét, ADC, vi điều khiển ……mọi thiết bị chức năng của bus đều phải theo các qui định của usb để máy chủ có thể nhận biết được chúng
Mọi thiết bị usb đều được thiết kế gồm 3 phần chính :
+ Phần dao diện tuần tự SIE là vi mạch chịu trách nhiệm nhận và gửi dữ liệu theo chuẩn USB
+ Một tổ hợp giũa phần cứng và firmware nhận nhiệm vụ truyền dữ liệu giữa khối SIE và điểm cuối của thiết bị qua các đường ống (pipe) thích hợp của chúng
+ Thành phần thứ 3 là phần chức năng của thiết bị ngoại vi
Ta cần hiểu rõ 2 khái niệm điểm cuối và đường ống
* Điểm cuối là đầu nguồn hay đầu phát của một thiêt bị ngoại vi , một thiết bị ngoại vi có thể có nhiều điểm cuối nó chỉ ra dữ liệu cần thiết được dẫn tới đâu hoặc cần phải đón nhận từ đâu , nó làm cho thiết bị được định địa chỉ một cách linh hoạt
ví dụ như chuột usb chẳng hạn có một điểm cuối 0 , một điểm cuối 1. Điểm cuối 0 được sử dụng khi khởi tạo các dữ liệu hữu ích được bộ vi điều khiển ghi trên một khoảng cách định trước tính theo điểm cuối 1 và từ đó máy PC đọc vào
Mỗi điểm cuối thiết bị thưòng tương ứng với một fifo đóng vai trò trung gian giữa các cuộc truyền , nhận dữ liệu giữa khối SIE và phần còn lại của thiết bị
*Một đường ống là một kênh logic dẫn tới một điểm cuối trong một thiết bị , ta có thể hình dung đường ống như một kênh dữ liệu được hình thành từ một dây dẫn riêng lẻ . Nhưng trên thực tế dữ liệu được truyền trên đường ống dưới dạng các gói dữ liệu trong một khung truyền chiếm hàng mili giây và được phần cứng phân
phát thông qua địa chỉ điểm cuối . Một thiết bị có thể sử dụng nhiều đường ống đồng thời vì thế tốc độ truyền dữ liệu tổng cộng được nâng lên . Nói cách khác
Đường ống là phần mềm quản lý điểm cuối của thiết bị usb , ta có thể hiểu chúng là những kênh phần mềm được gọi lên trong phần mềm điều hành usb và cónhiệm vụ truyền tin đến những điểm cuối của thiết bị ngọai vi , mọi thiết bị trong bus USB sẽ cùng chia dải tần qua một giao thức khung truy nhập máy chủ.
d, Kết nối các thiết bị USB
Khi có một kết nối đến HUB nó sẽ thông báo đến máy chủ , máy chủ hỏi HUB để xác định nguyên nhân của thông báo , HUB trả lời bằng việc nhận dạng cổng đã kết nối với thiết bị USB . Máy chủ cho phép cổng và định địa chỉ thiết bị USB với một đường ống điều khiển bằng cách sử dụng địa chỉ mặc định USB, tất cả các thiết bị khi đấu nối vào lần đầu đều được nhận một địa chỉ mặc định USB , Host xác định xem thiết bị vừa được đấu nối là HUB hay thiết bị chức năng và gắn cho thiết bị USB một địa chỉ duy nhất
Máy chủ thiết lập một đường ống điều khiển đối với thiết bị USB bằng cách sử dụng địa chỉ USB đã được gán và số 0 điểm cuối
Nếu thiết bị USB là một hub thì khi có một thiết bị USB kết nối vào nó quá trình trên diễn ra liên tục
Nếu thiết bị USB là một thiết bị chức năng thì các thông báo về việc kết nối sẽ được phần mềm usb gửi tới phần mềm máy chủ
e, Loại bỏ các thiết bị USB
Khi một thiết bị USB được gỡ bỏ từ một trong số các cổng của hub thì hub tự động vô hiệu hoá cổng và cung cấp một thông tin cho host báo về việc loại bỏ thiết bị ra khỏi bus
Sau đấy host sẽ loại bỏ các số liệu đã viết về thiết bị vừa dỡ bỏ
Nếu thiết bị usb dỡ bỏ là một hub thì quá trình dỡ bỏ phải được thực hiện với tất cả thiết bị usb mà trước đó đã được đấu nối vào hub
3, Sự điểm danh
Như ta đã biết ở phần trước một ưu điểm đặc biệt của bus USB là khả năng “ cắm là chạy “ ( Plug and Play) đói với thiết bị mới được đấu nối vào bus . Muốn thế hệ thống phải hoạt động trong trạng thái thường xuyên kiểm tra thông tin từ một thiết bị , từ thông tin này thiết bị sẽ được nạp phần mềm điều khiển thich hợp
Khi một thiết bị mới được điểm danh (enumeration) sẽ nhận được một địa chỉ bus và được hỗ trợ qua một phần mềm cụ thể
Việc điểm danh được thực hiện hoàn toàn độc lập bởi hệ điều hành , khi một thiết bị mới được đấu nối vào có thể xảy ra hiện tượng là hệ điều hành yêu cầu cần một đĩa điều khiển thích hợp
Nhưng cũng có nhiều phần mềm điều khiển đã được tích hợp trong hệ thống
Quá trình điểm danh là quá trình hệ điều hành tiến hành kiểm tra các phần cứng mới được đấu nối vào qua thông tin nó thu được từ thiết bị được đấu nối . Thông tin này thường gọi là bản tóm lược
Khi có một thiết bị mới được đáu nối vào bus sau đấy diễn ra các bước sau :
-Hub nhận biết được và nó thông báo với máy chủ là có một thiết bị mới được đấu nối vào
- Máy chủ hỏi lại hub xem thiết bị đã được nối vào cổng nào
- Máy chủ khi này biết thiét bị đã được nối vào cổng nào , nó sẽ đưa ra một lệnh nối đến cổng đó và thực hiện một thao tác reset lại bus
- Hub tạo ra một tín hiệu reset với độ dài 10 ms và cấp một dòng điện với cường độ 100mA cho thiết bị . Bây giờ thiết bị đã sẵn sàng hoạt động và trả lời bằng một địa chỉ mặc định 0
- Trước khi nhận được một địa chỉ riêng thì thiết bị vẫn được trao đổi với host thông qua địa chỉ mặc định . máy chủ đọc byte đầu tiên của bản tóm lược, để xem độ lớn bản tóm lược là bao nhiêu
- Máy chủ gán cho thiết bị một địa chỉ bus riêng
- Qua địa chỉ mới máy chủ đọc tất cả các thông tin cấu hình có từ thiết bị
- Qua đó máy chủ sẽ gán cho thiết bị một phần điều khiển phù hợp nếu có thể . Bây giờ thiết bị sẽ được phép lấy ra dòng điện tiêu thụ như trong bản tóm lược đã nêu . Như vậy là thiết bị và máy chủ đều đã sẵn sàng trao đổi
Mỗi thiết bị có các thông số như : mã giao thức , nhà sản xuất , loại thiết bị ,độ lớn fifo, dồng tiêu thụ………..
Tất cả các thông tin này được lưu trong ROM của thiết bị khi thiết bị được đấu nối vào vi điều khiển của hub sẽ đọc các thông tin này và truyền cho máy chủ . Để máy chủ có những điều khiển phù hợp
4,Các kiểu truyền USB
Truyền dữ liệu usb là giai đoạn nằm giữa phần mềm máy chủ và điểm cuối của thiết bị ngoại vi . Thông tin có thể đi theo một chiều hoặc 2 chiều . Máy chủ xử lí việc trao đổi dữ liệu với từng thiết bị ngoại vi một cách độc lập . USB quản lí 4 kiểu truyền dữ liệu
- Truyền điều khiển ( control transfer ): là truyền theo kiểu 2 chiều, kiểu truyền này đượ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 gói khung , tiếp theo là gói dữ liệu và kết thúc là gói bắt tay . Mọi thiêt bị ngoại vi USB đều phải xử lí được kiểu truyền này
- Truyền ngắt : Là truyền một chiều . Các thiết bị cung cấp một lượng dữ liệu nhỏ tuần hoàn như : chuột , bàn phím, joystick . Vì máy tính 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 , tức theo chu kì hệ thống sẽ hỏi ( 10ms chẳng hạn ) xem có dữ liệu mới được gửi đến không. Giao thức này khởi động bằng một khung 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 nếu có ngắt ngoại vi trả lời bằng một gói dữ liệu , khi việc nhận dữ liệu đã hoàn thành máy chủ trả lời bằng một ACK , nếu có lỗi không trả 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 hệ thống xử lí
- Truyền đẳng thời: là phương pháp truyền một chiều .Vì thế cuộc truyền cần hai điểm cuối ở thiết bị ngoại vi hoặc hai pipe ở phần mềm máy chủ . Khi có một lượng lớn dữ liệu với tốc độ dữ liệu đã được qui định như card âm thanh , loa , điện thoại sử dụng kiểu truyền này . Theo kiểu truyền này việc khắc phục lỗi không được thực hiện bởi những lỗi truyền lẻ tẻ cũng không ảnh hưởng đáng kể đến chất lượng cuộc truyền
- Truyền theo hkối : Truyền 2 chiều , khi có lượng lớn dữ liệu cần truyền và cần kiểm soát lỗi , nhưng không có yêu cầu thúc ép về thời gian truyền thì sử dụng kiểu truyền này
ví dụ : máy in , máy quét
Đối với các ứng dụng trong đo lường điều khiển kiểu truyền điều khiển thường được sử dụng vì vừa có độ an toàn dữ liệu vừa có tốc độ lớn
5,Giao thức USB( còn nữa )