Thiết kế hệ thống giám sát và điều khiển trực tuyến bằng hình ảnh dựa trên công nghệ FPGA và SystemOn Chip Thiết kế hệ thống giám sát và điều khiển trực tuyến bằng hình ảnh dựa trên công nghệ FPGA và SystemOn Chip luận văn tốt nghiệp thạc sĩ
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
LUẬN VĂN THẠC SĨ KHOA HỌC
THIẾT KẾ HỆ THỐNG GIÁM SÁT VÀ ĐIỀU KHIỂN TRỰC TUYẾN BẰNG HÌNH ẢNH DỰA TRÊN CÔNG NGHỆ
FPGA VÀ SYSTEM-ON-CHIP
NGÀNH: XỬ LÝ THÔNG TIN VÀ TRUYỀN THÔNG
MÃ SỐ:
NGÔ LAM TRUNG
Người hướng dẫn khoa học: TS NGUYỄN KIM KHÁNH
HÀ NỘI - 2006
Trang 2LỜI CẢM ƠN
Đầu tiên, tác giả luận văn xin gửi lời cảm ơn sâu sắc đến thày giáo
TS Nguyễn Kim Khánh Thày là người trực tiếp hướng dẫn tôi thực hiện luận văn thạc sỹ khoa học này Những ý kiến đóng góp, những lời nhắc nhở, động viên chân thành của thày, và đặc biệt là những kinh nghiệm quý báu mà thày chia sẻ với tôi đã giúp đỡ tôi rất nhiều trong thời gian qua
Tiếp theo tôi xin gửi lời cảm ơn chân thành đến đơn vị nơi tôi đang công tác là Bộ môn Kỹ thuật Máy tính, Khoa Công nghệ Thông tin, Đại học Bách khoa Hà Nội Các thày cô trong Ban chủ nhiệm cùng các anh chị em đồng nghiệp tại Bộ môn Kỹ thuật Máy tính đã hết sức thông cảm và nhiệt tình giúp đỡ tạo điều kiện về mặt thời gian và công việc để tôi có thể hoàn thành luận văn này
Tôi cũng xin cảm ơn đơn vị Phòng thí nghiệm trọng điểm Thiết kế điện tử, Đại học Bách khoa Hà Nội, là nơi đã hỗ trợ các công cụ và môi trường làm việc cho tôi trong suốt thời gian thực hiện luận văn
Cuối cùng, tôi xin gửi lời cảm ơn tới gia đình và bạn bè của tôi, những người luôn dành nhiều tình cảm và sẵn sàng chia sẻ mọi khó khăn với tôi, và bằng cách đó đã góp phần làm nên thành công của luận văn này
Trang 3MỤC LỤC
CHƯƠNG 1 ĐẶT VẤN ĐỀ 7
1.1 Giới thiệu tổng quan 7
1.1.1 Định hướng thực hiện luận văn 7
1.1.2 Giới thiệu đề tài 7
1.2 Mô tả hệ thống 8
1.3 Nội dung trình bày trong luận văn 9
CHƯƠNG 2 CÁC VẤN ĐỀ LÝ THUYẾT 10
2.1 Công nghệ System on Chip 10
2.1.1 Khái niệm 10
2.1.2 Một số vấn đề về thiết kế SoC 11
2.1.3 Một số sản phẩm SoC thương mại tiêu biểu 14
2.2 Bộ xử lý nhúng Nios II 16
2.2.1 Soft-core processor 16
2.2.2 Giới thiệu chung về Nios II 17
2.2.3 Kiến trúc phần cứng của Nios II 18
2.3 Giao thức USB 21
2.3.1 Tổng quan về giao thức 22
2.3.2 Mô hình trao đổi dữ liệu và các đặc tả 25
2.3.3 Đặc tả về giao thức 30
2.3.4 Các phương thức truyền 34
2.3.5 Các đặc tả thiết kế mức thấp 37
2.3.6 Mã hoá và đồng bộ 41
CHƯƠNG 3 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 44
3.1 Phân tích tổng quan hệ thống 44
3.1.1 Mô hình hoạt động của hệ thống 44
3.1.2 Các thành phần cơ bản 44
3.1.3 Lựa chọn thiết kế các thành phần 45
3.2 Thiết kế mô hình hệ thống 46
3.2.1 Môi trường phát triển 46
3.2.2 Thiết kế mô hình hệ thống SoC 46
3.3 Thiết kế module USB Host/Device Controller 49
3.3.1 Đặc tả về chức năng của module 49
3.3.2 Đặc tả các giao diện của module 49
3.3.3 Các thành phần chức năng mức cao 51
3.3.4 Các thành phần thực thi mức thấp 61
3.3.5 Mô hình lập trình 69
3.3.6 Mạch USB Transceiver 72
3.4 Thiết kế phần mềm hệ thống 73
3.4.1 Module Host Controller Driver 73
3.4.2 Module giao tiếp camera 76
3.4.3 Module cài đặt TCP/IP stack 78
3.4.4 Module Web Server 81
3.4.5 Module chương trình chính 83
CHƯƠNG 4 THỬ NGHIỆM HỆ THỐNG 86
4.1 Môi trường thử nghiệm 86
4.2 Kết quả tổng hợp hệ thống 86
4.3 Thử nghiệm module USB 88
Trang 4CHƯƠNG 5 KẾT LUẬN 91
5.1 Đánh giá kết quả 91
5.1.1 Những kết quả đạt được 91
5.1.2 Những mặt hạn chế 92
5.2 Kết luận và định hướng phát triển 92
Trang 5DANH MỤC HÌNH VẼ
Hình 2-1: Mô hình một hệ thống SoC 11
Hình 2-2: Mô hình lập phương tài nguyên 12
Hình 2-3: Phân loại các phương pháp lập lịch 13
Hình 2-4: Các kỹ thuật ghép nối 14
Hình 2-5: Sản phẩm Alchemy Au1200 của AMD 14
Hình 2-6: Sơ đồ khối của Alchemy Au1200 15
Hình 2-7: Bộ xử lý Intel PXA27x 15
Hình 2-8: Sơ đồ khối bộ xử lý Intel PXA27x 16
Hình 2-9: Sơ đồ khối bộ xử lý Nios II 18
Hình 2-10: Cấu trúc phần mềm 19
Hình 2-11: Mô hình giao tiếp bộ nhớ của Nios II System 20
Hình 2-12: USB bus topology 22
Hình 2-13-Tín hiệu trên USB bus 23
Hình 2-14-Kiến trúc hoàn chỉnh của một hệ thống USB 25
Hình 2-15-Sơ đồ khối phân tầng của hệ thống USB 26
Hình 2-16-Mô hình của một hostUSB 27
Hình 2-17-Topo vật lí của hệ thống USB 28
Hình 2-18-Topo logic của hệ thống USB 28
Hình 2-19-Các liên kết chức năng giữa host và slave(function) 29
Hình 2-20-Mô hình luồng dữ liệu 29
Hình 2-21-Trường Packet Identifier 30
Hình 2-22-Trường địa chỉ và chỉ số EndPoint 31
Hình 2-23-Trường dữ liệu 32
Hình 2-24-Cấu trúc gói IN, OUT, SETUP token 32
Hình 2-25-Cấu trúc gói SOF 33
Hình 2-26-Cấu trúc gói DATA 33
Hình 2-27-Kịch bản truyền kiểu Bulk 34
Hình 2-28-Luồng dữ liệu trong BulkTransfer 35
Hình 2-29-Kịch bản truyền kiểu Control 35
Hình 2-30-Thứ tự các gói tin trong ControlTransfer 36
Hình 2-31-Kịch bản truyền kiểu Isochronous 37
Hình 2-32-Sơ đồ logic khối truyền nhận tín hiệu vi sai 38
Hình 2-33-Trạng thái đường truyền ứng với tín hiệu Disconnect 38
Hình 2-34-Trạng thái đường truyền của tín hiệu Connect-FullSpeed 39
Hình 2-35- Trạng thái đường truyền của tín hiệu Connect-LowSpeed 39
Hình 2-36-Tín hiệu Reset 39
Hình 2-37-Luồng tín hiệu khi truyền các bit 40
Hình 2-38-Trạng thái đường truyền của EOP 40
Hình 2-39-Mã hóa NRZI 41
Hình 2-40-Quá trình bitStuffing 42
Hình 2-41-Giải thuật Stuffing 42
Hình 2-42-Nhóm bit SYNC 43
Hình 3-1: Mô hình hoạt động của hệ thống 44
Hình 3-2: Sơ đồ tổng quan ghép nối các thành phần trên ASF 47
Hình 3-3: Cấu trúc liên kết hệ thống chi tiết 48
Hình 3-4: Cấu hình các thành phần hệ thống trong SOPC Builder 48
Hình 3-5: Mô hình USBModule nhìn từ mức cao nhất 50
Trang 6Hình 3-7: Mô hình phân tầng chức năng của USBmodule 52
Hình 3-8: Các khối chức năng chính của USBModule 53
Hình 3-9: USB Serial Interface Engine module 53
Hình 3-10: HostSlaveMux module 55
Hình 3-11: USB Host Control module 55
Hình 3-12: Rx FiFo Module 59
Hình 3-13-Tx FiFoModule 60
Hình 3-14: USB Serial Interface Engine 62
Hình 3-15: USB Host Control Module 64
Hình 3-16: USB Slave Control 68
Hình 3-17: Sơ đồ Rx/Tx FiFo module 69
Hình 3-18: Giao tiếp với USB module 69
Hình 3-19: Sơ đồ logic của USB1T11A 72
Hình 3-20: Sơ đồ các tiến trình trong hệ thống 85
Hình 4-1: Cấu hình SoC thử nghiệm 86
Hình 4-2: Giao diện hệ thống giám sát và điều khiển trực tuyến 89
Trang 7DANH MỤC BẢNG
Bảng 1-Các loại PID 31
Bảng 2-Bảng mô tả tín hiệu và trạng thái đường truyền vi sai 37
Bảng 3-Bảng giao diện tín hiệu của USBHostSlave module – toplevel 50
Bảng 4-Giao diện tín hiệu của SIE 54
Bảng 5-Giao diện tín hiệu của USBHostControl 56
Bảng 6-Giao diện tín hiệu của USBSlaveControl 58
Bảng 7-Giao diện tín hiệu của RxFiFo 59
Bảng 8-Giao diện tín hiệu của TxFiFo 60
Bảng 9-Các thanh ghi của USB Module 72
Bảng 10: Hàm giao tiếp giữa Nios và Host Controller 74
Bảng 11: Hàm cấu hình Host Controller và điều khiển đường truyền 75
Bảng 12: Danh mục hàm hỗ trợ giao thức USB trên Host Controller 76
Bảng 13: Danh mục hàm giao tiếp camera 78
Bảng 14: Tập hàm API cung cấp bởi LWIP 81
Bảng 15: Danh mục hàm thao tác với hệ thống file trên RAM 82
Bảng 16: Danh mục hàm cài đặt Web Server 83
Bảng 17: Kết quả tổng hợp hệ thống thử nghiệm 87
Trang 8CHƯƠNG 1 ĐẶT VẤN ĐỀ
1.1.1 Định hướng thực hiện luận văn
Sự phát triển bùng nổ của công nghệ thông tin trong những năm gần đây đã dẫn đến những thay đổi mạnh mẽ trong đời sống kinh tế xã hội của toàn thế giới Trong luồng phát triển ấy, có hai lĩnh vực đóng vai trò rất quan trọng là công nghệ truyền thông và công nghiệp điện tử
Sự phát triển của công nghệ truyền thông đã góp phần làm thay đổi hoàn toàn cách thức truy cập thông tin của con người Với mạng lưới đường truyền rộng khắp có tốc độ cao, giá thành rẻ và các giao thức truyền tin hiện đại như TCP/IP, HTTP… con người có thể truy cập tới các nguồn thông tin ở bất kỳ đâu, không phụ thuộc vào khoảng cách và vị trí địa lý
Cùng với các công nghệ truyền thông, nền công nghiệp điện tử và công nghệ thiết
kế bán dẫn đã phát triển hết sức nhanh trong thời gian gần đây và tạo ra sản phẩm là các chip bán dẫn, các bộ xử lý có tốc độ ngày càng cao và đa năng hơn Từ đó đã dẫn tới sự thay đổi mang tính cách mạng ở một loạt lĩnh vực có liên quan, trong đó tiêu biểu là công nghệ nhúng
Ngày nay, công nghệ nhúng kết hợp với công nghệ truyền thông đã tạo ra các hệ thống nhúng hiện đại vừa có hiệu năng cao, lại được trang bị các chuẩn truyền thông thế hệ mới Các hệ thống nhúng này được phát triển để thực hiện các ứng dụng ngày càng phức tạp hơn nhằm đáp ứng nhu cầu của người dùng
Luận văn tốt nghiệp cao học này được thực hiện nhằm hướng tới hai mục đích Mục đích thứ nhất là nghiên cứu sự phát triển của các hệ thống nhúng hiện đại cùng các vấn đề liên quan tới quy trình thiết kế một hệ thống nhúng hiệu năng cao Mục đích thứ hai là áp dụng các nghiên cứu đó để phát triển một sản phẩm nhúng có khả năng ứng dụng trong thực tế
1.1.2 Giới thiệu đề tài
Trong thời gian qua, một sản phẩm kết hợp giữa công nghệ nhúng và công nghệ truyền thông đã bắt đầu được phát triển và ứng dụng rộng rãi là các hệ thống giám sát bằng hình ảnh qua mạng IP Các hệ thống này thường được xây dựng dựa trên các camera kỹ thuật số đặc biệt có khả năng kết nối mạng Nhờ có kết nối mạng mà các thông tin hình ảnh do camera thu nhận có thể được truyền trên mạng và cho phép hệ thống giám sát có thể đặt ở vị trí cách xa hiện trường
Trên thị trường hiện nay có rất nhiều loại IP camera do các hãng khác nhau sản xuất với tính năng và giá thành chênh lệnh rất lớn Thông dụng nhất là các sản phẩm
do Sony, Panasonic và Axis sản xuất Các IP camera do Axis sản xuất có giá thành dao động từ 280USD với dòng sản phẩm cấp thấp nhất, cho tới 2800USD với dòng sản phẩm cấp cao đa tính năng Sản phẩm của Sony có giá thành còn cao hơn nữa, dao động từ trên 600USD tới gần 5000USD Như vậy giá thành của các sản phẩm loại này đến nay vẫn còn rất đắt
Trang 9Các sản phẩm trên đều được tích hợp các tính năng như truy cập mạng, hỗ trợ web server và phần mềm quản lý qua web, tính năng điều khiển Pan-Tilt-Zoom (PTZ)
từ xa, khả năng phát hiện chuyển động…
Tuy nhiên các sản phẩm trên mới chỉ phục vụ được cho ứng dụng giám sát từ xa chứ không cho phép ra lệnh điều khiển nếu phát hiện sự cố trong quá trình giám sát Khả năng điều khiển từ xa cũng mới chỉ hỗ trợ ở mức điều khiển PTZ cho các camera chứ không thể điều khiển các thiết bị bên ngoài
Chính vì những lý do trên mà tác giả luận văn đã lựa chọn thực hiện đề tài “Thiết
kế hệ thống giám sát và điều khiển trực tuyến bằng hình ảnh dựa trên công nghệ FPGA và System-on-Chip”
Sản phẩm “Hệ thống giám sát và điều khiển trực tuyến bằng hình ảnh” thực hiện
hai chức năng chính bao gồm chức năng giám sát thời gian thực bằng hình ảnh và chức năng điều khiển Cả hai chức năng này đều được thực hiện qua đường truyền mạng LAN/Internet
Chức năng giám sát
Hệ thống cung cấp một giải pháp giám sát thời gian thực hiện đại, mới được phát triển trên thế giới trong thời gian gần đây Đó là giải pháp giám sát bằng hình ảnh qua mạng IP Hệ thống được cài đặt giao diện USB để ghép nối với thiết bị camera và một phần mềm chuyên dụng thực hiện điều khiển và thu nhận hình ảnh thời gian thực từ camera Các dữ liệu này sẽ được lưu trữ tạm thời để cung cấp cho người sử dụng khi
có yêu cầu
Dữ liệu hình ảnh đã thu nhận sẽ được hệ thống cung cấp tới người sử dụng thông qua giao diện Web và giao thức HTTP Hệ thống được cài đặt một Web Server cho phép người dùng truy cập dễ dàng qua mạng LAN hoặc mạng Internet
Người sử dụng có thể truy cập chức năng giám sát bằng hình ảnh của hệ thống bằng hai phương pháp Phương pháp đơn giản nhất là sử dụng một Web Browser để truy cập tới địa chỉ Web của hệ thống, khi đó hình ảnh sẽ được hiển thị ngay trên Web Browser Phương pháp thứ hai là thông qua một phần mềm trên PC Phần mềm này thực hiện giao tiếp với hệ thống giám sát qua giao thức HTTP và được cài đặt các thao tác truyền/nhận dữ liệu phù hợp với hệ thống Các dữ liệu hình ảnh sẽ được truyền về máy tính và được điều khiển hiển thị bởi phần mềm trên máy tính
Chức năng điều khiển
Hệ thống cung cấp cho người dùng chức năng điều khiển trực tiếp song song với chức năng giám sát Với các chức năng điều khiển thông thường, người dùng có thể điều khiển trực tiếp các hoạt động của camera như bật, tắt, quay trái, phải, phóng to hay thu nhỏ (điều khiển PTZ)
Hệ thống cũng cung cấp cơ chế đồng bộ cả phần cứng và phần mềm để có thể phát triển thêm các chức năng điều khiển phức tạp hơn Chẳng hạn, người dùng muốn
sử dụng hệ thống để điều khiển một thiết bị bên ngoài thì chỉ cần thực hiện thêm hai thao tác tương đối đơn giản là ghép nối thiết bị đó với các tín hiệu điều khiển đã thiết
kế chờ sẵn và khai báo thêm một số thông số thích hợp trong phần mềm của hệ thống
Trang 10Chức năng điều khiển cũng được cung cấp qua hai cách là giao diện Web và chương trình ứng dụng trên PC Nếu truy cập qua giao diện Web, người sử dụng sẽ sử dụng các thao tác được thiết kế sẵn trong nội dung trang Web Ngược lại, khi truy cập bằng phần mềm trên PC, người dùng phải sử dụng các chức năng trong phần mềm để gửi các lệnh với thông thích hợp tới hệ thống
Như vậy, sản phẩm “Hệ thống giám sát và điều khiển trực tuyến bằng hình ảnh”
cần đảm bảo được các nhiệm vụ như sau:
• Giao tiếp với camera để thu nhận và lưu trữ dữ liệu hình ảnh thời gian thực
• Cài đặt giao diện mạng Ethernet để cho phép truy cập từ xa qua mạng LAN hoặc Internet
• Cung cấp dữ liệu hình ảnh phục vụ các truy vấn qua mạng theo giao thức HTTP
• Cài đặt phần mềm Web Server để cho phép các máy tính từ xa truy cập và hiển thị hình ảnh thời gian thực do camera thu nhận
• Nhận các lệnh điều khiển từ người dùng qua giao thức HTTP và thực hiện lệnh
Sản phẩm của luận văn tốt nghiệp này là một hệ thống có độ tích hợp cao, phức tạp và liên quan đến nhiều vấn đề công nghệ Các nội dung đã thực hiện trong luận văn bao gồm rất nhiều khâu từ quá trình thiết kế phần cứng cho tới phát triển phần mềm của một hệ thống nhúng hiệu năng cao
Trong khuôn khổ báo cáo này, tác giả chỉ xin trình bày một số nội dung quan trọng nhất trong luận văn liên quan đến quá trình thiết kế phần cứng và phần mềm của
hệ thống
Nội dung luận văn được tổ chức thành 5 chương như sau:
Chương 1: Đặt vấn đề
Nội dung: Trình bày định hướng lựa chọn đề tài, mô tả mục tiêu của đề tài
và nội dung trình bày trong luận văn
Chương 2: Các vấn đề lý thuyết
Nội dung: Trình bày các vấn đề lý thuyết quan trọng có liên quan trực tiếp trong quá trình thực hiện luận văn
Chương 3: Phân tích thiết kế hệ thống
Nội dung: Thực hiện mô tả quá trình phân tích thiết kế hệ thống chi tiết từ
xây dựng phần cứng cho tới phát triển phần mềm
Trang 11CHƯƠNG 2 CÁC VẤN ĐỀ LÝ THUYẾT
2.1.1 Khái niệm
System-on-Chip (viết tắt là SoC) là các hệ thống điện tử xuất phát từ ý tưởng tích
hợp toàn bộ các thành phần của một máy tính hay một hệ vi xử lý lên trên một vi mạch bán dẫn Trên vi mạch đó có thể có cả các thành phần chức năng số, tương tự và thành phần hỗn hợp Ứng dụng điển hình của SoC là trong các hệ thống nhúng
Công nghệ System-on-Chip nhằm thiết kế và chế tạo các hệ thống đa chức năng
trên cùng một chip bán dẫn, nhằm rút ngắn chu kỳ phát triển sản phẩm đồng thời lại làm tăng tính năng, tốc độ và chất lượng của sản phẩm Với khả năng tích hợp ngày càng cao trong công nghiệp điện tử, System-on-Chip là một hướng đi tất yếu nhằm thay thế cho mô hình hệ thống cổ điển được xây dựng dựa trên các vi mạch chức năng đơn lẻ, vốn không tối ưu về chi phí sản xuất và hiệu năng hoạt động
Một cách tổng quát, một vi mạch có thể được coi là SoC nếu trong đó bao gồm các thành phần CPU, bộ nhớ, các module vào ra và liên kết hệ thống giữa 3 thành phần
đó Các khối này có thể được nối với nhau bởi các chuẩn phối ghép bus khác nhau như các hệ thống bus dùng riêng hoặc bus công nghiệp như AMBA bus của ARM Quá trình vận chuyển dữ liệu giữa các khối giao diện và bộ nhớ thường được thực hiện bởi DMA controller nhằm làm tăng tốc độ và giảm bớt gánh nặng cho CPU
Một thiết kế System-on-Chip thường bao gồm các thành phần sau đây:
• Một hoặc nhiều vi xử lý hoặc các bộ DSP
• Các khối nhớ bao gồm ROM, RAM, EEPROM và Flash
• Khối định thời và tạo xung nhịp gồm Oscillator và mạch PLL
• Một số thành phần ngoại vi cần thiết như bộ đếm, đồng hồ thời gian thực, mạch
xử lý ngắt…
• Các giao tiếp chuẩn: USB, FireWire, Ethernet, UART, SPI…
• Giao diện ghép nối tín hiệu tương tự: gồm các ADC và DAC
• Mạch ổn áp và quản lý nguồn
Trang 12• Sản phẩm hoàn thiện sẽ cần ít thành phần chip bán dẫn hơn, nhỏ gọn hơn
• Tiêu thụ ít năng lượng hơn
• Thời gian ra sản phẩm (Time to Market) ngắn hơn
• Có hiệu năng cao hơn
• Có thể áp dụng với công nghệ FPGA
Tuy vậy công nghệ SoC cũng có một số nhược điểm
• Chi phí thiết kế ban đầu rất lớn, quy trình thiết kế phức tạp
• Thường phải kết hợp với quy trình thiết kế và sản xuất ASIC để đạt được hiệu năng tối ưu và làm tăng chi phí sản xuất
• Phải tiến hành đồng thiết kế phần cứng/phần mềm ngay từ giai đoạn đầu
2.1.2 Một số vấn đề về thiết kế SoC
Ngoài cấu trúc phần cứng mô tả ở trên, để một SoC có thể hoạt động được thì không thể thiếu các thành phần phần mềm đảm nhiệm chức năng điều khiển các thành phần như vi xử lý, DSP, các ngoại vi và giao tiếp, đồng thời phối hợp các module đó tạo thành ứng dụng thực tế Như vậy, khi chế tạo một sản phẩm trên công nghệ SoC đòi hỏi giải quyết 2 vấn đề: xây dựng cấu hình cho chip và lập trình cho chip phù hợp với bài toán đặt ra Hai vấn đề này có thể được tiến hành song song trong suốt quá trình thiết kế và thử nghiệm chip Khi đó quá trình thiết kế một SoC chính là quá trình đồng thiết kế phần cứng và phần mềm
Trang 13Phần lớn các SoC thường được phát triển dựa trên các module phần cứng chuẩn Các module này thường được phát triển và kiểm thử từ trước, đồng thời luôn đi cùng với các phần mềm điều khiển tương ứng Đặc biệt với các thành phần ngoại vi truyền thông, chẳng hạn như giao tiếp USB, luôn phải có những module phần mềm cài đặt giao thức hoạt động cụ thể đi kèm Các module phần cứng khi được ghép với nhau, cùng với việc kết hợp các phần mềm điều khiển sẽ tạo nên một hệ thống phức tạp nhưng nằm hoàn toàn trên một chip bán dẫn
Một bước quan trọng trong luồng thiết kế SoC là quá trình mô phỏng Thông thường các SoC được mô phỏng theo phương pháp FPGA prototyping Thiết kế phần cứng được thực hiện dựa trên môi trường mô phỏng bằng FPGA, các module phần mềm cũng được nạp vào bộ nhớ của bản thiết kế mô phỏng Sau đó, hoạt động của hệ thống về cả phần cứng và phần mềm có thể được kiểm thử và đánh giá với tốc độ và các điều kiện hoạt động gần giống với môi trường thực của SoC
Trong quá trình thiết kế SoC còn một số vấn đề cụ thể cần quan tâm như sau:
Vấn đề tài nguyên hệ thống
SoC có thể mang lại giải pháp mang tính tích hợp cao, đơn chip, ít sử dụng các ngoại vi bên ngoài, đạt được hiệu năng cao trong khi sử dụng nguồn năng lượng tối ưu hơn So sánh với các phương pháp thiết kế đa chip dựa trên các thành phần phần cứng đơn lẻ, SoC rõ ràng có nhiều ưu điểm vượt trội Tuy nhiên việc đánh giá xác định kích thước và thiết kế các tài nguyên on-chip cho SoC gặp nhiều khó khăn hơn
Vì các tài nguyên trên SoC đều được tích hợp sẵn và là cố định trên chip nên nếu đánh giá không chuẩn xác sẽ dẫn đến việc SoC không đáp ứng được yêu cầu thực tế hoặc gây lãng phí tài nguyên Tất cả các hệ quả này đều làm cho chi phí phát triển sản phẩm tăng lên rất lớn Ngược lại, thiết kế đa chip cổ điển thường cho phép áp dụng nhiều thông số linh động hơn như tốc độ, dung lượng nhớ, số cổng vào ra… nên sẽ không quá phụ thuộc vào bước đánh giá tài nguyên như SoC
Hình 2-2: Mô hình lập phương tài nguyên
Khi đánh giá ước lượng tài nguyên cho SoC, có 3 yếu tố quan trọng nhất cần xác định bao gồm Tài nguyên CPU, Vào ra và Bộ nhớ Hình 2-2 cho thấy mô hình lập phương tài nguyên cho các hệ SoC Không gian màu xanh (phía dưới) tương ứng với
hệ thống giàu tài nguyên, trong đó các bài toán có thể dễ dàng hoàn thành trong khuôn
Trang 14thống bị ràng buộc về tài nguyên, trong đó người phát triển hệ thống phải thực hiện các thao tác tối ưu hóa hệ thống để có thể thỏa mãn các yêu cầu trên thực tế
Hình 2-2 mới chỉ mô tả 3 loại tài nguyên quan trọng trong một hệ thống số và đã
bỏ qua các tài nguyên khác như số chân vào ra, nguồn tiêu thụ, chi phí… Tuy nhiên qua đây cũng cho thấy việc xác định các thông số tài nguyên của hệ thống SoC phải dựa chặt chẽ vào các yêu cầu về phần cứng và phần mềm của bài toán, tránh trường hợp quá thiếu hoặc lãng phí
Thiết kế tài nguyên xử lý
Với các SoC chạy đa tiến trình, đặc biệt là các hệ SoC nhiều CPU, việc lập lịch hoạt động cho các tiến trình và CPU đóng vai trò rất quan trọng Trên các hệ SoC phức tạp, tiến trình lập lịch thường được hỗ trợ luôn bằng cơ chế phần cứng Do đó việc xác định chính xác các tài nguyên CPU cùng với cơ chế lập lịch tương ứng đóng vai trò quyết định đối với tốc độ thực thi ứng dụng của hệ thống SoC
Một số phương pháp lập lịch
Hình 2-3: Phân loại các phương pháp lập lịch
Thiết kế tài nguyên vào ra
Năng lực và tốc độ xử lý của thiết bị SoC phụ thuộc đáng kể vào hiệu quả của việc trao đổi thông tin giữa các khối bên trong chip và giữa các khối bên trong và bên ngoài chip Hình 2-4 dưới đây mô tả phân loại các kỹ thuật kết nối các thành phần tính toán, bộ nhớ và ngoại vi trong SoC với nhau
Mỗi kỹ thuật đều có ưu và nhược điểm dựa vào các thông số như tốc độ hoạt động, độ phức tạp, khả năng sử dụng, khả năng hỗ trợ lập trình và chi phí thực hiện… Người thiết kế phải nắm rõ ứng dụng từ đó đưa ra quyết định lựa chọn cụ thể
Trang 15Hình 2-4: Các kỹ thuật ghép nối Thiết kế tài nguyên bộ nhớ
Các SoC đòi hỏi toàn bộ hệ thống nhớ cũng được tích hợp trên chip, do đó các thành phần nhớ trong SoC cần được tối ưu hóa về kích thước cũng như cấu trúc nhằm giảm tối đa độ phức tạp của thiết kế trong khi vẫn đảm bảo tốc độ truy nhập cần thiết Vấn đề này thường phức tạp hơn khi thiết kế thành phần bộ nhớ đệm Thông thường
bộ nhớ đệm trong SoC được tổ chức thành 1 mức và sử dụng SRAM tốc độ cao
2.1.3 Một số sản phẩm SoC thương mại tiêu biểu
2.1.3.1 Alchemy™ Au1200™ Processor
Hình 2-5: Sản phẩm Alchemy Au1200 của AMD
Đây là bộ xử lý được hãng AMD thiết kế theo công nghệ SoC, dành riêng cho các sản phẩm thiết bị giải trí di động cá nhân, như Personal Media Player, Digital Media Adapter và cho các hệ thống đa phương tiện trên ô tô
Các thành phần được thiết kế tích hợp sẵn trên Alchemy Au1200:
Trang 16• Digital Camera interface hỗ trợ giao tiếp với các sensor CMOS/CCD
• Các thành phần ngoại vi: cổng nối tiếp PSC cho AC’97 CODEC, giao diện với thẻ nhớ SD/MMC, USB 2.0 Host/Device Controller, UART…
Sơ đồ khối cấu trúc của Alchemy Au1200
Hình 2-6: Sơ đồ khối của Alchemy Au1200
2.1.3.2 Intel® PXA27x Processor
Hình 2-7: Bộ xử lý Intel PXA27x
Đây là bộ xử lý chuyên dụng cho các thiết bị cầm tay PDA do Intel sản xuất, được
áp dụng các công nghệ di động hiện đại nhất hiện nay của Intel
Các thành phần tích hợp sẵn trên chip:
Bộ xử lý: Intel XScale® tốc độ tối đa 624MHz
Kết nối không dây: cho phép kết nối với các mạng di động GSM/Internet cùng các giao thức bảo mật VPN, SSL…
Tập lệnh multimedia
Trang 17 Giao diện với Camera số cho phép thu nhận và xử lý ảnh tới trên 4 Megapixel
Bộ điều khiển LCD: hỗ trợ tối đa 2 màn hình LCD với tối đa 24 bit màu
Công nghệ SpeedStep® tận dụng tối đa nguồn năng lượng
Giao diện với bộ nhớ: 100MHz memory bus
Các thành phần ngoại vi: USB Host/Device/OTG controller, giao tiếp thẻ nhớ SD/MMC/Memory Stick, giao tiếp với SIM card, bộ điều khiển bàn phím, PCMCIA…
Bộ nhớ tích hợp: tối đa 64MB bộ nhớ tích hợp sẵn trên chip
Hình 2-8: Sơ đồ khối bộ xử lý Intel PXA27x
2.2.1 Soft-core processor
Sự phát triển của công nghệ FPGA trong thời gian gần đây đã cho ra đời các vi mạch FPGA đủ khả năng triển khai toàn bộ các thành phần của một hệ thống máy tính Khi xây dựng các hệ thống xử lý này trên công nghệ FPGA, đặc biệt là các hệ SoC,
luôn xuất hiện một thành phần trung tâm là bộ xử lý nhân mềm, được gọi là soft-core
processor
Soft-core processor là bộ xử lý được thiết kế và mô tả bằng phần mềm bởi các
ngôn ngữ HDL, và có thể được tổng hợp và triển khai trên các công nghệ phần cứng lập trình được như FPGA
Các soft-core processor tỏ ra linh hoạt hơn các bộ xử lý truyền thống nhờ khả
năng tận dụng lợi thế của công nghệ FPGA Do được mô tả bởi phần mềm và triển khai trên FPGA, cấu hình của bộ xử lý có thể được thay đổi để phù hợp với ứng dụng tại mọi thời điểm Ngoài ra các thành phần ngoại vi cũng có thể được tích hợp thêm trên cùng một chip với bộ xử lý nhằm làm tăng hiệu năng hoạt động và giảm thiểu chi phí thiết kế các ngoại vi bên ngoài
Hiện nay trên thị trường đã xuất hiện 2 sản phẩm soft-core processor phát triển bởi 2 hãng sản xuất vi mạch FPGA lớn là Nios II của Altera và MicroBlade của Xilinx
Trang 18tương ứng và đều hỗ trợ quá trình đồng thiết kế phần cứng/phần mềm cũng như phát triển hệ thống System-on-Chip
Do điều kiện về mặt thiết bị và môi trường làm việc, luận văn này lựa chọn sử dụng bộ xử lý Nios II của Altera trên dòng sản phẩm Stratix
2.2.2 Giới thiệu chung về Nios II
Nios II là bộ xử lý do hãng Altera phát triển cùng với bộ phần mềm Nios II EDS
và SOPC Builder nhằm hướng tới các hệ thống nhúng hiệu năng cao dựa trên công nghệ FPGA và System-on-Chip Nios II được cung cấp như một thành phần trong thư viện phần tử của SOPC builder
Các tính năng cơ bản của bộ xử lý Nios II:
Tập lệnh, đường dữ liệu, không gian địa chỉ 32 bit
Các thanh ghi đa năng 32 bit
32 nguồn ngắt ngoài
Các lệnh nhân và chia hai số 32 bit cho kết quả 32 bit
Cung cấp các lệnh nhân cho kết quả 64 bit và 128 bit
Lệnh xử lý số thực dấu phảy động độ chính xác đơn
Hỗ trợ nhiều ngoại vi on-chip, cung cấp giao tiếp với các ngoại vi và bộ nhớ ngoài
Chế độ debug hỗ trợ bởi phần cứng sử dụng Nios IDE
Môi trường phát triển phần mềm dựa trên GNU C/C++
Kiến trúc tập lệnh tương thích với tất cả các hệ thống xử lí Nios II
Tốc độ tính trên 150 DMIPS
Trên thực tế thiết kế, Nios II không bao giờ tồn tại một mình mà luôn được tích hợp thêm các thành phần như bộ nhớ và các ngoại vi on-chip, các giao diện phối ghép với bộ nhớ và ngoại vi off-chip Toàn bộ bản thiết kế như vậy được gọi là hệ thống xử
lý Nios II và quá trình thiết kế hệ thống Nios II được hỗ trợ đầy đủ bởi phần mềm SOPC đi kèm
Nios II cung cấp khả năng cấu hình lại để tăng hiệu năng của hệ thống Chẳng hạn, có thể bớt đi một số các module, các ngoại vi để giảm kích thước của thiết kế, giảm giá thành sản phẩm Rất nhiều khả năng khả chuyển có thể thực hiện:
Các chân của Nios II có thể ánh xạ vào các chân IO khác nhau của FPGA
để phù hợp với từng thiết kế
Các chân mở rộng và tài nguyên logic có thể được dùng làm các khối logic chức năng ngoài Ví dụ như hệ thống xử lí Nios chỉ chiếm khoảng 5% tài nguyên của các model chip Stratix dung lượng cao, khi đó phần tài nguyên còn lại có thể dùng để thực hiện các chức năng khác
Các chân mở rộng có thể dùng để kết nối với thiết bị ngoại vi ngoài Nios System Library cung cấp nhiều module giao tiếp giúp kết nối một các dễ dàng với các thiết bị ngoại vi
Trang 19Hình sau đây cho thấy cấu trúc các thành phần cơ bản của một hệ thống xử lý Nios II:
Hình 2-9: Sơ đồ khối bộ xử lý Nios II
2.2.3 Kiến trúc phần cứng của Nios II
Kiến trúc Nios II mô tả lại tập lệnh của bộ nhân xử lí này Kiến trúc của tập lệnh
là cơ sở để đặt ra các yêu cầu về kiến trúc phần cứng cho một bộ vi xử lí Nios II processor là thiết kế phần cứng đáp ứng theo kiến trúc tập lệnh Nios II, nó là chỉ nhân
xử lí không bao gồm các module ngoại vi, các module đó được thêm vào hệ thống như những tùy chọn khi thiết kế một hệ thống hoàn chỉnh Các thành phần của một core Nios II được mô tả như hình dưới
Trang 20Hình 2-10: Cấu trúc phần mềm Thanh ghi
Nios II bao gồm 32 thanh ghi mục đích chung và 32 thanh điều khiển Nios II hỗ trợ hai chế độ hoạt động là usermode và supervisormode, nó cho phép ngăn chặn bảo
vệ các thanh ghi điều khiển khỏi các truy nhập từ mã lệnh có thể gây lỗi nghiêm trọng Kiến trúc của Nios II còn có thể cho phép bổ sung các thanh ghi dấu phảy động trong tương lai
ALU
Nios II được cung cấp dưới dạng một soft-core processor nên tập lệnh của Nios II
cũng có thể thay đổi tùy theo từng mục đích ứng dụng cụ thể Tuy tất cả các thiết kế Nios II đều tuân theo một kiến trúc lệnh chuẩn, nhưng tùy theo từng ứng dụng mà bản thiết kế có thể thực hiện đầy đủ hoặc không đầy đủ tập lệnh đó
Tập lệnh cơ bản của Nios II bao gồm các nhóm lệnh sau:
Exception và Interrupt
Trang 21Exception là cơ chế mà Nios II dùng để xử lí các ngoại lệ, Nios II cung cấp cơ chế
xử lí ngoại lệ “phi vector” Tất cả các ngoại lệ khi xuất hiện đều điều hướng xử lí đến một địa chỉ gọi là: Exception Address, chương trình điều khiển ngoại lệ tại địa chỉ này
sẽ phát hiện kiểu và nguyên nhân của ngoại lệ, từ đó nó sẽ điều hướng xử lí đến tiến trình con thích hợp, tương ứng với ngoại lệ này Exception Address được xác định khi thiết kế
Nios II cung cấp 32 ngắt tương ứng với 32 mức ưu tiên khác nhau Tương ứng với
32 ngắt này là 32 tín hiệu yêu cầu ngắt từ IRQ0 đến IRQ31 Mức độ ưu tiên ngắt được chỉ định bằng phần mềm Các ngắt này có thể bị chặn toàn bộ hoặc từng ngắt riêng lẻ thông qua các thanh ghi Một ngắt chỉ có giá trị khi phải có đồng thời cả 3 điều kiện:
Bit PIE của thanh ghi điều khiển status nhận giá trị 1
Có tín hiệu IRQ tương ứng với ngắt
Bit cho phép ngắt tương ứng nhận giá trị 1
về lệnh được thực hiện trong chu kì lệnh tiếp theo từ bộ nhớ, bus dữ liệu thực hiện hai nhiệm vụ là đọc và ghi dữ liệu ra bộ nhớ và ngoại vi Nios II ánh xạ I/O theo bộ nhớ tức là nó truy nhập ngoại vi với cùng cách thức truy nhập bộ nhớ Bus lệnh và bus dữ liệu chia sẻ truy nhập đến bộ nhớ, chúng truy nhập đến bộ nhớ bởi hại đường riêng rẽ nhưng nhìn từ phía Slave port chúng được coi là một đường duy nhất
Trang 22Bộ nhớ cache được dùng cho cả hai bus dữ liệu và bus lệnh, cache giúp tăng tốc truy nhập đến các bộ nhớ chậm như SDRAM Caches có thể điều khiển bằng phần mềm, có thể cấu hình được trong lúc thiết kế tùy mục đích sử dụng của hệ thống Nios
II cũng cung cấp các phương thức truy nhập bỏ qua cache
Ánh xạ địa chỉ
Bản đồ địa chỉ cho các ngoại vi và vùng nhớ trong một hệ thống Nios II phụ thuộc vào từng thiết kế hệ thống Các thông số của bản đồ địa chỉ được xác định trong bước sinh hệ thống tự động Có 3 địa chỉ đặc biệt cần chỉ rõ:
Reset Address
Exception Address
Break handler Address
Khi phát triển ứng dụng phần mềm người lập trình sử dụng các macro và driver
do đó việc thay đổi bản đồ địa chỉ không ảnh hưởng tới quá trình phát triển ứng dụng
JTAG debug module
Nios II cung cấp chức năng debug thông qua cổng JTAG tích hợp sẵn, nó cho phép gỡ lỗi on-chip bằng cách điều khiển chương trình từ PC Module này giao tiếp với PC qua cable JTAG của Altera, nó cung cấp các chức năng:
Tải chương trình xuống bộ nhớ
Khởi động và dừng chương trình
Đặt các Breakpoint và watchpoint
Phân tích dữ liệu trong các thanh ghi và bộ nhớ
Tìm vết các dữ liệu trong quá trình thực hiện theo thời gian thực
Ngày nay hầu hết các máy tính đều được trang bị một hoặc nhiều cổng USB (Universal Serial Bus) Các cổng USB đã thực sự giúp cho việc kết nối thiết bị ngoại
vi như chuột, máy in, camera với máy tính nhanh và dễ dàng hơn rất nhiều
Trước khi chuẩn USB ra đời, máy tính chỉ được trang bị các phối ghép cổ điển như cổng COM, cổng Parallel, PS/2 hay chuẩn SCSI Việc ghép nối thiết bị ngoại vi với các cổng vào ra này tỏ ra có nhiều điểm hạn chế Các cổng phối ghép đơn giản như COM hay Parallel chỉ hỗ trợ các thiết bị tốc độ chậm, còn các chuẩn tốc độ cao như SCSI thì cơ chế giao tiếp lại quá phức tạp và khó áp dụng Do đó máy tính cần có một chuẩn phối ghép đa năng hơn, cho phép làm việc với nhiều loại ngoại vi hơn
Chuẩn USB ra đời đã khắc phục được các nhược điểm trên đây của các chuẩn phối ghép cổ điển một cách xuất sắc Bắt đầu được sử dụng vào năm 1996, chuẩn USB
đã tỏ rõ các ưu điểm của mình và trở thành một giao tiếp chuẩn cho tất cả các máy tính hiện nay, đặc biệt là từ khi phiên bản USB 2.0 ra đời năm 2000
Một số đặc điểm của chuẩn USB:
Tốc độ truyền dữ liệu cao từ vài kbps đến 480 Mbps
Hoạt động theo cấu hình bus, tại một thời điểm cho phép kết nối cùng lúc
127 thiết bị với máy tính
Trang 23 Hỗ trợ Hot Plug and Play, cho phép cắm và rút thiết bị khỏi bus ngay khi đang PC hoạt động
Máy tính tự phát hiện và cấu hình cho thiết bị USB khi kết nối với bus
Chi phí rất rẻ do được áp dụng rất rộng rãi Quá trình thiết kế phần cứng và phần mềm cũng đã được chuẩn hóa
Do các ưu điểm trên nên chuẩn USB đã được áp dụng cho hầu hết các loại ngoại
vi hiện nay Các hệ thống nhúng hiện đại cũng đã bắt đầu được trang bị giao tiếp USB
để tăng cường khả năng kết nối linh hoạt với các thiết bị khác nhau
2.3.1 Tổng quan về giao thức
2.3.1.1 Hệ thống USB và bus topology
Một hệ thống USB được chia làm 3 thành phần như sau:
• Bus topology: là mô hình kết nối giữa các thiết bị và host
• Inter-layer relationship: liên quan đến một nhóm các lớp, mà mỗi lớp thực hiện một số các nhiệm vụ nào đó trong giao thức
• Mô hình luồng dữ liệu: là cách mà dữ liệu được truyền đi thông qua giao thức
Bus topology
Hình 2-12: USB bus topology
Trang 24Topo USB có dạng hình sao được phân thành nhiều lớp, tại mỗi hình sao các Hub đặt tại tâm của hình sao Mỗi một segment tạo một kết nối point-to-point giữa một hub
và một device hoặc giữa hai hub với nhau Hình trên mô tả kiến trúc của hệ thống USB
USB device
Các USB device có thể là một trong các loại sau :
• USB hub, là thiết bị đảm nhận cung cấp thêm các điểm kết nối với hệ thống
• Functions, là thiết bị cung cấp một chức năng cho hệ thống như kết nối ISDN, Bộ nhớ Flash, Keyboard, Mouse…
USB host
Mỗi một hệ thống USB chỉ có một USB host cài đặt tại host computer thông qua một HostController HostController này co thể được thực hiện bằng phần mềm hoặc phần cứng hoặc firmware, một root hub được gắn với Host cung cấp nhiều điểm kết nối với host
2.3.1.2 Giao diện vật lí
Giao diện tín hiệu của USB, bao gồm bốn đường tín hiệu: Vbus, D+,D-,GND như hình dưới:
Hình 2-13-Tín hiệu trên USB bus
USB sử dụng tín hiệu vi sai để truyền dữ liệu, các đường D+, D- tạo thành cặp tín hiệu vi sai Có hai chế độ truyền dữ liệu đối với giao thức USB1.1 :
• FullSpeed: truyền dữ liệu với tốc độ 12Mb/s
• LowSpeed: truyền dữ liệu tốc độ 1.5Mb/s
Các đường tín hiệu Vbus và GND dùng để cấp nguồn cho thiết bị, VBUS hoạt động ở mức điện áp là 5V, Chiều dài của từng segment có thể thay đổi có thể lên tới vài mét
2.3.1.3 Nguồn cấp
Các đặc tả về nguồn cấp bao gồm hai phần :
• Cấp nguồn: thiết bị USB có thể lấy nguồn ngay từ bus (bus-powered device) hoặc sử dụng nguồn riêng (self-powered device)
• Quản lí nguồn: mô tả phương pháp mà phần mềm hệ thống và các thiết bị sử dụng nguồn trong một hệ thống nguồn cấp bởi host Một USB host có thể có một hệ thống quản lí nguồn riêng độc lập với USB Phần mềm hệ thống tương tác với hệ thống quản lí nguồn của host để điều khiển nguồn cấp
Trang 25chẳng hạn như các chế độ suspend và resume Thêm nữa các thiết bị USB thường thực hiện chức năng quản lí nguồn bằng phần mềm
2.3.1.4 Bus Protocol
Chuẩn USB hoạt động theo cấu hình Host – Slave Host Controller khởi tạo mọi phiên truyền dữ liệu Tất cả các chuyển đổi dữ liệu đều liên quan đến việc truyền đi 3 packet Mỗi một phiên truyền dữ liệu được bắt đầu khi HostController gửi đi một gói
mô tả chiều truyền và địa chỉ của thiết bị và chí số Endpoint Các gói này là các gói thuộc loại Token USB device được gán địa chỉ cụ thể sẽ kiểm tra trường địa chỉ trong gói tin để xác nhận đích đến của gói tin Mô hình truyền tin trong giao thức USB được hình thành từ các khai niệm như: pipe, endpoint, host, tranfer, packet … Pipe là một kết nối logic từ host đến một endpoint trong thiết bị, có hai loại endpoint là dạng luồng (stream) và dạng tin (message) Stream là dạng luồng dữ liệu mà dữ liệu không được định dạng theo cấu trúc trong khi pipe dạng tin thì dữ liệu được định dạng theo kiểu có cấu trúc Mỗi một pipe được gắn với một số các thuộc tính như băng thông đường truyền, kiểu truyền, đặc điểm chiều truyền của endpoint mà nó gắn kết, kích thước bộ đệm Các pipe được xác định khi thiết bị được cấu hình Có một pipe đặc biệt luôn tồn tại khi thiết bị được cấp nguồn, pipe này dùng để truyền các thông tin điều khiển, trạng thái để cấu hình cho thiết bị, đó là Default Control Pipe
nó Host yêu cầu hub báo lại các báo hiệu này lên host, trong trường hợp một thiết bị được gắn với hệ thống bus thì host đặt enable cho cổng tương ứng và gán địa chỉ cho thiết bị vừa được kết nối thông qua Default Control Pipe tại default address, các thiết bị khi được kết nối với hệ thống bus được gán địa chỉ mặc định Quá trình cấu hình cho thiết bị thông qua các default pipe sẽ gán cho thiết bị một địa chỉ khác, địa chỉ này sẽ được dùng để trao đổi dữ liệu với thiết bị
• Khi tháo một thiết bị khỏi hệ thống bus thì hub mà thiết bị kết nối sẽ disable cổng tương ứng và báo hiệu cho host về sự kiện này, nếu thiết bị được tháo kết nối là hub thì phần mềm hệ thống phải thực hiện bỏ cả hub và tất cả các thiết bị được gắn kết với hub này
• Bus Enumeration , là một hoạt động dùng để gán một địa chỉ duy nhất cho thiết bị được kết nối vào bus, do các thiết bị có thể kết nối hoặc tháo bỏ bất
cứ lúc nào do đo BusEnumeration là một hoạt động thường trực, nó cũng phải đảm nhiệm cả việc phát hiện và xử lí khi có thiết bị được tháo bỏ khỏi
hệ thống bus
2.3.1.6 Các kiểu luồng dữ liệu
USB hỗ trợ 4 kiều truyền dữ liệu giữa host và device:
Trang 26• Control Transfer: dùng để cấu hình một thiết bị khi nó được kết nối vào bus, cũng có thế dùng cho các mục đích khác như các control pipe trong thiết bị
• Bulk Data Transfers: là kiểu truyền dữ liệu dùng để truyền dữ liệu theo khác khối dữ liệu lớn như truyền file
• Interrupt Data Transfer: dùng cho các thiết bị hoặc các giao tiếp cần sự phản hồi trả lời nhanh như bàn phím, chuột, các thiết bị yêu cầu đảm bảo về độ trễ phản hổi
• Isochronous Data Transfers: là kiểu truyền cần đảm bảo về tốc độ, băng thông và độ trễ thường dùng trong các ứng dụng có yêu cầu về sự đồng bộ thời gian như truyền các tín hiệu Video, audio …
2.3.2 Mô hình trao đổi dữ liệu và các đặc tả
2.3.2.1 Mô hình chung
Mô hình đầy đủ của một hệ thống USB được mô tả như hình sau:
Hình 2-14-Kiến trúc hoàn chỉnh của một hệ thống USB
Mô hình tổng quát của một hệ thống USB được chia thành 4 phần được phân thành 3 tầng :
Trang 27• Client Software
• USB System Software
• USB Bus Interface
• Physical Devices
Các phần được chia vào 3 tầng trong giao thức, bao gồm :
• Function Layer
• USB device Layer
• USB bus interface layer
Hình 2-15-Sơ đồ khối phân tầng của hệ thống USB
2.3.2.2 Bus Topology
USBHost
Các thành phần của một USBHost bao gồm :
• USB Host Controller: Phần làm việc trực tiếp với phần cứng và cũng có thể được thực hiện bằng phần cứng, nằm tại tầng thấp nhất trong mô hình giao thức
• USBSystemSoftware : Phần mềm hệ thống, phụ thuộc hệ điều hành, thường được thực hiện bằng phần mềm
Trang 28• Client Software : phần mềm, với mục đích cụ thể của từng ứng dụng, gắn với một chức năng cụ thể của thiết bị
Hình 2-16-Mô hình của một hostUSB
USB Devices
Các thành phần của một USB devices bao gồm:
• USB Bus Interface :Các thiết bị USB có thể cung cấp nhiều loại chức năng
mở rộng khác nhau cho hệ thống, nhưng các thiết bị đều giao tiếp với host qua một giao diện thống nhất, điều này cho phép host có thể quản lí nhiều thiết bị khác nhau trên bus với cùng một cách
• USB Logical Devices: chính là cầu hình logic của thiết bị, nó chính là tài
nguyên của thiết bị mà trên đó các chức năng mở rộng của thiết bị được thực hiện
• Function: Phần thực hiện các chức năng của thiết bị
Physical Topology
Topo vật lí của USB có dạng hình sao, các điểm gắn kết được cung cấp bởi một thiết bị là hub, host được gắn với hub mức cao nhất gọi là roothub, các thiết bị là tích hợp của nhiều thiết bị khác nhau là các thiết bị gồm hubs và các thiết bị được gắn với
nó như mô tả sau
Trang 29Hình 2-17-Topo vật lí của hệ thống USB Logical Topology
Mặc dù trong topo vật lí các thiết bị được gắn với host theo một topo hình sao nhưng về mặt logic host trao đổi dữ liệu trực tiếp với các thiết bị (logical devices) Các luồng dữ liệu trao đổi được hình thành trực tiếp từ host tới các thiết bị Hub cũng là một thiết bị nhưng nó chỉ có nhiệm vụ truyền tiếp dữ liệu từ host tới các thiết bị được gắn với nó
Hình 2-18-Topo logic của hệ thống USB
Client Software và Function
Trong một hệ thống USB có thể có nhiều thiết bị được gắn trên bus, mỗi thiết bị lại có thể có nhiều các function khác nhau, host được cài đặt để điều khiển các thiết bị này, các function phải có khả năng hoạt động một cách độc lập với các function khác USB host được thiết kế để tầng trên cùng là các client software để giao tiếp với từng function khác nhau Mô hình quan hệ giữa Client-Function được thể hiện như hình sau
Trang 30Hình 2-19-Các liên kết chức năng giữa host và slave(function)
2.3.2.3 Communication Flow Model
Endpoint
Một endpoint là một phần trong thiết bị, nó được định danh bởi một số hiệu duy nhất, Endpoint là điểm kết thúc của một luồng truyền dữ liệu giữa host và device Mỗi một thiết bị có một tập các endpoint độc lập nhau Thiết bị khi được gắn với host được gán một địa chỉ duy nhất, endpoint trong thiết bị cũng được gán một số hiệu duy nhất, mỗi endpoint chỉ thuộc một trong hai loại: in (dữ liệu được chuyển từ thiết bị lên host) hoặc out (dữ liệu được ghi từ host ra thiết bị) Như vậy, một luồn dữ liệu được xác định bởi địa chỉ của thiết bị, số hiệu endpoint và chiều của luồng tương ứng với endpoint đó Mỗi một function tương ứng với một giao diện gồm nhiều các end point khác nhau
Hình 2-20-Mô hình luồng dữ liệu
• EndPoint Zero: Khi thiết bị được gắn vào bus, thiết bị chưa được gắn với
một địa chỉ nào, do đó không thể sử dụng địa chỉ để truy nhập thiết bị thong qua địa chỉ ngay được Do đó khi thiết bị được gắn vào bus thì nó được gán cho địa chỉ mặc định là 0, trong thiết bị cũng yêu cầu phải có endpoint mặc định là EndPoint Zero
Trang 31• None EndPoint Zero: Để thực hiện được các chức năng của mình thiết bị
phải cần có các EndPoint khác (noneZero) để trao đổi dữ liệu với host, các thiết bị lowspeed bị giới hạn chỉ có hai endpoint, với các thiết bị fullspeed
có thế có tối đa đến 15 endpoint
Pipe
Pipe là các dường kết nối logic từ các endpoint trong thiết bị đến phần mềm trên host Pipe thể hiện cho khả năng truyền dữ liệu giữa software trên host thông qua các bộ nhớ đệm với các endpoint trên thiết bị, có hai kiểu pipe chính là pipe kiểu luồng-stream, và pipe kiểu tin-message
• Stream Pipe : Là loại pipe dữ liệu không có cấu trúc, dữ liệu được truyền
đi với tư cách là một luồng các byte, bit
• Message Pipe : Là pipe mà dữ liệu được tổ chức dạng có cấu trúc
2.3.3 Đặc tả về giao thức
2.3.3.1 Thứ tự bit và SYNC
Các bit được truyền đi trên bus theo thứ tự các bít thấp được truyền đi trước, các
bi cao được truyền đi sau.Tất các các packet được truyền đi bao giờ cũng được bắt đầu bằng một dãy các bit là gọi là trường bit đồng bộ SYNC, trên đường truyền vi sai mã NRZI chuỗi bít đồng bộ SYNC xuất hiện là một chuỗi KJKJKJKK sau trạng thái bus IDLE Chuỗi bít này dùng để thực hiện căn chỉnh các bít dữ liệu sau đó, SYNC chỉ có tác dụng đồng bộ nên không được chỉ ra trong packet, ngay sau SYNC là trường PID
2.3.3.2 Packet field
PID-Packet Identifier Field
PID là trường được truyền đi ngay sau SYNC, nó có trong mọi packet dùng để xác định loại của packet PID bao gồm 4 bít xác định kiểu và 4 bít kiểm tra như hình dưới
Hình 2-21-Trường Packet Identifier
Kiểu packet được xác định bởi PID [0:3] cũng đồng thời xác định các yếu tố khác như kiểu mã kiểm soát lỗi, kiểu định dạng của gói Bốn bít tiếp theo là các bít đảo của các bít trước dùng để đảm bảo PID được nhận chính xác Host và Function phải nhận
và giải mã hoàn chỉnh trường PID, nếu có lỗi trong khi nhận hoặc giải mã sai, hay thu được một PID không hợp lệ thì các phần sau của gói sẽ bị bỏ qua, nếu function nhận một PID là một PID hợp lệ nhưng tại thời điểm nhận PID không phù hợp với PID function đợi thì nó sẽ không trả lời cho phía Host Các kiểu PID được chỉ ra như dưới
Trang 32PID Type PID
Name
OUT 0001B Địa chỉ+chỉ số Endpoint, trong
phiên truyền từ host đến function
phiên truyền từ function đến host
số Frame Token
SETUP 1101B Địa chỉ+chỉ số Endpoint, trong
phiên truyền từ host đến function cho gói SETUP trong Control pipe
Data
phía gửi không thể gửi
HandShake
cầu ControlPipe không được hỗ trợ
trao đổi dữ liệu mức low-speed
* Các bít thấp của PID được truyền đi trước
Bảng 1-Các loại PID
Address Field
Trường địa chỉ bao gồm hai phần là địa chỉ thiết bị và địa chỉ của Endpoint, bao gồm 7 bít địa chỉ thiết bị và 4 bít địa chỉ của Endpoint, 4 bít địa chỉ của Endpoint chỉ được định nghĩa cho các gói thuộc loại IN, SETUP, OUT
Hình 2-22-Trường địa chỉ và chỉ số EndPoint Frame Number Field
Các bít trên bus được truyền đi theo từng Frame, trường Frame được định nghĩa cho các PID SOF, gồm 11 bít đánh số thứ tự của các Frame, bộ đếm hoạt theo kiểu đếm vòng tròn khi bọ đếm đạt giá trị max 7FFH, Frame Field chỉ được gửi đi trong SOF packet tại mỗi đầu một Frame
Data Field
Trang 33Trường Data có thể có chiều dài từ khoảng 0 đến 1023 bytes và phải là một số nguyên của byte Các Bytes trong Data Packet được sắp xếp để cho các bít thấp được truyền đi trước
Hình 2-23-Trường dữ liệu CRC Field
Đây là trường mã kiểm tra và sửa lỗi, có hai kiểu CRC là CRC5 (5 bits) và CRC16 (16 bít) CRC5 dùng cho các packet Token và CRC16 dùng cho DATA packet
CRC5-TokenCRC: được áp dụng trên các trường ADDR, ENDP của các packet
IN, OUT, SETUP, hoặc trên các trường Frame number của gói SOF Đa thức sinh của, mã CRC là : G(X)=X5 + X2 + 1
CRC16-DataCRC: được áp dụng cho trường dữ liệu trên các gói DATA, đa thức
sinh của mã CRC này là: G(X)=X16 + X15 + X2 + 1
2.3.3.3 Packet Format
Token Packet:
Cấu trúc của một token packet gổm 4 phần: PID, ADDR, ENDP, CRC5 PID là trường định danh gói, ADDR xác định địa chỉ thiết bị và ENDP xác định chỉ số Endpoint, hai trường này sẽ xác định một điểm cuối duy nhất trên thiết bị trao đổi dữ liệu với host trong giao dịch hiện tại Cấu trúc token packet được mô tả như hình:
Hình 2-24-Cấu trúc gói IN, OUT, SETUP token
SOF-Start_Of_Frame packet:
SOF là gói được gửi đi tại mỗi thời điểm đầu của một Frame truyền, nó được gửi
đi từ host theo một chu kì khoảng 1.00ms ± 0.0005ms Nó bao gồm các trường PID, FrameNumber và CRC5 áp dụng cho FrameNumber, như thể hiện trong hình
Trang 34Hình 2-25-Cấu trúc gói SOF
DATA Packet:
DATA packet bao gồm PID, trường dữ liệu và CRC16, trường dữ liệu có thể chứa
0 đến 1023 bytes, nhưng phải là một số nguyên lần byte, trường mã CRC16 áp dụng cho trường dữ liệu, như hình dưới
Hình 2-26-Cấu trúc gói DATA HandShake Packet
HandShake là gói dùng để điều khiển quá trình trao đổi dữ liệu giữa host và function, HandShake chỉ gồm PID, nó được dùng để báo lại trạng thái của phiên truyền dữ liệu, bằng cách trả về các gói để báo rằng dữ liệu đã được nhận hoặc bị từ chối, luồng điều khiển và trạng thái treo Chỉ có một vài kiều truyền có sử dụng các gói HandShake, nó luôn được trả về trong HandShakePhase hoặc trả về trong DATA phase thay cho một gói dữ liệu nhưng thường là khi kết thúc DATA phase HandShake Packet bị giới hạn bởi một EOP sau một byte của gói, nếu điều này không được thỏa mãn thì gói này coi như bị lỗi và sẽ bị bỏ Có 3 loại HandShake packet
ACK: Chỉ ra rằng dữ liệu được nhận đúng không có lỗi khi giải mà Stuff và CRC
ACK được dùng đối với các phiên truyền mà có gói dữ liệu được truyền đi Được truyền từ host đến function trong phiên truyền IN, được truyền từ function về host trong các phiên truyền OUT hoặc SETUP
NAK: dùng để báo rằng function không chấp nhận dữ liệu OUT từ host, hoặc
không có dữ liệu để truyền lên host trong phiên truyền IN NAK chỉ được sinh ra bởi function trong phiên truyền dữ liệu IN hoặc trong pha HandShake của phiên truyền OUT NAK không bao giờ được sinh ra bởi Host
STALL: Được dùng để trả lời cho một IN token trong phiên truyền IN, và dùng
sau pha truyền dữ liệu của phiên truyền OUT, STALL dung để chỉ ra rằng function không thể truyền hoặc nhận dữ liệu tại thời điểm hiện tại hoặc xác định là ControlPipe không được hỗ trợ STALL được sử dụng với hai kiểu phân biệt:
• Function Stall: là khi mà function ở trong trạng thái treo halt (do đầy bộ
đệm, lỗi vv…), trạng thái halt là trạng thái mà function không thể nhận dữ
Trang 35liệu, một trường hợp đặc biệt của function stall là trạng thái Halt của function là do host chỉ định, gọi là CommandStall
• ProtocolStall: chỉ có ý nghĩa với các control pipe, ProtocolStall khác so
với FunctionStall về ý nghĩa cũng như thời gian xảy ra, ProtocolStall chỉ xuất hiện trong các giai đoạn truyền Data và Stage của Control Transfer, và
nó sẽ kết thúc tại lần truyền tiếp theo
2.3.4 Các phương thức truyền
2.3.4.1 Bulk Transactions
Bulk là kiểu truyền có đảm bảo không có lỗi trong dữ liệu sau khi nhận được bởi
cơ chế phát hiện lỗi và gửi lại khi có lỗi, BulkTransaction được chia làm 3 pha truyền bao gồm : token, data, handshake như trong hình
Hình 2-27-Kịch bản truyền kiểu Bulk
IN: khi host sẵn sang nhận dữ liệu thì nó gửi đi một IN token, function nhận được
gói này nếu nó sẵn sang gửi dữ liệu thì sẽ gửi dữ liệu về, còn nếu không nó sẽ gửi về NAK hoặc STALL để báo các trạng thái tương ứng Khi host nhận được dữ liệu, nếu
dữ liệu là không lỗi nó sẽ gửi về một ACK, còn nếu không nó sẽ không trả lời, Function phát hiện lỗi dựa vào Timeout
OUT: khi host muốn gửi dữ liệu ra function thì nó sẽ gửi một OUT token trước
tiên, sau đó nó sẽ gửi dữ liệu, nếu dữ liệu được nhận mà không có lỗi thì function sẽ trả về một trong 3 gói: ACK, NAK, STALL tùy trạng thái của function Còn nếu có lỗi
Trang 36Dữ liệu trong Bulk transaction được gửi đi trong pha data sử dụng cơ chế toggle,
dữ liệu được truyền đi một cách xen kẽ giữa hai kiểu DATA Packet DATA0 và DATA1
Hình 2-28-Luồng dữ liệu trong BulkTransfer
2.3.4.2 Control Transfers
Trong truyền kiểu Controls có tối thiểu hai giai đoạn truyền là: Setup và Status, tuy nhiên giữa hai giai đoạn này có thể có giai đoạn truyền dữ liệu Data xen giữa hai giai đoạn trên Trong giai đoạn Setup, host truyền một SETUP packet tới một control endpoint của function Thứ tự các gói truyền trong giai đoạn Setup giống như trong truyền OUT, trong giai đoạn SETUP thì gói dữ liệu luôn chọn là DATA0, các bước truyền thể hiện như hình
Hình 2-29-Kịch bản truyền kiểu Control
Giai đoạn truyền dữ liệu bao gồm nhiều các phiên truyền IN, OUT giống như trong truyền kiểu Bulk, tuy nhiên tất cả các phiên truyền trong giai đoạn Data của ControlTransfer phải cùng chiều nghĩa là tất cả là IN hoặc OUT Giai đoạn Status là giai đoạn truyền cuối cùng của ControlTransfer, nó chứa gói DATA có chiều ngược với chiều trong giai đoạn Data và luôn lấy PID là DATA1, như thể hiện dưới
Trang 37Hình 2-30-Thứ tự các gói tin trong ControlTransfer
2.3.4.3 Interrupt Transactions
Truyền kiểu ngắt cũng bao gồm các phiên truyền OUT hoặc IN Có hai trường hợp của ngắt là host yêu cầu ngắt và device yêu cầu ngắt
• Host yêu cầu ngắt: khi host là chủ thể yêu cầu ngắt thì nó sẽ phiên truyền
OUT để gửi thông tin về ngắt ra device để bắt đầu một giao dịch kiểu ngắt
• Device yêu cầu ngắt: Nếu device là chủ thể của yêu cầu ngắt thì nó sẽ đưa
các ngắt vào một hàng đợi, việc phát hiện yêu cầu ngắt do host sẽ thực hiện một cơ chế poll Host gửi ra các IN token theo một chu kì nào đó (do cách thực hiện khi cài đặt) khi hàng đợi của device còn yêu cầu ngắt nó sẽ gửi
dữ liệu chứa các thong tin về ngắt cho host
Trang 38Hình 2-31-Kịch bản truyền kiểu Isochronous
Giá trị vi sai ’0’ D- > VOH(min) D+ > VOL(max) (D-) –(D+) > 200mV D- > VIH(min) (D-) –(D+) > 200mV
Single-ended 0
(SE0)
D+ < VOL(max) D- < VOL(max)
D+ < VIL(max) D- < VIL(max)
D+ < VIH(min) D- < VIH(min) Trạng thái ’J’
D- > VIHZ (min) D+ < VIH (max) D+ > VIHZ (min) D- < VIH (max) Resume State Trạng thái K Trạng thái K
Start-Of-Packet Trạng thái đường truyền từ trạng thái Idle chuyển sang K
End-Of-Packet Hai bittimes ở trạng
thái SE0 và theo đó
là một bittime ở trạng thái ’J’
SE0 cho ≥ 1 bittimes
và theo đó là trạng thái ’J’ trong 1 bittimes
SE0 cho ≥ 1 bittimes và theo đó
là trạng thái ’J’ Disconnect N/A SE0 trong khoảng ≥ 2.5μs
Connect N/A Idle trong khoảng ≥ 2.5ms Idle trong khoảng ≥ 2.5μs Reset
D+ và D- <
VOL(max) trong khoảng ≥ 10ms
D+ và D- <
VIL(max) trong khoảng ≥ 10ms
D+ và D- <
VIL(max) trong khoảng ≥ 2.5μs
Bảng 2-Bảng mô tả tín hiệu và trạng thái đường truyền vi sai
Giao diện tín hiệu với thiết bị và với host :
Trang 39Hình 2-32-Sơ đồ logic khối truyền nhận tín hiệu vi sai
2.3.5.2 Connect và Disconnect Signaling
Khi không có function nào kết nối với cổng của hub hoặc host thì hai điện trở kéo tại host hoặc hub port sẽ kéo D+ và D- về mức thấp và trạng thái đường truyền là SE0 Khi một function được kết nối với một cổng thì trạng thái đường truyền trở về trạng thái idle tương ứng với từng chế độ truyền Khi thiết bị đang được gắn với cổng mà được tháo ra thì có sự biến đổi ngược lại, trạng thái cần đạt đến phải được duy trì trong một khoảng thời gian yêu cầu Giản đồ thời gian sau thể hiện điều kiện về thời gian cho các thao tác gắn và tháo thiết bị khỏi hệ thống
Hình 2-33-Trạng thái đường truyền ứng với tín hiệu Disconnect
Trang 40Hình 2-34-Trạng thái đường truyền của tín hiệu Connect-FullSpeed
Hình 2-35- Trạng thái đường truyền của tín hiệu Connect-LowSpeed
Sau khi reset quá trình được điễn ra tương tự với connect
Hình 2-36-Tín hiệu Reset