L ỜI CAM ĐOAN
2.3. Sơ đồ nguyên lý và các module ca hủ ệ thống
2.3.1. Sơ đồ nguyên lý t ng thê ổ
Hình 2. 3 Sơ đồ thi t k ế ếphần cứng điều khiển hệthống
Hình 2.3 th ể hiện sơ đồ khố ủi c a d án Quartus FPGA c a d ự ủ ự án điều khiển
robot dò đường. D ự án này đượ ạc t o trong Qsys. B ộ điều khiển PWM được thi t k ế ế trong Qsys đượ ử ụng để ềc s d đi u khiển 2 động cơ của robot. B ộ điều khiển PIO cho
LED[6:0] và KEY[1:0] trong Qsys được bao g m và k t n i v i HPS. Vì v y mà ồ ế ố ớ ậ
HPS/ARM có th truy cể ập các thiế ịt b ngoại vi. LED[7] được k t nế ối đểđếm như một xung clock. Khi FPGA đượ ấc c u hình với dự án Quartus này thì đèn LED[7] sẽ sáng.
2.3.2. Module u khi n điề ể động cơ
u khi m v chuy i tín hi u khi n t kh
Khối điề ển động cơ có nhiệ ụ ển đổ ệu điề ể ừ ối
điều khi n trung tâm thành tín hiể ệu điện áp để thay đổ ốc đội t và chi u quay c a ề ủ động cơ. Trên thự ế ấc t , r t nhi u mề ạch điều khiển động cơ có thể đả m nh n c hai ậ ả
nhi m v ệ ụ này như: mạch c u H dùng BJT ho c FET, m ch 1 FET + 1 relay, IC 298, ầ ặ ạ IC TD18200… Tùy vào ứng d ng c th , v i các giá tr dòng áp theo yêu c u mà ụ ụ ể ớ ị ầ
l a ch n mự ọ ạch điều khiển động cơ cho phù hợ . Sơ đồp m ch nguyên lý c a khạ ủ ối
Hình 2. 4 Mạch điều khi n motor ể
2.3.3. Module điều khiển hệthống
Các thi t b SoC FPGA có cế ị ấu trúc tương tự nhau, vì v y trong ph n này s ậ ầ ẽ
mô t c ả ụ thể ề ế v ki n trúc c a thi t b Altera Cyclone V SoC. Thi t b SoC bao gủ ế ị ế ị ồm hai ph n riêng bi t, m t là b x lý c ng (HPS) lõi kép ARM Cortex A9 và hai là ầ ệ ộ ộ ử ứ
ph n FPGA. B x lý HPS tích h p nhi u lo i thi t b ngo i vi cho phép gi m kích ầ ộ ử ợ ề ạ ế ị ạ ả thước bo mạch và tăng hiệu năng hoạt động c a h th ng. ủ ệ ố Trong đó:
FPGA:
Thiết bị Altera Cyclone® V SE 5CSEMA4U23C6N Thiết vị ấ c u hình c ng Serial EPCS128ổ –
C ng USB-Blaster II onboard nổ để ạp chương trình; JTAG Mode 2 Nút ấn
4 Công tắc gạt
8 đèn LEDs màu xanh
Ba ngu n xung clock 50MHz t b t o xung ồ ừ ộ ạ clock
Hai bộ chân c m GPIO 40-pin expansion headerắ
M t Arduino expansion header (Uno R3 compatibility), có th kộ ể ết nối với Arduino shields.
Một bộ chân c m 10-pin Analog input expansion header. (chia s v i Arduino ắ ẻ ớ
Analog input)
B chuyộ ển đổi A/D, 4-wire SPI giao ti p v i FPGA ế ớ HPS (Hard Processor System, H ệthống x ửlý cứng):
B vi x lý 925MHz Dual-core ARM Cortex-ộ ử A9 1GB DDR3 SDRAM (32-bit data bus)
1 Gigabit Ethernet PHY V i b k t n i RJ45ớ ộ ế ố
C ng USB OTG, B kổ ộ ết nối USB Micro-AB Chân cắm thẻ nh ớ Micro SD card
Accelerometer (I2C interface + interrupt) C ng k t n i UART to USB, USB Mini-Bổ ế ố
Nút reset nóng và nút reset ngu iộ
Một nút cho ngườ ử ụi s d ng và một nút điều khi n LED ể cho người sử ụ d ng Giao tiếp chân căm LTC 2x7
Tất cảcác kế ối đã đượt n c thiết lập theo thiết bị Cyclone V SoC FPGA để cung c p ấ
tối đa các tiện dụng cho người dùng. Người dùng có th cể ấu hình FPGA để phù h p ợ
với thiết kế ủ c a mình.
Sơ đồ kh i Kit DE0-ố Nano được mô t trong hình 2.5 bao g m các thi t b ả ồ ế ịsau:
FPGA Device
Cyclone V SoC 5CSEMA4U23C6N Device Dual-core ARM Cortex-A9 (HPS)
40K programmable logic elements 2,460 Kbits embedded memory 5 fractional PLLs
Configuration and Debug
Serial configuration device EPCS128 on FPGA–
Onboard USB-Blaster II (Mini-B USB connector)
Hình 2. 5 Sơ đồkhố ủi c a Kit DE0 Nano Memory Device (Thiết bị ộ b nhớ)
1GB (2x256Mx16) DDR3 SDRAM trên HPS
M t khe c m th ộ ắ ẻnhớ Micro SD trên HPS
Communication (Kết nối)
One USB 2.0 OTG (ULPI interface with USB Micro-AB connector) UART to USB (USB Mini-B connector)
10/100/1000 Ethernet
Connectors (Bộ ế k t nối)
Two 40-pin expansion headers Arduino expansion header One 10-pin ADC input header
One LTC connector (one Serial Peripheral Interface (SPI) Master ,one I2C and one GPIO interface )
ADC
12-Bit Resolution, 500Ksps Sampling Rate. SPI Interface. 8-Channel Analog Input. Input Range : 0V ~ 4.096V.
Switches, Buttons, and Indicators (Công tác, nút nhấn)
3 user Keys (FPGA x2, HPS x1) 4 user switches (FPGA x4)
9 user LEDs (FPGA x8, HPS x 1)
2 HPS reset buttons (HPS_RESET_n and HPS_WARM_RST_n)
Sensors (Cảm biến)
G-Sensor on HPS
Power (Nguồn)
5V DC input
Trên Board này người dùng có th thi t k ph n c ng theo mể ế ế ầ ứ ục đích yêu cầu c a d ủ ự
án trên ph n FPGA, và l p trình ph n mầ ậ ầ ềm trên h ệ điều hành Linux ch y trên chip ạ
ARM của Board điều khi n các thành ph n FPGA theo thi t k thông qua các kể ầ ế ế ết nối của hệthống.
2.3.4. Module dò đường
Nguyên lý hoạt động c a m ch c m bi n thu phát quang d a trên s h p th ủ ạ ả ế ự ự ấ ụ
và ph n x ánh sáng c a các màu s c khác nhau c a nả ạ ủ ắ ủ ền và đường đi. Vạch màu trắng có kh ả năng phản x ánh sáng tạ ốt hơn vạch màu đen. Khi đó, quang tr s ở ẽ
nhận được các tia sáng ph n x ả ạ có cường độ ớ l n làm cho giá tr ị điện tr gi m khá ở ả
nhi u, dề ẫn đến điện áp trên quang tr là Vmin s ở ẽthấp. Ngượ ạc l i, vạch màu đen có
kh ả năng phản x ạ ánh sáng kém hơn vạch màu trắng. Khi đó, quang trở nhận được các tia sáng ph n x ả ạ có cường độ thấp làm cho giá tr ị điện tr c a quang tr giở ủ ở ảm
không đáng kể ẫn đến điệ, d n áp trên quang tr lúc này là Vmax s cao (hình 2.6). ở ẽ
Hình 2.6 thể ện sơ đồ ạ hi m ch nguyên lý của cảm bi n. ế (1)
Điện áp trên bi n tr Vế ở ref, được tính theo công thức (1), dùng để so sánh v i ớ điện áp t quang tr chuyừ ở để ển đổi thành các mức logic 0 tương ứng v i 0Vdc ho c ớ ặ
Hình 2. 6 Sơ đồ m ch modulạ e dò đường 2.4. L a chự ọn cấu hình h ệthống
Để ự l a chọn được c u hình h th ng phù h p v i yêu c u bài toán, chúng tôi ấ ệ ố ợ ớ ầ đã tìm hiều các h ệ thông như trong phần 2.3 đã phân tích, và sau đó đưa ra các lựa chọn phù hợp để thi t kế ế thành mô hình như trong hình 2.7 dưới đây:
H ệ thống g m có các khồ ối như trong hình 2.7 được phân làm 3 kh i chính: ố
khối điều khi n h ể ệ thống; Khối điều khiển động cơ; khối dò đường. Và nhi u các ề
khối khác như khối ngu n, khồ ối động cơ. Tuy nhiên trong bài luận văn này chúng
tôi ch ỉ đi sâu và tìm hiều 3 kh i chínhố , và đặc biệt đi sâu phân tích khối điều khiển h ệ thống, vì t t c ấ ả nhưng thao tác thiết k , l p trình FPGA và l p trình ph n mế ậ ậ ầ ềm b ng ngôn ng ằ ữ C đều n m trên khằ ối điều khi n. ể Khối điều khi n trung tâm này là ể
m t Kit DE0-Nano s ộ ẽ được trình bày chi tiết trong ph n 2.4.1 ầ 2.4.1. Khối điều khiển hệthống
Hình 2. Kh8 ối điều khi n Kit DE0 Nano ể
Khối điều khi n h th ng là m t board DE0-ể ệ ố ộ Nano-SoC. Nó s d ng chip ử ụ
ARM/HPS ch y h ạ ệ điều hành linux. H ệ thống được c u hình sao cho khấ ởi động t ừ
thẻ nh MicroSD trên DE0-ớ Nano-SoC. Hệ điều hành linux và các file FPGA
bitstream được lưu trữ trên th nh MicroSD (file soc_system.rbf; socfpga.dtb; u-ẻ ớ
boot.scr; zImage). Để chế độ Linux boot v i MSEL[4:0]=00000 thì bootloader s ớ ẽ được c u hình FPGA khi khấ ở ội đ ng v i file soc_system.rbf. ớ
Trong c u t o kh i hình 2.8, chúng ta th y có thành ph n chính: thành phấ ạ ố ấ ầ ần
FPGA được đánh dấu và chú thích màu xanh lá cây, các thành ph n này giao ti p ầ ế
trực ti p và các thành ph n khác c a h ế ầ ủ ệthống và đã được thi t k lế ế ập trình đểthực thi các nhi m v theo yêu c u bài toán. Thành phệ ụ ầ ần HPS được đánh dấu và chú thích màu Cam, các thành phần này được thi t k c ng c ế ế ứ ố định để ế ố k t n i gi a các ữ
thiết k FPGA v i h ế ớ ệ thống (System). Thành ph n h ầ ệ thống (System) được đánh
dấu và chú thích màu xanh nước bi n g m có m t lõi x ể ồ ộ ử lý ARM trung tâm để tính toán và xử lý bài toán.
2.4.2. Khối điền khiển động cơ
Trong d án này, tác gi s dự ả ử ụng IC L298 để thiết k và ch t o cho mế ế ạ ạch
điều khiển động cơ. IC này được tích h p 2 m ch c u H, có th hoợ ạ ầ ể ạt động ở điện áp tối đa 46Vdc và dòng điện định m c t ng cứ ổ ộng là 5A. Hơn nữa, L298 có kh ả năng đảo chiều quay và thay đổ ốc đội t quay của động cơ một cách d dàng b ng cách s ễ ằ ử
dụng phương pháp PWM. L298 được thiết kế và lắp đặt như hình 2.9
Trên hình 2.9: Các chân cắm đầu vào INA, INB, INC, IND được n i v i dây ố ớ
d n sang chân c m GPIO c a SoCKit khẫ ắ ủ ối điều khi n h ể ệ thống. Các chân OUTA, OUTB, OUTC, OUTD t ng cừ ặp được nối với 2 động cơ.
2.4.3. Khối dò đường
Khối dò đường s d ng mử ụ ạch dò đường New Way với điện áp vào 5 V và
dòng điện 100mA, s dử ụng IC 74HC14D để ử x lý các thông tin của 5 đèn cảm bi n ế
màu s c và 1 cắ ảm biển gần đưa ra đầu ra là các tín hi u s ệ ố 0 và 1 đểthể ệ hi n k t qu ế ả
c a c m biủ ả ến. Khi các đèn cảm bi n màu s c tr v giá tr 1 là lúc g p dế ắ ả ề ị ặ ải màu đen
của vạch chỉ đường. Được thể ện như hình 2.10 hi
Hình 2. Kh10 ối dò đường
Trên hình 2.10: Các chân đầu ra c a c m bi n t ủ ả ế ừs1 -> s7 được n i v i dây ố ớ
d n nẫ ối đến các chân c m GPIO c a SoCkit bên khắ ủ ối điều khi n h ể ệthống. Trong đó
chân s1- 5 là chân c a các c m bi n h ng ngo>s ủ ả ế ồ ại tương ứng với các đèn LED từ U1
CHƯƠNG III: XÂY DỰNG HỆ THỐNG
3.1. Xây d ng phự ần cứng 3.1.1. Dự án Quartus cơ bản
D án Quartus my_first_hps-fpga_base là có sự ẵn trong thư mục DE0-Nano-
SoC trong đĩa CD đi kèm với Kit:
CD-Rom: \Demonstration\SOC_FPGA\my_first_hps_fpga_base
D án quartus này bao g m t t c các chân khai báo c n thi t cho c HPS và ự ồ ấ ả ầ ế ả
FPGA. Chú ý chân khai báo c a HPS c n ph i ch rõ t i tr c ti p các chân và ủ ầ ả ỉ ớ ự ế chân IO chu n. D ẩ ự án này cũng bao gồm các h ệ thống Qsys cơ bản và các thành ph n ầ
c a HPS. Các thành ph n củ ầ ủa HPS đã được thi k và c u hình chu n trong thi t k ết ế ấ ẩ ế ế
ph n c ng c a HPS DE0-ầ ứ ủ Nano-SoC.
Hình 3. 1 Thành ph n HPS hps_0 trong h ầ ệthống Qsys
Để phát tri n chúng ta có th m h thể ể ở ệ ống Qsys trong khi đang mở ự d án Quartus, và nhấn chọn vào menu “Tools >Qsys” trong Quartus II. Khi cử- a s Qsys ổ
xu t hi n, nó s hấ ệ ẽ ỏi người dùng ch n m t file h ọ ộ ệthống Qsys. Trong trường h p này ợ
Hình 3.2 minh h a các c ng ligthweight HPS- -FPGA AXI Master cọ ổ to ủa thành phần HPS. Người phát tri n có th k t n i c ng này t i m i c ng memory-ể ể ế ố ổ ớ ọ ổ
mapped slave c a các thành phủ ần mà người phát tri n s truy xuể ẽ ất từ HPS/ARM.
Hình 3. 2 C ng AXI ổ Master của thành phần HPS 3.1.2. Phát triển trên nền tảng dự án cơ bản
Phần này s minh h a cách th c thêm vào m t thành ph n PIO trong Qsys, ẽ ọ ứ ộ ầ
và làm th ế nào để ế ố k t n i thành ph n PIO này v i thành ph n HPS. Thành ph n PIO ầ ớ ầ ầ
này s dử ụng để điều khiển đèn LED kế ố ới FPGA. Đầt n i v u tiên hãy sao chép d ựán Quartus my_first_hps_fpga_base tới thư mục trên máy tính. M d án và m file ở ự ở Qsys “soc_system.qsys”.
Trong hộp thư viện c a công c Qsys, nh n t ủ ụ ậ ừ khóa ‘pio’ nhấn tìm ki m s ế ẽ
xu t hi n c a s ấ ệ ử ổ như hình 3.3. Khi “PIO (Parallel I/O)” xuất hi n, ch n nó và sau ệ ọ đó nhấn vào “Add …” để thêm thành ph n PIO vào h th ng Qsys. ầ ệ ố
Hình 3. 3 Tìm và thêm thành ph n PIO ầ
Khi c a s PIO xu t hi n, chúng ta củ ổ ấ ệ ần thay đổi độ ộng Width là 8, và đả r m b o ch c ch n rả ắ ắ ằng “Output” trong thẻ Direction đượ ực l a chọn, và thay đổi giá tr ị
Hình 3. 4 C u hình thành phấ ần PIO
Khi thành phần PIO được thêm vào h ệ thống, c n thi t ph i k t n i c ng ầ ế ả ế ố ổ
h2f_lw_axi_master AXI master v i c ng s1 slave c a thành phớ ổ ủ ần PIO như hình 3.5. Hãy thay đổi tên thành phần PIO thành pio_led, thay đổi Clock Input thành clk_0, xu t tín hiấ ệu đường dân Conduit như là pio_led_external_connection, và
k t nế ối đầu vào Reset Input t i h ớ ệthống reset. Chú ý, địa ch Base c a thành phỉ ủ ần PIO pio_led là c c k quan tr ng cho vi c l p trình ph n m m nhúng sau này. ự ỳ ọ ệ ậ ầ ề Chương trình ARM sẽ truy xu t vào thành phấ ần thông qua địa ch ỉ Base. Thường thì chúng ta s t o ra m t file header có tên hps_0.h, file này có chẽ ạ ộ ứa các địa ch ỉ
Base c a các thành ph n trong thi t k FPGA, t ủ ầ ế ế ừ đó người phát tri n ph n m m có ể ầ ề
thể ử ụng đị s d a ch ỉ đó để truy xu t vào các c ng và th c hiấ ổ ự ện đọc ghi các giá tr ị vào thanh ghi đó.
Hình 3. 5 T o kạ ết nối gi a HPS và thành phữ ần PIO
Trong công cụ Qsys, nhấn vào menu Generate->HDL Example…“có thể tìm tín hiệu giao diện mới pio_led_external_connection_export cho vi c thêm thành phệ ần PIO pio_led như trong hình 3.6. Người phát tri n có th nhể ể ấn “Copy” để sao chép nội dung t i b ớ ộ nhớ đệm, sau đó dán vào tín hiệu pio_led_external_connection_export Quartus top và k t nế ối nó với cổng LEDR như hình 3.7. trước khi đóng công cụ Qsys, hãy nh ớ nhấn vào menu “Generate->Generate…” để ạ t o ra ngu n mã code cho h ồ ệ
Hình 3. 6 giao di n pio_led c a h ệ ủ ệthống
Hình 3. 7 ban đầu hóa .pio_led_external_connection_export trong u0 soc_system
Cách thêm m t thành phộ ần đã xây dựng s n t code HDL: Hình 3.8 và 3.9 là ẵ ừ
các thành ph n trong Qys c a h ầ ủ ệthống, Hình 3.10 cách th c thêm vào 1 thành phứ ần mới của Qys t m t file HDL thi t k t ừ ộ ế ế ừ người dùng.
Hình 3. 8 các thành phần cơ bản trong Qys c a h ủ ệthống
Hình 3. 10 Thêm vào m t thành ph n trong Qys ộ ầ
3.1.3. Biên d ch và chị ạy chương trình
Các thành phần khác chúng ta cũng xây dựng các bước một cách tương tự như các bước thi t k ế ế pio_led như các bước trên, sau khi xây dựng xong chương
trình s t o ra m t file *top.v, t file này chúng ta có th viẽ ạ ộ ừ ể ết code HDL để ậ l p trình
theo ý đồ ủ c a d ựán.
Nội dung file HDL như sau:
`define ENABLE_HPS module DE0_Nano_SoC_golden_top( ///////// ADC ///////// output ADC_CONVST, output ADC_SCK, output ADC_SDI, input ADC_SDO, ///////// ARDUINO ///////// inout [15:0] ARDUINO_IO, inout ARDUINO_RESET_N,
///////// FPGA /////////