Tải bản đầy đủ (.pdf) (58 trang)

(Đề tài NCKH) Thiết kế và thi công bộ truyền nhận theo giao thức SPIWishbone

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 (3.09 MB, 58 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM

BÁO CÁO TỔNG KẾT
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN
THIẾT KẾ VÀ THI CÔNG BỘ TRUYỀN NHẬN THEO GIAO
THỨC SPI-WISHBONE

MÃ SỐ : SV2022-178
Thuộc nhóm ngành khoa học: Khoa học kỹ thuật

SV thực hiện: Võ Thiện Tùng

Giới tính: Nam

Dân tộc: Kinh
Lớp, Khoa: 18161CLVT1A, Khoa đào tạo chất lượng cao
Năm thứ: 4

/Số năm đào tạo: 4

Ngành học : Điện tử - Viễn thông

Người hướng dẫn: TS. Đỗ Duy Tân

TP Hồ Chí Minh, 06/2022


MỤC LỤC
DANH MỤC HÌNH ẢNH ...............................................................................................4
DANH MỤC BẢNG .......................................................................................................6


CÁC TỪ VIẾT TẮT .......................................................................................................7
MỞ ĐẦU .......................................................................................................................12
I. Tổng quan ...............................................................................................................12
II. Lý do chọn đề tài ...................................................................................................12
III. Mục tiêu đề tài ......................................................................................................13
IV. Phương pháp nghiên cứu .....................................................................................13
V. Đối tượng và phạm vi nghiên cứu .........................................................................13
CƠ SỞ LÝ THUYẾT ....................................................................................................14
1.1. Giới thiệu về FPGA.............................................................................................14
1.1.1. Kiến trúc FPGA ............................................................................................15
1.1.2. Sơ đồ phát triển phần mềm của hệ thống FPGA ..........................................16
1.1.3. Khối logic .....................................................................................................16
1.2. Thanh ghi dịch.....................................................................................................17
1.2.1. Phần tử nhớ ...................................................................................................17
1.2.2 Thanh ghi dịch sử dụng Flip-Flop D .............................................................18
1.3. Giới thiệu về SPI .................................................................................................18
1.3.1. Cấu tạo của SPI .............................................................................................19
1.3.2. Hoạt động của SPI ........................................................................................20
1.3.3. Sơ đồ kết nối giao thức SPI ..........................................................................23
1.4. Wishbone bus ......................................................................................................25
1.4.1. Giới thiệu ......................................................................................................25
1.4.2. Cấu trúc kết nối Wishbone bus .....................................................................26
1


1.5. Giới thiệu về phần mềm ......................................................................................27
1.5.1. Ngôn ngữ mô tả phần cứng...........................................................................27
1.5.2. Phần mềm Questasim 10.2 ...........................................................................27
1.5.3. Phần mềm Quartus Prime Lite ......................................................................28
THIẾT KẾ HỆ THỐNG ................................................................................................29

2.1. Sơ đồ khối tổng quát của hệ thống ......................................................................29
2.2. Sơ đồ khối chi tiết ...............................................................................................31
2.2.1. Chế độ Master ...............................................................................................31
2.2.2. Chế độ Slave .................................................................................................32
2.2.3. Mô tả thanh ghi .............................................................................................33
2.3 Thiết kế chi tiết.....................................................................................................36
2.3.1 Khối truyền dữ liệu TX ở chế độ MASTER..................................................36
2.3.2. Khối truyền dữ liệu TX ở chế độ SLAVE ....................................................37
2.3.3. Khối nhận dữ liệu RX ở chế độ MASTER ...................................................38
2.3.4. Khối nhận dữ liệu RX ở chế độ SLAVE ......................................................39
2.3.5. Thanh ghi điều khiển ....................................................................................40
2.3.6. Thanh ghi trạng thái ......................................................................................41
2.3.7. Tín hiệu báo ngắt ..........................................................................................42
MƠ PHỎNG VÀ ĐÁNH GIÁ ......................................................................................44
3.1. Mơ phỏng hoạt động ...........................................................................................44
3.1.1. Sơ đồ kết nối và tổng quát các test case .......................................................44
3.1.2. Test case 1: Master truyền – Slave nhận ......................................................46
3.1.3. Test case 2: Master nhận – Slave truyền ......................................................50
3.1.4. Đánh giá kết quả mô phỏng ..........................................................................50
3.2. Tài nguyên sử dụng .............................................................................................51

2


KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ....................................................................53
4.1. Kết luận ...............................................................................................................53
4.2. Hướng phát triển .................................................................................................53
4.3. Kiến nghị .............................................................................................................54
TÀI LIỆU THAM KHẢO .............................................................................................55


3


DANH MỤC HÌNH ẢNH
Hình 1.1: Kiến trúc phần cứng của một FPGA .............................................................15
Hình 1.2: Sơ đồ khối phần mềm một hệ thống FPGA ..................................................16
Hình 1.3: Kiến trúc khối logic của FPGA .....................................................................17
Hình 1.4: Flip-Flop D ....................................................................................................17
Hình 1.5: Thanh ghi dịch sử dụng 3 phần tử nhớ ..........................................................18
Hình 1.6: Sơ đồ khối giao thức SPI ...............................................................................19
Hình 1.7: Sơ đồ nguyên lý truyền nhận dữ liệu SPI ......................................................21
Hình 1.8: Sơ đồ nguyên lý chi tiết sử dụng thanh ghi đệm ...........................................21
Hình 1.9: Các trạng thái CPOL và CPHA tác động tới dữ liệu.....................................22
Hình 1.10: Một Master kết nối với một Slave ...............................................................23
Hình 1.11: Một thiết bị Master và nhiều thiết bị Slave ở chế độ độc lập ......................24
Hình 1.12: Một thiết bị Master và nhiều thiết bị Slave ở chế độ dây chuyền ...............25
Hình 1.13: Giao diện của Master và Slave Wishbone [13] ...........................................26
Hình 2.1: Sơ đồ khối tổng quát hệ thống .......................................................................29
Hình 2.2: Sơ đồ chi tiết module ở chế độ Master ..........................................................31
Hình 2.3: Sơ đồ chi tiết module ở chế độ Slave ............................................................32
Hình 2.4: Mạch điều khiển quá trình truyền dữ liệu TX_MASTER .............................36
Hình 2.5: Mạch điều khiển quá trình truyền dữ liệu TX_SLAVE ................................37
Hình 2.6: Mạch điều khiển quá trình nhận dữ liệu RX_MASTER ...............................38
Hình 2.7: Mạch điều khiển quá trình nhận dữ liệu RX_SLAVE ..................................39
Hình 2.8: Mạch điều khiển dữ liệu truyền đến DAT_O ................................................40
Hình 2.9: Mạch thanh ghi điều khiển ............................................................................40
Hình 2.10: Mạch thanh ghi trạng thái ............................................................................41
Hình 2.11: Mạch tín hiệu báo ngắt ................................................................................42
Hình 3.1: Sơ đồ kết nối kiểm tra hoạt động...................................................................44
Hình 3.2: Dạng sóng mơ phỏng q trình cài đặt cho q trình truyền nhận ở Master 46

Hình 3.3: Dạng sóng mơ phỏng q trình truyền dữ liệu của Master ...........................48
Hình 3.4: Dạng sóng mơ phỏng q trình truyền dữ liệu của Master ...........................49

4


Hình 3.5: Dạng sóng mơ phỏng q trình nhận dữ liệu của Slave và đưa ra Wishbone
.......................................................................................................................................49
Hình 3.6: Dạng sóng mơ phỏng q trình Master nhận – Slave truyền ........................50

5


DANH MỤC BẢNG
Bảng 1.1: Bảng mô tả chức năng các chân tín hiệu chính của Wishbone bus ..............27
Bảng 2.1: Chức năng các chân của module ...................................................................30
Bảng 2.2: Mô tả sơ lược các thanh ghi dùng trong module ..........................................33
Bảng 2.3: Chức năng mỗi bit của thanh ghi Status .......................................................34
Bảng 2.4: Các chức năng mỗi bit của thanh ghi Control...............................................35
Bảng 3.1: Bảng tóm tắt hoạt động của test case ............................................................45
Bảng 3.2: Tài nguyên logic được sử dụng.....................................................................51
Bảng 3.3: Tần số hoạt động tối đa của thiết kế .............................................................52
Bảng 3.4: Công suất tiêu tốn của thiết kế ......................................................................52

6


CÁC TỪ VIẾT TẮT
Từ viết tắt


Từ tiếng Anh

Nghĩa tiếng việt

ASIC

Application-Specific Integrated

Vi mạch tích hợp có tính ứng

Circuit

dụng

CLB

Configurable Logic Block

Các phần tử logic cơ bản

CLK

Clock

Xung đồng hồ

CPHA

Clock Phase


Pha của xung clock

CPOL

Clock Polarity

Cực xung clock

EEPROM

Electrically Erasable Programmable

Bộ nhớ không bay hơi

Read-Only Memory
FPGA

Field-Programmable Gate Array

Mạch tích hợp cỡ lớn dùng
cấu trúc mảng phần tử logic

HDL

Hardware Description Language

Ngôn ngữ mô tả phần cứng

I2C


Inter-Integrated Circuit

Mạch tích hợp giao tiếp giữa
2 thiết bị

MISO

Master Input Slave Output

Master truyền Slave nhận

MMD

Multi Media Card

Thẻ nhớ có bộ nhớ flash
chuẩn

MOSI

Master output Slave Input

Master nhận Slave truyền

RTC

Real Time Clock Modules

Mạch thời gian thực


7


RTL

Register Transfer Level

Chuyển đổi mã nguồn thành
mức cổng logic

SD

Secure Digital

Thẻ nhớ bộ nhớ không bay
hơi

SPI

Serial Peripheral Interface

Giao diện Ngoại vi nối tiếp

SS

Slave Select

Lựa chọn Slave

UART


Universal Asynchronous Receiver-

Bộ truyền nhận nối tiếp bất

Transmitter

đồng bộ

Very Large-Scale Integration

Tích hợp vi mạch với mật độ

VLSI

rất lớn

8


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM

THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI
1. Thông tin chung:
- Tên đề tài: THIẾT KẾ VÀ THI CÔNG BỘ TRUYỀN NHẬN THEO GIAO THỨC
SPI-WISHBONE
- Chủ nhiệm đề tài: Võ Thiện Tùng
- Lớp: 18161CLVT1A


Mã số SV: 18161178

Khoa: Đào tạo chất lượng cao

- Thành viên đề tài:
STT

Họ và tên

MSSV

Lớp

1

Võ Thiện Tùng

18161178

18161CLVT1A

2

Thái Dương Tuấn Thành

18161146

18161CLVT1A

3


Đặng Lê Ngọc Hòa

18161076

18161CLVT1A

4

Võ Phan Mẫn Đạt

18119065

18119CL1A

5

Nguyễn Văn Thương

18161161

18161CLDT1A

Khoa
Đào tạo chất
lượng cao
Đào tạo chất
lượng cao
Đào tạo chất
lượng cao

Đào tạo chất
lượng cao
Đào tạo chất
lượng cao

- Người hướng dẫn: TS. Đỗ Duy Tân
2. Mục tiêu đề tài:
Đề tài thực hiện hướng tới các mục tiêu sau: Nắm được lý thuyết, có cái nhìn tổng
qt về chuẩn truyền thơng SPI, cách hoạt động và truyền tải dữ liệu giữa Master và
Slave, từ đó thiết kế nên module SPI sử dụng ngôn ngữ mô tả phần cứng Verilog. Đồng
thời kết hợp chuẩn bus Wishbone vào module giúp điều khiển quá trình truyền nhận.
Thiết kế được đánh giá dựa trên các kết quả mô phỏng và tài nguyên hệ thống sử dụng.
3. Tính mới và sáng tạo:
Chuẩn truyền thơng SPI được phát triển và ứng dụng rộng rãi, trong đó các tác giả
đã đưa ra thiết kế chuẩn giao thức SPI đi kèm với các giao thức bus hệ thống khác nhau
như là OPB (On-Chip Peripheral Bus), APB (Advanced Peripheral Bus) và Wishbone.
Tuy nhiên, các thiết kế này được tác giả trình một cách đơn giản, chưa làm rõ nhiều vấn
9


đề như mơ hình thiết kế chi tiết, phân tích và đánh giá kết quả mô phỏng cũng như tài
nguyên sử dụng. Vì vậy, đề tài này trình bày thiết kế từ tổng quát đến chi tiết của module
truyền nhận dữ liệu giữa phần cứng trung tâm và thiết bị ngoại vi dựa trên chuẩn SPI và
chuẩn bus Wishbone, module có thể được cấu hình thành Master hoặc Slave. Thiết kế
được tổng hợp và đánh giá chất lượng thông qua mô phỏng kết quả truyền nhận và tài
nguyên sử dụng.
4. Kết quả nghiên cứu:
Đề tài đã đạt được những kết quả như: Xây dựng được hệ thống SPI-Wishbone từ
lý thuyết, mô tả hệ thống bằng ngôn ngữ mô tả phần cứng và đánh giá thành công sự
hoạt động của hệ thống thơng qua mơ phỏng.

5. Đóng góp về mặt giáo dục và đào tạo, kinh tế - xã hội, an ninh, quốc phòng và
khả năng áp dụng của đề tài:
Đề tài trên đã đóng góp nhiều về mặt giáo dục và đào tạo cho sinh viên, nhóm nghiên
cứu và những người quan tâm các kiến thức về chuẩn truyền thông SPI, quá trình thiết
kế nên một module truyền nhận dữ liệu. Ngồi ra, đề tài này có thể được xem như tài
liệu tham khảo cho các môn học liên quan đến thiết kế vi mạch số, có thể phát triển và
ứng dụng thiết kế này vào các thiết kế hệ thống trên chip lớn hơn có sử dụng chuẩn bus
Wishbone.
6. Công bố khoa học của SV từ kết quả nghiên cứu của đề tài (ghi rõ tên tạp chí nếu
có) hoặc nhận xét, đánh giá của cơ sở đã áp dụng các kết quả nghiên cứu (nếu có):

Ngày 5 tháng 7 năm 2022
SV chịu trách nhiệm chính
thực hiện đề tài
(kí, họ và tên)

10


Nhận xét của người hướng dẫn về những đóng góp khoa học của SV thực hiện đề
tài (phần này do người hướng dẫn ghi):

Ngày 5 tháng 7 năm 2022
Người hướng dẫn
(kí, họ và tên)

11


MỞ ĐẦU

I. Tổng quan
Đất nước chúng ta đang bước vào thời kì cơng nghiệp hố - hiện đại hố, cuộc sống
của người dân ngày càng được cải thiện và nâng cao bởi nhiều thiết bị điện tử. Những
công việc từ xa xưa vốn dĩ làm bằng chân tay, giờ đây đã hồn tồn được tự động hố
bởi các robot tự động. Thêm vào đó là sự trao đổi thơng tin số qua mạng lưới internet
toàn cầu giữa các hệ thống, các loại điện thoại di động, máy vi tính hoặc thiết bị khác
nhau cũng đã và đang được cải thiện và nâng cấp cả về tốc độ lẫn chất lượng qua từng
ngày. Để có được những bước phát triển quan trọng như vậy, ngành công nghệ vi mạch
được xem như là xương sống, là nền móng chủ đạo góp phần xây dựng nên một thế giới
công nghệ hiện đại.

II. Lý do chọn đề tài
Ngành công nghệ vi mạch phát triển, từ đó thúc đẩy mạnh mẽ sự ra đời của nhiều
hệ thống số, hệ thống máy tính. Các hệ thống này có thể lớn hoặc nhỏ, các thành phần
linh kiện tạo nên hệ thống khác nhau tuỳ theo quy mô cũng như chức năng mà nó đem
lại. Nhưng có một đặc điểm mà hệ thống số nào cũng phải có, đó là sự trao đổi dữ liệu.
Để thực hiện trao đổi cũng như liên lạc giữa các thành phần hệ thống, chuẩn giao tiếp
hay còn được gọi là giao thức ví dụ như: SPI, I2C, UART… được sử dụng. Trong các
bài báo [1], [2], [3] và [4], các tác giả đã đưa ra các thiết kế về chuẩn giao thức SPI đi
kèm với các giao thức bus khác nhau như OPB (On-Chip Peripheral Bus), APB
(Advanced Peripheral Bus) và Wishbone. Ngoài ra, trong cơng nghiệp, SPI cịn được
ứng dụng vào các lĩnh vực hệ thống máy móc tự động trong đó vi xử lý hoặc bộ điều
khiển trung tâm thường giao tiếp với các ngoại vi cần thiết như bộ nhớ, màn hình hiển
thị, cảm biến, đồng hồ thời gian thực (Real time clock), các bộ chuyển đổi Analog sang
Digital hoặc ngược lại. Tích hợp chuẩn truyền thơng có tốc độ truyền dữ liệu nhanh
đồng thời ứng dụng các chuẩn bus trong việc đóng vai trị là thành phần trung gian giữa
vi xử lý và các thiết bị ngoại vi, từ đó có thể làm gia tăng hiệu suất hoạt động của hệ
thống.Vì vậy, để có thể hiểu thêm về hệ thống số, cơ chế hoạt động cũng như cấu tạo
của giao thức truyền nhận dữ liệu, đồng thời tìm hiểu thêm về tính khả thi khi kết hợp
SPI với các chuẩn bus khác nhau, qua đó có thể khai thác được tiềm năng của SPI12



Wishbone vào trong nhiều lĩnh vực đặc biệt là công nghiệp, nhóm chọn thực hiện đề tài
“Thiết kế và thi công bộ truyền nhận theo giao thức SPI-Wishbone”.

III. Mục tiêu đề tài
Nhóm vận dụng các kiến thức đã học về kỹ thuật truyền số liệu, ngôn ngữ verilog,
thiết kế vi mạch VLSI để giải quyết các vấn đề sau:
- Hiểu được và có cái nhìn tổng quan về cơ chế hoạt động cũng như quá trình giao
tiếp giữa các thiết bị của giao thức SPI.
- Thực hiện thiết kế hệ thống theo từng khối dựa trên ngôn ngữ phần cứng Verilog.
- Ứng dụng chuẩn Wishbone bus để thực hiện điều khiển quá trình truyền nhận của
module.
- Kiểm tra và đánh giá hoạt động của hệ thống thông qua các test case truyền nhận
dữ liệu ở môi trường mô phỏng QuestaSim 10.2.

IV. Phương pháp nghiên cứu
Nghiên cứu dựa trên phương pháp phân tích lý thuyết về SPI và Wishbone, phương
pháp thực nghiệm về truyền dẫn dữ liệu thông qua các chuẩn giao tiếp từ đó thiết kế nên
mơ hình hệ thống, mô tả hệ thống bằng ngôn ngữ mô tả phần cứng Verilog, từ đó đánh
giá hệ thống dựa trên mơ phỏng và tài nguyên sử dụng bằng phương pháp phân tích và
tổng hợp.

V. Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu: Nhóm tập trung tìm hiểu lý thuyết, từ đó thiết kế các thành
phần của giao thức SPI dựa trên ngơn ngữ Verilog. Sau đó tiến hành tạo các bản thử
nghiệm và quan sát kết quả thông qua môi trường mô phỏng.
Phạm vi nghiên cứu: Đề tài này nhóm tập trung nghiên cứu về bộ truyền nhận theo
giao thức SPI-Wishbone có thể hoạt động ở hai chế độ là Master và Slave, phương thức
kết nối là 1 Master – 1 Slave, đánh giá thiết kế thông qua mô phỏng dựa trên các test

case và tài nguyên sử dụng.

13


CHƯƠNG 1
CƠ SỞ LÝ THUYẾT
Mở đầu, chúng ta sẽ đi tìm hiểu về các cơ sở lý thuyết liên quan đến việc q trình
nghiên cứu về chuẩn truyền thơng giao tiếp SPI. Đây được xem là tiền đề cho việc thiết
kế hay nghiên cứu về một vấn đề nào đó.

1.1. Giới thiệu về FPGA
FPGA là một loại mạch tích hợp cỡ lớn dùng cấu trúc mảng phần tử logic mà người
dùng có thể lập trình được. FPGA cũng được xem như một loại vi mạch bán dẫn chuyên
dụng ASIC, nhưng nếu so sánh FPGA với những ASIC đặc chế hoàn tồn hay ASIC
thiết kế trên thư viện logic thì FPGA không đạt đựợc mức độ tối ưu như những loại này,
hạn chế trong khả năng thực hiện những tác vụ đặc biệt phức tạp, tuy vậy FPGA ưu việt
hơn ở chỗ có thể tái cấu trúc lại khi đang sử dụng, cơng đoạn thiết kế đơn giản do vậy
chi phí giảm, rút ngắn thời gian đưa sản phẩm vào sử dụng [5].
FPGA chứa một loạt các khối logic có thể lập trình và một hệ thống phân cấp các
kết nối có thể cấu hình lại cho phép các khối được kết nối với nhau. Các khối logic có
thể được cấu hình để thực hiện các chức năng tổ hợp phức tạp hoặc hoạt động như các
cổng logic đơn giản như AND và XOR. Trong hầu hết các FPGA, các khối logic cũng
bao gồm các phần tử bộ nhớ , có thể là các flip-flop kết nối đơn giản hoặc các khối bộ
nhớ hồn chỉnh hơn. Nhiều FPGA có thể được lập trình lại để thực hiện các chức năng
logic khác nhau, cho phép tính tốn có thể cấu hình lại linh hoạt như được thực hiện
trong phần mềm máy tính.

14



1.1.1. Kiến trúc FPGA

Hình 1.1: Kiến trúc phần cứng của một FPGA
Mỗi chip FPGA được tạo thành từ một số lượng tài nguyên hữu hạn được xác định
trước với các kết nối có thể lập trình để triển khai mạch kỹ thuật số có thể cấu hình lại
và các khối I/O để cho phép mạch truy cập các thiết bị bên ngồi.
Thơng số kỹ thuật tài ngun FPGA thường bao gồm số lượng khối logic có thể
định cấu hình, số khối logic chức năng cố định như số nhân và kích thước của tài nguyên
bộ nhớ như RAM. Trong số nhiều thông số kỹ thuật của FPGA, chúng thường là thông
số quan trọng nhất khi lựa chọn và so sánh các FPGA cho một ứng dụng cụ thể.

15


1.1.2. Sơ đồ phát triển phần mềm của hệ thống FPGA

Hình 1.2: Sơ đồ khối phần mềm một hệ thống FPGA
Để có thể thực hiện một hệ thống FPGA từ ý tưởng đến khi có thể chạy được trên
FPGA KIT thì đầu tiên phải có HDL file, sau đó ánh xạ thành code RTL để sử dụng
phần mềm mô phỏng tổng hợp code cho ra các mức logic gate, từ đó phần mềm sẽ phân
tích và chạy mơ phỏng để cho ra các thông số về timing, function của mạch qua đó đánh
giá được thời gian trễ và tính linh động của mạch, cuối cùng đổ xuống KIT FPGA để
chạy [5].

1.1.3. Khối logic
Kiến trúc FPGA phổ biến nhất bao gồm một mảng các khối logic, I/O và các kênh
định tuyến. Tất cả các kênh định tuyến có cùng độ rộng (số lượng dây). Nhiều miếng
đệm I/O có thể vừa với chiều cao của một hàng hoặc chiều rộng của một cột trong mảng.


16


Hình 1.3: Kiến trúc khối logic của FPGA
Một mạch ứng dụng phải được ánh xạ thành FPGA với đầy đủ tài nguyên. Trong
khi số lượng CLB/LAB và I/Os cần thiết có thể dễ dàng xác định từ thiết kế, số lượng
đường dẫn định tuyến cần thiết có thể thay đổi đáng kể ngay cả giữa các thiết kế có cùng
số lượng logic [6].

1.2. Thanh ghi dịch
1.2.1. Phần tử nhớ
Phần tử nhớ hay còn gọi là Flip-Flop là một mạch điện tử được sử dụng trong các
kỹ thuật vi mạch điện tử với mục đích lưu trữ các thơng tin trạng thái tín hiệu (Bit) của
một hoặc nhiều ngõ vào và cho kết quả ở ngõ ra. Đây là yếu tố cơ bản lưu trữ trong logic
tuần tự. Với sự phát triển của kỹ thuật thì ngày nay các phần tử nhớ được ưu tiên sử
dụng là Flip-Flop D vì có thiết kế đơn giản, dễ đồng bộ.

Hình 1.4: Flip-Flop D
17




Ngõ vào dữ liệu D (Data): giá trị logic hay trạng thái chính cần chốt.



Ngõ vào S (Start) có chức năng cho phép FF_D hoạt động.




Ngõ vào R (Reset) có chức năng đặt lại giá trị cho 𝑄 trong FF_D về trị logic 0
và 𝑄̅ về trị logic 1.



Ngõ vào clock hay nhịp đồng bộ CLK: Có ở các Flip-flop cần hoạt động đồng bộ.
Flip-flop thực hiện chức năng chính của nó vào thời điểm sườn xung clock chuyển
từ 0 lên mức cao.



Ngõ ra FF-D là 𝑄 và 𝑄̅ là 2 giá trị nghịch đảo của nhau.

1.2.2 Thanh ghi dịch sử dụng Flip-Flop D
Thanh ghi dịch là mạch được lập ra bằng chuỗi các flip-flop D đồng bộ, có kết nối xác
định để sau mỗi nhịp clock thì mảng bit nhớ dịch chuyển.

Hình 1.5: Thanh ghi dịch sử dụng 3 phần tử nhớ
Chuỗi các flip-flop kiểu D đồng bộ chia sẻ chung xung nhịp clock, trong đó ngõ ra
của flip-flop này được kết nối tới ngõ vào dữ liệu của flip-flop kế tiếp trong chuỗi. Kết
quả là tại mỗi khi clock ở ngõ vào nhịp thay đổi, mảng bit nhớ trong mạch dịch một
bước, dữ liệu ở ngõ vào ngõ vào dữ liệu được dịch vào mảng, còn dữ liệu cuối cùng thì
dịch ra.

1.3. Giới thiệu về SPI
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. SPI là 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 một thời điểm có thể xảy ra đồng
thời quá trình truyền và nhận dữ liệu.
18



Các thiết bị giao tiếp qua SPI có quan hệ Master - Slave. Master là thiết bị điều
khiển (thường là vi điều khiển), còn Slave (thường là cảm biến, màn hình hoặc chip nhớ)
nhận lệnh từ master. Cấu hình đơn giản nhất của SPI là hệ thống một Master giao tiếp
với một Slave, nhưng một Master có thể điều khiển nhiều hơn một Slave [7].
SPI là một chuẩn 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 nên không cần phải lo lắng về tốc độ truyền
dữ liệu, từ đó tốc độ được cải thiện hơn.
Lợi ích duy nhất của SPI là dữ liệu có thể được truyền mà không bị gián đoạn. Bất
kỳ số lượng bit nào cũng có thể được gửi hoặc nhận trong một luồng liên tục. Với I2C
và UART, dữ liệu được gửi dưới dạng gói, giới hạn ở một số bit cụ thể. Điều kiện bắt
đầu và dừng xác định điểm bắt đầu và kết thúc của mỗi gói, do đó dữ liệu bị gián đoạn
trong quá trình truyền.
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 [8].

1.3.1. Cấu tạo của SPI

Hình 1.6: Sơ đồ khối giao thức SPI
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à:

19


- 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 truyền 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 2 thiết bị Master và Slave.
- MOSI (Master Output Slave Input): Tín hiệu truyền 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 2 thiết bị Master và Slave.
- SS (Slave Select): Chọn thiết bị Slave cụ thể để giao tiếp. Chân này đơi khi cịn
được gọi là CS (Chip Select).

1.3.2. Hoạt động của SPI
Ban đầu Master ra tín hiệu xung nhịp từ chân CLK truyền tới cho Slave để có thể
đồng bộ hóa q trình truyền nhận dữ liệu, tiếp theo Master chuyển chân SS / CS sang
trạng thái điện áp thấp, điều này sẽ kích hoạt Slave để sẵn sàng trao đổi dữ liệu. Sau đó
Master gửi dữ liệu từng bit một tới slave dọc theo đường MOSI. Slave đọc các bit khi
nó nhận được. Cuối cùng nếu cần phản hồi, slave sẽ trả lại dữ liệu từng bit một cho
master dọc theo đường MISO. Master đọc các bit khi nó nhận được.

1.3.2.1. Khung truyền SPI
Mỗi thiết bị Master hoặc Slave đều có một thanh ghi dữ liệu 8 bits. 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. 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à sử dụng chân SS để chọn Slave muốn giao
tiếp.
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.
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ả.

20



Hình 1.7: Sơ đồ nguyên lý truyền nhận dữ liệu SPI
Thông thường, thanh ghi dịch sẽ không thể truy cập trực tiếp được. Nếu cần truyền
dữ liệu thì sẽ ghi dữ liệu vào thanh ghi đệm. Vì vậy, dữ liệu sẽ tự động được ghi vào
thanh ghi dịch khi ở trạng thái nghỉ và quá trình truyền sẽ bắt đầu.

Hình 1.8: Sơ đồ nguyên lý chi tiết sử dụng thanh ghi đệm
Tương tự, dữ liệu nhận được trong thanh ghi được tự động chuyển sang thanh ghi
đệm sau khi quá trình nhận hồn tất. Nên có thể dễ dàng đọc, do đó thanh ghi bộ đệm
sẽ tránh được tất cả các trục trặc có thể xảy ra nếu cố gắng đọc hoặc ghi trực tiếp thanh
ghi dịch trong khi quá trình truyền đang diễn ra.

1.3.2.2. Các chế độ hoạt động
SPI có 4 chế độ hoạt động phụ thuộc vào cực của xung giữ (Clock 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ỉ
21


các 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 [9].

Hình 1.9: Các trạng thái CPOL và CPHA tác động tới dữ liệu
- 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).
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 [9].

22


1.3.3. Sơ đồ kết nối giao thức SPI
Một thiết bị Master và một thiết bị Slave

Hình 1.10: Một Master kết nối với một Slave
Mơ hình kết nối cơ bản giữa một Master và một Slave khả năng giao tiếp cao cấu
hình dễ dàng, nhưng hạn chế là chỉ giao tiếp được một Slave nếu muốn giao tiếp với
nhiều Slave thì phải sử dụng nhiều Master khác cùng kết nối tương tự.
Một thiết bị Master và nhiều thiết bị Slave (chế độ độc lập - Independent)
Ở chế độ này, mỗi thiết bị Slave kết nối với Master được quy định riêng bởi những
chân SS khác nhau. Khi thiết bị Master muốn giao tiếp với Slave chỉ cần gửi tín hiệu tới
SS của Slave đó [7].

23


Hình 1.11: Một thiết bị Master và nhiều thiết bị Slave ở chế độ độc lập
Với mơ hình kết nối này, Master muốn giao tiếp với bao nhiêu Slave thì cần có số
lượng chân SS tương đương với số lượng Slave cần giao tiếp, điều này giúp cho Master
dễ dàng kiểm sốt vì các đường SS là độc lập với nhau, nhưng hạn chế là cần nhiều số
lượng chân I/O cho Master.

24



×