iii LỜI CAM ĐOAN Đề tài “Thực hiện một số ứng dụng nhúng cơ bản trên board Altera DE2-115” được thực hiện trên board DE2-115 Development and Education, nhằm hướng đến việc thiết kế mộ
Trang 1i
TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ
BỘ MÔN ĐIỆN TỬ VIỄN THÔNG
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
THỰC HIỆN CÁC ỨNG DỤNG NHÚNG
CƠ BẢN TRÊN BOARD ALTERA DE2-115
Sinh viên thực hiện: Cán bộ hướng dẫn:
Lê Thảo Quyên MSSV: 1118006 ThS Trương Phong Tuyên Huỳnh Đặng Hoàng Quyên MSSV: 1118005
Ngành: Kỹ Thuật Máy Tính
Cần Thơ, tháng 5 năm 2015
Trang 2ii
TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ
BỘ MÔN ĐIỆN TỬ VIỄN THÔNG
Luận văn được thực hiện bởi:
1 Họ tên: Huỳnh Đặng Hoàng Quyên, MSSV: 1118005, Lớp: Kỹ thuật máy tính
2 Họ tên: Lê Thảo Quyên, MSSV: 1118006, Lớp: Kỹ thuật máy tính
Tựa đề Luận văn (Hay tên đề tài): Thực hiện một số ứng dụng nhúng cơ bản trên
board Altera DE2-115
Luận văn đã nộp và báo cáo tại Hội đồng chấm bảo vệ Luận văn tốt nghiệp Đại học Cần Thơ ngành Điện tử Truyền thông/ Kỹ thuật máy tính, Bộ môn Điện tử Viễn thông vào ngày 19 tháng 5 năm 2015 (Quyết định thành lập Hội đồng số: 133/QĐ-CN ngày 24 tháng 4 năm 2015 của Trưởng Khoa Công Nghệ)
Kết quả đánh giá: _
Chữ ký của các thành viên Hội đồng:
Thành viên Hội đồng 1 (CBHD): ThS Trương Phong Tuyên Thành viên Hội đồng 2: TS Lương Vinh Quốc Danh Thành viên Hội đồng 3: ThS Võ Ngọc Lợi
Trang 3iii
LỜI CAM ĐOAN
Đề tài “Thực hiện một số ứng dụng nhúng cơ bản trên board Altera
DE2-115” được thực hiện trên board DE2-115 Development and Education, nhằm hướng
đến việc thiết kế một số bài thí nghiệm hệ thống nhúng Đồng thời qua đó góp phần vào nguồn tư liệu cho các nghiên cứu về sau trong cùng lĩnh vực Do đó đề tài đã được chúng em chọn để thực hiện Luận văn tốt nghiệp trong thời gian này
Trong quá trình thực hiện đề tài, có thể còn nhiều thiếu sót do kiến thức hạn chế nhưng những nội dung trình bày trong quyển báo cáo này là những hiểu biết và thành quả của chúng em đạt được dưới sự giúp đỡ của giảng viên hướng dẫn là Thạc sĩ Trương Phong Tuyên
Chúng em xin cam đoan rằng: những nội dung trình bày trong quyển báo cáo Luận văn tốt nghiệp này không phải là bản sao chép từ bất kỳ công trình đã có trước nào Nếu không đúng sự thật, em xin chịu mọi trách nhiệm trước nhà trường
Cần Thơ, ngày 10 tháng 05 năm 2015
Nhóm sinh viên thực hiện:
Lê Thảo Quyên Huỳnh Đặng Hoàng Quyên
Trang 4iv
LỜI CẢM ƠN
Đầu tiên, chúng em xin cảm ơn Thầy Trương Phong Tuyên đã quan tâm, hướng dẫn tận tình, truyền đạt những kinh nghiệm quý báu và kịp thời hướng dẫn giúp chúng em tìm ra con đường đúng đắn để giải quyết những khó khăn Thầy cũng tận tình giúp đỡ, động viên chúng em về mặt tinh thần để chúng em tự tin thực hiện luận văn trên cơ sở phát huy khả năng tự tìm tòi, học hỏi
Quý thầy cô trong Bộ môn Điện tử- Viễn thông đã tạo điều kiện, tận tình giúp đỡ, cho chúng em những kiến thức quý báu trong suốt quá trình học ở đây
Các bạn cùng khóa đã nhiệt tình hợp tác, đóng góp, giúp đỡ, ủng hộ chúng
em trong suốt quá trình hoàn thành luận văn
Cuối cùng chúng em xin chân thành cảm ơn gia đình, nhất là cha mẹ, đã tạo mọi điều kiện thuận lợi về vật chất và tinh thần Gia đình đã tạo cho chúng em tâm thế thoải mái, luôn khuyến khích để chúng em vững tin vượt qua mọi trở ngại trong suốt quá trình hoàn thành luận văn
Xin nhận ở chúng em lời cảm ơn chân thành và sâu sắc nhất!
Nhóm sinh viên thực hiện:
Lê Thảo Quyên Huỳnh Đặng Hoàng Quyên
Trang 5v
MỤC LỤC
MỤC LỤC HÌNH vii
DANH SÁCH CÁC TỪ VIẾT TẮT xi
TÓM TẮT 1
ABSTRACT 1
CHƯƠNG 1: TỔNG QUAN 2
1.1 ĐẶT VẤN ĐỀ 2
1.1 LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ 2
1.2 PHẠM VI ĐỀ TÀI 2
1.3 PHƯƠNG PHÁP NGHIÊN CỨU 3
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 4
2.1 GIỚITHIỆUBOARDDE2-115 4
2.2 CẤUHÌNHCYCLONEIVEFPGA[7]: 6
2.3 PHẦNMỀMQUARTUSII V11.0 6
2.3.1 Giới thiệu Quartus II 6
2.3.2 Nios II 32 bit CPU 7
2.3.3 Thiết kế dự án bằng Quartus II 8
2.3.4 Xây dựng hệ thống đơn giản bằng QSys trên Quartus II 10
CHƯƠNG 3: THỰC HIỆN MỘT SỐ ỨNG DỤNG NHÚNG CƠ BẢN TRÊN BOARD ALTERA DE2-115 30
3.1 BÀI THÍ NGHIỆM SỐ 1:QSYS VÀ NIOS II IDE 30
3.1.1 Sơ đồ hệ thống 30
3.1.2 Các bước thực hiện và kết quả 30
3.2 BÀI THÍ NGHIỆM SỐ 2: HỆ THỐNG ĐƠN GIẢN 38
3.2.1 Sơ đồ hệ thống 39
3.2.2 Lưu đồ giải thuật 39
3.2.3 Các bước thực hiện và kết quả 41
3.3 BÀI THÍ NGHIỆM SỐ 3: CHƯƠNG TRÌNH ĐIỀU KHIỂN XUẤT/ NHẬP 48
3.3.1 Sơ đồ hệ thống 48
3.3.2 Lưu đồ giải thuật 49
3.3.3 Các bước thực hiện và kết quả 50
3.4 BÀI THÍ NGHIỆM SỐ 4: CHƯƠNG TRÌNH CON VÀ NGĂN XẾP 57
3.4.1 Sơ đồ hệ thống 57
3.4.2 Lưu đồ giải thuật 58
3.4.3 Các bước thực hiện và kết quả 58
3.5 BÀI THÍ NGHIỆM SỐ 5: LẬP TRÌNH CHO NIOS II SỬ DỤNG NGÔN NGỮ C 67
3.5.1 Sơ đồ hệ thống 68
3.5.2 Các bước thực hiện và kết quả 68
Trang 6vi
CHƯƠNG 4: KẾT LUẬN 74
4.1 KẾT QUẢ ĐẠT ĐƯỢC 74
4.2 HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 74
TÀI LIỆU THAM KHẢO 75
PHỤ LỤC A 76
Trang 7vii
MỤC LỤC HÌNH
Hình 2.1 Sơ đồ khối mô tả cấu tạo của board DE2-115 4
Hình 2.2 Hệ thống nạp thông qua JTAG programming 6
Hình 2.3 Hệ thống nạp thông qua AS programming 6
Hình 2.4 Giao diện Quartus II 11.0 7
Hình 2.5 Tạo New project wizard 8
Hình 2.6 Đặt tên cho project 8
Hình 2.7 Thêm file thiết kế 9
Hình 2.8 Chọn thiết bị 9
Hình 2.9 Thiết lập công cụ EDA 10
Hình 2.10 Cửa sổ tóm tắt các thông số đã chọn 10
Hình 2.11 Giao diện sau khi mở QSys 11
Hình 2.12 Tạo Nios II processors 12
Hình 2.13 Giao diện cấu hình CPU Nios II/e 12
Hình 2.14 Giao diện cấu hình JTAG Debug 13
Hình 2.15 Tạo On-chip Memory 13
Hình 2.16 Giao diện cấu hình On-chip Memory 14
Hình 2.17 Tạo JTAG UART 15
Hình 2.18 Giao diện cấu hình JTAG Uart 15
Hình 2.19 Tạo System ID 16
Hình 2.20 Giao diện cấu hình System ID 16
Hình 2.21 Tạo Interval Timer 17
Hình 2.22 Giao diện cấu hình Interval Timer 17
Hình 2.23 Thêm PIO 18
Hình 2.24 Giao diện cấu hình PIO 18
Hình 2.25 Nối các dây clk 19
Hình 2.26 Nối các dây Reset 20
Hình 2.27 Nối các thành phần Avalon Memory Mapped Slave 20
Trang 8viii
Hình 2.28 Gán bộ nhớ RAM cho CPU 21
Hình 2.29 Gán địa chỉ nền 21
Hình 2.30 Hệ thống sau khi lấy chân external_connection 22
Hình 2.31 Thiết kế hệ thống hoàn tất 22
Hình 2.32 Đặt tên và lưu hệ thống 23
Hình 2.33 Biên dịch hệ thống 23
Hình 2.34 Biên dịch hệ thống thành công 24
Hình 2.35 Add file 24
Hình 2.36 Add file nios_sys.qip 25
Hình 2.37 Kết quả sau khi Add file nios_sys.qip 25
Hình 2.38 Hộp thoại New 26
Hình 2.39 Giao diện sơ đồ khối hệ thống 26
Hình 2.40 Gán chân cho hệ thống 27
Hình 2.41 Giao diện thiết kế hoàn tất 27
Hình 2.42 Set as Top-Level Entity cho nios_sys.qip 27
Hình 2.43 Biên dịch hệ thống thành công 28
Hình 2.44 Add file HUONG_DAN.sof 28
Hình 2.45 Giao diện Hardware Setup 28
Hình 2.46 Nạp file xuống board thành công 29
Hình 3 1 Sơ đồ hệ thống ứng dụng 30
Hình 3.2 Sơ đồ hệ thống 32
Hình 3.3 Sơ đồ hệ thống hoàn tất 32
Hình 3.4 Nios II Software Build Tools for Eclipse 33
Hình 3.5 Giao diện Workspace Launcher 33
Hình 3.6 Tạo project mới cho hệ thống 34
Hình 3.7 Giao diện cấu hình Nios II Application and BSP for Eclipse 34
Hình 3.8 Hoàn thành tạo project mới 35
Hình 3.9 Giao diện cài đặt Nios II BSP Properties 35
Trang 9ix
Hình 3.10 Code mẫu Hello World Small 36
Hình 3.11 Giao diện Run As/Run Configurations 36
Hình 3.12 Giao diện cài đặt New_configuration 37
Hình 3.13 Kết quả chạy chương trình 38
Hình 3.14 Sơ đồ khối hệ thống ứng dụng 39
Hình 3.15 Lưu đồ giải thuật xác định chuỗi bit 1 liên tiếp lớn nhất 39
Hình 3.16 Lưu đồ giải thuật của chương trình đếm số bit 0 liên tục và bit 1 liên tục lớn nhất 40
Hình 3.17 Lưu đồ giải thuật chương trình con tính số bit 1 và bit 0 liên tiếp 41
Hình 3.18 Sơ đồ hệ thống 42
Hình 3.19 Giao diện tạo project mới 45
Hình 3.20 Chọn file hệ thống 46
Hình 3.21 Chọn ngôn ngữ lập trình 46
Hình 3.22 Giao diện Add file s 46
Hình 3.23 Giao diện cài đặt thông số hệ thống 46
Hình 3.24 Kết quả chương trình đếm 4 bit 1 liên tiếp 47
Hình 3.25 Kết quả chương trình đếm 4 bit 1 liên tiếp bằng chương trình con 47
Hình 3 26 Sơ đồ khối hệ thống ứng dụng 48
Hình 3.27 giải thuật (giá trị nhập được lưu vào r16 và cộng dồn vào giá trị đang có tại r17, lưu kết quả tại r17) 49
Hình 3.28 Lưu đồ giải thuật 50
Hình 3.29 Sơ đồ hệ thống 52
Hình 3.30 Sơ đồ khối hệ thống hoàn tất 52
Hình 3.31 Giao diện sau khi nạp chương trình ứng dụng 54
Hình 3.32 Kết quả chạy chương trình khi cho 0+1 54
Hình 3.33 Kết quả chạy chương trình cho 1+129 55
Hình 3.34 Lưu giá trị 8 vào thanh ghi r16 56
Hình 3.35 Kết quả sau khi nhấn key0 56
Hình 3.36 Sơ đồ khối hệ thống ứng dụng 57
Trang 10x
Hình 3.37 Lưu đồ giải thuật chương trình con và ngăn xếp 58
Hình 3.38 Sơ đồ hệ thống 59
Hình 3.39 Sơ đồ khối hệ thống 60
Hình 3.40 Giao diện tab Memory 62
Hình 3.41 Load file into memory 62
Hình 3.42 Danh sách trước khi sắp xếp 62
Hình 3.43 Kết quả sau khi sắp xếp tăng dần 63
Hình 3.44 Danh sách sau khi sắp xếp giảm dần 63
Hình 3.45 Add file Lab5_part3.s 66
Hình 3.46 Kết quả sắp xếp tăng dần bằng chương trình con 67
Hình 3.47 Sơ đồ khối hệ thống ứng dụng 68
Hình 3.48 Sơ đồ hệ thống 69
Hình 3.49 Giao diện Workspace Launcher 70
Hình 3.50 Giao diện tạo project mới 70
Hình 3.51 Cửa sổ Nios II Application and BSP for Eclipse 71
Hình 3.52 Giao diện cài đặt Nios II BSP Properties 71
Hình 3.53 Run As/Run Configuratons 72
Hình 3.54 Giao diện cài đặt New_configuration 73
Hình 3.55 Kết quả chạy chương trình 73
Trang 11xi
DANH SÁCH CÁC TỪ VIẾT TẮT
FPGA: Field-Programmable Gate Array
CPU: Central Processing Unit
MMU: Memory Management Unit
MPU: Memory Protection Unit
RAM: Random Access Memory
ROM: Read Only Memory
SoC: System on a Chip
SOPC: System on a Programmable Chip Builder
JTAG: Joint Test Action Group
LCD: Liquid Crystal Display
UART: Universally Asynchronous Receiver-Transmitter
USB: Universal Serial Bus
PLD: Programmable Logic Device
Trang 121
TÓM TẮT
Hiện nay, hệ thống nhúng đã được ứng dụng trong hầu hết các lĩnh vực của cuộc sống từ giải trí đến giáo dục, y tế, quân sự, Các hệ thống nhúng được phát triển trên FPGA đang được sử dụng để nghiên cứu, ứng dụng và đào tạo khá rông rãi Với đặc tính có thể cấu hình lại, người dùng có thể tạo ra phiên bản thiết kế mong muốn cho các ứng dụng khác nhau FPGA cũng hổ trợ rất nhiều các thiết bị ngoại vi tạo điều kiện thuận lợi cho việc phát triển hệ thống nhúng Do đó để có bước đầu làm quen và nghiên cứu về hệ thống nhúng trên FPGA chúng em chọn đề tài “Thực hiện các ứng dụng nhúng cơ bản trên board Altera DE2-115” làm đề tài luận văn tốt nghiệp Mục tiêu của đề tài là nghiên cứu và xây dựng các bài thí nghiệm hệ thống nhúng trên board DE2-115 Kết quả dự kiến là xây dựng hoàn chỉnh 5 bài thí nghiệm, qua đó góp phần vào nguồn tư liệu tham khảo cho học phần
11 The result is complete 5 exercise, thereby contributing to reference resources for embedded system modules
Keyword: DE2-115, Embedded system, FPGA
Trang 132
CHƯƠNG 1: TỔNG QUAN
Chương này sẽ giới thiệu những nội dung chính sau:
Đặt vấn đề, giới thiệu đề tài, mục đích của đề tài
Tuy nhiên môn học hệ thống nhúng chỉ mới được đưa vào giảng dạy ở các trường học trong vài năm trở lại đây Đề tài “Thực hiện một số ứng dụng nhúng cơ bản trên board Altera DE2-115” được thực hiện trên board DE2-115 sẽ nghiên cứu một số bài thí nghiệm nhằm phục vụ cho nhu cầu học tập cũng như làm tài liệu tham khảo sau này
Việc xây dựng và phát triển hệ thống nhúng đã không còn là lĩnh vực quá mới mẻ với một số quốc gia Nhiều công ty, trường đại học trên thế giới cũng đã nguyên cứu và đạt được nhiều thành công trong lĩnh vực này như công ty Terasic, Altera, trường đại học Cornell … Và việc phát triển hệ thống nhúng để thực hiện các công việc đồ họa máy tính cũng đã được quan tâm rất lớn
Tuy nhiên tại Việt Nam, các công ty và các trường đại học cũng chỉ mới tiếp cận với lĩnh vực này khoảng vài năm trở lại đây Vì vậy, việc nghiên cứu và phát triển trong lĩnh vực này là chưa nhiều và còn gặp nhiều khó khăn Do đó
những đề tài về hệ thống nhúng hoàn thành chưa được như mong muốn hoặc với số lượng còn hạn chế
Đề tài được thực hiện trên board Altera DE2-115 Development and Education do Terasic sản xuất, kết hợp với các phần mềm như Quartus II, Nios II, Altera Monitor Program Ngôn ngữ Assembly và C được lựa chọn để thực hiện việc xây dựng ứng dụng
Đề tài xây dựng các bài thí nghiệm Hệ thống nhúng nhằm phục vụ cho nhu cầu tham khảo, học tập và giảng dạy sau này
Trang 143
1 Tìm hiểu board DE2-115 Development and Education
2 Thiết kế và xây dựng hệ thống bằng công cụ QSys
Trang 154
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
Chương này sẽ trình bày các vấn đề:
Giới thiệu tổng quan về board DE2-115
Giới thiệu phần mềm Quartus II
Hướng dẫn tạo một dự án trong Quartus II và tạo hệ thống trong QSys
Board DE2-115 Development and Education của Terasic có nhiều chức năng cho phép người dùng thực hiện một loạt các mạch thiết kế, từ các mạch đơn giản cho đến các dự án đa phương tiện khác nhau
Sơ đồ khối của board DE2-115
Hình 2.1 Sơ đồ khối mô tả cấu tạo của board DE2-115 [7]
Bằng cách cấu tạo sơ đồ khối như bên trên, người sử dụng có thể tạo ra hệ thống và sử dụng hệ thống đó một cách tối ưu
Chip FPGA Cyclone IV EP4CE115F29
o 114,480 LEs
o 432 M9K memory blocks
o 3,888 Kbits embedded memory
Trang 165
o 4 PLLs
o JTAG and AS mode configuration
o EPCS64 serial configuration device
o On-board USB Blaster circuitry
o Two Ethernet 10/100/1000 Mbps ports
o High Speed Mezzanine Card (HSMC)
o Configurable I/O standards (voltage levels:3.3/2.5/1.8/1.5V)
o USB type A and B
Provide host and device controllers compliant with USB 2.0
Support data transfer at full-speed and low-speed
PC driver available
o 40-pin expansion port
Configurable I/O standards (voltage levels:3.3/2.5/1.8/1.5V)
o VGA-out connector
VGA DAC (high speed triple DACs)
o DB9 serial connector for RS-232 port with flow control
o PS/2 mouse/keyboard
Xung Clock
o Three 50MHz oscillator clock inputs
o SMA connectors (external clock input/output)
Âm thanh (Audio)
o 24-bit encoder/decoder (CODEC)
o Line-in, line-out, and microphone-in jacks
Display
o 16x2 LCD module
Switches and indicators
o 18 slide switches and 4 push-buttons switches
o 18 red and 9 green LEDs
o Eight 7-segment displays
Other features
o Infrared remote-control receiver module
o TV decoder (NTSC/PAL/SECAM) and TV-in connector
Power
o Desktop DC input
o Switching and step-down regulators LM3150MH
Trang 176
Phần mềm Quartus II của Altera được dùng để cấu hình phần cứng cho chip FPGA Có hai cách cấu hình như sau:
JTAG programming: Trong cách thức này thì dữ liệu cấu hình phần cứng được nạp trực tiếp xuống Cyclone IV E FPGA Chip FPGA sẽ duy trì cấu hình được lập trình trong khi nó được duy trì nguồn nuôi Các thông tin về cấu hình sẽ mất khi nguồn điện bị mất Chức năng của
MAX II EPM 240 là nạp cấu hình hệ thống FPGA từ Flash
Hình 2.2 Hệ thống nạp thông qua JTAG programming
AS programming: Ở cách thức này gọi là Acive Serial programming Dữ liệu dùng để cấu hình phần cứng sẽ được nạp xuống chip Altera EPCS64 Do nó là một thiết bị lưu trữ không bay hơi, nên thông tin sẽ vẫn được duy trì ngay khi nguồn điện bị mất Khi board được cấp nguồn, thì dữ liệu cấu hình lưu trên chip EPCS64 sẽ tự động nạp xuống chip FPGA
Hình 2.3 Hệ thống nạp thông qua AS programming
2.3.1 Giới thiệu Quartus II
Quartus II là công cụ phần mềm phát triển bởi hãng Altera, cung cấp môi trường thiết kế toàn diện Đây là phần mềm đóng gói tích hợp đầy đủ phục vụ cho các thiết kế logic với các linh kiện logic khả trình PLD của Altera, gồm các dòng APEX, CYCLONE, MAX, PLEX,
Quartus II cho phép làm việc với nhiều file ở cùng một thời điểm, soạn thảo file thiết kế trong khi vẫn có thể mô phỏng hay chạy mô phỏng các dự án khác Công cụ biên dịch Quartus II nằm ở trung tâm hệ thống, cung cấp quy trình thiết kế cho phép tùy biến để đạt được thiết kế tối ưu trong dự án Công cụ định vị lỗi tự
Trang 187
động và các bản tin cảnh báo khiến cho việc phát hiện và sửa lỗi trở nên đơn giản hơn
Hình 2.4 Giao diện Quartus II 11.0
2.3.2 Nios II 32 bit CPU
Nios II là một kiến trúc vi xử lý 32-bit được thiết kế chuyên cho các dòng chip FPGA của Altera Nios II tích hợp nhiều tính năng tiên tiến và thích hợp cho nhiều ứng dụng từ DSP cho tới điều khiển Kiến trúc của Nios II là kiến trúc RISC soft-core, nghĩa là Nios II được tạo thành hoàn toàn bằng các phần tử logic (logic element) và các memory block của Altera FPGA Kiến trúc soft-core của vi xử lý Nios cho phép người thiết kế hệ thống có thể tùy biến lõi CPU Nios II theo mục đích thiết kế, ngoài ra, người thiết kế có thể mở rộng khả năng của CPU bằng cách thêm các tính năng như quản lý bộ nhớ MMU hoặc các lệnh tùy biến (custom
instruction) …
Có 3 dạng nhân đặc trưng của bộ xử lý Nios II
Nios II/f được dùng trong các phần thiêt kế cần hiệu suất cao và có một
số chức năng sau:
o Tùy chọn MMU (Memory Management Unit) và MPU (MicroProcessor Unit)
o Truy cập lên đến 2GB không gian địa chỉ bên ngoài
o Tùy chọn liên kết bộ nhớ cho instruction và data
Trang 198
o Module sửa lỗi JTAG
Nios II/s được dùng để duy trì cân bằng giữa hiệu suất và chi phí, có một số chức năng sau:
o Caches Instruction
o Rẽ nhánh tĩnh
o Nhiều lớp, phân chia và thay đổi phần cứng
o Module sửa lỗi JTAG
Nios II/e được dùng trong các ứng dụng nhỏ
2.3.3 Thiết kế dự án bằng Quartus II
Double click vào biểu tượng Quartus II trên màn hình, sau khi xuất hiện
giao diện, vào File chọn New project wizard…
Hình 2.5 Tạo New project wizard
Chọn Next sẽ được giao diện như sau, chọn vị trí lưu dự án, đặt tên dự án
Hình 2.6 Đặt tên cho project
Ở bước tiếp theo có thể chèn thêm file bằng cách chọn biểu tượng dẫn
đường dẫn đến vị trí file cần chèn và chọn Add hoặc có thể bỏ qua bước này, các file cần chèn vào sẽ được chèn thêm sau Nhấn Next để đến bước kế tiếp
Trang 209
Hình 2.7 Thêm file thiết kế
Ở bước kế tiếp, chọn Cyclone IV E trong Device Family, trong mục Available devices chọn tên chip là EP4CE115F29C7 Nhấn Next
Hình 2.8 Chọn thiết bị
Trang 2110
Hình 2.9 Thiết lập công cụ EDA
Ở bước này cho phép cài đặt một số tính năng để phát triển dự án, trong giới hạn phạm vi xây dựng các bài thí nghiệm thì ở bước này để mặc định (Hình 2.9)
Bước tiếp theo là cửa sổ tóm tắt các thông số thiết kế đã lựa chọn ở các bước trước đó
Hình 2.10 Cửa sổ tóm tắt các thông số đã chọn
Cuối cùng chọn Finish để kết thúc quá trình tạo dự án mới
2.3.4 Xây dựng hệ thống đơn giản bằng QSys trên Quartus II
QSys là hệ thống công cụ tích hợp của Altera được sử dụng để thiết kế hệ thống phần cứng kỹ thuật số QSys là thế hệ sau của SoPC Builder được hỗ trợ bởi
Trang 2211
NoC (Network on a chip), công nghệ mới của FPGA tối ưu hóa cung cấp hiệu suất cao hơn, cải tiến thiết kế tái sử dụng và được xác nhận là nhanh hơn SoPC Builder Công cụ QSys cho phép thiết kế hệ thống số bằng cách kết nối các thành phần như
bộ vi xử lí, bộ nhớ, cổng song song,… lại với nhau
Ưu điểm của QSys:
Dễ dàng để sử dụng giao diện GUI cho phép tích hợp nhanh giữa các chức năng IP và hệ thống con
QSys cung cấp hỗ trợ giao diện bộ nhớ ánh xạ đạt được gần gấp đôi hiệu suất của công cụ SOPC Builder Altera, đồng thời nâng cao khả năng mở rộng hệ thống cho các thiết kế FPGA lớn và cho phép hỗ trợ cho các giao diện tiêu chuẩn công nghiệp
Hỗ trợ các giao diện tiêu chuẩn công nghiệp, vì vậy có thể kết nối các lõi IP của các giao diện khác nhau
Thiết kế phân cấp, cho phép bạn dễ dàng tái sử dụng các IP, chức năng (như hệ thống con) và cũng để phát triển hệ thống mở rộng
Cách tạo một hệ thống QSys:
Trên thanh công cụ Quartus chọn Tools > QSys hoặc chọn biểu tượng
để mở QSys
Hình 2.11 Giao diện sau khi mở QSys
Thêm Nios II Processors
Trong cửa sổ Component Library, chọn Processors > Nios II Processor
Trang 2312
Hình 2.12 Tạo Nios II Processor
Sau khi chọn Nios II Processor sẽ có một hộp thoại xuất hiện cho phép ta chọn kiểu Nios II, tùy vào tính năng của hệ thống mà chọn lõi Nios II cho phù hợp Trong ví dụ này ta chọn phiên bản đơn giản nhất là phiên bản Nios II/e
Hình 2.13 Giao diện cấu hình CPU Nios II/e
Trang 2413
Sau khi chọn Nios II Core ta click vào tag JTAG Debug Mode, đối với các
thiết kế đơn giản ta chọn Level 1, nhấn Finish sau đó đổi tên nios2_qsys_0 thành
CPU để hoàn tất việc tạo CPU
Hình 2.14 Giao diện cấu hình JTAG Debug
Hình 2.15 Tạo On-chip Memory
Trang 2514
Thêm Onchip Memory (RAM or ROM)
Nios II chỉ là một lõi vi xử lý chứ chưa phải là vi điều khiển do đó nó cần phải có tối thiểu bộ nhớ dữ liệu và bộ nhớ chương trình để có thể hoạt động được
Trong cửa sổ Component Library, chọn Memories and Memory Controllers > On-chip > On-chip Memory (RAM or ROM) để tạo bộ nhớ (Hình
2.15)
Ở hộp thoại On-Chip Memory(RAM or ROM)
o Tại tag Data width: Chọn 32
o Tại tag Total memory size chọn dung lượng cho bộ nhớ là 32768 (bytes)
o Chọn Finish để hoàn thành việc thiết kế bộ nhớ
o Đổi tên onchip_memory2_0 thành RAM
Hình 2.16 Giao diện cấu hình On-chip Memory
Thêm JTAG UART
JTAG UART có chức năng kết nối dữ liệu từ máy chủ PC với board
DE2-115 thông qua cổng USB Blaster, phương pháp truyền chuỗi ký tự nối tiếp Để tạo
JTAG UART trong cửa sổ Component Library chọn Interface Protocols > Serial > JTAG UART
Trang 2615
Hình 2.17 Tạo JTAG UART
Trong hộp thoại JTAG UART, ta để mặc định các thông số cài đặt, nhấn
Finish, sau đó đổi tên jtag_uart_0 thành JTAG_UART để hoàn tất
Hình 2.18 Giao diện cấu hình JTAG Uart
Thêm System ID
Module system ID peripheral cho phép đảm bảo hệ thống được biên dịch tại những thời điểm khác nhau sẽ có số ID khác nhau để đảm bảo phần mềm sẽ được download xuống đúng hệ thống mong muốn Tại cửa sổ Component Library,
chọn Peripherals > Debug and Performance > System ID Peripheral
Trang 2716
Hình 2.19 Tạo System ID
Trong hộp thoại System ID Peripheral, ta để mặc định các thông số cài đặt,
nhấn Finish, sau đó đổi tên sysid_qsys_0 thành sysid để hoàn tất
Hình 2.20 Giao diện cấu hình System ID
Thêm Interval Timer
Trong cửa sổ Component Library, chọn Peripherals > Microcontroller Peripherals > Interval Timer
Trang 2817
Hình 2.21 Tạo Interval Timer
Trong hộp thoại Interval Timer, tùy thuộc vào thời gian delay cần thiết kế
mà ta có thể thay đổi giá trị trong Period, đơn vị trong Units (Ở ví dụ này sẽ chọn Period là 500 ms) Ở tag Hardware Options chọn Simple periodic interrupt trong
mục Presets Nhấn Finish và đổi tên timer_0 thành timer để hoàn tất
Hình 2.22 Giao diện cấu hình Interval Timer
Thêm PIO
Trang 2918
Tại cửa sổ Component Library chọn Peripherals > Microcontroller Peripherals > PIO (Paralllel I/O)
Hình 2.23 Thêm PIO
Ở hộp thoại PIO (Paralllel I/O):
o Tại cửa sổ PIO có mục Basic Settings gồm 2 tag Width và Direction Ở tag Width ta chọn số bit và tag Direction ta chọn Input hoặc Output tùy vào bài làm (Ở ví dụ này sẽ chọn 8 bit và Input)
o Kết thúc nhấn Finish
o Đổi tên pio_0
Hình 2.24 Giao diện cấu hình PIO
Trang 30 Nối Avalon Memory Mapped Master của CPU với Avalon Memory
Mapped Slave của các thành phần còn lại (Hình 2.27)
Sau khi nối dây, double click vào CPU để gán bộ nhớ, chọn RAM.s1 trong hai tag Reset vector memory và Exception vector memory Nhấn Finish để hoàn tất (Hình 2.28)
Hình 2.25 Nối các dây clk
Trang 3120
Hình 2.26 Nối các dây Reset
Hình 2.27 Nối các thành phần Avalon Memory Mapped Slave
Trang 3221
Hình 2.28 Gán bộ nhớ RAM cho CPU
Ta sẽ phải gán địa chỉ base address cho mỗi thành phần slave trong không gian của nios master , và gán mức ưu tiên ngắt (IRQ) cho JTAG UART và interval timer Chỉ số ngắt càng nhỏ thì mức ưu tiên càng lớn Thực hiện các bước sau để gán không gian địa chỉ và độ ưu tiên của ngắt:
Trên thanh công cụ QSys, chọn System > Assign Base Addresses để
gán địa chỉ nền cho các core đã thiết kế
Trong tag IQR, click vào IQR 31 để tiến hành gán mức ưu tiên ngắt, nhập 0 cho Interval Timer, 1 cho JTAG_UART
Hình 2.29 Gán địa chỉ nền
Ở cột Export, click vào external_connection tương ứng của SW để lấy
chân thiết bị dùng cho việc gán chân hệ thống ở bước tiếp theo
Trang 3322
Hình 2.30 Hệ thống sau khi lấy chân external_connection
Hệ thống sau khi thiết kế hoàn tất:
Hình 2.31 Thiết kế hệ thống hoàn tất
Trang 3423
Lưu hệ thống trước khi biên dịch bằng cách vào File > Save Xuất hiện hộp
thoại Save, đặt tên cho hệ thống là nios_sys
Hình 2.32 Đặt tên và lưu hệ thống
Để biên dịch hệ thống, chọn tag Generation, sau đó chọn Generate
Chờ một khoảng thời gian để biết kết quả biên dịch, kết quả biên dịch thành công được thể hiện ở Hình 2.34 và nếu kết quả sai là do phần cấu hình các core có thể bị lỗi
Hình 2.33 Biên dịch hệ thống
Trang 3625
Hình 2.36 Add file nios_sys.qip
Hình 2.37 là giao diện sau khi đã add file thành công:
Hình 2.37 Kết quả sau khi Add file nios_sys.qip
Gán chân trực tiếp lên sơ đồ khối hệ thống:
Trong cửa sổ project Quartus’s chọn biểu tượng hoặc chọn vào File > New để mở hộp thoại New Sau đó chọn Block Diagram/Schematic File để mở
cửa sổ gán chân cho hệ thống (Hình 2.38)
Trong cửa sổ gán chân hệ thống, nhấn vào biểu tượng để mở hộp thoại
Symbol, sau đó double click vào nios_sys để tạo sơ đồ khối hệ thống (Hình 2.39)
Trang 3726
Hình 2.38 Hộp thoại New
Hình 2.39 Giao diện sơ đồ khối hệ thống
Vào Pin Tool để lấy ngõ vào Input/Output/Bidir, vào Orthogonal
Trang 3827
Thực hiện gán chân cho hệ thống tương ứng với ngỏ vào clk_clk là
CLOCK_50 và reset_reset_n là KEY[0] Sau đó vào Assignments > Import Assignments chỉ đến tập tin DE2_115_pin_assignments.csv nhấn OK (Hình 2.40)
Hình 2.40 Gán chân cho hệ thống
Hình 2.41 Giao diện thiết kế hoàn tất
Lưu lại hệ thống với tên HUONG_DAN.bdf Sau đó lần lượt nhấp chuột
phải vào nios_sys.qip và HUONG_DAN.bdf trong cửa sổ Project Navigator chọn Set as Top-Level Entily
Hình 2.42 Set as Top-Level Entity cho nios_sys.qip
Nhấp chuột vào biểu tượng Start Complilation hoặc vào Processing trên
thanh công cụ Quartus chọn Start Complilation để biên dịch, kiểm tra lỗi và gán chân Để kiểm tra các chân được gán có thể vào Assignments/Pin Planner
Trang 39kế
Hình 2.44 Add file HUONG_DAN.sof
Trong Hardware Setup chọn Hardware là USB-Blaster
Hình 2.45 Giao diện Hardware Setup
Kết thúc nạp ứng dụng bằng cách nhấn vào Start
Trang 4029
Hình 2.46 Nạp file xuống board thành công