Tải bản đầy đủ (.docx) (13 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (358.29 KB, 13 trang )

ĐẠ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] />


×