Mô hình phần mềm của hai lớp ứng dụng

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng hệ thống hiển thị thông tin hình ảnh thông qua mạng internet (Trang 51)

Mô hình ứng dụng phần mềm trên bo mạch hệ thống Spartan-3E được mô tả như hình 3.14

Client Application được xây dựng trên nền tảng hệ điều hành thời gian thực Xikernel hỗ trợ xử lý phân luồng. Đồng thời sử dụng hai bộ thư viện phần mềm chuyên dụng, thư viện lwip hỗ trợ truyền thông Ethernet giao thức TCP/IP phiên bản lwip130_v3_00_a tích hợp sẵn trên công cụ Software Development Kit (SDK 12.3) của Xilinx và bộ thư viện giải mã hình ảnh TinyJpeg là một bộ thư viện mã nguồn mở được chia sẻ bởi Luc Saillard tại website saillard.org. Hệ thống phần mềm ứng dụng nhúng trên hệ thống phần cứng SOC mà chúng ta đã thực thi bao gồm vi xử lý MicroBlaze cùng khối điều khiển Ethernet, VGA và các ngoại vi khác.

3.3.1. Thiết kế chi tiết hệ thống phần mềm

3.3.1.1. Biểu đồ trường hợp sử dụng

Hình 3-16: Biểu đồ các trường hợp sử dụng.

Hệ thống nhúng trên SOC thực hiện kết nối Ethernet để tải một file ảnh định dạng JPEG từ server. Sau đó thực hiện giải mã hình ảnh đưa về định dạng RGB24 để hiển thị lên màn hình chuẩn VGA.

3.3.1.2. Lưu đồ tiến trình hoạt động

Hình 3-17: Lưu đồ tiến trình hoạt động.

Trình tự hoạt động của hệ thống nhúng sau khi kết nối vật lý giữa Client và Server, được thực hiện bắt đầu từ việc khởi động nguồn của hệ thống SOC, ngay lập tức Client gửi yêu cầu tới Server để yêu cầu được tải tập tin hình ảnh JPEG. Server nhận yêu cầu và gửi file ảnh tới Client theo giao thức truyền file TFPT protocol. Client nhận file ảnh Jpeg và gửi phản hồi về Server kết thúc giai đoạn truyền file. Sau đó Client thực hiện giải mã hình ảnh Jpeg sang định dạng RGB24 và copy dữ liệu của ảnh vào vùng nhớ của lỗi điều khiển VGA, thông báo cho VGA bắt đầu hiển thị hình ảnh. Biểu đồ tiến trình hoạt động (Sequence Diagram) của hệ thống được mô tả như Hình 3-17.

3.3.1.3. Lưu đồ truyền tập tin qua giao thức TFTP

Hình 3-18: Lưu đồ truyền tập tin.

3.3.1.4. Lưu đồ giải mã hình ảnh Jpeg sử dụng thư viện TinyJpeg

3.3.2. Thư viện lwIP hỗ trợ truyền thông Ethernet

lwIP (Lightweight TCP/IP Stack) là thư viện mã mở về TCP/IP Stack, thực thi các giao thức mạng (TCP/IP, UDP/IP, ICMP, ARP…) trên một chip hoặc lõi Ethernet được phát triển cho các hệ thống nhúng. Để sử dụng thư viện lwIP, cấu hình phần cứng yêu cầu vi xử lý PPC450 hoặc MicroBlaze; lõi IP điều khiển Ethernet EMAC

xps_ethernetlite (Ethernet Lite MAC) hoặc xps_ll_temac (TMAC); một bộ Timer sử

dụng IP core xps_timer và bộ điều khiển ngắt sử dụng xps_intc; các ngắt từ Timer và EMAC cần được kết nối tới Interrupt controller. Tất cả các yêu cầu cấu hình phần cứng đều được đáp ứng bởi hệ thống SOC mà chúng ta đã xây dựng.

Sử dụng lwIP có 2 chế độ hoạt động là Raw và Socket, các bảng dưới đây mô tả một số hàm API sử dụng trong chế độ Socket.

Bảng 3-3: Mô tả hàm lwip_socket [4]

Prototype int lwip_socket (int domain, int type, int protocol );

Parameters domain:

