You are on page 1of 26

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 nhập từ máy tính bằng phương pháp PWM

Môn học FPGA và ứng dụng


Giảng viên hướng dẫn TS. Nguyễn Đại Dương
Nhóm sinh viên thực hiện Nhóm 5
Nguyễn Đăng Tuấn 20186314
Bùi Thọ Thiện 20177033
Nguyễn Trung Kiên 20181561
Nguyễn Đức Huy 20181527
Hà Nội, 01/2022
MỤC LỤC
PHÂN CÔNG CÔNG VIỆC....................................................................................................... 4
DANH MỤC HÌNH ẢNH ........................................................................................................... 5
CHƯƠNG 1. YÊU CẦU THIẾT KẾ ......................................................................................... 6
ĐẶT VẤN ĐỀ ....................................................................................................................... 6
CƠ SỞ LÝ THUYẾT .............................................................................................................. 6
Tổng quan về FPGA .................................................................................................. 6
Ngôn ngữ VHDL........................................................................................................ 7
Cấu trúc chương trình VHDL ................................................................................... 8
MỤC TIÊU THIẾT KẾ ........................................................................................................... 8
CHƯƠNG 2. THIẾT KẾ MẠCH ĐO ....................................................................................... 9
SƠ ĐỒ KHỐI VÀ NGUYÊN LÝ HOẠT ĐỘNG ........................................................................... 9
LỰA CHỌN PHẦN CỨNG ...................................................................................................... 9
Kit FPGA EPM240.................................................................................................... 9
Module cảm biến nhiệt độ, độ ẩm DHT11 .............................................................. 10
Quạt 5V Q5015-5 .................................................................................................... 11
Module USB-TTL UART CP2102 ........................................................................... 11
CHƯƠNG 3. 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 về 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 4. THỰC NGHIỆM VÀ KẾT LUẬN ................................................................... 22
THỬ NGHIỆM .................................................................................................................... 22
KẾT LUẬN ........................................................................................................................ 24

2
TÀI LIỆU THAM KHẢO ........................................................................................................ 26

3
PHÂN CÔNG CÔNG VIỆC

Thành viên Nhiệm vụ


Nguyễn Đăng Tuấn • Tổng hợp code, viết khối top entity, tìm hiểu và viết code
20186314 khối DHT11, điều khiển quạt và LED.
• Thiết kế mạch phần cứng, thuyết trình.
Bùi Thọ Thiện • Tìm hiểu và viết code khối DHT11.
20177033 • Thiết kế PowerPoint, viết báo cáo.
Nguyễn Trung Kiên • Tìm hiểu giao thức UART và xử lý gửi dữ liệu lên máy
20181561 tính, code khối TxD, RxD.
Nguyễn Đức Huy • Cùng tìm hiểu giao thức UART, viết khối chia tần, khối
20181527 điều chế độ rộng xung PWM.

4
DANH MỤC HÌNH ẢNH
Hình 1. Các thành phần mạch FPGA ........................................................................................... 6
Hình 2. Quy trình thiết kế mạch bằng VHDL ............................................................................. 7
Hình 3. Sơ đồ khối mạch đo .......................................................................................................... 9
Hình 4. KIT ALTERA EPM240 V1 ............................................................................................ 9
Hình 5. Module DHT11 ............................................................................................................. 10
Hình 6. Quạt 5V Q5015-5 .......................................................................................................... 11
Hình 7. Module CP2102 ............................................................................................................. 11
Hình 8. Kết nối module DHT11 với MCU ................................................................................ 12
Hình 9. Biểu diễn mức logic 0 ................................................................................................... 13
Hình 10. Biểu diễn mức logic 1 ................................................................................................. 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 giữa 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 các khối phần truyền dữ liệu lên máy tính để hiển thị .................................. 20
Hình 19 Sơ đồ nối các khối phần nhận dữ liệu nhập từ máy tính để điều khiển động cơ quạt .. 20

