data_master: kết nối với các chân slave của bộ nhớ và ngoại vi instruction_master: kết nối với slave của bộ nhớ Bộ nhớ on-chip 13:21:53... Bài 4 1513:21:53Đặt tên lại cho các Component:
Trang 11 Hệ thống nhúng trên DE-2.
2 Thiết kế phần cứng cho kit DE-2 dùng Qsys.
3 Tích hợp phần cứng vào Quartus Project.
4 Thiết kế phần mềm dùng Nios II Software.
5 Các ngoại vi cơ bản: công tắc nhấn, LCD, …
BÀI 4: THIẾT KẾ HỆ THỐNG
NHÚNG TRÊN KIT DE-2
1 Bài 4
13:15:17
13:15:17
Trang 3Bài 4 5
CPU Nios II
13:21:53
clk, reset_n: nối với clk và reset của nguồn xung clock.
data_master: kết nối với các chân slave của bộ nhớ và ngoại vi
instruction_master: kết nối với slave của bộ nhớ
Bộ nhớ on-chip
13:21:53
Trang 4Bài 4 7
Ngoại vi
13:21:53
clk: nối với clk của nguồn xung clock.
reset: nối với reset của nguồn xung clock
s1: kết nối với data của CPU Nios II.
external_connection: kết nối với các chân của kit DE-2
Kiểm tra
13:21:53
Trang 7Bài 4 13
Nguồn xung clock có sẵn của hệ thống:
Bổ sung CPU Nios II:
- Double-click vào Nio II Processsor.
- Chọn Nios II core là Nios II/e.
- Nhấn Finish.
13:21:53
13:21:53
Bổ sung on-chip memory 32KB:
Bổ sung PIO input 2 bit (SW) và PIO output 8 bit (Led):
Trang 8Bài 4 15
13:21:53Đặt tên lại cho các Component:
click chuột phải vào Component,
chọn Rename
13:21:53Kết nối các chân của các Component:
- Clk của clk_main với clk của các
- Instruction_master của CPU Nios II
với slave (s1) của memory (RAM) Back >>
Trang 9Bài 4 17
13:21:53Gán địa chỉ cơ sở cho các thành phần:
Double-click vào CPU Nios II: chọn
Reset Vector và Exception Vector.
13:21:53
Double-click vào cột Export trên hàng external_connection của sw:
Tương tự cho component led:
Trang 10Tích hợp vào Quartus Project
B1: Quay lại Quartus, chọn Project > Add/Remove Files in Project
Trang 11B4: Trong cửa số Project
Navigator, chọn tab Files, nhấn
chuột phải vào file qip và chọn
Set as Top-Level Entity
Trang 12Bài 4 23
13:21:53Kết quả sau khi biên dịch:
B6: Thực hiện gán chân trên kit DE-2:
- 2 SW: nối với 2 toggle switch SW0, SW1
- 8 Led: nối với 8 LEDR0 - 7
SW[0],PIN_N25SW[1],PIN_N26
LEDR[0],PIN_AE23LEDR[1],PIN_AF23LEDR[2],PIN_AB21LEDR[3],PIN_AC22LEDR[4],PIN_AD22LEDR[5],PIN_AD23LEDR[6],PIN_AD21LEDR[7],PIN_AC21CLOCK_50,PIN_N2
13:21:53
Gán chân bằng sơ đồ chân:
Xem sơ đồ chân tại (file DE2_pin_assigments.csv):
https://sites.google.com/site/phkkhanh/thuc-hanh/he-thong-nhung
B6.1: Chọn menu Assigments > Pin Planner
Trang 13Bài 4 25
13:21:53
B6.2: Double-click vào cột Location và gán cho các chân trên kit DE-2:
SW[0],PIN_N25SW[1],PIN_N26
LEDR[0],PIN_AE23LEDR[1],PIN_AF23LEDR[2],PIN_AB21LEDR[3],PIN_AC22LEDR[4],PIN_AD22LEDR[5],PIN_AD23LEDR[6],PIN_AD21LEDR[7],PIN_AC21CLOCK_50,PIN_N2
Đóng cửa sổ Pin Planner
13:21:53
Gán chân bằng sơ đồ khối:
B6.1: Chọn menu File > New, chọn Block Diagram/Schematic File
Trang 14Bài 4 27
13:21:53
B6.3: Trong khung Libraries, bấm vào Project và chọn tên tương ứng.
Nhấn chuột phải và chọn Generate Pins for Symbols Ports.
13:21:53
B6.4: Chọn File > Save để lưu sơ đồ và chọn Processing >
Start Compilation để biên dịch.
B6.5: Chọn menu Assignments > Import Assignments, chỉ
đến file DE2_pin_assignments.csv
B6.6: Gán chân, sau đó chọn File > Save để lưu và Set as Top-Level
Entity cho file bdf
Trang 15Bài 4 29
13:21:53
B7: Thực hiện biên dịch lại (chọn menu Processing > Start Compilation).
B8: Nạp phần cứng
Chọn menu Tools > Programmer, bấm vào nút Hardware Setup ở góc
trên bên trái và chọn USB-Blaster.
Trong cửa sổ Programmer phải
có tên file sof (nếu chưa có thì
nhấn vào nút Add File để thêm
vào)
Gạt nút RUN / PROG trên kit
DE2 (nằm bên trái LCD) sang
RUN và nhấn vào Start để cấu
hình cho DE2
13:21:53
Xây dựng phần mềm
Chọn menu Tools > Nios II
Software Build Tools for Eclipse
Trang 16Bài 4 31
13:21:53
Chọn Workspace, ví dụ như E:\Altera\Eclipse
Trong Eclipse, chọn menu File > New > Nios II Application and
BSP from Template
13:21:53
Trong SOPC Information File name, chọn file sopcinfo trong project Đặt
tên cho project, chọn Project Template là Hello World Nhấn Finish.
Trang 17Bài 4 33
13:21:53
Chọn menu File > New > Nios II Application
Đặt tên Project, nhấn vào nút Browse (…) để chọn BSP Nhấn Finish
13:21:53
Nhấn chuột phải vào project đã tạo tại cửa sổ Project Explorer
Nhấn chuột phải vào project đã tạo tại cửa sổ Project Explorer,
chọn New > Source File
Trang 19Bài 4 37
13:21:53Chọn tab Target Connection, nhấn vào System ID
Properties để kiểm tra trạng thái hệ thống (có thể Refresh
Connections trước).
13:21:53
Click chọn vào các check box Ignore mismatched system ID và
Ignore mismatched system timestamp
Nhấn Apply và sau đó nhấn Run.
Trang 20SW_BASE: địa chỉ thiết bị, được đăttên khi thiết kế phần cứng (Qsys)
0: địa chỉ offset
IOWR(LED_BASE,0,0xFF): xuấtgiá trị 0xFF ra thiết bịngoại vi, địa chỉ LED_BASE
13:21:53
4.1 Viết mã lệnh theo yêu cầu:
- SW1 on: Led sáng dần từ LEDR[0] – LEDR[7], thời gian delay
là 300 ms (dùng hàm usleep để delay, vd: usleep(1000) delay
1 ms)
- SW0 off: dừng quá trình chạy Led
4.2 Thiết kế hệ thống nhúng mô phỏng đèn giao thông đơn giản: một
công tắc on/off toàn hệ thống, một công tắc chọn chế độ hoạt
động bình thường / đèn vàng nhấp nháy, 3 Led tương ứng Led
xanh, vàng và đỏ
Trang 21Bài 4 41
13:21:53
Công tắc nhấn (pushbutton)
13:21:53
Trang 22unsigned char push;
unsigned char push_check = 0;
unsigned char led[8] = {0x01, 0x03,
0x07 ,0x0F, 0x1F, 0x3F, 0x7F,0xFF};
if (push_check == 1)
{IOWR(LED_BASE,0,led[cnt]);
Thiết kế hệ thống nhúng mô phỏng một đồng hồ số đơn giản:
hiển thị giờ, phút, giây trên 6 Led 7 đoạn, một công tắc nhấn
chỉnh giờ, một công tắc nhấn chỉnh phút
1 Thiết kế phần cứng trên Qsys
2 Thiết kế sơ đồ chân hay sơ đồ khối trên Quartus
3 Viết phần mềm điều khiển
Trang 24int i;
char line1[17] = “VIEN KT HUTECH \0";
char line2[15] = “BM DTU TR THONG \0";
for(i = 0; line1[i] != 0; i++){
- Nhấn KEY0: tăng giá trị xxx từ 123 – 456
- Nhấn KEY1: giảm giá trị yyy từ 456 – 123