Untitled BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH S K C 0 0 3 9 5 9 CÔNG TRÌNH Tp Hồ Chí Minh, MÃ SỐ S KC0 0 7 6 8 8 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐH SƯ PHẠM KỸ THU[.]
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
Trang 2BỘ 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
ồ Chí Minh, 06/2022
Trang 3M Ụ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
Trang 41.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
Trang 5KẾ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
Trang 6DANH 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 quá trình cài đặt cho quá trình truyền nhận ở Master 46 Hình 3.3: Dạng sóng mô phỏng quá trình truyền dữ liệu của Master 48
Hình 3.4: Dạng sóng mô phỏng quá trình truyền dữ liệu của Master 49
Trang 7Hình 3.5: Dạng sóng mô phỏng quá 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 quá trình Master nhận – Slave truyền 50
Trang 8DANH 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
Trang 9CÁ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
Circuit
Vi mạch tích hợp có tính ứng
dụng CLB Configurable Logic Block Các phần tử logic cơ bản
Bộ nhớ không bay hơi
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
Trang 10RTL 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-Transmitter
Bộ truyền nhận nối tiếp bất
đồng bộ VLSI Very Large-Scale Integration Tích hợp vi mạch với mật độ
rất lớn
Trang 11BỘ 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 Mã số SV: 18161178
- Lớp: 18161CLVT1A Khoa: Đào tạo chất lượng cao
- Thành viên đề tài:
STT H ọ và tên MSSV L ớp Khoa
1 Võ Thiện Tùng 18161178 18161CLVT1A Đào tạo chất
lượng cao
2 Thái Dương Tuấn Thành 18161146 18161CLVT1A Đào tạo chất lượng cao
3 Đặng Lê Ngọc Hòa 18161076 18161CLVT1A Đào tạo chất
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
Trang 12đề 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 Ngoà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)
Trang 13Nh ậ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)
Trang 14M Ở ĐẦU
I T ổng quan
Đất nước chúng ta đang bước vào thời kì công nghiệp hoá - hiện đại hoá, 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 đã hoàn toàn được tự động hoá
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 SPI-
Trang 15Wishbone 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
Trang 16CHƯƠ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 quá 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 toà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ớ hoà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 toá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
Trang 171.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 ngoài
Thông số kỹ thuật tài nguyên 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ể
Trang 181.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
Trang 19Hì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
Trang 20 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 toà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
Trang 21Cá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à:
Trang 22- 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 → Quá 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 quá 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ì hoà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ả
Trang 23Hì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 hoà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ỉ
Trang 24cá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]
Trang 251.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]
Trang 26Hì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 soá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
Trang 27M ột thiết bị Master và nhiều thiết bị Slave (chế độ dây chuyền - Daisy)
Hình 1.12: Một thiết bị Master và nhiều thiết bị Slave ở chế độ dây chuyền Việc hoạt động theo chế độ dây chuyền chỉ cần 1 chân SS từ vi điều khiển gửi dữ liệu tới Slave cần điều khiển là có thể giao tiếp, điều này sẽ giúp tiết kiệm số lượng chân I/O cho Master Chân MOSI của Slave này kết nối với MISO của Slave tiếp theo, dữ
liệu gửi từ vi điều khiển (hay thiết bị Master), đi vào Slave 1 bằng đường MOSI Sau đó lại đi ra từ chân MISO của Slave 1, gửi tới chân MOSI của Slave 2, tương tự có thể thấy cách hoạt động này giống với các IC dịch [7]
1.4 Wishbone bus
1.4.1 Gi ới thiệu
Wishbone là một giao diện mục đích chung giữa các lõi IP Nó xác định trao đổi dữ liệu tiêu chuẩn giữa các mô-đun lõi IP, cho phép các bộ phận của một mạch tích hợp giao tiếp với nhau.Mục đích là để cho phép kết nối các lõi khác nhau với nhau bên trong một con chip Wishbone Bus được sử dụng bởi nhiều thiết kế trong dự án OpenCores.Wishbone được thiết kế như một "bus logic" Nó không mang thông tin giá trị điện hoặc
Trang 28cấu hình bus Thay vào đó, đặc điểm kỹ thuật được viết dạng 'tín hiệu', chu kỳ xung nhịp
và mức cao hay thấp [13]
Wishbone được thực hiện để cho phép kết hợp một số thiết kế được viết bằng Verilog, VHDL hoặc một số ngôn ngữ mô tả logic khác cho thiết kế tự điện tử động hóa (EDA) Tất cả các tín hiệu đều đồng bộ với một xung duy nhất nhưng một số phản hồi
từ slave phải được tạo ra
Wishbone Bus có các ưu điểm [13]:
- Thúc đẩy tái thiết kế bằng cách giảm bớt các vấn đề tích hợp trên hệ thống trên chip
- Cải thiện tính linh động và độ tin cậy của hệ thống
- Giảm thiểu thời gian thiết kế
- Không yêu cầu sử dụng các công cụ phát triển cụ thể
- Tài liệu tiêu chuẩn đơn giản hóa, hướng dẫn tham chiếu IP core
1.4.2 C ấu trúc kết nối Wishbone bus
Hình 1.13 bên dưới mô tả giao diện kết nối của Wishbone bus thông dụng Wishbone sử dụng kiến trúc Master và Slave Master và Slave được kết nối với nhau thông qua các chân tín hiệu chính được mô tả tại bảng 1.1 như sau:
Hình 1.13: Giao diện của Master và Slave Wishbone [13]
Trang 29Bả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
Chân Ch ức năng Chân Ch ức năng
RST Reset – Khởi động lại SEL Select – Tín hiệu chọn Slave
CLK Clock – Tín hiệu xung
ACK Acknowledge – Tín hiệu xác nhận
DAT Data – Tín hiệu dữ liệu CYC Cycle – Tín hiệu cho phép vận chuyển
1.5.2 Ph ần mềm Questasim 10.2
Là phần mềm chuyên dụng dùng để phân tích dạng sóng với tệp đầu vào là các tệp testbench do người dùng thiết kế Các tệp testbench này đã được tối ưu trước đó và khi