5
CHƯƠNG 1. YÊU CẦU THIẾT KẾ
Đặt vấn đề
Khi tìm hiểu về công nghệ, chúng ta sẽ thắc mắc tại sao lại phải sử dụng FPGA trong khi
đã có MCU/CPU/DSP rất mạnh, những ứng dụng/trường hợp nào phải cần đến FPGA mới giải
quyết được. Để trả lời được những câu hỏi này, chúng ta cần tìm hiểu sâu hơn về cấu tạo kiến
trúc FPGA, quy trình thiết kế và kiến thức thực tế về các ứng dụng của nó. Trong khuôn khổ bài
tập lớn môn học FPGA, nhóm chúng em đã tìm hiểu về FPGA, ngôn ngữ VHDL và thiết kế ứng
dụng sử dụng kit FPGA EPM240 trên cơ 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 trong
suốt quá trình học và thực hiện project, đề tài chúng em còn nhiều sai sót và khiếm khuyết mong
thầy góp ý và chỉnh sửa để chúng em tiến bộ hơn. Chúng em xin chân thành cảm ơn!
Cơ sở lý thuyết
Tổng quan về FPGA
- FPGA (viết tắt của Field Programmable Gate Array) là một mạch số tổ hợp (digital
integrated circuit) chứa các khối logic lập trình được và các liên kết cấu hình được.
- Thiết kế được thực hiện bằng sơ đồ (Schematic) hoặc bằng ngôn ngữ mô tả (Hardware
description language).
- Thiết kế ở mức phần tử logic và flip-flop.

Hình 1. Các thành phần mạch FPGA 1

Trên thế giới, thị phần FPGA có thể kể đến một số hãng: Xilinx, Intel (Altera – được mua
lại bởi Intel năm 2015), Microsemi (Actel), Lattice (Europe), Quick Logic, … FPGA có vai trò
cực kỳ quan trọng trong thiết kế hệ thống số do các nguyên nhân:

1
https://cse.usf.edu/~haozheng/teach/cda4253/doc/fpga-arch-overview.pdf

6
• FPGA có kiến trúc mảng phần tử logic nên có thể thực thi lệnh song song trong khi vi
điều khiển hay CPU phải thực thi mã lệnh theo dạng tuần tự.
• Vì có thể cấu hình, lập trình lại được nên FPGA dễ dàng mở rộng các ngoại vi cũng như
giao tiếp với nhiều thiết bị hơn mà các MCU hoặc ASIC lại hạn chế về điều này.
• ASIC/ASSP có hiệu suất cao hơn nếu xét về mặt tiêu thụ công suất và số lượng cổng.
Nhưng nếu chỉ cần thực thi một chức năng nhỏ nào đó, một chip ASIC/ASSP có thể đòi
hỏi công suất tiêu thụ lớn hơn và nhiều cổng hơn thực tế yêu cầu. Với FPGA, firmware
có thể xác định được “kích cỡ” của ứng dụng, từ đó giảm số cổng và công suất cần tiêu
thụ.
• Nếu xét về giá thành, FPGA không thể nào so sánh được với ASIC hay SoC, nhưng bù
lại, với khả năng tái cấu hình kiến trúc, FPGA đóng vài trò vô cùng to lớn trong việc giảm
giá thành và thời gian chế tạo ASIC.
Ngôn ngữ VHDL
Là ngôn ngữ mô phỏng và tổng hợp phần cứng. Progamming language được dịch ra mã
lệnh thực hiện tuần tự bởi CPU. HDL được dịch ra thành các kiến trúc ở mức cổng logic và flip
flop.
Hai ứng dụng chính của VHDL là trong lĩnh vực PLD (Programmable Logic Device – Thiết
bị logic có thể lập trình (bao gồm CPLD – Complex Programmable Logic Device và FPGA –
Field Programmable Gate Array) và trong 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 được viết, nó có thể
được sử dụng để thực thi mạch trong một thiết bị có thể lập trình (của Altera, Xilinx, Atmel, v.v.)
hoặc có thể được 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ụ như vi điều khiển) được thiết kế theo cách tiếp cận như vậy.

2
Hình 2. Quy trình thiết kế mạch bằng VHDL

2
https://dientuviet.com/gioi-thieu-ngon-ngu-vhdl/

