3.8.1 MÔ TẢ CHỨC NĂNG
Chọn „1‟: chức năng này đƣợc thực hiện để reset FPGA, nó cần thiết đƣợc thực hiện trƣớc khi chạy bất kỳ chƣơng trình test nào.
Chọn „2‟: thực hiện chƣơng trình nháy led. Chọn „3‟: chƣơng trình dò chuyển động. Chọn „4‟: chƣơng trình đo nhiệt độ & độ ẩm.
86
Chọn „5‟: chƣơng trình lấy dữ liệu ADC ADS8341EB. Chọn „6‟: chƣơng trình lấy dữ liệu ADC ADS8344EB. Chọn „7‟: chƣơng trình lấy dữ liệu cảm biến gia tốc. Chọn „8‟: chƣơng trình kiểm tra thanh ghi điều khiển. Chọn „9‟: chƣơng trình kiểm tra thanh ghi trạng thái. Chọn „q‟: thoát khỏi chƣơng trình
3.8.2 RESET FPGA
Khi tiến hành reset FPGA thì toàn bộ máy trạng thái của hệ thống quay trở về trạng thái chờ (IDLE), trạng thái này là trạng thái đợi lệnh đọc/ghi từ bo mạch chủ.
3.8.3 CHƢƠNG TRÌNH NHÁY LED & BUZZER
Chƣơng trình thực hiện điều khiển nháy 3 led vàng, đỏ, xanh, đồng thời thêm cả tính năng điều khiển buzzer trên bo mạch FPGA. Chƣơng trình này bao gồm 4 bƣớc:
87 Chọn 1: thực hiện chƣơng trình nháy led.
Chọn 2: bật buzzer
88
3.8.4 CHƢƠNG TRÌNH DÒ CHUYỂN ĐỘNG
Chƣơng trình này kiểm tra khả năng hoạt động của cảm biến dò chuyển động trên bo mạch FPGA. Khi cảm biến đang ở chế độ dò chuyển động, chúng ta sẽ đi lại liên tục trong vùng hoạt động của cảm biến. Quan sát trên màn hình hiển thị kết quả để biết đang có vật thể chuyển động hay không. Chƣơng trình này gồm 4 bƣớc:
Chọn 1: bật thiết bị, thực hiện việc này trƣớc khi chọn 3 là chƣơng trình dò chuyển động
89
Chọn 2: tắt thiết bị, thực hiện việc này khi thoát khỏi chƣơng trình
Chọn 3: chƣơng trình dò chuyển động. Nếu cảm biến phát hiện chuyển động của
ngƣời hoặc vật, chƣơng trình sẽ hiển thị “Object moved !”. Còn nếu cảm biến không phát hiện bất kỳ chuyển động nào chƣơng trình sẽ hiển thị “Object no moved !”.
90
3.8.5 CHƢƠNG TRÌNH ĐO NHIỆT ĐỘ & ĐỘ ẨM
Chƣơng trình này cho phép hiển thị nhiệt độ, độ ẩm đọc đƣợc từ cảm biến và kiểm tra khả năng hoạt động của bộ giao tiếp I2C đã đƣợc tích hợp trên FPGA. Chọn chế độ đo nhiệt độ hoặc độ ẩm và tiến hành đo đạc thông số rồi so sánh với các giá trị tham chiếu từ nhiệt kế và ẩm kế để đánh giá độ chính xác. Chƣơng trình này bao gồm 6 bƣớc:
91 Chọn 1: reset cảm biến
92 Chọn 3: đọc lại dữ liệu thanh ghi ngƣời dùng
Chọn 4: đọc dữ liệu độ ảm từ cảm biến
Chọn 5: đọc dữ liệu nhiệt độ từ cảm biến
93
3.8.6 CHƢƠNG TRÌNH LẤY DỮ LIỆU ADC ADS8341EB
Chƣơng trình này cho phép lấy mẫu dữ liệu âm thanh và ánh sáng trên kênh 0 và kênh 1 của bộ ADC. Đồng thời kiểm tra khả năng hoạt động của bộ giao tiếp SPI đã đƣợc thiết kế trên FPGA. Để lấy mẫu dữ liệu âm thanh ta chọn chế độ lấy mẫu dữ liệu kênh 0 sau đó đặt nguồn phát âm thanh nhƣ máy nghe nhạc gần micro trên bo mạch FPGA và quan sát giá trị lấy mẫu thay đổi trên màn hình. Để lấy mẫu dữ liệu về ánh sáng ta chọn chế độ lấy mẫu dữ liệu kênh 1 sau đó dùng nguồn sáng chiếu vào cảm biến quang và quan sát giá trị lấy mẫu thay đổi trên màn hình. Chƣơng trình này gồm 7 bƣớc nhƣ sau:
Chọn 1: bật mic và quang trở trƣớc khi lựa chọn 3,4
94 Chọn 3: đọc dữ liệu mic từ kênh 0 của ADC
95
Chọn 4: đọc dữ liệu của quang trở từ kênh 1 của ADC
Chọn 5,6: 2 kênh này chƣa sử dụng vào mục đích gì. Chọn 7: thoát chƣơng trình
3.8.7 CHƢƠNG TRÌNH LẤY DỮ LIỆU ADC ADS8344EB
Chƣơng trình này cho phép kiểm tra các giá trị điện áp, dòng điện trong bo mạch FPGA trên kênh 0, 1, 2, 3, 4, 5, 6 của bộ ADC. Đồng thời kiểm tra khả năng hoạt động của bộ giao tiếp SPI đã đƣợc thiết kế. Để lấy mẫu chúng ta có thể chọn 1 trong 7 kênh trên rồi quan sát giá trị lấy mẫu sẽ đƣợc hiển thị trên màn hình và so sánh với giá trị tham chiếu. Chƣơng trình này gồm 9 bƣớc:
96
Chọn 1: đọc giá trị điện áp BATT đƣợc lấy mẫu từ kênh 0
Chọn 2: đọc giá trị điện áp VIN CURRENT đƣợc lấy mẫu từ kênh 1
97
Chọn 4: đọc giá trị điện áp 3V3 CURRENT đƣợc lấy mẫu từ kênh 3
Chọn 5: đọc giá trị điện áp SN CURRENT đƣợc lấy mẫu từ kênh 4
98
Chọn 7: đọc giá trị điện áp CFG CURRENT đƣợc lấy mẫu trên kênh 6
Chọn 8: kênh 7 chƣa đƣợc sử dụng vào mục đích gì Chọn 9: thoát chƣơng trình
3.8.8 CHƢƠNG TRÌNH LẤY DỮ LIỆU CẢM BIẾN GIA TỐC
Chƣơng trình này cho phép hiển thị tọa độ 3 trục x, y, z của thiết bị đồng thời kiểm tra khả năng hoạt động của bộ giao tiếp I2C đã đƣợc thiết kế. Để tiến hành kiểm tra trƣớc hết chúng ta phải tiến hành hiệu chỉnh tham số (calibrate). Sau đó chúng ta xoay thiết bị đến các vị trí có tọa độ mà ta đã biết trƣớc rồi tiến hành đọc tọa độ x, y, z để so sánh. Chƣơng trình này gồm 3 bƣớc:
99
Chọn 1: hiệu chỉnh tham số cảm biến trƣớc khi đo đạc
Chọn 2: đọc thông số tọa độ X, Y, Z từ cảm biến
100
3.8.9 CHƢƠNG TRÌNH KIỂM TRA THANH GHI ĐIỀU KHIỂN
Chƣơng trình này kiểm tra thanh ghi điều khiển thông qua việc bật/tắt các thiết bị nhƣ cảm biến dò chuyển động, cảm biến âm thanh, cảm biến ánh sáng. Để thực hiện việc kiểm tra ta chọn chế độ ghi và ghi giá trị „1‟ để bật và „0‟ để tắt vào bit tƣơng ứng với cảm biến trong thanh ghi điều khiển. Sau đó ta có thể đọc lại giá trị của thanh ghi này để kiểm tra xem việc ghi đã chính xác chƣa. Chƣơng trình này gồm 3 bƣớc:
Chọn 1: ghi dữ liệu vào thanh ghi điều khiển
101 Chọn 3: thoát chƣơng trình
3.8.10 CHƢƠNG TRÌNH KIỂM TRA THANH GHI TRẠNG THÁI
Chƣơng trình này cho phép đọc giá trị của thanh ghi trạng thái để kiểm tra trạng thái kết nối của thiết bị trong bo mạch FPGA. Nếu giá trị trả về là “0000” tức là trạng thái kết nối trong mạch tốt. Nếu giá trị trả về khác “0000” tức là kết nối trong mạch lúc đó bị lỗi.
3.9 KẾT QUẢ ĐO ĐẠC THỰC TẾ
Lần đo
Kết quả đo đạc đƣợc Giá trị tham chiếu Sai số của phép đo
Đo đạc nhiệt độ từ cảm biến nhiệt độ/độ ẩm(o C) 1 29,3 29,0 1% 2 29,6 29,0 2% 3 29,5 29,0 1,7% 4 29,4 29,0 1,3% 5 29,6 29,0 2% 6 29,5 29,0 1,7% 7 29,2 29,0 0,7%
102
8 29,4 29,0 1,3%
9 29,3 29,0 1,03%
10 29,3 29,0 1,03%
Đo đạc độ ẩm từ cảm biến nhiệt độ/độ ẩm (%)
1 56,3 56,0 0,5% 2 56,7 56,0 1,25% 3 56,6 56,0 1,1% 4 56,8 56,0 1,4% 5 56,7 56,0 1,25% 6 56,9 56,0 1,6% 7 56,4 56,0 0,7% 8 56,3 56,0 0,5% 9 56,5 56,0 0,9% 10 56,8 56,0 1,4%
Đo đạc tọa độ thiết bị x,y,z
1 X=0, Y=0, Z=3F X=0, Y=0, Z=3F 0% 2 X=0, Y=0, Z=40 X=0, Y=0, Z=3F 0,4% 3 X=0, Y=1, Z=3F X=0, Y=0, Z=3F 0,4% 4 X=0, Y=0, Z=41 X=0, Y=0, Z=3F 0,8% 5 X=0, Y=0, Z=40 X=0, Y=0, Z=3F 0,4% 6 X=0, Y=1, Z=40 X=0, Y=0, Z=3F 0,4% 7 X=0, Y=1, Z=3F X=0, Y=0, Z=3F 0,4%
103
8 X=0, Y=0, Z=41 X=0, Y=0, Z=3F 0,8%
9 X=0, Y=1, Z=3F X=0, Y=0, Z=3F 0,4%
10 X=0, Y=0, Z=40 X=0, Y=0, Z=3F 0,4%
Đo đạc các giá trị điện áp(V)
1 3,26 3,3 1,2% 2 3,24 3,3 1,8% 3 3,25 3,3 1,5% 4 3,28 3,3 0,6% 5 3,29 3,3 0,3% 6 3,27 3,3 0,9% 7 3,26 3,3 1,2% 8 3,28 3,3 0,6% 9 3,25 3,3 1,5% 10 3,29 3,3 0,3% 3.10 KẾT LUẬN
Từ những nhiệm vụ đặt ra ở đầu Chƣơng 3 tác giả đã tiến hành tích hợp đƣợc các bộ giao tiếp SPI, UART, I2C trên phần thiết kế FPGA và đã xây dựng đƣợc chƣơng trình demo trên bo mạch chủ Armadillo, cụ thể nhƣ sau:
Phần thiết kế trên FPGA:
Tác giả đã đƣa ra đƣợc các cách thức đánh địa chỉ và giải mã địa chỉ cho thiết bị và tập thanh ghi đƣợc sử dụng để cho phép bo mạch chủ có thể truy nhập vào từng thiết bị để đọc/ghi dữ liệu. Việc đọc/ghi dữ liệu vào các cảm biến sẽ đƣợc điều khiển thông qua tập thanh ghi, nội dung bên trong các thanh ghi này đã đƣợc xác định rõ. Tác giả đã
104
xây dựng định dạng gói tin cho việc truyền/nhận dữ liệu giữa FPGA và Armadillo gồm 2 gói tin: gói tin truyền từ FPGA lên Armadillo và gói tin truyền từ Armadillo xuống FPGA. Tác giả cũng đã xây dựng đƣợc giao thức cho việc kiểm tra tính chính xác của việc truyền/nhận các gói tin này thông qua phƣơng thức tính checksum, đây chính là phƣơng thức để kiểm soát lỗi khi truyền/nhận dữ liệu.
Phần demo trên Armadillo:
Tác giả đã viết đƣợc chƣơng trình chạy trên bo mạch chủ Armadillo thực hiện đƣợc các chức năng nhƣ yêu cầu đặt ra. Chƣơng trình đƣợc viết bằng C, đƣợc biên dịch và chạy trên hệ điều hành linux. Các chức năng bao gồm:
o Reset FPGA: thực hiện đƣa máy trạng thái của các khối thiết kế trên FPGA về trạng thái ban đầu.
o Chƣơng trình nháy led & buzzer: thực hiện việc kiểm tra hoạt động của các led trạng thái và buzzer.
o Chƣơng trình dò chuyển động: thực hiện việc kiểm tra chuyển động của vật thể trong phạm vi quan sát của cảm biến chuyển động.
o Chƣơng trình lấy dữ liệu ADC ADS8341EB: thực hiện việc đọc dữ liệu từ các kênh ADC đó là dữ liệu về âm thanh và ánh sáng.
o Chƣơng trình lấy dữ liệu ADC ADS8344EB: thực hiện việc đọc dữ liệu từ các kênh ADC đó là dữ liệu về điện áp trong mạch.
o Chƣơng trình lấy dữ liệu cảm biến gia tốc: thực hiện việc xác định tọa độ của thiết bị bằng việc đọc các giá trị x,y,z về tọa độ.
o Chƣơng trình kiểm tra thanh ghi điều khiển: thực hiện điều khiển tắt bật các thiết bị nhƣ cảm biến quang và cảm biến âm thanh.
o Chƣơng trình kiểm tra thanh ghi trạng thái: thực hiện việc đọc giá trị của thanh ghi trạng thái để kiểm tra trạng thái hoạt động của hệ thống.
105
KẾT LUẬN
Luận văn này gói gọn trong 3 chƣơng tác giả đã đƣa ra và giải quyết đƣợc 3 vấn đề:
Tổng quan về công nghệ FPGA: tác giả đã nắm rõ kiến trúc và quy trình thiết kế trên FPGA.
Thiết kế các bộ giao tiếp với các giao thức truyền thông cơ bản:
Đã thiết kế đƣợc bộ giao tiếp SPI đọc dữ liệu từ các bộ ADC nhƣ ADS8341EB, ADS8344EB.
Đã thiết kế đƣợc bộ giao tiếp I2C đọc/ghi dữ liệu từ cảm biến gia tốc mma7455l, cảm biến nhiệt độ, độ ẩm sth25.
Đã thiết kế đƣợc bộ giao tiếp UART truyền và nhận dữ liệu lên bo mạch chủ. Xây dựng hệ thống thu thập dữ liệu cảm biến: đã xây dựng đƣợc hệ thống bao gồm
phần thiết kế trên FPGA và phần demo trên bo mạch Armadillo. Trong quá trình chạy thực tế, tác giả đã tiến hành việc kiểm tra số liệu của các tham số: nhiệt độ, độ ẩm, âm thanh, ánh sáng, chuyển động, gia tốc, điện áp, thu thập đƣợc từ các cảm biến qua khoảng 100 lần đo đạc, đều cho kết quả chính xác nhƣ tham chiếu. Hệ thống sau khi chạy thực tế đã đƣợc xây dựng thành sản phẩm cụ thể. Sản phẩm hoạt động thực tế đạt đƣợc kết quả tốt cả về phần cứng lẫn phần mềm và đƣợc khách hàng đánh giá cao, tin tƣởng giao nhiệm vụ làm phase tiếp theo của dự án.
Hƣớng phát triển của đề tài: Đề tài này có thể phát triển thành hệ thống gắn lên trên các máy bay UAV để thu thập dữ liệu về môi trƣờng xung quanh nhƣ nhiệt độ, độ ẩm, ánh sáng, âm thanh, hoặc phá hiện chuyển động. Hoặc cũng có thể xây dựng một hệ thống lớn gồm nhiều hệ thống con nhƣ thế này để tăng phạm vi thu thập dữ liệu, tăng khả năng hoạt động của hệ thống.
106
TÀI LIỆU THAM KHẢO
[1]. Pong P.Chu, FPGA Prototyping By Verilog Examples, John Wiley & Sons, Inc., Publication, Hoboken, New Jersey, 2008.
[2]. T.R.Padmanabhan, B.Bala Tripura Sundari, Design Though Verilog HDL, John Wiley & Sons, Inc., Publication, Hoboken, New Jersey, 2004.
[3]. Karen Parnell & Nick Mehta, Programmable Logic Design Quick Start Hand Book,
pp.15-40, 2002.
[4]. Samir Palnitkar, VerilogHDL A guide to Digital Design and Synthesis, SunSoft Press, pp.50-200, 1996.
[5]. Tống Văn Ôn, Thiết kế mạch số với VHDL và Verilog, NXB Lao động Xã hội, 2007.
[6]. John G.Proakis, Dimitris G.Manolakis, Digital Signal Processing, Prentice – Hall international Inc, 1996.