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

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

118 974 1
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề 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
Người hướng dẫn TS. Phạm Ngọc Nam, TS. Phạm Dân Tĩnh
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Điện tử - Viễn thông
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2012
Thành phố Hà Nội
Định dạng
Số trang 118
Dung lượng 3,15 MB

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

Nội dung

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 1

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

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

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 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 5

Tó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 6

Abstract

“ 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 7

Mụ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 8

3.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 9

5.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 10

Danh 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 11

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

Danh 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 14

20 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 15

Chươ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 16

Trong 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 17

Mô 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 18

1.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 20

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

Chươ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 23

FPGA đượ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 24

Nó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 25

2.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 26

Nios 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 27

Ta 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 29

cá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 30

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

2.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 32

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

Bướ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 34

drivers 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 35

nhó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 36

Chươ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 37

3.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 38

3.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 39

3.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 40

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

Ngày đăng: 13/06/2014, 13:31

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Volnei A. Pedroni, Circuit Design with VHDL, The MIT Press, 2004 Sách, tạp chí
Tiêu đề: Circuit Design with VHDL
[2] Peter J. Ashenden, Digital Design- An Embedded Systems Approach Using Verilog, Morgan Kaufmann, 2007 Sách, tạp chí
Tiêu đề: Digital Design- An Embedded Systems Approach Using Verilog
[3] Ronald Sass and Andrew G. Schmidt, Embedded Systems Design with Platform FPGAs - Principles and Practices, Morgan Kaufmann, 2010 Sách, tạp chí
Tiêu đề: Embedded Systems Design with Platform FPGAs - Principles and Practices
[4] R.C. Cofer and Benjamin F. Harding, Rapid System Prototyping with FPGAs, Newnes, 2005 Sách, tạp chí
Tiêu đề: Rapid System Prototyping with FPGAs
[5] Kimmo Nikkanen, Bachelor‟s Thesis “uClinux as an Embedded solution”, January 2003 Sách, tạp chí
Tiêu đề: uClinux as an Embedded solution
[6] Philipp Lutz, “Device drivers and Test application for a SOPC solution with Nios II softcore processor and àClinux”, February 9, 2008 Sách, tạp chí
Tiêu đề: Device drivers and Test application for a SOPC solution with Nios II softcore processor and àClinux
[9] “Altera University Program Secure Data Card IP Core”, Altera corporation, March 2009 Sách, tạp chí
Tiêu đề: Altera University Program Secure Data Card IP Core
[11] Brian "Beej" Hall, Beej’s Guide to Network Programming Using Internet Sockets [Online]. Available: http://beej.us/guide/bgnet/ Sách, tạp chí
Tiêu đề: Beej
[12] Michael Opdenacker (November 20, 2007), “Introduction to uClinux” [Online]. Avaiable: http://free-electrons.com/articles/uclinux Sách, tạp chí
Tiêu đề: Introduction to uClinux
[15] Philips Semiconductors, “ISP 1362 embedded programming guide”, June 2002 Sách, tạp chí
Tiêu đề: ISP 1362 embedded programming guide
[17] International Telecommunication Union, “Information technology digital compression and coding of continuos-tone still images requirements and guidelines”, ITU, 1993 Sách, tạp chí
Tiêu đề: Information technology digital compression and coding of continuos-tone still images requirements and guidelines”
[18] S.Stuijk, “Design and implementation of a JPEG decoder”, Faculty of electrical engineering, December 2001 Sách, tạp chí
Tiêu đề: Design and implementation of a JPEG decoder
[20] James O. Hamblen – T.S Hall – M.D.Furman, “Rapid prototyping of digital systems – SOPC Edition”, Springer Science, 2008 Sách, tạp chí
Tiêu đề: Rapid prototyping of digital systems – SOPC Edition
[21] David Lariviere and Stephen A.Edwards, “uClinux on the altera DE2”, Columbia University, 2008 Sách, tạp chí
Tiêu đề: uClinux on the altera DE2

HÌNH ẢNH LIÊN QUAN

Hình 1.1 Mô hình tổng quan hệ thống - 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
Hình 1.1 Mô hình tổng quan hệ thống (Trang 16)
1.4  Sơ đồ khối và chức năng từng khối của hệ thống  1.4.1  Sơ đồ khối hệ thống - 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
1.4 Sơ đồ khối và chức năng từng khối của hệ thống 1.4.1 Sơ đồ khối hệ thống (Trang 18)
Hình 2.1 Kiến trúc cơ bản của FPGA [1] - 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
Hình 2.1 Kiến trúc cơ bản của FPGA [1] (Trang 23)
Hình 2.3 Sơ đồ khối của kit DE2 [2] - 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
Hình 2.3 Sơ đồ khối của kit DE2 [2] (Trang 25)
Hình 2.4 mô tả kiến trúc cơ bản của vi xử lý Nios II - 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
Hình 2.4 mô tả kiến trúc cơ bản của vi xử lý Nios II (Trang 27)
Hình 2.5 Phần mềm Quartus II - 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
Hình 2.5 Phần mềm Quartus II (Trang 28)
Hình 2.8 Trình soạn thảo và biên dịch phần mềm Nios II for Eclipse - 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
Hình 2.8 Trình soạn thảo và biên dịch phần mềm Nios II for Eclipse (Trang 30)
Hình 2.7 Công cụ Nios II Command Shell - 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
Hình 2.7 Công cụ Nios II Command Shell (Trang 30)
Hình 2.9 Quy trình thiết kế hệ thống Nios II [3] - 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
Hình 2.9 Quy trình thiết kế hệ thống Nios II [3] (Trang 32)
Hình 3.3 Ethernet trong uClinux - 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
Hình 3.3 Ethernet trong uClinux (Trang 42)
Hình 3.4 Cấu trúc thƣ mục của gói mã nguồn uClinux-dist - 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
Hình 3.4 Cấu trúc thƣ mục của gói mã nguồn uClinux-dist (Trang 45)
Hình 3.6 Lưu đồ quá trình khởi động - 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
Hình 3.6 Lưu đồ quá trình khởi động (Trang 49)
Hình 3.7 Giao diện make menuconfig - 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
Hình 3.7 Giao diện make menuconfig (Trang 51)
Hình 3.8 Giao diện Kernel/Library/Defaults Selection - 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
Hình 3.8 Giao diện Kernel/Library/Defaults Selection (Trang 52)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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