7
Cấu trúc chương trình VHDL
Giống với ngôn ngữ Verilog, toàn bộ hệ thống thiết kế của ngôn ngữ VHDL được gọi là
một module. Bên trong module có những cấu trúc khác để tạo nên chương trình VHDL là phần
khai báo thư viện, phần mô tả thực thể và phần mô tả kiến trúc. Bây giờ mình sẽ giới thiệu về
entity (thực thể) trong một chương trình VHDL.
Một hệ thống module logic trên VHDL bao gồm: khai báo thư viện, entity (thực thể) và
ARCHITECTURE là kiến trúc chương trình. Trong đó:
• Khai báo LIBRARY (thư viện): tương tự như ngôn ngữ C, chúng ta 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 mỗi chươn trình và mỗi
module đều phải có khai báo.
• ENTITY (thực thể): Khai báo các chân I/O của mạch thiết kế, các tham số dùng
chung (GENERIC) của một module VHDL.
• ARCHITECTURE (kiến trúc): là phần mô tả chính của một module VHDL. Phần
này mô tả các chức năng chính của thiết kế hay còn gọi là hàm.
Mục tiêu thiết kế
Trong khuôn khổ Project cuối kỳ môn học FPGA và ứng dụng, nhóm em thiết kế mạch đo
nhiệt độ, độ ẩm sử dụng kit FPGA EPM240, 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 nhập từ máy tính bằng phương pháp điều chế độ rộng xung PWM.

8
CHƯƠNG 2. THIẾT KẾ MẠCH ĐO
Sơ đồ khối và nguyên lý hoạt động

Hình 3. Sơ đồ khối mạch đo

Trong đó:
• Khối cảm biến DHT11: thực hiện đ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 ra lệnh điều khiển quạt và led.
• Khối PC: giao tiếp UART với khối FPGA, hiển thị dữ liệu đo được lên màn hình máy tính
để người sử dụng theo dõi và người dùng có thể cài đặt để điều khiển tốc độ quạt tự động
theo nhiệt độ hoặc là 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 của khối FPGA.
Lựa chọn phần cứng
Kit FPGA EPM240

Hình 4. KIT ALTERA EPM240 V1 3

Thông số kỹ thuật:
• Sử dụng chip: EPM240T100C5N TQFP100

3
https://banlinhkien.com/kit-altera-epm240-v1-p6649334.html

9
• Đ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 5. Module DHT11 4

DHT11 là cảm biến nhiệt độ, độ ẩm rất thông dụng hiện nay vì chi phí giá rẻ và rất dễ lấy
dữ liệu thông qua giao tiếp 1-wire. Cảm biến được tích hợp bộ tiền xử lý tín hiệu giúp dữ liệu
nhận về được chính xác mà không cần phải thông qua mạch xử lý tín hiệu nào. Dưới đây là một
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: 1 Hz.

Khoảng cách truyền tối đa: 20 m.
Sơ đồ chân module DHT11 gồm 2 chân cấp nguồn và 1 chân tín hiệu. Hiện nay trên thị
trường có hai loại thông dụng được đóng gói với 3 chân hoặc 4 chân.

4
https://vngiotlab.github.io/vbluno/vi/mydoc_arduino_tut10_vi.html

10
Quạt 5V Q5015-5

Hình 6. Quạt 5V Q5015-5 5

Quạt sên (quạt ly tâm)-Q5015 có chức năng tản nhiệt, làm mát các thiết bị điện tử như:
bảng mạch điện tử, PC, laptop, … Quạt sử dụng nguồn điện áp DC làm nguồn nuôi, tùy vào từng
mục đích sử dụng cụ thể của sản phẩm mà chúng ta sẽ chọn mua loại quạt tản nhiệt với công suất
phù hợp. Dưới đây là một số thông số kỹ thuật của quạt sên 5V Q501505:
• Kích thước: 3x3x3 cm3.
• Nguồn cung cấp: 5VDC.
• Dòng tiêu thu: 0.1 A.
• Tuổi thọ: 30000 giờ.
Module USB-TTL UART CP2102

Hình 7. Module CP2102 6

Module chuyển đổi USB-UART CP2102 hoạt động ở mức điện áp 3.3 VDC và 5VDC nên
có thể dùng để giao tiếp Serial với hầu hết các IC thông dụng trên thị trường. Mạch sử dụng chip
CP2102, là chip chuyển đổi USB-UART của Silabs. CP2102 có kích thước nhỏ gọn và yêu cầu

5
https://banlinhkien.com/quat-tay-kho-5v-q50155-p6648102.html
6
https://www.thegioiic.com/products/cp2102-mach-chuyen-doi-usb-to-ttl-uart

