Lời nói đầu Trong thời đại ngày nay, lĩnh vực công nghệ thông tin truyền thông đang ngày càng nóng bỏng với tốc độ phát triển đến chóng mặt, do đó nhu cầu quảng bá tin tức, hình ảnh trở nên cần thiết hơn bao giờ hết. Tại những trung tâm kinh tế lớn trên thế giới, chiến dịch quảng cáo được tiến hành rầm rộ trên màn hình cỡ siêu lớn tại các quảng trường, khu phố đông người qua lại tạo ra những diện mạo mới cho khu phố, sang trọng hơn và đẹp mắt hơn nhất là khi về đêm. Các màn hình quảng cáo này giải quyết tốt vấn đề bộ mặt đô thị thay vì những áp phích lớn treo lộn xộn ngoài đường và có khả năng hiển thị bất kì thông tin gì một cách nhanh chóng. Nhận thấy vai trò to lớn của FPGA trong lĩnh vực nghiên cứu, thiết kế các vi mạch điều khiển có khả năng cấu hình cao, nhóm tác giả đã tìm hiểu công nghệ này và ứng dụng vào việc xây dựng hệ thống điều khiển bảng LED đa sắc, cho phép hiển thị nội dung của video, được lấy từ nhiều nguồn khác nhau. Sau một thời gian làm việc tích cực trên “Phòng thiết kế hệ nhúng và tính toán có thể cấu hình lại” (Embedded System and Reconfigurable Computing Lab), dưới sự hướng dẫn tận tình của thầy giáo TS. Phạm Ngọc Nam, TS. Phạm Doãn Tĩnh, sự hỗ trợ từ kỹ sư Phạm Văn Hà và kỹ sư Nguyễn Ngọc Dũng, nhóm đã hoàn thành đồ án với đề tài “Thiết kế hệ thống hiển thị video trên bảng LED đa sắc hỗ trợ Flash USB, thẻ nhớ SD và giao tiếp Ethernet”. Trong quá trình thực hiện đồ án, nhóm đã gặt hái được một số kết quả nhất định. Mặc dù vậy, do thời gian có hạn nên một số ý tưởng vẫn chưa được thực hiện và hệ thống không tránh khỏi một vài sai sót. Vì vậy, chúng em rất mong nhận được ý kiến đóng góp của các thầy cô giáo và bạn bè để hệ thống có thể tiến sát hơn với ứng dụng thực tiễn. Nhóm tác giả xin được gửi lời cảm ơn chân thành và sâu sắc nhất tới: Thầy giáo TS. Phạm Ngọc Nam Thầy giáo TS. Phạm Doãn Tĩnh Kỹ sư Phạm Văn Hà Kỹ sư Nguyễn Ngọc Dũng Viện Điện Tử Viễn Thông, trường ĐH Bách Khoa Hà Nội
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HÒA XÃ HÔI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
Độc lập - Tự do - Hạnh phúc -
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ và tên sinh viên: DƯƠNG VIỆT ANH Số hiệu sinh viên: 20070063 NGUYỄN VĂN KHÁNH 20071548
NGUYỄN MẠNH HÙNG 20071408
Khoá: 52 Viện: Điện tử - Viễn thông Ngành : Điện tử - Viễn thông 1 Đầu đề đồ án: Thiết kế hệ thống hiển thị video trên bảng LED đa sắc – hỗ trợ Flash USB, thẻ nhớ SD và giao tiếp Ethernet 2 Các số liệu và dữ liệu ban đầu: ……… ……… …… ………
………
……….… ……… ………
3 Nội dung các phần thuyết minh và tính toán: ………
……… ….………
……… ….………
……… ….………
………
4 Các bản vẽ, đồ thị ( ghi rõ các loại và kích thước bản vẽ ): ………
……… ….………
……… ……….………
5 Họ tên giảng viên hướng dẫn: TS PHẠM NGỌC NAM
6 Ngày giao nhiệm vụ đồ án:
7 Ngày hoàn thành đồ án:
Ngày tháng năm
Sinh viên đã hoàn thành và nộp đồ án tốt nghiệp ngày tháng năm
Cán bộ phản biện
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
BẢN NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP Họ và tên sinh viên: Số hiệu sinh viên:
Ngành: Khoá:
Giảng viên hướng dẫn:
Cán bộ phản biện:
1 Nội dung thiết kế tốt nghiệp:
2 Nhận xét của cán bộ phản biện:
Ngày tháng năm
Cán bộ phản biện
( Ký, ghi rõ họ và tên )
Trang 3Lời nói đầu
Trong thời đại ngày nay, lĩnh vực công nghệ thông tin - truyền thông đang ngày càng nóng bỏng với tốc độ phát triển đến chóng mặt, do đó nhu cầu quảng bá tin tức, hình ảnh trở nên cần thiết hơn bao giờ hết Tại những trung tâm kinh tế lớn trên thế giới, chiến dịch quảng cáo được tiến hành rầm rộ trên màn hình cỡ siêu lớn tại các quảng trường, khu phố đông người qua lại tạo ra những diện mạo mới cho khu phố, sang trọng hơn và đẹp mắt hơn nhất là khi về đêm Các màn hình quảng cáo này giải quyết tốt vấn đề bộ mặt đô thị thay vì những áp phích lớn treo lộn xộn ngoài đường và có khả năng hiển thị bất kì thông tin gì một cách nhanh chóng Nhận thấy vai trò to lớn của FPGA trong lĩnh vực nghiên cứu, thiết kế các vi mạch điều khiển có khả năng cấu hình cao, nhóm tác giả đã tìm hiểu công nghệ này
và ứng dụng vào việc xây dựng hệ thống điều khiển bảng LED đa sắc, cho phép hiển thị nội dung của video, được lấy từ nhiều nguồn khác nhau
Sau một thời gian làm việc tích cực trên “Phòng thiết kế hệ nhúng và tính toán
có thể cấu hình lại” (Embedded System and Reconfigurable Computing Lab), dưới
sự hướng dẫn tận tình của thầy giáo TS Phạm Ngọc Nam, TS Phạm Doãn Tĩnh, sự
hỗ trợ từ kỹ sư Phạm Văn Hà và kỹ sư Nguyễn Ngọc Dũng, nhóm đã hoàn thành đồ
án với đề tài “Thiết kế hệ thống hiển thị video trên bảng LED đa sắc hỗ trợ
Flash USB, thẻ nhớ SD và giao tiếp Ethernet”
Trong quá trình thực hiện đồ án, nhóm đã gặt hái được một số kết quả nhất định Mặc dù vậy, do thời gian có hạn nên một số ý tưởng vẫn chưa được thực hiện
và hệ thống không tránh khỏi một vài sai sót Vì vậy, chúng em rất mong nhận được
ý kiến đóng góp của các thầy cô giáo và bạn bè để hệ thống có thể tiến sát hơn với ứng dụng thực tiễn
Nhóm tác giả xin được gửi lời cảm ơn chân thành và sâu sắc nhất tới:
Thầy giáo TS Phạm Ngọc Nam
Thầy giáo TS Phạm Doãn Tĩnh
Kỹ sư Phạm Văn Hà
Kỹ sư Nguyễn Ngọc Dũng
Viện Điện Tử - Viễn Thông, trường ĐH Bách Khoa Hà Nội
Trang 4 Cùng toàn thể gia đình, bạn bè đã giúp đỡ và tạo mọi điều kiện thuận lợi cho nhóm trong quá trình nghiên cứu
Nhóm sinh viên thực hiện: DƯƠNG VIỆT ANH
NGUYỄN MẠNH HÙNG NGUYỄN VĂN KHÁNH
Trang 5Tóm tắt đồ án
“Thiết kế hệ thống hiển thị video trên bảng LED đa sắc hỗ trợ Flash USB,
thẻ nhớ SD và giao tiếp Ethernet”
Thực tế, LED full color không còn là quá mới, nhưng việc thiết lập và điều khiển một bảng LED khổ rộng còn khá phức tạp và tốn nhiều công sức cũng như tiền của Với mong muốn đem kiến thức học được từ nhà trường vào phục vụ đời sống, nhóm tác giả đã nghiên cứu, thiết kế và triển khai hệ thống hiển thị video trên
ma trận LED full color kích thước lớn, sử dụng bo nhúng có khả năng tái cấu hình FPGA Đề tài của nhóm tập trung vào việc giao tiếp với các thiết bị ngoại vi rất phổ biến hiện nay như USB, thẻ nhớ SD và chuẩn Ethernet Đồng thời, hệ thống cũng có thể điều khiển bảng LED với nhiều chế độ hiển thị thích hợp với môi trường (tăng/giảm độ sáng - tối, màu sắc…) Ngoài ra, nhóm đã nhúng thành công hệ điều hành uClinux lên vi xử lý Nios II, tạo ra khả năng mở rộng cho đề tài Từ đó, nhóm
đã xây dựng thành công hệ thống hiển thị video trên ma trận LED full color với kích thước kiểm thử là 64x64
Trang 6Abstract
“ Designing the video displaying system on full color LED matrix, supports
Flash USB, SD card and Ethernet protocol”
In fact, full color LED is no longer new, however, to install and control a wide LED frame is still complex and taking high cost With the hope of applying theory
as well as experiment during 5-year studying in HUST to a real life, we have
together researched, designed and deployed the video displaying system on large size of full color LED matrix screen using re-configurable FPGA board Our
project focused on communicating with very common peripherals such as Flash USB, SD card and Ethernet protocol Moreover, the system is able to control the LED matrix with different display modes suitable for environment, for instance, increasing or decreasing dark-light level, colors Additionally, the team successfully embedded uClinux Operation System on Nios II microprocessor, this make a capability of development for the project As the result, we made a success
of building Video Display Control System on full-color LED matrix with tested frame of 64x64
Trang 7Mục lục
Lời nói đầu 3
Tóm tắt đồ án 5
Mục lục 7
Danh mục hình vẽ 10
Danh mục bảng biểu 12
Danh sách từ viết tắt 13
Chương 1 Giới thiệu chung 15
1.1 Mục đích 15
1.2 Mô hình tổng quan hệ thống 16
1.3 Yêu cầu của hệ thống 17
1.3.1 Yêu cầu chức năng 17
1.3.2 Yêu cầu phi chức năng 17
1.4 Sơ đồ khối và chức năng từng khối của hệ thống 18
1.4.1 Sơ đồ khối hệ thống 18
1.4.2 Chức năng từng khối 18
1.5 Tổ chức công việc trong nhóm 19
1.6 Tóm tắt nội dung các chương 20
Chương 2 Giới thiệu công nghệ FPGA và đánh giá các giải pháp khả thi 22
2.1 Giới thiệu chung 22
2.2 Kit DE2 và các công cụ sử dụng 24
2.2.1 Tài nguyên phần cứng 25
2.2.2 Vi xử lý mềm Nios II 26
2.2.3 Các công cụ hỗ trợ 28
2.3 Quy trình thiết kế hệ thống Nios II 31
2.4 Phân tích, đánh giá các giải pháp thiết kế hệ thống 34
Chương 3 Triển khai và ứng dụng hệ điều hành uClinux trên kit DE2 36
3.1 Tổng quan hệ điều hành nhúng uClinux [5] 36
3.1.1 Lịch sử phát triển hệ điều hành nhúng uClinux 37
3.1.2 Kiến trúc hệ điều hành uClinux [5] 38
3.2 Các đặc điểm của hệ điều hành uClinux 39
Ưu điểm và nhược điểm của hệ điều hành uClinux 39
Trang 83.2.3 Runtime linker and loader 41
3.2.4 Ethernet 42
3.2.5 Các thư viện được sử dụng để phát triển hệ điều hành uClinux 43
3.2.6 Driver của các ngoại vi 43
3.2.7 Mã nguồn hệ điều hành uClinux 44
3.3 Biên dịch mã nguồn hệ điều hành uClinux 46
3.3.1 Toolchains 46
3.3.2 Tạo file ảnh zImage 47
3.3.3 Quá trình khởi động nhân Linux 48
3.4 Xây dựng hệ thống uClinux 50
3.4.1 Cấu hình tích hợp hệ thống 50
3.4.2 Khái niệm về device driver 54
3.4.3 Thêm một driver đơn giản 55
3.4.4 Tích hợp gói driver điều khiển ngoại vi 57
3.4.5 Xây dựng ứng dụng 60
3.5 Kết luận 61
Chương 4 Giao tiếp với thẻ nhớ SD và Flash USB 62
4.1 Lý thuyết về định dạng FAT [7] 62
4.1.1 Đơn vị dữ liệu 63
4.1.2 Cấu trúc dữ liệu [8] 63
4.1.3 LBA và CHS 65
4.2 Giao tiếp thẻ nhớ SD/MMC 66
4.2.1 Sơ đồ chân 66
4.2.2 Các thanh ghi 67
4.2.3 Các lệnh giao tiếp SD card 67
4.2.4 Một số thủ tục với SD card 69
4.3 Giao tiếp flash USB 71
4.4 Cấu hình sử dụng flash USB và thẻ nhớ SD với uClinux 74
4.4.1 Tích hợp driver USB (ISP1362) [19] 74
4.4.2 Tích hợp SD card (SPI) [20] 76
4.5 Kết luận 77
Chương 5 Truyền video từ PC xuống kit FPGA qua mạng LAN 78
5.1 Lý do lựa chọn giao thức 78
5.2 Lý thuyết cơ sở về giao thức RTP 79
5.2.1 Tổng quan về giao thức 79
5.2.2 Các định dạng của Payload và Profile [10] 80
5.2.3 Cấu trúc tiêu đề gói tin RTP 81
5.3 Cấu trúc cổng Ethernet 83
Trang 95.4 Giới thiệu công cụ VLC và Wireshark 86
5.5 Thư viện lập trình socket 87
5.5.1 Giới thiệu chung [11] 87
5.5.2 Socket API 88
5.6 Xây dựng chương trình nhận video trên kit 89
5.6.1 Truyền video giữa hai PC 89
5.6.2 Xây dựng chương trình trên kit 90
5.7 Kết luận 91
Chương 6 Thực hiện khối giải mã JPEG và hiển thị video trên màn hình 92
6.1 Mục đích của khối giải mã JPEG 92
6.2 Cấu trúc ảnh nén JPEG [13] 92
6.2.1 Cấu tạo header 93
6.2.2 Các khâu thực hiện với ảnh mã hóa JPEG 94
6.3 Thực hiện khối giải mã ảnh 98
6.3.1 Tổng quan khối giải mã 99
6.3.2 Sơ đồ khối 101
6.3.3 Kết quả mô phỏng 103
6.4 Kết luận 105
Chương 7 Kết quả nghiên cứu, kết luận và hướng phát triển đề tài 106
7.1 Kết quả đạt được 106
7.1.1 Nhúng hệ điều hành uClinux và giao tiếp với USB, thẻ nhớ SD 106
7.1.2 Xây dựng chương trình truyền file xuống kit qua mạng LAN 106
7.1.3 Xây dựng khối giải mã JPEG 106
7.2 Kết luận 106
7.3 Hướng nghiên cứu tiếp theo 107
Tài liệu tham khảo 108
Bảng đối chiếu thuật ngữ Anh - Việt 110
Phụ lục 112
Phụ lục 1: Chương trình đọc file MJPEG từ một phân vùng trong uClinux và truyền tới khối hiển thị 112
Phụ lục 2: Chương trình đọc file trong thẻ nhớ SD 114
Phụ lục 3: Chương trình convert chuỗi ảnh JPEG thành file MJPEG 117
Phụ lục 4: Cấu hình cho các driver ngoại vi trong hệ thống uClinux 118
Trang 10Danh mục hình vẽ
Hình 1.1 Mô hình tổng quan hệ thống 16
Hình 1.2 Sơ đồ khối hệ thống 18
Hình 2.1 Kiến trúc cơ bản của FPGA [1] 23
Hình 2.2 Kit phát triển DE2 24
Hình 2.3 Sơ đồ khối của kit DE2 [2] 25
Hình 2.4 Kiến trúc cơ bản của vi xử lý Nios II [3] 27
Hình 2.5 Phần mềm Quartus II 28
Hình 2.6 Công cụ SOPC Builder – xây dựng hệ thống Nios II 29
Hình 2.7 Công cụ Nios II Command Shell 30
Hình 2.8 Trình soạn thảo và biên dịch phần mềm Nios II for Eclipse 30
Hình 2.9 Quy trình thiết kế hệ thống Nios II [3] 32
Hình 3.1 Một số thiết bị ứng dụng hệ điều hành uClinux 36
Hình 3.2 Bộ nhớ ảo và bộ nhớ vật lý trên hệ điều hành Linux [8] 40
Hình 3.3 Ethernet trong uClinux 42
Hình 3.4 Cấu trúc thư mục của gói mã nguồn uClinux-dist 45
Hình 3.5 Cấu trúc thư mục trong ROM 46
Hình 3.6 Lưu đồ quá trình khởi động 49
Hình 3.7 Giao diện make menuconfig 51
Hình 3.8 Giao diện Kernel/Library/Defaults Selection 52
Hình 3.9 Giao diện khi khởi động uClinux 53
Hình 3.10 Cách lựa chọn biên dịch module hello3 56
Hình 3.11 Kết quả thêm module hello3 57
Hình 3.12 Cách lựa chọn biên dịch gói các ngoại vi 59
Hình 3.13 Cách lựa chọn ứng dụng người dùng hello1 60
Hình 3.14 Kết quả thêm ứng dụng người dùng hello1 61
Hình 4.1 Cấu trúc phân vùng trong định dạng FAT 63
Hình 4.2 Lưu trữ của một file trong FAT [8] 65
Hình 4.3 Cấu tạo chân thẻ nhớ SD 66
Hình 4.4 Quá trình khởi tạo thẻ nhớ SD 69
Hình 4.5 Quá trình chuyển chế độ data tranfer 70
Hình 4.6 Quá trình đọc 1 block trong SD card 70
Hình 4.7 Giao tiếp giữa khối vi xử lý và chip ISP 1362 [15] 71
Hình 4.8 Sơ đồ khối các thành phần ISP 1362 [15] 72
Hình 4.9 Chu kì truy cập thanh ghi 32 bit mode 73
Hình 4.10 Ví dụ đọc dữ liệu thanh ghi 32 bit 73
Hình 4.11 Kiến trúc phân tầng software cho giao tiếp USB 74
Trang 11Hình 5.1 Quá trình truyền video từ PC xuống kit 78
Hình 5.2 Cấu trúc tiêu đề gói tin RTP 81
Hình 5.3 Tiêu đề mở rộng của gói tin RTP 82
Hình 5.4 Sơ đồ chân cổng Ethernet 84
Hình 5.5 Giao diện phần mềm VLC 86
Hình 5.6 Bắt gói tin RTP bằng WireShark 87
Hình 5.7 Mô hình phân lớp OSI và mô hình TCP/IP 88
Hình 5.8 Cấu trúc gói tin RTP được truyền đi 89
Hình 5.9 Quá trình khởi tạo và nhận dữ liệu của socket 90
Hình 6.1 Cấu trúc khung của định dạng JPEG [13] 93
Hình 6.2 Một MCU với tỉ lệ lấy mẫu 4:2:0 [13] 95
Hình 6.3 Lượng tử hóa ảnh DCT và quét zigzag [14] 97
Hình 6.4 Header của một ảnh JPEG [14] 98
Hình 6.5 Sơ đồ các cổng vào ra 100
Hình 6.6 Sơ đồ tín hiệu đầu vào 101
Hình 6.7 Sơ đồ khối giải mã JPEG 101
Hình 6.8 Khối hiển điều khiển hiển thị 103
Hình 6.9 Kết quả mô phỏng các tín hiệu trên Modelsim 104
Hình 6.10 Kết quả đầu ra khi mô phỏng với Modelsim 105
Hình 7.1 Tài nguyên sử dụng của hệ thống 107
Trang 12
Danh mục bảng biểu
Bảng 4.1 Khả năng lưu trữ của các định dạng FAT [8] 62
Bảng 4.2 Các thành phần trong boot sector 64
Bảng 4.3 Mô tả các chân SD/MMC Card [9] 66
Bảng 4.4 Cấu trúc 1 command [9] 67
Bảng 4.5 Danh sách lệnh SD card trong chuẩn SPI [18] 69
Bảng 4.6 Địa chỉ thanh ghi ISP-1362 [15] 72
Bảng 5.1 Bảng các chân tín hiệu cổng Ethernet 85
Bảng 5.2 Thống kê tỉ lệ mất gói khi truyền qua Ethernet 90
Bảng 6.1 Một số Marker của ảnh [14] 94
Trang 13Danh sách từ viết tắt
STT Từ viết tắt Thuật ngữ tiếng Anh Thuật ngữ tiếng Việt
1 SOPC System On Programable Chip Hệ thống tích hợp trên chíp
4 USB Universal Serial Bus
5 IDE Integrated Development
7 FIFO First In First Out Vào trước - ra trước
8 SPI Serial Peripheral Interface Giao tiếp nối tiếp
9 DMIPS Dhrystone Million
Instructions Per Second
Triệu lệnh Dhrystone trên
giây
10 RISC Reduced Instruction Set
Computer Máy tính tập lệnh thu gọn
14 BSD Berkeley Socket Distribution Phiên bản socket Berkeley
15 RTP Real time Transfer Protocol Giao thức truyền thời gian
thực
17 IP Intellectual Property Sở hữu trí tuệ
18 MPU Memory Protection Unit Đơn vị bảo vệ bộ nhớ
Trang 1420 FAT File Allocation Table Bảng cấp phát file
21 LBA Logical Block Address Địa chỉ khối logic
24 M-JPEG Motion Join Photographic
25 MMU Memory Management Unit Đơn vị quản lý bộ nhớ
26 DCT Discrete Cosine Transform Biến đổi cosin rời rạc
27 FSM Finite State Machine Máy trạng thái
28 DQT Decoder Quantization Table Bảng lượng tử
29 DHT Decoder Huffman Table Bảng Huffman
33 DAC Digital to Analog Converter Bộ chuyển đổi số/tương tự
34 HAL Hardware Abstraction Layer Lớp trừu tượng phần cứng
35 API Application Programming
Interface
Giao diện lập trình ứng
dụng
Trang 15Chương 1 Giới thiệu chung 1.1 Mục đích
Sự phát triển nhanh của lĩnh vực công nghệ thông tin và truyền thông trong những thập niên gần đây đã và đang mở ra những thay đổi lớn trong cuộc sống hàng ngày của chúng ta, từ hoạt động sản xuất tới kinh doanh, giải trí Mạng Internet đã kết nối các thiết bị điện tử thông minh (PC, mobile, ô tô,…) lại với nhau thành một mạng lưới thông tin toàn cầu Khả năng xử lý của các thiết bị điện tử thì ngày càng nhanh, với giá thành rẻ nên chúng có mặt ở khắp mọi nơi
Tại những trung tâm kinh tế lớn trên thế giới, chiến dịch quảng cáo được tiến hành rầm rộ trên màn hình cỡ siêu lớn tại các quảng trường, khu phố đông người qua lại tạo ra những diện mạo mới cho khu phố, sang trọng hơn và đẹp mắt hơn nhất là khi về đêm
Dựa trên những nhận định về thị trường, nhóm tác giả nhận thấy nhu cầu về những màn hình quảng cáo như vậy ở nước ta là rất lớn Thị trường quảng cáo trên bảng led cỡ lớn còn rất nhiều tiềm năng do đa phần các hệ thống bảng LED video triển khai tại Việt Nam đều là các sản phẩm đã “đóng vỏ”, bản thân các công ty triển khai hệ thống này cũng có thể không hiểu rõ được công nghệ bên trong mà chỉ đóng vai trò lắp ráp sản phẩm Điều này sẽ làm tăng chi phí đầu vào lên rất nhiều so với giá thành gốc
Trên quan điểm kĩ thuật, thứ nhất, những màn hình cỡ lớn ngoài trời yêu cầu công suất lớn và những kĩ thuật thiết kế mới mà các màn hình LCD, CRT không thể đáp ứng được Thứ hai, các thiết bị ngày nay không thể đứng độc lập với các thiết bị khác, mạng Internet đã kết nối các thiết bị với nhau không khoảng cách, đồng thời tiết kiệm được chi phí truyền tin do dùng chung đường truyền Internet Thứ ba, nhúng hệ điều hành lên vi điều khiển đang trở thành xu hướng hiện nay nhằm tăng khả năng mở rộng cho hệ thống và khả năng giao tiếp với người dùng Với sự phát triển của kiến trúc chip FPGA (Field-Programmable Gate Array) và các phương pháp phát triển hệ thống, công cụ hỗ trợ, nhóm nhận thấy có thể áp dụng thành tựu
Trang 16Trong khuôn khổ của đề tài, nhóm tác giả tập trung vào việc lấy dữ liệu video nén theo chuẩn MJPEG từ nhiều nguồn khác nhau: USB, thẻ nhớ SD hoặc từ mạng LAN và hiển thị lên bảng LED Hệ thống được nhúng trên kit phát triển DE2 và hỗ trợ hệ điều hành uClinux
1.2 Mô hình tổng quan hệ thống
Hệ thống sử dụng bo mạch DE2 với chip Cyclone II 2C35 của Altera làm khối điều khiển trung tâm Mô hình hệ thống được mô tả trên Hình 1.1
Hình 1.1 Mô hình tổng quan hệ thống
Trang 17Mô hình hệ thống bao gồm:
Các thiết bị đầu vào tín hiệu số: thẻ nhớ SD, Flash USB, video LAN
Bo xử lý trung tâm: Kit DE2 – Altera
Thiết bị đầu ra: bảng LED đa sắc 64x64 và màn hình hiển thị chuẩn VGA
1.3 Yêu cầu của hệ thống
1.3.1 Yêu cầu chức năng
Hệ thống có một số chức năng sau:
Lấy dữ liệu video từ thẻ nhớ SD, Flash USB hoặc từ mạng LAN
Hiển thị video trên bảng LED full-color 64×64
Chọn lựa các nguồn dữ liệu đầu vào: do dữ liệu vào hệ thống có thể được lấy
từ nhiều nguồn khác nhau, nên hệ thống phải có khả năng chọn lựa các nguồn dữ liệu đầu vào tại một thời điểm
Điều chỉnh độ sáng tối của màn hình: hệ thống có thể được triển khai tại các môi trường có cường độ sáng khác nhau như: ngoài trời, trong phòng nên việc hệ thống có khả năng điều chỉnh độ sáng tối của màn hình là hết sức cần thiết để phù hợp với thị giác của người quan sát
1.3.2 Yêu cầu phi chức năng
Hệ thống có một số yêu cầu phi chức năng sau:
Nguồn nuôi FPGA luôn đảm bảo ổn định ở điện áp: +5V
Trễ xử lý tín hiệu từ 20-30ns để đảm bảo cho hình ảnh được hiển thị trên màn hình luôn liên tục
Tốc độ hiển thị của tín hiệu video 15 hình trên giây đối với dữ liệu lấy từ thẻ nhớ SD, Flash USB hoặc từ mạng LAN
Hệ thống phải có độ ổn định cao trong điều kiện khí hậu nóng ẩm
Nhận thiết bị được kết nối với hệ thống trong thời gian trễ chấp nhận được
Khoảng cách quan sát từ 8 – 30 m
Trang 181.4 Sơ đồ khối và chức năng từng khối của hệ thống
Với sơ đồ khối như trên, mỗi khối có chức năng, nhiệm vụ như sau:
Khối MCU: Khối xử lý trung tâm, điều khiển và truyền/nhận dữ liệu từ các
ngoại vi thông qua đường Bus Avalon
Khối Ethernet: Điều khiển giao tiếp với khối phần cứng Ethernet-MAC trên
kit thông qua chip điều khiển DM9000A
Khối USB Host: Điều khiển giao tiếp truyền nhận dữ liệu đối với chip
ISP1362, là một vi điều khiển có chức năng điều khiển giao tiếp chuẩn USB
Khối SPI: Điều khiển giao tiếp với thẻ nhớ SD thông qua chuẩn giao tiếp
JPEG Decoder
SPI Controller
(SD Card Controller)
Ethernet Controller USB Host
Controller
Trang 19 Khối Display Controller: Đọc dữ liệu hình ảnh truyền đến và hiển thị trên
màn hình LED
Nhóm tác giả đã phát triển đồ án này dựa trên kết quả nghiên cứu của một dự án trước đây tại phòng ESRC Lab và kế thừa khối chức năng Display Controller Từ
đó, nhóm tập trung phân tích và thiết kế các khối còn lại sau đó tiến hành tích hợp
hệ thống nhằm đạt được hiệu quả cao nhất
1.5 Tổ chức công việc trong nhóm
Sau khi phân tích đề tài và dựa vào năng lực, sở trường của các thành viên, nhóm tác giả đã thống nhất công việc cụ thể như sau:
1 Dương Việt Anh:
Nhiệm vụ: Tìm hiểu chuẩn giao tiếp thẻ nhớ SD, xây dựng khối giải mã ảnh nén JPEG
Công việc:
Tìm hiểu định dạng FAT
Xây dựng chương trình giao tiếp thẻ nhớ SD
Tìm hiểu ngôn ngữ mô tả phần cứng Verilog
Xây dựng khối giải mã JPEG
Viết chương trình hiển thị video Motion-JPEG từ Flash USB và thẻ nhớ SD trên hệ điều hành nhúng uClinux
2 Nguyễn Mạnh Hùng:
Nhiệm vụ: Tìm hiểu hệ điều hành nhúng uClinux, giao tiếp Flash USB với hệ điều hành
Công việc:
Cấu hình và biên dịch hệ điều hành uClinux
Tìm hiểu cách viết các chương trình ứng dụng, driver trên uClinux
Kiểm thử, đánh giá tốc độ hiển thị video MPEG-1 với chương trình phần mềm trên hệ điều hành
Thực hiện truy xuất file trong Flash USB qua hệ điều hành
Trang 203 Nguyễn Văn Khánh
Nhiệm vụ: Tìm hiểu quy trình thiết kế hệ nhúng trên kit Altera, truyền dữ liệu video qua giao thức mạng Ethernet
Công việc:
Xây dựng hệ thống SOPC bao gồm các khối giao tiếp với ngoại vi
Tìm hiểu công nghệ FPGA và quy trình xây dựng một hệ thống nhúng NIOS II
Tìm hiểu về giao tiếp mạng Ethernet trên hệ thống, lập trình Socket
Tìm hiểu một số giao thức mạng dùng để streaming video
Tìm hiểu về lập trình cho chip ISP1362 điều khiển giao tiếp USB
1.6 Tóm tắt nội dung các chương
Đồ án bao gồm bảy chương và bốn phụ lục với nội dung cơ bản như sau:
Chương 1: Nêu rõ mục đích của đề tài, đưa ra sơ đồ khối tổng quan của toàn
hệ thống và bản phân công công việc trong nhóm
Chương 2: Trình bày những vấn đề cơ bản liên quan tới việc phân tích và
thiết kế hệ thống trên công nghệ FPGA Đồng thời giới thiệu các công cụ quan trọng và các giải pháp thiết kế hệ thống mà nhóm tác giả đã phân tích
và đánh giá trong suốt thời gian thực hiện
Chương 3: Quy trình cấu hình biên dịch nhân hệ điều hành nhúng uClinux
trên lõi vi xử lý mềm NIOS II, thêm các ứng dụng người dùng và cách thức viết một driver giao tiếp với các ngoại vi
Chương 4: Giới thiệu về cấu tạo, phương thức giao tiếp với thẻ nhớ và flash
USB Ngoài ra, định dạng FAT (File Alocation Table) được sử dụng rộng rãi cho định dạng của các thiết bị lưu trữ cũng sẽ được trình bày trong nội dung của chương
Chương 5: Giới thiệu giao thức RTP và các công cụ sử dụng trong việc
Trang 21 Chương 6: Trình bày quy trình xây dựng, tích hợp khối giải mã JPEG, từ đó
hiển thị video MJPEG lên bảng LED
Chương 7: Tổng kết những kết quả mà nhóm đã đạt được trong quá trình
nghiên cứu và hướng phát triển tiếp theo cho đề tài
Các phụ lục 1 đến 3 là một số đoạn code chính trong hệ thống
Trang 22Chương 2 Giới thiệu công nghệ FPGA và đánh
giá các giải pháp khả thi
_* Nguyễn Văn Khánh *_
Chương này trình bày những vấn đề cơ bản liên quan tới việc phân tích, thiết kế
hệ thống trên công nghệ FPGA nói chung và triển khai trên kit DE2 của Altera nói riêng Đồng thời giới thiệu các công cụ quan trọng được sử dụng trong quá trình thực hiện đề tài cũng như các giải pháp thiết kế hệ thống mà nhóm tác giả đã phân tích và đánh giá trong suốt thời gian thực hiện
2.1 Giới thiệu chung
Từ những chiếc smartphone tới thiết bị y tế, từ lò vi sóng tới các hệ thống điện
tử thông minh xuất hiện khắp mọi nơi, các nhóm dự án hệ thống nhúng đã phát triển
ra những chiếc máy tính nhúng mà chúng giờ đây là một phần tích hợp không thể thiếu trong xã hội Để phát triển những sản phẩm đó, các kĩ sư thiết kế phải sử dụng rất nhiều công cụ và công nghệ để cấu thành những hệ thống nhúng từ phần cứng tới phần mềm FPGA chính là một công cụ đang trở nên ngày càng phổ biến
FPGA là một IC được thiết kế để có thể cấu hình (hay lập trình) bởi khách hàng sau khi nó được sản xuất, và do đó được gọi là “field-programmable” Việc cấu hình FPGA nói chung được thực hiện bằng cách sử dung ngôn ngữ mô tả phần cứng (Hardware Description Language – HDL) như VHDL, Verilog, JHDL, tương tự như phương pháp thiết kế các IC chuyên dụng ASIC (Application-Specific Integrated Circuit)
Nói một cách tổng quan, FPGA là “chip trắng” nhưng có thể thực hiện bất kì chức năng phần cứng số nào, và đặc biệt có thể cấu hình lại tại chỗ ngay cả khi sản phẩm đã phát triển và chuyển tới người dùng Điều đó khiến FPGA có sự khác biệt
cơ bản so với các chip ASIC, nó có thể được sử dụng trong quá trình thiết kế bản mẫu hoặc được dùng như sản phẩm hoàn chỉnh Nói ngắn gọn, FPGA cung cấp nền tảng phần cứng lập trình được cho người phát triển hệ nhúng
Trang 23FPGA được cấu tạo từ các thành phần được mô tả như Hình 2.1[1], bao gồm:
Các thành phần logic cơ bản lập trình được (logic block) : các khối này chứa các cổng logic cơ bản như AND và XOR Trong hầu hết các loại FPGA, các logic block thường bao gồm cả các phần tử nhớ
Hệ thống liên kết tái cấu trúc (Interconnection Resources): cho phép kết nối các block với nhau
Các khối vào ra (I/O Cell)
Hình 2.1 Kiến trúc cơ bản của FPGA [1]
Vai trò của FPGA ngày càng mở rộng dần theo thời gian Ban đầu, FPGA được dùng để thay thế các mạch IC rời rạc họ 7400 Giờ đây, các nhà sản xuất chip FPGA đã cải thiện đáng kể khả năng logic và chức năng của FPGA Về khả năng logic, số lượng thành phần cấu hình được CLB (Configurable Logic Block hay Logic Element) ngày càng tăng, trung bình gấp đôi sau 10 tháng, vượt xa định luật Moore Về mặt chức năng, chip FPGA có khả năng hỗ trợ các khối chức năng như
vi xử lý, đường bus, bộ điều khiển bộ nhớ, giao tiếp mạng, và rất nhiều các ngoại vi
- tất cả trên một chip Cùng với sự phát triển của các hệ điều hành hiện đại như Linux, những chip FPGA giờ đây ngày càng có vai trò như những chiếc PC về chức năng và khả năng tính toán
Trang 24Nói tóm lại, công nghệ FPGA cung cấp nền tảng linh hoạt cho người thiết kế hệ nhúng, giảm số lượng chip của hệ thống và đáp ứng được những hệ thống yêu cầu cao về hiệu năng, băng thông nhờ việc kết hợp mô hình thiết kế SW-HW codesign
2.2 Kit DE2 và các công cụ sử dụng
Theo yêu cầu đặt ra của hệ thống, nhóm đã tiến hành phân tích và đánh giá tài nguyên cần thiết để thực hiện các yêu cầu chức năng Bo mạch sử dụng tối thiểu cần
có giao tiếp SD card, Ethernet và giao diện USB host – ngoài ra cần phải đảm bảo
có thể phát triển hệ thống ở mức hoàn chỉnh hơn Theo đó, nhóm đã lựa chọn kit phát triển DE2 của hãng Altera với cấu hình phần cứng thỏa mãn và có nhiều khả năng mở rộng hệ thống
Kit DE2 (Development and Education board) là một bo mạch được Altera thiết
kế với mục đích phục vụ cho việc nghiên cứu các hệ thống nhúng, kiến trúc máy tính và FPGA (Hình 2.2) Kit có nhiều đặc tính phù hợp với việc nghiên cứu trên các phòng thí nghiệm, các khóa học về thiết kế số tại các trường đại học, cao đẳng cũng như là công cụ để phát triển các hệ thống số phức tạp [2]
Bên cạnh đó, Altera cũng cung cấp các công cụ phát triển phù hợp với DE2 và một cộng đồng mạng chuyên phát triển ứng dụng trên các bo mạch này
Trang 252.2.1 Tài nguyên phần cứng
Với chip FPGA Cyclone II, nhiều lựa chọn bộ nhớ, cổng I/O đa dạng, số phần
tử logic là khá lớn – kit DE2 là nền tảng lý tưởng để thực hiện nhiều loại hệ thống
số từ những mạch đơn giản tới các hệ thống đa phương tiện phức tạp Sơ đồ khối của KIT DE2 được mô tả trên Hình 2.3
Hình 2.3 Sơ đồ khối của kit DE2 [2]
Chip FPGA: Cyclone II EP2C35F672C6 và chip cấu hình tuần tự EPCS16
33.216 Logic Elements (LEs)
105 khối RAM M4K với 483.840 bit có thể lập trình
4 vòng khóa pha
Thạch anh 27 MHz và 50 MHz
Cyclone
II FPGA 2C35
EPCS16 Config Device
USB Blaster
User Green LEDs (8) User Red LEDs (18) 16x2 LCD Module PS2 & RS-232 Ports Toggle Switches (18) Pushbutton Switches (4)
Trang 26Nios II có kiến trúc RISC với khả năng cung cấp:
Đầy đủ tập lệnh 32 bit, không gian địa chỉ và đường dữ liệu
32 thanh ghi 32 bit đa mục đích
32 ngắt ngoài
Lệnh nhân, chia 32 bit tạo ra kết quả 32 bit
Biểu diễn dữ liệu theo định dạng Little Endian với ba kiểu dữ liệu: word, halfword và byte
Giao tiếp được với các thiết bị ngoại vi trên chip FPGA và bộ nhớ, thiết bị ngoại vi ngoài chip
Môi trường phát triển phần mềm dựa trên công cụ GNU C/C++ và Eclipse IDE
Tùy chọn các đơn vị quản lý bộ nhớ và đơn vị bảo vệ bộ nhớ
Trang 27Ta phân biệt ba cấu hình của Nios II tùy theo ứng dụng như sau:
Nios II economy core (Nios II/e): với 600 - 700 LEs,tốc độ xử lý 5 DMIPS
tại tần số 50 MHz Cấu hình dạng này của Nios phù hợp với các ứng dụng vi điều khiển, với chi phí và công suất tiêu thụ thấp, tối ưu hóa về tài nguyên trên FPGA
Nios II standard core (Nios II/s): có phần cứng hỗ trợ thời gian thực cũng
như tập lệnh tùy biến, 1200 – 1400 LEs, tốc độ xử lý 25 DMIPS Dạng standard core phù hợp với các yêu cầu thời gian thực trên cả phần cứng và phần mềm, cân bằng giữa hiệu năng và tài nguyên sử dụng
Nios II fast core (Nios II/f): hỗ trợ đơn vị quản lý bộ nhớ MMU (Memory
Management Unit) tốc độ xử lý có thể lên tới 51 DMIPS, với 1400 – 1800 LEs Dạng fast core có thể chạy được hệ điều hành embedded Linux, cho hiệu năng cao nhất trong ba dạng
Hình 2.4 mô tả kiến trúc cơ bản của vi xử lý Nios II
Hình 2.4 Kiến trúc cơ bản của vi xử lý Nios II [3]
Trong đó:
TCM: Tightly Coupled Memory
I-MEM: bộ nhớ lệnh
D-MEM: bộ nhớ dữ liệu
Trang 28 MMU: đơn vị điều khiển bộ nhớ
MPU: đơn vị bảo vệ bộ nhớ
INT CNTRL: khối điều khiển ngắt
EXP CNTRL: khối điều khiển Exception
2.2.3 Các công cụ hỗ trợ
Quartus II – phần mềm tổng hợp và biên dịch phần cứng
Công cụ sử dụng cho việc thiết kế phần cứng là Quartus II Đây là phần mềm thiết kế được Altera phát triển nhằm sử dụng cho các ứng dụng trên các chip FPGA của hãng Nó cung cấp một môi trường thiết kế hoàn hảo cho các hệ thống system-on-a-programmable-chip (SOPC) Sử dụng trình soạn thảo HDL trên Quartus, ta có thể tạo các component của riêng mình và tối ưu chúng Giao diện phần mềm được giới thiệu trong Hình 2.5
Hình 2.5 Phần mềm Quartus II
Từ Quartus ta không những xây dựng được phần cứng tùy ý bằng HDL mà còn
có thể gọi SOPC Builder để xây dựng SoC bằng cách cấu hình thích hợp và công cụ
để download thiết kế xuống chip FPGA
SOPC Builder là công cụ được tích hợp trong Quartus II – qua đó, ta có thể chọn loại vi xử lý Nios II, chọn bộ nhớ và các component cần thiết – có thể là các
Message
console
Trang 29các component được tích hợp và người sử dụng cũng có thể sửa đổi các kết nối đó Giao diện của trình SOPC Builder được thể hiện trong Hình 2.6
Hình 2.6 Công cụ SOPC Builder – xây dựng hệ thống Nios II
Nios II Software Build Tools (SBT)
Nios II SBT cho phép tạo các project phần mềm cho Nios II, các chương trình đơn luồng cũng như các ứng dụng phức tạp trên một hệ điều hành thời gian thực (RTOS) với hệ thống thư viện hỗ trợ từ Altera và các bên thứ ba
Phần mềm Nios II SBT cung cấp hai giao diện cho người sử dụng:
Nios II SBT command line: trong giao diện dòng lệnh của Nios II SBT, ta có
thể khởi tạo, sửa đổi và chạy các chương trình cho Nios II bằng cách nhập các lệnh tương ứng Cụ thể trong hệ thống này, nhóm tác giả sử dụng Nios II Command Shell như một Terminal của hệ điều hành uClinux để làm việc (Hình 2.7)
Trang 30Hình 2.7 Công cụ Nios II Command Shell
Nios II SBT for Eclipse: phần mềm Eclipse sử dụng tiện ích và chức năng của
Nios II SBT ở bên trong để cung cấp cho người dùng một giao diện đồ họa (GUI), được thể hiện như một môi trường phát triển thống nhất Sử dụng Eclipse, ta có thể thực hiện tất cả quá trình phát triển phần mềm cho bất cứ một hệ thống Nios II nào Eclipse cũng cho phép ta nhập và biên dịch các project được khởi tạo trong Nios II Command Shell (Hình 2.8)
Hình 2.8 Trình soạn thảo và biên dịch phần mềm Nios II for Eclipse
Trang 312.3 Quy trình thiết kế hệ thống Nios II
Quy trình phát triển một hệ thống Nios II bao gồm ba quá trình phát triển: thiết
kế phần cứng, thiết kế phần mềm và thiết kế hệ thống – bao gồm cả phần cứng và phần mềm Với những hệ thống đơn giản, một người có thể thực hiện toàn bộ quy trình Nhưng với các hệ thống phức tạp, việc phân chia thiết kế phần cứng – phần mềm là rất quan trong và cần thiết.[3]
Quy trình chuẩn để thiết kế một hệ thống Nios II được Altera đề xuất được mô
tả trên Hình 2.9
Bước 1: Phân tích yêu cầu hệ thống
Quy trình phát triển hệ thống luôn bắt đầu với các công việc tiền thiết kế - bao gồm việc phân tích các yêu cầu của hệ thống như:
Hiệu năng tính toán mà ứng dụng yêu cầu?
Các loại giao diện mà hệ thống cần sử dụng?
Ứng dụng có cần xử lý đa luồng hay không?
Băng thông và tốc độ hệ thống yêu cầu là bao nhiêu?
Qua việc trả lời các câu hỏi cơ bản như trên, ta có thể xác định các yêu cầu cụ thể của hệ thống như:
Cần sử dụng lõi vi xử lý Nios loại nào? Nhỏ hơn hoặc nhanh hơn?
Thiết kế cần những component nào? Số lượng bao nhiêu?
Có cần sử dụng hệ điều hành không? Chọn hệ điều hành nào?
Sử dụng phần cứng ở đâu cho hiệu quả cao nhất?
Trang 32Hình 2.9 Quy trình thiết kế hệ thống Nios II [3]
Run/Debug Software Using Nios II SBT
Analyze System Requirements
Run/Debug Software
on Target Board
Refine Software and Hardware
Intergrate SOPC Builder System into Quatus II Project
Develop Software with the Nios II SBT
Assign Pin Locations, Timing Requirements and Other Design Constraints
Compile Hardware Design of Target Board
Download FPGA Design to Target Board
Download Software Executable
to Nios II System on Target Broad
& Peripheral Logic
Altera HAL
& Peripheral Drivers
User C/C++ Code & Custom Libraries
Custom
Hardware
Modules
Trang 33Bước 2: Định nghĩa và khởi tạo hệ thống trong SOPC Builder
Sau khi xác định các yêu cầu về phần cứng, ta sử dụng công cụ SOPC Builder trong phần mềm Quartus II để chọn loại vi xử lý, bộ nhớ và các component khác mà
hệ thống yêu cầu
Đầu ra cơ bản của SOPC Builder bao gồm một số file sau:
SOPC Builder System File (.ptf): đây là file lưu trữ cấu hình phần cứng cho
hệ thống Nios II Phần mềm Nios II IDE yêu cầu file này để biên dịch phần mềm với phần cứng phù hợp
HDL file: là các file mô tả thiết kế các khối phần cứng Phần mềm Quartus II
sử dụng các file HDL này để biên dịch toàn bộ thiết kế FPGA thành một file SRAM Object File (.sof) để nạp xuống chip
Bước 3: Tích hợp hệ thống SOPC Builder vào project trong Quartus II
Hầu hết các thiết kế FPGA đều bao gồm các khối logic bên ngoài hệ thống Nios
II Trong Quartus II, các module phần cứng có thể được tích hợp tùy ý – có thể là các IP (intellectual property) từ Altera hoặc các nhà cung cấp IP thứ ba Tại đây, ta
có thể coi hệ thống Nios II được tạo ra ở bước trên như một module và kết nối logic với các module khác
Sử dụng phần mềm Quartus II, ta cũng có thể gán chân trên chip FPGA cho các tín hiệu I/O, thiết lập yêu cầu về thời gian thực hiện và các điều kiện kiểm soát khác với thiết kế sao cho hệ thống thỏa mãn được các yêu cầu phi chức năng mà bước 1
đã xác định Cuối cùng, ta sẽ biên dịch project trong Quartus II để tạo ra file sof dùng để cấu hình FPGA
Sau đó, file cấu hình FPGA trên sẽ được nạp xuống kit DE2 sử dụng cáp USB – Blaster Sau khi được cấu hình, chip FPGA sẽ hoạt động như thiết kế phần cứng đã định nghĩa - ở đây là một hệ thống Nios II
Bước 4: Phát triển phần mềm nhúng sử dụng Nios II SBT
Sau khi khởi tạo hệ thống Nios II với SOPC Builder, ta có thể bắt đầu thiết kế các ứng dụng phần mềm sử dụng C/C++ với Nios II SBT Altera cung cấp các
Trang 34drivers và lớp trừu tượng phần cứng (HAL) cho các component – cho phép người
sử dụng viết các chương trình Nios II nhanh hơn và độc lập với phần cứng mức thấp Thêm vào đó, người dùng có thể thiết kế đồng thời tái sử dụng các thư viện sẵn có trong Nios II SBT
Để tạo một project Nios II mới, Nios II SBT sẽ yêu cầu file ptf từ SOPC Builder Ta cũng cần có file sof để cấu hình FPGA trước khi chạy và gỡ lỗi cho ứng dụng trên phần cứng
Bước 5: Chạy và gỡ lỗi cho phần mềm trên kit
Phần mềm Nios II SBT cung cấp đầy đủ tiện ích cho việc nạp phần mềm xuống kit phát triển, chạy và gỡ lỗi chương trình trên phần cứng
Bước 6: Cải thiện phần mềm và phần cứng
Sau khi chạy kiểm thử phần mềm trên kit phát triển, ta có thể sẽ nhận thấy hệ thống yêu cầu hiệu năng cao hơn Trong trường hợp đó, người sử dụng có thể quay lại bước thiết kế phần mềm để cải thiện thuật toán Đồng thời, ta cũng có thể thiết
kế lại phần cứng bằng cách thêm các phần tử tăng tốc Nếu ứng dụng cần thực hiện nhiều nhiệm vụ cùng một thời điểm, hệ thống có thể sử dụng hai hoặc nhiều vi xử
lý hơn
2.4 Phân tích, đánh giá các giải pháp thiết kế hệ thống
Với các hệ thống được lập trình trực tiếp trên vi điều khiển, việc giao tiếp với các thành phần ngoại vi cần nhiều chương trình xử lý khác nhau, trong đó có những ngoại vi giao tiếp khá phức tạp như Flash USB Vì thời gian thực hiện đề tài là không nhiều nên nhóm đã nghĩ tới giải pháp sử dụng hệ điều hành nhúng cho việc phát triển lớp ứng dụng và driver giao tiếp với các ngoại vi Hệ điều hành này phải
là mã nguồn mở, nhỏ gọn, là real-time OS, hỗ trợ cho vi xử lý mềm Nios II, một số ngoại vi và các thư viện cần thiết cho đề tài
uClinux là hệ điều hành phổ biến được sử dụng trong nhiều hệ thống nhúng có tài nguyên phần cứng hạn chế, hoàn toàn đáp ứng được các yêu cầu nêu trên Do đó,
Trang 35nhóm đã quyết định chọn hệ điều hành này làm môi trường phát triển ứng dụng cho
hệ thống
Về vấn đề xử lý dữ liệu video đầu vào, nếu ta sử dụng file video ở dạng thô thì
sẽ không thể hiển thị video từ USB, thẻ nhớ SD hay từ mạng Ethernet 10 Mbps do tốc độ đường truyền băng thông từ các ngoại vi này không thể đáp ứng được dung lượng yêu cầu
Ví dụ:
Đối với chuẩn USB, tốc độ truyền lớn nhất ở chế độ Full-Speed có băng thông
là 12 Mbps hay với Ethernet ở chuẩn 10 Mbps Trong khi một khung hình thô 24 bit
có kích thước là 640x480x24 bit Do đó, nếu hệ thống truyền file video thô, số khung hình tối đa đạt được trong 1 giây là:
10 Mbps / (640x480x24)bit ~= 1,4 (hình/s)
Từ mâu thuẫn ở trên, nhóm đã quyết định nghiên cứu khối xử lý giải mã JPEG trên phần cứng, để đảm bảo tốc độ xử lý khi xử lý song song, cũng như không can thiệp vào quá trình đọc dữ liệu được xử lý bằng phần mềm Từ đó, hệ thống có thể
xử lý được video Motion-JPEG truyền từ các nguồn kể trên do kích thước một khung hình giảm đi đáng kể so với ảnh thô
Trang 36Chương 3 Triển khai và ứng dụng hệ điều hành
uClinux trên kit DE2
3.1 Tổng quan hệ điều hành nhúng uClinux [5]
Hệ điều hành uClinux là một phiên bản hệ điều hành sử dụng nhân Linux được thiết kế cho các hệ thống nhúng sử dụng bộ vi điều khiển không có MMU (Hình 3.1) Được phát triển từ nhân Linux nên uClinux có kiến trúc, cách thức hoạt động giống như hệ điều hành Linux chạy trên các PC Phương pháp phát triển ứng dụng cũng giống như phát triển trên môi trường hệ điều hành Linux Do uClinux là một
hệ điều hành mã nguồn mở, nên các nhà phát triển có thể cấu hình theo ý mình để tạo ra một hệ điều hành phù hợp với hệ thống cần phát triển
Trang 373.1.1 Lịch sử phát triển hệ điều hành nhúng uClinux
Dự án hệ điều hành uClinux được phát triển từ năm 1997 Mục đích tạo ra hệ điều hành này là phát triển một phiên bản nhân hệ điều hành Linux 2.0 để nhúng vào các vi điều khiển Nó được Jeff Dionne, Kenneth Albanowski và nhóm các nhà phát triển khác đặt vấn đề là khả năng nhúng Linux vào mạng vi điều khiển không
có đơn vị quản lý bộ nhớ MMU (Memory Management Unit), khả năng truyền thông giữa mạng đó với các hệ thống truyền thông Phiên bản phát hành đầu tiên của hệ điều hành này được phát hành cùng với các vi xử lý Motorola 6800, nó được triển khai trong bộ điều khiển SCADA năm 1997/98 Phiên bản này đã được cộng đồng nguồn mở phát triển và một phiên bản khác đã được sử dụng cho Palm Pilot vào tháng 2 năm 1998 [5]
Trong hệ điều hành uClinux có một số thay đổi so với hệ điều hành Linux, thư viện uC-libc được thiết kế để thay cho thư viện libc và glibc trong hệ điều hành Linux Một cải tiến khác đã được thực hiện bởi SnapGear là thêm một định dạng mới Binary Flat – bFLT Đây là một định dạng file thực thi tương đối đơn giản và nhỏ gọn xây dựng trên cơ sở file a.out
Hệ điều hành uClinux là một hệ điều hành đa nhiệm, các chương trình có thể chạy ở nhiều mức khác nhau của hệ thống và cho phép chạy các ứng dụng đa luồng Việc nhúng hệ điều hành uClinux vào các vi điều khiển đã giúp cho các nhà phát triển tạo ra các ứng dụng dễ dàng vì phương pháp lập trình giống như trên môi trường Linux uClinux là một hệ điều hành thời gian thực, nhà phát triển có thể chạy các ứng dụng đa luồng trên môi trường hệ điều hành
Nhiệm vụ chính khi phát triển hệ điều hành uClinux là cấu hình nhân hệ điều hành cho phù hợp với hệ thống cần phát triển, biên dịch nhân, phát triển các driver cho các ngoại vi và phát triển các ứng dụng cho hệ thống nhúng
Trang 383.1.2 Kiến trúc hệ điều hành uClinux [5]
uClinux là một hệ điều hành dùng phổ biến cho các hệ thống nhúng Linux Nó thường được dùng cho các vi điều khiển không có MMU Ngày nay nhân hệ điều hành này hỗ trợ cho rất nhiểu loại nền tảng CPU khác nhau như ColdFire, Axis ETRAX, ARM, Atari 68k Giống như Linux, uClinux cũng hỗ trợ giao thức TCP/IP và các giao thức giao tiếp mạng khác Nó cũng hỗ trợ các hệ thống file khác nhau và thêm vào một số dạng file đặc biệt được thiết kế cho các hệ thống nhúng
Để có thể chạy trên các vi điều khiển không có MMU thì nhân của hệ điều hành
có một số thay đổi Toàn bộ mã nguồn và các chức năng điều khiển của MMU được loại bỏ ra khỏi mã nguồn của nhân hệ điều hành Một số chức năng khác cũng được điều chỉnh cho phù hợp
Sự thuận lợi chính của nhân uClinux mang lại so với Linux chạy trên PC là kích thước của nhân Khi biên dịch nhân, nhà phát triển phải thiết lập các lựa chọn biên dịch như hỗ trợ loại vi xử lý, hệ thống file và các driver của nhân để kích thước giảm xuống còn khoảng 400 KB Tuy nhiên vào lúc khởi động thì nhân của hệ điều hành sẽ yêu cầu không gian bộ nhớ khoảng 1MB Trong thực tế, kích thước bộ nhớ cần khoảng 2MB vì còn cần cho các ứng dụng Với uClinux, kích thước ảnh nhân
hệ điều hành được điều chỉnh khoảng từ 500 tới 900 KB
Tương tự như hệ điều hành Linux, mã nguồn của uClinux cũng có thể tải miễn phí với giấy phép bản quyền GNU GPL Từ website www.uclinux.org, các nhà phát triển có thể tải gói phân phối của hệ điều hành bao gồm mã nguồn nhân, các thư viện và một số ứng dụng đã được phát triển, những thông báo lỗi và những lỗi đã được sửa
Trang 393.2 Các đặc điểm của hệ điều hành uClinux
3.2.1 Ƣu điểm và nhƣợc điểm của hệ điều hành uClinux
Với đặc điểm mã nguồn mở, các nhà phát triển có thể tải và chỉnh sửa theo ý muốn Tuy đã được phát triển từ lâu nhưng bên cạnh những ưu điểm, uClinux vẫn còn tồn tại một số nhược điểm
Ưu điểm:
uClinux tích hợp sẵn nhiều IP của hệ điều hành Linux chuẩn, các file hệ thống, các phần mềm miễn phí mang tính ổn định cao
Nhân Linux 2.6 có kích thước dưới 300KB
Nhiều ứng dụng của hệ thống nhúng có thể thực hiện mà không cần MMU
Ứng dụng người dùng có thể truy cập vào toàn bộ hệ thống, đến từng thanh ghi của thiết bị
uClinux có thể sử dụng hầu hết các system calls của hệ điều hành Linux chuẩn
uClinux hỗ trợ chạy đa nhiệm full multi-tasking với hạn chế tương đối nhỏ
uClinux hỗ trợ nhiều bộ vi xử lý mà Linux chuẩn không hỗ trợ
Nhược điểm:
uClinux phát triển chậm hơn so với Linux
Tài liệu và tài nguyên online ít hơn so với Linux
uClinux thường không có MMU
Nhiều đường link cũng như source code trên trang chủ đã quá cũ.[8]
3.2.2 Đơn vị quản lý bộ nhớ MMU
MMU là đơn vị quản lý bộ nhớ trong hệ điều hành MMU có vai trò dịch địa chỉ từ bộ nhớ ảo VM (Virtual Memory) sang bộ nhớ vật lý, mở rộng bộ nhớ khi bộ nhớ vật lý là có giới hạn, cho phép hệ điều hành có thể đổi chỗ hai bộ nhớ khi cần thiết MMU còn có vai trò ngăn chặn tiến trình (process) truy cập vào những địa chỉ vật lý không được phép
Trang 40Hình 3.2 minh họa về mô hình bộ nhớ ảo và bộ nhớ vật lý trong hệ điều hành Linux chuẩn
Hình 3.2 Bộ nhớ ảo và bộ nhớ vật lý trên hệ điều hành Linux [8]
Với bộ nhớ ảo VM, Linux có thể mở rộng một ngăn xếp (stack) của một process đang chạy khi cần thiết Khi một ứng dụng thử ghi vào vượt quá đỉnh của stack, MMU sẽ mở rộng vùng bộ nhớ mới và tiếp tục ghép vào đó
Trong các hệ điều hành có MMU, VM tạo ra một lớp trung gian giữa yêu cầu
bộ nhớ cho các ứng dụng và MMU Ưu điểm chính của hệ thống này là bộ nhớ cho các ứng dụng sẽ được phân tách trong bộ nhớ vật lý, nhờ đó mang lại mức độ bảo
vệ bộ nhớ cao hơn Yêu cầu của các ứng dụng về VM sẽ được phân bố với sự hợp tác giữa MMU và kernel MMU cung cấp một sự bảo vệ bộ nhớ cho ứng dụng khi chạy trên nền tảng khác Các hệ điều hành không có MMU nên bộ nhớ chương trình được ánh xạ trực tiếp từ bộ nhớ vật lý, kiến trúc này được gọi là mô hình bộ nhớ phẳng (flat memory model) Trong flat memory model, CPU truy cập tuần tự đến vị trí bộ nhớ sẵn có mà không cần phải phân trang hoặc phân đoạn
Hệ điều hành uClinux thường không có MMU nên sẽ không có VM và không
có sự bảo vệ bộ nhớ Khi xảy ra lỗi về bộ nhớ của một chương trình sẽ gây ra lỗi cho các chương trình khác và cả kernel uClinux không có sự phân trang theo yêu cầu, cần phải tải toàn bộ mã nguồn chương trình vào trong RAM, thay vì chỉ cần tải