kiểu domain của socket

type: giá trị SOCK_DGRAM hoặc SOCK_STREAM tùy vào giao

thức truyền là UDP hay TCP

protocol: thường có giá trịlà 0

Description Hàm này tạo ra một socket với các tham số về domain, type và protocol như đã cung cấp và trả về socket descriptor nếu thành công. Giá trị trả về là tham số cần thiết khi muốn thực thi các hàm khác vì vậy hàm này cần được gọi đầu tiên.

Return Giá trị trả về:

> 0: tạo socket thành công và trả về Socket descriptor của socket đã tạo

<=0: lỗi tạo socket, nguyên nhân có thể do lwIP không hỗ trợ domain hoặc type hoặc protocol đã cung cấp.

Comment Ví dụ:

sd = socket(AF_INET, SOCK_DGRAM, 0);

Bảng 3-4: Mô tả hàm lwip_blind [4]

Prototype

int lwip_bind (int s, struct sockaddr *name, socklen_t namelen );

Parameters - s: Socket descriptor được tạo ra bởi lwip_socket()

- name: trường thông tin về địa chỉ

- namelen: kích thước của name

Description

Kết nối socket s với một địa chỉ chứa trong cấu trúc name. Nếu thành

công, mọi dữ liệu đến từ địa chỉ name sẽ thực thi với socket s

Return Giá trị trả về:

ết nối thành công. <=0: kết nối thất bại.

Comment - Ví dụ:

struct sockaddr_in address; address.sin_family = AF_INET; address.sin_port = htons(80);

address.sin_addr.s_addr = INADDR_ANY;