11
rất ít thành phần bên ngoài để hoạt động được ngay. CP2102 không sử dụng thạch anh bên ngoài
như CP2303. Trên mạch có 5 cổng vào ra bao gồm: 3.3V, 5V, TxD, RxD, GND; bên cạnh đó
được trang bị LED báo hiệu Tx/Rx. LED này sẽ sáng khi module truyền hoặc nhận dữ liệu. Tốc
độ truyền nhận dữ liệu tối đa là 115200 bps. Driver hỗ trợ tương thích với nhiều hệ điều hành,
đã kiểm tra và hoạt động tốt trên Window, Mac OS, Linux.

CHƯƠNG 3. LẬP TRÌNH


Khối giao tiếp DHT11
Nguyên lý hoạt động

Hình 8. Kết nối module DHT11 với MCU 7

Vi điều khiển giao tiếp với DHT11 theo chuẩn 1 wire với 2 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, nó sẽ gửi lại 5 byte dữ liệu chứa giá trị nhiệt độ và độ ẩm
do được.
Dưới đây là chi tiết các bước thực hiện:
Bước 1:
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 0 trong khoảng thời gian tối thiểu 18 ms.
2. 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.
3. Sau khoảng thời gian 20→40 μs, DHT11 sẽ kéo chân DATA xuống mức logic 0. Trong
trường hợp quá 40 μs mà chân DATA vẫn chưa được kéo xuống mức logic 0 nghĩa là giao
tiếp với DHT11 thất bại.
4. Chân DATA sẽ được giữ ở mức logic 0 thời gian 80 μs sau đó nó được kéo lên mức logic
1 trong 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.

7
https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf

12
Bước 2:
1. Giá trị nhiệt độ và độ ẩm đo được sẽ được DHT11 gửi về vi điều khiển dưới dạng 5 byte:
a. Byte 1: giá trị phần nguyên của độ ẩm.
b. Byte 2: giá trị phần thập phân của độ ẩm.
c. Byte 3: giá trị phần nguyên của nhiệt độ.
d. Byte 4: giá trị phần thập phân của nhiệt độ.
e. Byte 5: byte checksum (nếu byte 5 bằng tổng giá trị 4 byte trên thì dữ liệu thu được
là chính xác).
2. Sau khi xác nhận thành công yêu cầu giao tiếp với DHT11, nó sẽ gửi liên tiếp 40 bit về vi
điều khiển:
Với mỗi bit dữ liệu gửi về vi điều khiển, DHT11 sẽ kéo chân DATA xuống mức logic 0
trong 50 μs, sau đó:
• Nó sẽ kéo chân DATA lên mức logic 1 và giữ trong 26→28 μs nếu dữ liệu truyền về vi
điều khiển là bit 0.

Hình 9. Biểu diễn mức logic 0 8

• Nó sẽ kéo chân DATA lên mức logic 1 và giữ trong 70 μs nếu dữ liệu truyền về vi điều
khiển là bit 1.

Hình 10. Biểu diễn mức logic 1 9

8
https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf
9
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 dữ liệu đo được từ
cảm biến

Hình 11 Sơ đồ máy trạng thái

Ở trong khối DHT11 bọn em thiết kế sẽ bao gồm cả điều khiển LED và động cơ quạt.

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

Lập trình khối truyền nhận UART


Giới thiệu về giao tiếp UART
Giao thức truyền thông đóng một vai trò quan trọng trong việc tổ chức giao tiếp giữa các
thiết bị. Nó được thiết kế theo nhiều cách khác nhau dựa trên các yêu cầu của hệ thống và các
giao thức này có một quy tắc cụ thể được thống nhất giữa các thiết bị để việc truyền dữ liệu được
thực hiện thành công. Các hệ thống nhúng, vi điều khiển và máy tính hầu hết sử dụng UART
như một dạng giao thức giao tiếp phần cứng giữa thiết bị và thiết bị. Trong số các giao thức
truyền thông hiện có, UART chỉ sử dụng hai dây cho bên truyền và bên nhận.
Mặc dù là một phương pháp giao thức truyền thông phần cứng được sử dụng rộng rãi,
nhưng nó không phải lúc nào cũng được tối ưu hóa hoàn toàn. Việc thực hiện đúng giao thức
khung truyền thường bị bỏ qua khi sử dụng module UART bên trong bộ vi điều khiển.
Theo định nghĩa, UART là một giao thức truyền thông phần cứng sử dụng giao tiếp nối tiếp
không đồng bộ với tốc độ có thể định cấu hình. Không đồng bộ có nghĩa là không có tín hiệu
đồng hồ để đồng bộ hóa các bit đầu ra từ thiết bị truyền đi đến bên nhận.
Trong giao tiếp UART, hai UART giao tiếp trực tiếp với nhau. UART truyền chuyển đổi
dữ liệu song song từ một thiết bị điều khiển như CPU thành dạng nối tiếp, truyền nó nối tiếp đến
UART nhận, sau đó chuyển đổi dữ liệu nối tiếp trở lại thành dữ liệu song song cho thiết bị nhận.

15
Hình 14. Giao tiếp UART giữa hai thiết bị 10

UART truyền dữ liệu không đồng bộ, có nghĩa là không có tín hiệu đồng hồ để đồng bộ
hóa đầu ra của các bit từ UART truyền đến việc lấy mẫu các bit bởi UART nhận. Thay vì tín
hiệu đồng hồ, UART truyền thêm các bit start và stop vào gói dữ liệu được chuyển. Các bit này
xác định điểm bắt đầu và điểm kết thúc của gói dữ liệu để UART nhận biết khi nào bắt đầu đọc
các bit. Khi UART nhận phát hiện một bit start, nó bắt đầu đọc các bit đến ở một tần số cụ thể
được gọi là tốc độ truyền (baud rate). Tốc độ truyền là thước đo tốc độ truyền dữ liệu, được biểu
thị bằng bit trên giây (bps – bit per second). Cả hai UART đều phải hoạt động ở cùng một tốc độ
truyền. Tốc độ truyền giữa UART truyền và nhận chỉ có thể chênh lệch khoảng 10% trước khi
thời gian của các bit bị lệch quá xa. Có 5 bước để thực hiện truyền nhận UART:
1. UART truyền nhận dữ liệu song song từ bus dữ liệu.
2. UART truyền thêm bit Start, bit chẵn lẻ và bit Stop vào khung dữ liệu.
3. Toàn bộ dữ liệu được đóng gói theo khung và 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 dữ liệu ở tốc độ truyền nhận được cấu hình trước.
4. Bên nhận loại bỏ bit Start, bit chẵn lẻ và bit Stop khỏi khung dữ liệu.
5. Bên nhận chuyển đổi dữ liệu nối tiếp trở lại thành song song và chuyển nó đến bus dữ
liệu ở đầu nhận.
Chương trình giao tiếp UART
3.2.2.1. Truyền dữ liệu (TxD)
- Để truyền dữ liệu với tốc độ 9600 Mbps, cần tạo một xung clock có tần số 9600 Hz là
clk_9600Hz

10
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 của
clk_9600Hz vào signal prescaled_clk:

- Và dùng signal đó làm biến nhạy cho Process để truyền dữ liệu:

- Khi có lệnh truyền (Start) thì tại mỗi thời điểm xung sườn lên của clk_9600Hz, một bit
trong khung bản tin sẽ được đưa lên đường truyền TxD (data_line).
⇒Thứ tự các bit dữ liệu được truyền đi là: Start Bit – Data Bit (LSB) – … – Data
Bit (MSB) – Stop Bit.

Hình 15 Lưu đồ thuật toán khối TxD

17
3.2.2.2. Nhận dữ liệu (RxD)
- Vì UART là giao thức truyền thông thu – phát không đồng bộ, do đó để nhận được tín
hiệu, tần số xung clock bên nhận phải lớn hơn ít nhất 2 lần tần số xung clock bên truyền.
 Chọn tần số clock nhận là 28,8KHz (gấp 3 lần bên truyền là 9600Hz).
- Ta tạo một Entity là clk_28800Hz, sau đó nhúng vào trong Entity RxD:

- Entity RxD không cần tín hiệu start vì việc nhận dữ liệu là thụ động. Thay vào đó, khi
data_line được kéo xuống mức thấp thì khối bắt đầu thực hiện công việc nhận và xử lý
dữ liệu. Trong lúc đang nhận dữ liệu, busy = 1.

