ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ
CHÍ MINH
TRƯỜNG ĐẠI HỌC KHOAJIỌC Tự
NHIÊN
KHOA ĐIỆN TỬ - VIỄN THƠNG
BỘ MƠN MÁY TÍNH - HỆ THỐNG NHÚNG
ũũũmũũũ
NHÓM 01
Đề tài:
Xây dựng hệ thống SoC có sử dụng IP SPI
để giao tiếp nội tiếp
BÁO CÁO ĐỀ TÀI ĐỒ ÁN
THựC HÀNH SOC
CHUYÊN NGÀNH MÁY TÍNH - HỆ THỐNG NHÚNG
GIẢNG VIÊN
Thầy Trần Tuấn Kiệt
TP. Hồ Chí Minh, tháng 2 năm 2022
TĨM TẮT ĐỀ TÀI
Đề tài của nhóm tập trung vào việc thực hiện hệ thống SoC có giao tiếp
nội tiếp qua chuẩn SPI. Sau q trình thực hiện, nhóm đã hồn thành được một
số tiêu chí đã đề ra trong lúc thiết kế, bao gồm:
+ Hiểu được khái quát các kiến thức thiết kế một hệ thống SoC.
+ Môtiếp
phỏng
giao
SPI.được quá trình truyền nhận dữ liệu thơng qua chuẩn
2
CÁC THÀNH VIÊN TRONG NHÓM
STT
Họ và tên
MSSV
1
Nguyễn Huy Thành
1720221
2
Phan Tuấn An
18200051
3
Lê Bá Phước Long
1620128
4
Đồng Phạm Khánh Linh
1720135
5
Nguyễn Thành Long
1820165
6
Phạm Đình Quốc Vũ
1820289
MỤC LỤC
1.
2.......................................................................................................
3.
DANH SÁCH HÌNH
4........................................................................................................
5.....................................................................................................
1. Serial Peripheral Interface-SPI
1.1.
Giới thiệu
6.
SPI - Serial Peripheral Interface - hay còn gọi là giao diện ngoại vi
nối
tiếp, được phát triển bởi hãng Motorola.
7.
Chuẩn đồng bộ nối truyền dữ liệu ở chế độ full - duplex (hay gọi là "song
cơng
tồn phần". Nghĩa là tại 1 thời điểm có thể xảy ra đồng thời quá trình truyền và
nhận.
8.
Là giao tiếp đồng bộ, bất cứ quá trình nào cũng đều được đồng bộ với
xung clock
sinh ra bởi thiết bị Master ► Không cần phải lo lắng về tốc độ truyền dữ liệu.
SPI thường được sử dụng giao tiếp với bộ nhớ EEPROM, RTC (Đồng hồ thời
gian thực), IC âm thanh, các loại cảm biến như nhiệt độ và áp suất, thẻ nhớ như
MMC hoặc thẻ SD hoặc thậm chí các bộ vi điều khiển khác.
9.
10.
11.
Hình 1.1. Mơ hình SPI
6
1.2.
Cấu tạo
12.
Sử dụng 4 đường giao tiếp nên đôi khi được gọi là chuẩn truyền
thơng “ 4
dây”. 4 đường đó là :
•
SCK (Serial Clock): Thiết bị Master tạo xung tín hiệu SCK và cung cấp
cho Slave. Xung này có chức năng giữ nhịp cho giao tiếp SPI. Mỗi nhịp
trên chân SCK báo 1 bit dữ liệu đến hoặc đi ^ Q trình ít bị lỗi và tốc độ
truyền cao.
•
MISO (Master Input Slave Output): Tín hiệu tạo bởi thiết bị Slave và nhận
bởi thiết bị Master. Đường MISO phải được kết nối giữa thiết bị Master
và Slave.
•
MOSI (Master Output Slave Input): Tín hiệu tạo bởi thiết bị Master và
nhận bởi thiết bị Slave. Đường MOSI phải được kết nối giữa thiết bị
Master và Slave.
•
SS (Slave Select): Chọn thiết bị Slave cụ thể để giao tiếp. Để chọn Slave
giao tiếp thiết bị Master chủ động kéo đường SS tương ứng xuống mức 0
(Low). Chân này đơi khi cịn được gọi là CS (Chip Select). Chân SS của
vi điều khiển (Master) có thể được người dùng tạo bằng cách cấu hình 1
chân GPIO bất kỳ chế độ Output.
1.
Master
Processor
Slave
MOSI
MOSI
MIS
O
MISO
SCK
SCK
ss or cs
ss or cs
Hình 1.2. Các chân kết nối SPI
13.
Peripheral
1.3.
Khung truyền SPI
14.
Mỗi chip Master hay Slave đều có một thanh ghi dữ liệu 8 bits.
15.
Quá trình truyền nhận giữa Master và Slave xảy ra đồng thời sau 8 chu kỳ
đồng
hồ, một byte dữ liệu được truyền theo cả 2 hướng
16.
Quá trình trao đổi dữ liệu bắt đầu khi Master tạo 1 xung clock từ bộ tạo
xung
nhịp (Clock Generator) và kéo đường SS của Slave mà nó truyền dữ liệu xuống
mức Low.
17.
Cứ 1 xung clock, Master sẽ gửi đi 1 bit từ thanh ghi dịch (Shift Register)
của nó
đến thanh ghi dịch của Slave thông qua đường MOSI. Đồng thời Slave cũng gửi
lại 1 bit đến cho Master qua đường MISO.Như vậy sau 8 chu kỳ clock thì hồn
tất việc truyền và nhận 1 byte dữ liệu.
18.
Dữ liệu của 2 thanh ghi được trao đổi với nhau nên tốc độ trao đổi diễn ra
nhanh
và hiệu quả.
19.
Lưu ý: Trong giao tiếp SPI, chỉ có thể có 1 Master nhưng có thể 1 hoặc
nhiều
Slave cùng lúc. Ở trạng thái nghỉ, chân SS của các Slave ở mức 1, muốn giao tiếp
với Slave nào thì ta chỉ việc kéo chân SS của Slave đó xuống mức 0.
20.
22.
1.4.
•
21.
Hình 1.3 Q trình truyền dữ liệu
Chế độ hoạt động
SPI có 4 chế độ hoạt động phụ thuộc vào cực của xung giữ (Clock
•
•
2.
cs OR
ss
Polarity - CPOL) và pha (Phase - CPHA).
CPOL dùng để chỉ trạng thái của chân SCK ở trạng thái nghỉ. Chân SCK
giữ ở mức cao khi CPOL=1 hoặc mức thấp khi CPOL=0.
CPHA dùng để chỉ các mà dữ liệu được lấy mẫu theo xung. Dữ liệu sẽ
được lấy ở cạnh lên của SCK khi CPHA=0 hoặc cạnh xuống khi
CPHA=1.
23.
MODEO
(CPŨL=O&CPHA=0)
MODE1
(CPOL=0&CPHA^1)
MODE2
(CPOL=1&CPHA=0)
MODE3
(CPỮL=1&CPHA=1)
DATA
24.
Hình 1.4 Chế độ hoạt động SPI
•
Mode 0 (mặc định) - xung nhịp của đồng hồ ở mức thấp (CPOL = 0) và
dữ liệu được lấy mẫu khi chuyển từ thấp sang cao (cạnh lên) (CPHA = 0).
•
Mode 1 - xung nhịp của đồng hồ ở mức thấp (CPOL = 0) và dữ liệu được
lấy mẫu khi chuyển từ cao sang thấp (cạnh xuống) (CPHA = 1).
•
Mode 2 - xung nhịp của đồng hồ ở mức cao (CPOL = 1) và dữ liệu được
lấy mẫu khi chuyển từ cao sang thấp (cạnh lên) (CPHA = 0).
•
Mode 3 - xung nhịp của đồng hồ ở mức cao (CPOL = 1) và dữ liệu được
lấy mẫu khi chuyển từ thấp sang cao (cạnh xuông) (CPHA = 1).
25.
Lưu ý: Khi giao tiếp SPI giữa vi điều khiển và các thiết bị ngoại vi khác
như IC,
cảm biến thì 2 bên bắt buộc hoạt động cùng Mode, nếu khơng dữ liệu truyền
nhận có thể bị đọc sai.
2. Thực hiện
2.1.
Thiết kế hệ thống
System Contents
- ri- n
Clock
Export
End
IRQ Tags
Opcode
Name
clk
Avalon Memory Mapped Master
Avalon Memory Mapped Master
instnjction_maste
r
Interrupt Receiver
irq
debug_reset_request Reset Oưtput
debug_mem_slave Avalon Memory Mapped slave
ciistom_instnjction_m,Cưstom Instriiction Master
On-Chip Memory (RAM or ROM)
,.
Intel,,.
B onchip memorvỉ 0
Glock Input
Avalon Memory Mapped slave
ResetInput
7TAG UART Intel FPGAIP
Olock Input
^esetInput
Avalon Memory Mapped slave
tnterriipt Sender
5PI (3 Wire Serial) Intel FPGA IP
Avalon Memory Mapped
slave
tnterriipt Sender
londuit
5PI (3 Wire Serial) Intel
FPGA IP
dock Input
lesetInput
londuit Memory Mapped
Avalon
26.
27.
dickto exf
dodc
[dki
[dk]
IRC ũ
Double click to
ex
[dk]
dock
[dkl]
[dkl]
IRC 31
0xũ0ũl_08ũ0
ũx0001_ũfff
0xoaoo_80ũa
0x0000_ffff
0x00811848
0x0001_104f
OXŨOŨ1_1Ũ2Ũ
0x0001_103f
0x0001_1000
0x0001_10ic
dock
[dk]
Doubíe-i
[dk]
dock
[dk]
[dk]
Double click to
ex
dodc
[dk]
Hình 2.5. Hệ thống phần cứng
28. Trong giao diện Platform Designer thêm SPI(3 Wire Serial) Intel FPGA IP.
29.
30.
31.
2
3
4
32.
SOC_SPI.V
3? ơơ (T :i Đ tí* 10 w 0 2« z
“ĩ module SOC_SPI
□
(
input CLOCK_50,
input [0:0] KEÝ
...
6L
33.
8
9
10
34.
12
13
35.
System Nios_system
Ẹ
(
. clk_clk (CLOCK_50),
. reset_reset_n (KEỸ[O])
li
L
endmodule
14
36.
Hình 2.6 File top-level
37. Thêm file Top-level cho project
2.2.
38.
Thiết kế mô phỏng
2.2.1. Nios II Softwave Build Tools for Eclipse
39.
Ịx|
1=1
hello_worid_small.c 23
40.
A
80
@81 ilĩnclud^^ar^ty^es^h^
I?I 82 1 ne Ịude ’’ ạ 11 e r a__ ay a 1 pn^sp i_^r e g 3. h ’’
?, 83 ^incrgde^alcer^ayalon^^pi,;!!"
? 84 j| ĩ n □ lude^ " 3 ỵ 31 emỊ.h "
85 #include <3tdio.h>
86 #ĩnclude <unistd.ỉi>// usleep
870 int main (void) {
88 printf("Entered Main\n");
89 alt_u8 send_M; alt_u8 send_S; alt_u8 rcvd_S; alt_u8 rcvd_M; alt_u8 count;
90 count = 0;
91 whĩle(l){
92 send_M = OxAA;
93 send_S = 0x55;
94
95 IOWR_ALTERA_AVALON_SPI_CONTROL(SPI_MASTER_BASE, 0x00í;
96 IOWR_ALTERA_AVALON_SPI_CONTROL(SPISLAVEBASE, 0x00);
97
98 IOWR_ALTERA_AVALON_SPI_TXDATA(SPI_SLAVE_BASE, send_S):
99 IOWR_ALTERA_AVALON_SPI_TXDATA(SPI_MASTER_BASE f send_M);
100
46.
101 usleep(75);
102
103
104
105
106
107
109
110
111
112
113
£
2® * "Smaỉỉ
Hello Horld" exaiuple. []
41.
42.
43.
44.
45.
□
rcvd_s = IORD_ALTERA_AVALON_SPI_RXDATA(SPI_SLAVE_BASE);
rcvd_M = IORD_ALTERA_AVALON_SPI_RXDATA(SPI_MASTER_BASE);
// Print results
prĩntf("raastei sent = %i\t31ạye recv’d =
send_Mr rcvd_S);
prĩntf("slave sent = %i\tmaster recv'd = %i\n"r send_S, rcvd_M);
108
count ++;
usleep(1000000);
)
return 0;
ỉ
114
47.
2.2.2.
49.
Hình 2.7 Code C chạy mơ phỏng
Mơ phỏng trên NIOS II MODELSIM
48.
50.
Hình 2.4 Mơ phỏng dạng sóng slave trên modelsim
51.
Tài liệu tham khảo
[1] />[2] />