TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN BÁO CÁO BÀI TẬP LỚN Đề tài Thiết kế mạch đo nhiệt độ, độ ẩm sử dụng FPGA, gửi dữ liệu hiển thị lên máy tính và điều khiển tốc độ động cơ theo nhiệt độ hoặc[.]
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN - - BÁO CÁO BÀI TẬP LỚN Đề tài: Thiết kế mạch đo nhiệt độ, độ ẩm sử dụng FPGA, gửi liệu hiển thị lên máy tính điều khiển tốc độ động theo nhiệt độ nhập từ máy tính phương pháp PWM Mơn học FPGA ứng dụng Giảng viên hướng dẫn TS Nguyễn Đại Dương Nhóm sinh viên thực Nhóm Nguyễn Đăng Tuấn Bùi Thọ Thiện Nguyễn Trung Kiên Nguyễn Đức Huy Hà Nội, 01/2022 20186314 20177033 20181561 20181527 MỤC LỤC PHÂN CÔNG CÔNG VIỆC DANH MỤC HÌNH ẢNH CHƯƠNG YÊU CẦU THIẾT KẾ ĐẶT VẤN ĐỀ CƠ SỞ LÝ THUYẾT Tổng quan FPGA Ngôn ngữ VHDL Cấu trúc chương trình VHDL MỤC TIÊU THIẾT KẾ CHƯƠNG THIẾT KẾ MẠCH ĐO SƠ ĐỒ KHỐI VÀ NGUYÊN LÝ HOẠT ĐỘNG LỰA CHỌN PHẦN CỨNG Kit FPGA EPM240 Module cảm biến nhiệt độ, độ ẩm DHT11 10 Quạt 5V Q5015-5 11 Module USB-TTL UART CP2102 11 CHƯƠNG LẬP TRÌNH 12 KHỐI GIAO TIẾP DHT11 12 Nguyên lý hoạt động 12 Chương trình giao tiếp DHT11 14 LẬP TRÌNH KHỐI TRUYỀN NHẬN UART 15 Giới thiệu giao tiếp UART 15 Chương trình giao tiếp UART 16 KHỐI ĐIỀU CHẾ XUNG PWM 19 KHỐI TOP ENTITY 19 CHƯƠNG THỰC NGHIỆM VÀ KẾT LUẬN 22 THỬ NGHIỆM 22 KẾT LUẬN 24 TÀI LIỆU THAM KHẢO 26 PHÂN CÔNG CÔNG VIỆC Thành viên Nguyễn Đăng Tuấn 20186314 • Bùi Thọ Thiện 20177033 Nguyễn Trung Kiên 20181561 Nguyễn Đức Huy 20181527 • Tìm hiểu giao thức UART xử lý gửi liệu lên máy tính, code khối TxD, RxD • • • Nhiệm vụ Tổng hợp code, viết khối top entity, tìm hiểu viết code khối DHT11, điều khiển quạt LED Thiết kế mạch phần cứng, thuyết trình Tìm hiểu viết code khối DHT11 Thiết kế PowerPoint, viết báo cáo • Cùng tìm hiểu giao thức UART, viết khối chia tần, khối điều chế độ rộng xung PWM DANH MỤC HÌNH ẢNH Hình Các thành phần mạch FPGA Hình Quy trình thiết kế mạch VHDL Hình Sơ đồ khối mạch đo Hình KIT ALTERA EPM240 V1 Hình Module DHT11 10 Hình Quạt 5V Q5015-5 11 Hình Module CP2102 11 Hình Kết nối module DHT11 với MCU 12 Hình Biểu diễn mức logic 13 Hình 10 Biểu diễn mức logic 13 Hình 11 Sơ đồ máy trạng thái 14 Hình 12 Lưu đồ thuật toán điều khiển LED 14 Hình 13 Lưu đồ thuật toán điều khiển quạt 15 Hình 14 Giao tiếp UART hai thiết bị 16 Hình 15 Lưu đồ thuật toán khối TxD 17 Hình 16 Lưu đồ thuật toán khối RxD 18 Hình 17 Lưu đồ thuật toán khối điều chế xung PWM 19 Hình 18 Sơ đồ nối khối phần truyền liệu lên máy tính để hiển thị 20 Hình 19 Sơ đồ nối khối phần nhận liệu nhập từ máy tính để điều khiển động quạt 20 CHƯƠNG YÊU CẦU THIẾT KẾ Đặt vấn đề Khi tìm hiểu cơng nghệ, thắc mắc lại phải sử dụng FPGA có MCU/CPU/DSP mạnh, ứng dụng/trường hợp phải cần đến FPGA giải Để trả lời câu hỏi này, cần tìm hiểu sâu cấu tạo kiến trúc FPGA, quy trình thiết kế kiến thức thực tế ứng dụng Trong khn khổ tập lớn mơn học FPGA, nhóm chúng em tìm hiểu FPGA, ngôn ngữ VHDL thiết kế ứng dụng sử dụng kit FPGA EPM240 sở lý thuyết học Chúng em xin cảm ơn thầy Nguyễn Đại Dương hướng dẫn chúng em nhiệt tình suốt trình học thực project, đề tài chúng em cịn nhiều sai sót khiếm khuyết mong thầy góp ý chỉnh sửa để chúng em tiến Chúng em xin chân thành cảm ơn! Cơ sở lý thuyết Tổng quan FPGA - FPGA (viết tắt Field Programmable Gate Array) mạch số tổ hợp (digital integrated circuit) chứa khối logic lập trình liên kết cấu hình - Thiết kế thực sơ đồ (Schematic) ngôn ngữ mô tả (Hardware description language) - Thiết kế mức phần tử logic flip-flop Hình Các thành phần mạch FPGA Trên giới, thị phần FPGA kể đến số hãng: Xilinx, Intel (Altera – mua lại Intel năm 2015), Microsemi (Actel), Lattice (Europe), Quick Logic, … FPGA có vai trò quan trọng thiết kế hệ thống số nguyên nhân: https://cse.usf.edu/~haozheng/teach/cda4253/doc/fpga-arch-overview.pdf • FPGA có kiến trúc mảng phần tử logic nên thực thi lệnh song song vi điều khiển hay CPU phải thực thi mã lệnh theo dạng • Vì cấu hình, lập trình lại nên FPGA dễ dàng mở rộng ngoại vi giao tiếp với nhiều thiết bị mà MCU ASIC lại hạn chế điều • ASIC/ASSP có hiệu suất cao xét mặt tiêu thụ công suất số lượng cổng Nhưng cần thực thi chức nhỏ đó, chip ASIC/ASSP địi hỏi cơng suất tiêu thụ lớn nhiều cổng thực tế yêu cầu Với FPGA, firmware xác định “kích cỡ” ứng dụng, từ giảm số cổng cơng suất cần tiêu thụ • Nếu xét giá thành, FPGA so sánh với ASIC hay SoC, bù lại, với khả tái cấu hình kiến trúc, FPGA đóng vài trị vơ to lớn việc giảm giá thành thời gian chế tạo ASIC Ngôn ngữ VHDL Là ngôn ngữ mô tổng hợp phần cứng Progamming language dịch mã lệnh thực CPU HDL dịch thành kiến trúc mức cổng logic flip flop Hai ứng dụng VHDL lĩnh vực PLD (Programmable Logic Device – Thiết bị logic lập trình (bao gồm CPLD – Complex Programmable Logic Device FPGA – Field Programmable Gate Array) lĩnh vực ASIC (Application Specific Integrated Circuit – Mạch tích hợp dành riêng cho ứng dụng) Khi chương trình VHDL viết, sử dụng để thực thi mạch thiết bị lập trình (của Altera, Xilinx, Atmel, v.v.) gửi đến xưởng để chế tạo chip ASIC Hiện nay, nhiều chip thương mại phức tạp (ví dụ vi điều khiển) thiết kế theo cách tiếp cận Hình Quy trình thiết kế mạch VHDL 2 https://dientuviet.com/gioi-thieu-ngon-ngu-vhdl/ Cấu trúc chương trình VHDL Giống với ngơn ngữ Verilog, tồn hệ thống thiết kế ngôn ngữ VHDL gọi module Bên module có cấu trúc khác để tạo nên chương trình VHDL phần khai báo thư viện, phần mô tả thực thể phần mô tả kiến trúc Bây giới thiệu entity (thực thể) chương trình VHDL Một hệ thống module logic VHDL bao gồm: khai báo thư viện, entity (thực thể) ARCHITECTURE kiến trúc chương trình Trong đó: • Khai báo LIBRARY (thư viện): tương tự ngôn ngữ C, cần khai báo thư viện cho chương trình VHDL Một số thư viện sau thường dùng cho thiết kế: IEEE, STD, WORK, … Khai báo thư viện phải đầu chươn trình module phải có khai báo • ENTITY (thực thể): Khai báo chân I/O mạch thiết kế, tham số dùng chung (GENERIC) module VHDL • ARCHITECTURE (kiến trúc): phần mơ tả module VHDL Phần mô tả chức thiết kế hay cịn gọi hàm Mục tiêu thiết kế Trong khuôn khổ Project cuối kỳ môn học FPGA ứng dụng, nhóm em thiết kế mạch đo nhiệt độ, độ ẩm sử dụng kit FPGA EPM240, gửi liệu hiển thị lên máy tính điều khiển tốc độ động theo nhiệt độ nhập từ máy tính phương pháp điều chế độ rộng xung PWM CHƯƠNG THIẾT KẾ MẠCH ĐO Sơ đồ khối nguyên lý hoạt động Hình Sơ đồ khối mạch đo Trong đó: • Khối cảm biến DHT11: thực đo giá trị nhiệt độ, độ ẩm từ mơi trường • Khối FPGA: giao tiếp với khối DHT11 để nhận giá trị nhiệt độ, độ ẩm thu được, sau giao tiếp với PC qua chuẩn UART đồng thời đưa lệnh điều khiển quạt led • Khối PC: giao tiếp UART với khối FPGA, hiển thị liệu đo lên hình máy tính để người sử dụng theo dõi người dùng cài đặt để điều khiển tốc độ quạt tự động theo nhiệt độ nhập tốc độ quạt thủ cơng từ máy tính • Khối chấp hành: hoạt động theo lệnh điều khiển khối FPGA Lựa chọn phần cứng Kit FPGA EPM240 Hình KIT ALTERA EPM240 V1 Thơng số kỹ thuật: • Sử dụng chip: EPM240T100C5N TQFP100 https://banlinhkien.com/kit-altera-epm240-v1-p6649334.html • • • • • • • Điện áp hoạt động: 5VDC Tương thích mạch nạp: USB Blaster Hỗ trợ giao tiếp: LCD1602, LCD12864 Hỗ trợ giao tiếp: UART Giao tiếp Key đơn Giao tiếp Led đơn Hỗ trợ cổng I/O Module cảm biến nhiệt độ, độ ẩm DHT11 Hình Module DHT11 DHT11 cảm biến nhiệt độ, độ ẩm thông dụng chi phí giá rẻ dễ lấy liệu thông qua giao tiếp 1-wire Cảm biến tích hợp tiền xử lý tín hiệu giúp liệu nhận xác mà khơng cần phải thơng qua mạch xử lý tín hiệu Dưới số thơng số kỹ thuật: • • • • • Điện áp hoạt động: 3→5 VDC Dải đo độ ẩm: 20%→90% RH, sai số ±5% RH Dải đo nhiệt độ: 0℃→50℃, sai số ±2℃ Tần số lấy mẫu tối đa: Hz Khoảng cách truyền tối đa: 20 m Sơ đồ chân module DHT11 gồm chân cấp nguồn chân tín hiệu Hiện thị trường có hai loại thơng dụng đóng gói với chân chân https://vngiotlab.github.io/vbluno/vi/mydoc_arduino_tut10_vi.html 10 thành phần bên để hoạt động CP2102 khơng sử dụng thạch anh bên ngồi CP2303 Trên mạch có cổng vào bao gồm: 3.3V, 5V, TxD, RxD, GND; bên cạnh trang bị LED báo hiệu Tx/Rx LED sáng module truyền nhận liệu Tốc độ truyền nhận liệu tối đa 115200 bps Driver hỗ trợ tương thích với nhiều hệ điều hành, kiểm tra hoạt động tốt Window, Mac OS, Linux CHƯƠNG LẬP TRÌNH Khối giao tiếp DHT11 Nguyên lý hoạt động Hình Kết nối module DHT11 với MCU Vi điều khiển giao tiếp với DHT11 theo chuẩn wire với bước: • Gửi yêu cầu đo tới DHT11, sau đợi DHT11 phản hồi • Khi DHT11 sẵn sàng giao tiếp, gửi lại byte liệu chứa giá trị nhiệt độ độ ẩm Dưới chi tiết bước thực hiện: Bước 1: Đầu tiên vi điều khiển gửi tín hiệu Start: cấu hình chân DATA chế độ OUTPUT, kéo chân DATA xuống mức logic khoảng thời gian tối thiểu 18 ms Vi điều khiển kéo chân DATA lên mức logic 1, sau cấu hình lại chế độ INPUT Sau khoảng thời gian 20→40 μs, DHT11 kéo chân DATA xuống mức logic Trong trường hợp 40 μs mà chân DATA chưa kéo xuống mức logic nghĩa giao tiếp với DHT11 thất bại Chân DATA giữ mức logic thời gian 80 μs sau kéo lên mức logic 80 μs Vi điểu khiển xác định việc giao tiếp thành công hay không với DHT11 qua chân DATA https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf 12 Bước 2: Giá trị nhiệt độ độ ẩm đo DHT11 gửi vi điều khiển dạng byte: a Byte 1: giá trị phần nguyên độ ẩm b Byte 2: giá trị phần thập phân độ ẩm c Byte 3: giá trị phần nguyên nhiệt độ d Byte 4: giá trị phần thập phân nhiệt độ e Byte 5: byte checksum (nếu byte tổng giá trị byte liệu thu xác) Sau xác nhận thành công yêu cầu giao tiếp với DHT11, gửi liên tiếp 40 bit vi điều khiển: Với bit liệu gửi vi điều khiển, DHT11 kéo chân DATA xuống mức logic 50 μs, sau đó: • Nó kéo chân DATA lên mức logic giữ 26→28 μs liệu truyền vi điều khiển bit Hình Biểu diễn mức logic • Nó kéo chân DATA lên mức logic giữ 70 μs liệu truyền vi điều khiển bit Hình 10 Biểu diễn mức logic 9 https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf 13 Chương trình giao tiếp DHT11 Để giao tiếp với DHT11, nhóm em sử dụng mơ hình máy trạng thái để đọc liệu đo từ cảm biến Hình 11 Sơ đồ máy trạng thái Ở khối DHT11 bọn em thiết kế bao gồm điều khiển LED động quạt Hình 12 Lưu đồ thuật tốn điều khiển LED 14 Hình 13 Lưu đồ thuật tốn điều khiển quạt Lập trình khối truyền nhận UART Giới thiệu giao tiếp UART Giao thức truyền thông đóng vai trị quan trọng việc tổ chức giao tiếp thiết bị Nó thiết kế theo nhiều cách khác dựa yêu cầu hệ thống giao thức có quy tắc cụ thể thống thiết bị để việc truyền liệu thực thành công Các hệ thống nhúng, vi điều khiển máy tính hầu hết sử dụng UART dạng giao thức giao tiếp phần cứng thiết bị thiết bị Trong số giao thức truyền thơng có, UART sử dụng hai dây cho bên truyền bên nhận Mặc dù phương pháp giao thức truyền thông phần cứng sử dụng rộng rãi, khơng phải lúc tối ưu hóa hoàn toàn Việc thực giao thức khung truyền thường bị bỏ qua sử dụng module UART bên vi điều khiển Theo định nghĩa, UART giao thức truyền thông phần cứng sử dụng giao tiếp nối tiếp khơng đồng với tốc độ định cấu hình Khơng đồng có nghĩa khơng có tín hiệu đồng hồ để đồng hóa bit đầu từ thiết bị truyền đến bên nhận Trong giao tiếp UART, hai UART giao tiếp trực tiếp với UART truyền chuyển đổi liệu song song từ thiết bị điều khiển CPU thành dạng nối tiếp, truyền nối tiếp đến UART nhận, sau chuyển đổi liệu nối tiếp trở lại thành liệu song song cho thiết bị nhận 15 Hình 14 Giao tiếp UART hai thiết bị 10 UART truyền liệu khơng đồng bộ, có nghĩa khơng có tín hiệu đồng hồ để đồng hóa đầu bit từ UART truyền đến việc lấy mẫu bit UART nhận Thay tín hiệu đồng hồ, UART truyền thêm bit start stop vào gói liệu chuyển Các bit xác định điểm bắt đầu điểm kết thúc gói liệu để UART nhận biết bắt đầu đọc bit Khi UART nhận phát bit start, bắt đầu đọc bit đến tần số cụ thể gọi tốc độ truyền (baud rate) Tốc độ truyền thước đo tốc độ truyền liệu, biểu thị bit giây (bps – bit per second) Cả hai UART phải hoạt động tốc độ truyền Tốc độ truyền UART truyền nhận chênh lệch khoảng 10% trước thời gian bit bị lệch xa Có bước để thực truyền nhận UART: UART truyền nhận liệu song song từ bus liệu UART truyền thêm bit Start, bit chẵn lẻ bit Stop vào khung liệu Tồn liệu đóng gói theo khung gửi nối tiếp từ bên truyền sang bên nhận Bên nhận lấy mẫu đường liệu tốc độ truyền nhận cấu hình trước Bên nhận loại bỏ bit Start, bit chẵn lẻ bit Stop khỏi khung liệu Bên nhận chuyển đổi liệu nối tiếp trở lại thành song song chuyển đến bus liệu đầu nhận Chương trình giao tiếp UART 3.2.2.1 Truyền liệu (TxD) - 10 Để truyền liệu với tốc độ 9600 Mbps, cần tạo xung clock có tần số 9600 Hz clk_9600Hz https://dientuviet.com/kien-thuc-co-ban-ve-giao-tiep-uart/ 16 - Nhúng ENTITY clk_9600Hz vào ENTITY TxD, sau ta port map chân clk_out clk_9600Hz vào signal prescaled_clk: - Và dùng signal làm biến nhạy cho Process để truyền liệu: - Khi có lệnh truyền (Start) thời điểm xung sườn lên clk_9600Hz, bit khung tin đưa lên đường truyền TxD (data_line) ⇒Thứ tự bit liệu truyền là: Start Bit – Data Bit (LSB) – … – Data Bit (MSB) – Stop Bit Hình 15 Lưu đồ thuật tốn khối TxD 17 3.2.2.2 Nhận liệu (RxD) - Vì UART giao thức truyền thông thu – phát không đồng bộ, để nhận tín hiệu, tần số xung clock bên nhận phải lớn lần tần số xung clock bên truyền Chọn tần số clock nhận 28,8KHz (gấp lần bên truyền 9600Hz) - Ta tạo Entity clk_28800Hz, sau nhúng vào Entity RxD: - Entity RxD khơng cần tín hiệu start việc nhận liệu thụ động Thay vào đó, data_line kéo xuống mức thấp khối bắt đầu thực cơng việc nhận xử lý liệu Trong lúc nhận liệu, busy = - Dữ liệu sau xử lý xong lưu data Hình 16 Lưu đồ thuật toán khối RxD 18 Khối điều chế xung PWM Để điều khiển tốc độ quạt ta cần phải điều chế xung PWM, với số LE hạn chế nhóm em điều chế xung PWM với duty cycle 40% 70%, với duty cycle 100% bật tắt quạt trực tiếp Hình 17 Lưu đồ thuật toán khối điều chế xung PWM Khối Top Entity Do không đủ Logic Element để thực việc truyền liệu lên máy tính để hiển thị gửi liệu nhập từ máy tính để điều khiển động quạt nên chúng em tách hai phần chạy phần để đảm bảo đủ Logic Element Mỗi phần em viết khối top entity riêng 19 Phần truyền liệu lên máy tính để hiển thị Hình 18 Sơ đồ nối khối phần truyền liệu lên máy tính để hiển thị Sơ lược hoạt động hệ thống: - Đầu tiên kit EPM240 đuợc cấp nguồn adapter DC5V1A, cảm biến DHT11, led quạt gió lấy nguồn từ kit Kết nối cáp chuyển đổi UART RS232 sang USB với máy tính bật phần mềm Hercules, mở cổng Serial COM - Cảm biến DHT11 có nhiệm vụ đo liệu nhiệt độ độ ẩm, sau bấm nút có sẵn kit FPGA gửi liệu gồm nhiệt độ độ ẩm dạng mã HEX lên máy tính, khơng đủ Logic Element nên nhóm bọn em khơng thể gửi liệu dạng mã ASCII Khi nhiệt độ vượt mức cho phép đèn LED kit sáng quạt bật để làm mát Phần điều khiển tốc độ quạt tự động theo nhiệt độ nhập liệu từ máy tính để điều khiển tốc độ thủ cơng Hình 19 Sơ đồ nối khối phần nhận liệu nhập từ máy tính để điều khiển động quạt Sơ lược hoạt động hệ thống: - Đầu tiên kit EPM240 đuợc cấp nguồn adapter DC5V1A, cảm biến DHT11, led quạt gió lấy nguồn từ kit Kết nối cáp chuyển đổi UART RS232 sang USB với máy tính bật phần mềm Hercules, mở cổng Serial COM 20 ... điều khiển tốc độ quạt tự động theo nhiệt độ nhập liệu từ máy tính để điều khiển tốc độ thủ cơng Hình 19 Sơ đồ nối khối phần nhận liệu nhập từ máy tính để điều khiển động quạt Sơ lược hoạt động. .. UART với khối FPGA, hiển thị liệu đo lên hình máy tính để người sử dụng theo dõi người dùng cài đặt để điều khiển tốc độ quạt tự động theo nhiệt độ nhập tốc độ quạt thủ cơng từ máy tính • Khối... lên máy tính điều khiển tốc độ động theo nhiệt độ nhập từ máy tính phương pháp điều chế độ rộng xung PWM CHƯƠNG THIẾT KẾ MẠCH ĐO Sơ đồ khối nguyên lý hoạt động Hình Sơ đồ khối mạch đo Trong đó: