Professional Documents
Culture Documents
VIỆN ĐIỆN
----------
2
TÀI LIỆU THAM KHẢO ........................................................................................................ 26
3
PHÂN CÔNG CÔNG VIỆC
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.
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
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
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
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
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
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.
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.
• 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.
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
Ở 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.
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ị 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:
- 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.
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.
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.
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ị
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
- 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