- Dữ liệu sau khi xử lý xong sẽ được lưu tại 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ế thì nhóm em chỉ
điều chế xung PWM với duty cycle 40% và 70%, với duty cycle 0 và 100% thì sẽ 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 hiện cả việc truyền dữ liệu lên máy tính để hiển thị và gửi
dữ liệu nhập từ máy tính để điều khiển động cơ quạt nên chúng em tách hai phần này ra và chạy
từng phần một để đảm bảo đủ Logic Element. Mỗi phần em sẽ viết một khối top entity riêng.

19
Phần truyền dữ liệu lên máy tính để hiển thị

Hình 18 Sơ đồ nối các khối phần truyền dữ liệu lên máy tính để hiển thị

Sơ lược về hoạt động của hệ thống:


- Đầu tiên kit EPM240 sẽ đuợc cấp nguồn bởi adapter DC5V1A, cảm biến DHT11, led và
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
và bật phần mềm Hercules, mở cổng Serial COM
- Cảm biến DHT11 có nhiệm vụ đo dữ liệu nhiệt độ và độ ẩm, sau khi bấm nút có sẵn trên
kit thì FPGA sẽ gửi dữ liệu gồm nhiệt độ và độ ẩm dưới dạng mã HEX lên máy tính, do
không đủ Logic Element nên nhóm bọn em không thể gửi dữ liệu dạng mã ASCII được.
Khi nhiệt độ vượt quá mức cho phép thì đèn LED trên kit sẽ sáng và quạt sẽ được bật để
làm mát.
Phần điều khiển tốc độ quạt tự động theo nhiệt độ hoặc là nhập dữ liệu từ máy tính để
điều khiển tốc độ thủ công

Hình 19 Sơ đồ nối các khối phần nhận dữ liệu nhập từ máy tính để điều khiển động cơ quạt

Sơ lược về hoạt động của hệ thống:


- Đầu tiên kit EPM240 sẽ đuợc cấp nguồn bởi adapter DC5V1A, cảm biến DHT11, led và
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
và bật phần mềm Hercules, mở cổng Serial COM

20
- Cảm biến DHT11 có nhiệm vụ đo dữ liệu nhiệt độ và độ ẩm, trên phần mềm Hercules gửi
chữ cái A để tự động điều khiển tốc độ động cơ quạt quay theo nhiệt độ, với 4 mức nhiệt
độ thì quạt sẽ quay tốc độ khác nhau, nếu gửi chữ cái M thì hệ thống sẽ chuyển sang chế
độ nhập tốc độ thủ công bằng tay, gửi 0 quạt sẽ tắt, 1 quạt sẽ quay với duty cycle 40, 2
quạt sẽ quay với duty cycle 70, 3 quạt sẽ quay với duty cycle 100 tương ứng với bật quạt.

21
CHƯƠNG 4. THỰC NGHIỆM VÀ KẾT LUẬN
Thử nghiệm
Truyền dữ liệu lên máy tính để hiển thị

22
Điều khiển tốc độ quạt tự động theo nhiệt độ

23
Nhập tốc độ quạt thủ công từ máy tính

Kết luận
• Do kiến thức chúng em còn rất nhiều hạn chế nên sản phẩm này chỉ là ứng dụng cơ bản
dựa trên những kiến thức chúng em học được, sản phẩm chưa được kiểm nghiệm thực tế
trong thời gian dài, khi chạy đôi khi còn chập chờn do chưa đóng vỏ làm hoàn thiện mạch.
• Trong tương lai nếu định hướng công việc theo FPGA chúng em sẽ tìm hiểu thêm về lý
thuyết và thiết kế sản phẩm ổn định hơn.

24
• Đề tài nhóm em làm còn rất nhiều sai sót và hạn chế, mong thầy chỉ bảo và nhận xét để
chúng em tiến bộ hơn. Chúng em xin chân thành cảm ơn!

25
TÀI LIỆU THAM KHẢO
1. “The Design Warrior’s Guide to FPGAs”, Clive Maxfield
2. “Circuit Design with VHDL”, Volnei A. Pedroni, Massachusetts Institute of Technology
3. “Quartus II Introduction Using VHDL Design”
4. https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-
Version-1143054.pdf
5. https://www.silabs.com/documents/public/data-sheets/CP2102-9.pdf
6. https://datasheet.octopart.com/EPM240T100C4N-Altera-datasheet-7274037.pdf

26

You might also like