lwip_bind(sock, (struct sockaddr *)&address, sizeof

(address);

Includes socket.h

Bảng 3-5: Mô tả hàm lwip_close [4]

Prototype int lwip_close(int sd);

Parameters sd: socket descriptor được tạo ra bởi lwip_socket()

Description Hàm này hủy mộ t socket được tham chiếu bởi sd.

Return Giá trị trả về:

ực hiện thành công. ỗi.

Comment

3.3.3. Thư viện giải mã ảnh JPEG – TinyJPEG

TinyJpeg Decoder là một thư viện nhỏ dành cho các ứng dụng cần giải mã ảnh Jpeg. TinyJpeg được viết theo thư viện C chuẩn nên hỗ trợ nhiều phần cứng khác nhau. Tuy nhiên, khi sử dụng trên hệ thống nhúng SOC với tốc độ vi xử lý thấp như Spartan-3E, tốc độ giải mã khá là chậm. Theo lưu đồ giải mã hình ảnh Jpeg mô tả ở hình 3.18, chúng ta cần gọi 5 hàm của thư viện TinyJpeg theo đúng trình tự. Sau đây là bảng mô tả các hàm được sử dụng giải mã Jpeg.

Bảng 3-6: Mô tả hàm khởi tạo tinyjpeg_init [4]

Prototype struct jdec_private *tinyjpeg_init(void)

Parameters N/A

Description

Hàm này khởi tạo vùng nhớ để chuẩn bị lưu trữ thông tin của ảnh và dữ liệu sau khi giải mã jpeg. Hàm này cần được gọi đầu tiên

Return Giá trị trả về:

ỏ tới vùng nhớ vừa được tạo ỗi khởi tạo.

Comment

Includes Tinyjpeg.h

Bảng 3-7: Mô tả hàm duyệt header file tinyjpeg_parse_header [4]

Prototype int tinyjpeg_parse_header( struct jdec_private *priv, const unsigned char *buf, unsigned int size);

Parameters *priv: Tinyjpeg object

*buf: con trỏ tới dữ liệu của file jpeg cần giải mã size: kích thước của file

Description

Hàm này thực hiện kiểm tra file jpeg xem có thể giải mã được hay không. Nếu được thì nó sẽ lấy các thông tin header của file jpeg và truyền vào biến priv

ể giải mã được file này

Comment Hàm này được gọi sau tinyjpeg_init()

Includes Tinyjpeg.h

Bảng 3-8: Mô tả hàm giải mã ảnh tinyjpeg_decode [4]

Prototype int tinyjpeg_decode(

struct jdec_private *priv, int pixel_format);

Parameters *priv: con trỏtới Tinyjpeg object

pixel_format: định dạng ảnh sau khi giải mã. Tinyjpeg hỗ trợ các định dạng sau: - TINYJPEG_FMT_YUV420P - TINYJPEG_FMT_RGB24 - TINYJPEG_FMT_BGR24 - TINYJPEG_FMT_GREY Description

Hàm này thực hiện quá trình giải mã ảnh; chuyển đổi ảnh kết quả sang định dạng pixel_format và lưu trữ bởi con trỏ priv

Return Giá trị trả về:

> 0: hàm thực hiện thành công < 0: hàm thực hiện bị lỗi

Comment Cần thực hiện hai hàm trên trước khi gọi hàm này

Includes Tinyjpeg.h

Bảng 3-9: Mô tả hàm đọc kích thước ảnh tinyjpeg_get_size [4]

Prototype void tinyjpeg_get_size(

struct jdec_private *priv, unsigned int *width, unsigned int *height)

Parameters *priv: con trỏtới Tinyjpeg object

*width: con trỏsẽ lưu độrộng củaảnh

*height: con trỏsẽlưu chiều cao củaảnh

Return void

Comment

Cần thực hiện hàm tinyjpeg_parse_header() trước khi gọi hàm này

Includes Tinyjpeg.h

Bảng 3-10: Mô tả hàm tinyjpeg_get_components [4]

Prototype int tinyjpeg_get_components( struct jdec_private *priv, unsigned char **components)

Parameters *priv: con trỏtới Tinyjpeg object

**components: con trỏ lưu các thành phần màu củ a ảnh sau

giải mã

Description

Hàm này lấy tham ra các thành phần màu của ảnh sau khi đã giải mã

Return int

Comment

Cần thực hiện hàm tinyjpeg_decode() trước khi gọi hàm này

Includes Tinyjpeg.h

Bảng 3-11: Mô tả hàm giải phóng bộ nhớ tinyjpeg_free [4]

Prototype void tinyjpeg_free(

struct jdec_private *priv)

Parameters *priv: con trỏtới Tinyjpeg object

Description

Hàm này thực hiện giải phóng bộ nhớ bị chiếm bởi con trỏ *priv

Return void

Comment

CHƯƠNG 4: : KẾT QUẢ THỰC NGHIỆM VÀ ĐÁNH GIÁ

Chương này sẽ giới thiệu về các kết quả thực thi phần cứng và phần mềm điều khiển hệ thống.

4.1. Nền tảng thực thi hệ thống

Hệ thống được thực thi trên nền tảng FPGA của hãng Xilinx, sử dụng cho Spartan-3E, loại chip XC3S500e, package FG320. Đây là một trong những nền tảng cơ bản của công nghệ FPGA, được sử dụng cho mục đích nghiên cứu, phát triển các ứng dựng mở rộng.

Để thực thi hệ thống, luận văn đã sử dụng bộ công cụ phần mềm EDK – Embedded Development Kit của hãng để xây dựng hệ thống phần cứng SoC và hệ thống phần mềm nhúng trên SoC đã tổng hợp. XPS – Xilinx Platform Studio sử dụng để tổng hợp phần cứng và Software Development Kit để phát triển phần mềm nhúng.

4.2. Kết quả kiểm tra chức năng hệ thống

4.2.1. Kiểm tra kết nối Ethernet

Sau khi tổng hợp phần cứng, chúng ta có file bitstream .bit để tạo một Hardware Platform cho hệ thống phần mềm nhúng. Sử dụng chương trình demo lwip_echo_server. Cấu hình địa chỉ IP của hệ thống nhúng về cùng dải mạng với PC: 192.168.0.100. Nạp chương trình, kết nối cable Ethernet giữa Kit và PC qua cáp đấu chéo. Thực hiện ping từ PC tới địa chỉ của board > thu được kết quả kết nối thành công như mô tả trên hình 4-1

Hình 4-1: Kiểm tra kết nối Ethernet.

4.2.2. Kiểm tra kết nối màn hình VGA, hiển thị hình ảnh

Nạp trực tiếp hình ảnh định dạng RGB vào bộ nhớ RAM vùng nhớ của VGA. Để có được hình ảnh ở định dạng RGB chúng ta dùng tool “Image2RGB”. Sau khi convert file hình ảnh sẽ có dạng header .h file. Kết quả thử nghiệm được mô tả trên hình 4-2

4.2.3. Kiểm tra kết quả giải mã hình ảnh JPEG

Sử dụng thư viện TinyJpeg vào chương trình của hệ thống phần mềm nhúng. Cấu hình sử dụng các hàm của thư viện với đầu vào là một mảng file ảnh định dạng Hex. Các hàm chức năng của thư viện TinyJpeg sẽ thực hiện giải mã các thông tin dữ liệu trong file ảnh Jpeg định dạng Hex sau đó xuất ra một mảng chứa thông tin dữ liệu hình ảnh đã được giải mã sang định dạng RBG. Mảng output này được lưu tại bộ nhớ RAM. Hàm set giá trị Pixel trên màn hình VGA sẽ quét lần lượt hàng và cột của hình ảnh để hiển thị lên màn hình. Kết quả kiểm thử được mô tả trên Hình 4-3.

for (j=0;j<=VGA_IMAGE_H-1; j++)

for (i=0; i<=VGA_IMAGE_W-1; i++)

XTft_SetPixel(&TftInstance, i, j, (output_img[(VGA_IMAGE_W*j+i)] >>5));

Hình 4-3: Kiểm tra chương trình giải mã JPEG

4.2.4. Kiểm tra kết nối tổng thể toàn hệ thống

Thử nghiệm dùng máy tính cá nhân làm FTP server chứa ảnh JPEG, kết nối bo mạch với máy tính qua cáp Ethernet đấu chéo. Kết quả kiểm thử được mô tả trên Hình 4-4.

Hình 4-4: Kiểm tra kết nối toàn hệ thống.

4.3. Đánh giá giải pháp thực hiện hệ thống

Hệ thống hiển thị thông tin hình ảnh quảng bá được xây dựng tương đối hoàn chỉnh, đáp ứng yêu cầu của đề tài Luận văn Thạc sỹ. Các giải pháp thực hiện đề tài đã được lựa chọn và thực hiện theo hướng tối ưu. Từ việc sử dụng chuẩn định dạng hình ảnh JPEG là định dạng phổ biến nhất trên mạng Internet hiện này, đến việc lựa chọn nền tảng FPGA để thực thi hệ thống trên chip SoC, nhằm tối ưu hóa hệ thống phần cứng chuyên dụng. Việc lựa chọn chuẩn giao tiếp màn hình VGA cũng là một chuẩn kết nối màn hình phổ biến, dễ dàng ghép nối với hệ thống.

Giải pháp phần cứng sử dụng bo mạch Spartan-3E là kit phát triển FPGA dạng khởi đầu với cấu hình thấp, do đó có nhiều điểm hạn chế về tốc độ xử lý cũng như chất lượng hình ảnh hiển thị trên màn hình. Do sử dụng thư viện giải mã ảnh JPEG bằng ngôn ngữ C nên vi xử lý của bo mạch Spartan-3E xử lý chậm, thời gian chạy chương trình giải mã tương đối lâu khoảng 3 đến 5 phút. Độ phân giải màn hình VGA mà bo

KẾT LUẬN

Những công việc mà em đã thực hiện được trong Luận văn Thạc sỹ:

 Nghiên cứu phương pháp xây dựng, phát triển phần cứng và phần mềm của hệ thống trên chip SoC sử dụng công nghệ FPGA và ngôn ngữ VHDL.

 Nghiên cứu phương thức truyền thông Internet, giải mã ảnh JPEG, kết nối và điều khiển màn hình hiển thị VGA.

 Nghiên cứu kiến trúc và phương pháp lập trình vi xử lý mềm Micro-Blaze của hãng Xilinx.

 Viết chương trình cấu hình kết nối Ethernet, tải dữ liệu hình ảnh từ server, giải mã JPEG và hiển thị trên màn hình VGA.

 Thực thi thử nghiệm hệ thống tích hợp.

Với kết quả thực thi của đề tài, hệ thống hiển thị hình ảnh qua mạng Internet có thể được ứng dụng trong các hoạt động quảng bá thông tin hình ảnh tại các cơ quan, trường học, bệnh viện. Hay có thể ứng dụng trong hoạt động quảng cáo phục vụ các doanh nghiệp quảng bá thương hiệu, sản phẩm tới toàn xã hội thông qua màn hình lắp đặt tại các tòa nhà cao tầng, trong thang máy, nơi người dân có thể xem các thông tin quảng cáo trong thời gian chờ đợi làm tăng hiệu quả của quảng cáo.

Tuy nhiên hệ thống hiển thị hình ảnh qua mạng Internet thực thi trong đề tài vẫn còn một số điểm hạn chế. Thông hiển thị chỉ là hình ảnh tĩnh, thông tin cố định do đó có thể định hướng phát triển của đề tài theo hướng phát triển mô-đum giải mã video Mpex để hệ thống có thể chạy chiếu các đoạn video. Hệ thống hiện tại chỉ hỗ trợ truyền thông có dây, có thể phát triển để tích hợp một mô-đum Wifi hoặc 3G hỗ trợ hệ thống có thể tải dữ liệu qua mạng không dây. Ngoài ra, hệ thống hiện tại được xây dựng trên bo mạch Spartan-3E là dòng kit khởi đầu, do đó tốc độ của bộ vi xử lý rất chậm đặc biệt ở quá trình giải mã hình ảnh JPEG. Khi hệ thống cần phát triển các tính năng mới thì yêu cầu cần nâng cấp phần cứng, sử dụng vi xử lý tốc độ cao hơn. Để tăng tốc độ giải mã hình ảnh JPEG, cần nghiên cứu sử dụng thuật toán giải mã tối ưu hơn. Hoặc có thể nghiên cứu sử dụng giải mã JPEG bằng phần cứng sử dụng ngôn ngữ

TÀI LIỆU THAM KHẢO

Tài liệu Tiếng Việt

[1] Bộ Thông tin và Truyền thông (2013), Tiêu chuẩn kỹ thuật về ƯDCNTT trong CQNN: Tiêu chuẩn JPEG – Định dạng ảnh JPEG, Trang thông tin điện tử Cục ứng dụng Công nghệ thông tin - www.aita.gov.vn - Cục Tin học hóa.

[2] Nguyễn Trung Hiếu, Ngô Hải Bắc (2 008), Thiết kế hệ thống xử lý ảnh số trên nền FPGA, Đồ án tốt nghiệp, Đại học Bách khoa Hà Nội.

[3] Mai Trung Nguyên (2013), Thiết kế mô-đum tái tạo hình ảnh trong hệ thống nén ảnh sử dụng thuật toán nhận biết chuyển động Sigma-delta, Luận văn Thạc sỹ, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội.

[4] Trần Văn Huấn (2009), Tài liệu đặc tả phần mềm Project PUF, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội.

[5] Trần Văn Huấn, Nguyễn Ngọc Mai (2009), Tài liệu đặc tả kỹ thuật lõi VGA, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội.

[6] Đỗ Năng Toàn, Phạm Việt Bình (2007), Giáo trình xử lý ảnh, Trường Đại học Thái Nguyên.

Tài liệu Tiếng Anh

[7] Enoch Hwang (2004), Build a VGA Monitor Controller, Feature Article, http://www.circuitcellar.com.

[8] James Rosenthal.(2006), JPEG Image Compression Using an FPGA, A Thesic submitted in partial satisfaction of the requirements for the degree Master of Science in Electrical and Computer Engineering.

[10] Xilinx Ltd (2008), BFM Simulation in Platform Studio User Guide, Xilinx Documentation www.xilinx.com.

[11] Xilinx Ltd (2005), MicroBlaze Embedded Microcontroller, Xilinx Documentation www.xilinx.com.

[12] Xilinx Ltd (2006), Spartan-3E Starter Kit Board UG230, DS312, Xilinx Documentation www.xilinx.com.

[13] Xilinx Ltd (2008), XPS Thin Film Transistor (TFT) Controller User Guide, Xilinx Documentation www.xilinx.com.

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng hệ thống hiển thị thông tin hình ảnh thông qua mạng internet (Trang 51)

Tải bản đầy đủ (PDF)

(66 trang)