1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

96 52 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 96
Dung lượng 2,04 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

BỘ 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 2

LỜ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 3

MỤ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 4

CHƯƠ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 5

DANH 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 6

Hì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 7

DANH 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 8

CHƯƠ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 9

Cá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 10

Chứ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 11

CHƯƠ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 13

Phầ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 14

thố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 15

Hì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 18

tươ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 19

Hì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 20

Hì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 21

Exception 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 22

Bộ 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 24

Topo 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 25

chẳ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 29

Hì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 30

Hì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 32

PID 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 33

Trườ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 34

Hì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 35

liệ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 36

Dữ 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 37

Hì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 38

Hì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 39

Hì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 40

Hì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

Ngày đăng: 13/02/2021, 06:27

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[5] Adam Dunkels, Design and Implementation of the lwIP TCP/IP Stack, Swedish Institute of Computer Science 2001 Sách, tạp chí
Tiêu đề: Design and Implementation of the lwIP TCP/IP Stack
[10] www.opencore.org, WISHBONE Specification, Revision B.3 Sách, tạp chí
Tiêu đề: WISHBONE Specification
[12] Franjo Plavec, Soft-core Processor design, Master of Applied Science thesis, University of Toronto 2004 Sách, tạp chí
Tiêu đề: Soft-core Processor design
[1] Altera Corp., Quartus II Handbook Volume 4: SOPC Builder Khác
[2] Altera Corp., Avalon Interface Specification Khác
[3] Altera Corp., Nios II Processor Reference Handbook Khác
[4] Altera Corp., Nios Development Board Stratix Edition Reference Manual Khác
[6] USB.org , Universal Serial Bus Specification - Revision 1.1 Khác
[9] CECS Technical Report , System-On-Chip Modeling and Design Khác
[11] Fairchild Semiconductor, USB1T11A UserManual Khác
[13] www.opencore.org [14] www.altera.com [15] www.asicworld.com Khác
[16] www.razamicroelectronics.com/products_alchemy/ [17] www.intel.com Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w