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
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
Trang 31 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
Trang 42
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
Trang 53
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
Trang 64
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 quá trình truyền dữ liệu của Master 48
Trang 75
Trang 86
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
Trang 97
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 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
CLK Clock Xung đồng hồ
CPHA Clock Phase Pha của xung clock CPOL Clock Polarity Cực xung clock EEPROM Electrically Erasable Programmable
Read-Only Memory
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
Trang 108
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-Transmitter
Bộ truyền nhận nối tiếp bất đồng bộ
Trang 119
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 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 lượng cao 4 Võ Phan Mẫn Đạt 18119065 18119CL1A Đào tạo chất
lượng cao 5 Nguyễn Văn Thương 18161161 18161CLDT1A Đà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 quát 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:
Trang 1210
đề 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, q 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
Trang 1311
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
Trang 1412
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 tồ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
Trang 15SPI-13
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
Trang 1614
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 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]
Trang 1715
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 ngoài
Trang 1816
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
Trang 1917
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ộ
Trang 2018
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
Trang 2119
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
Trang 2220
- 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 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ì hồn tất việc truyền và nhận 1 byte dữ liệu
Trang 2321
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
Trang 2422
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)
Trang 2523
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)
Trang 2624
Hình 1.11: Một thiết bị Master và nhiều thiết bị Slave ở chế độ độc lập
Trang 2725
Mộ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
Trang 2826
cấ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:
Trang 2927
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
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
đồng hồ
STB Strobe – Tín hiệu cho phép chu kỳ đồng hồ hiện tại hợp lệ ADR Address – Tín hiệu
chọn địa chỉ
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 dữ liệu
WE Write Enable – Tín hiệu cho phép ghi
1.5 Giới thiệu về phần mềm 1.5.1 Ngôn ngữ mô tả phần cứng
Một mạch tích hợp số có thể được miêu tả bởi nhiều cấp độ khác nhau như các phân lớp ở trên hay từ nhiều góc nhìn khác nhau của người thiết kế Vì vậy để miêu tả thiết kế mạch một cách thống nhất và chính xác nhất ta có các ngơn ngữ mơ tả phần cứng Ngơn ngữ miêu tả phần cứng hiện nay có hai ngơn ngữ chính là VHDL [10] và Verilog [11-12], cả hai đều là các ngôn ngữ được IEEE công nhận và thiết lập các thư viện, các chuẩn thống nhất Trong đề tài này, chúng tôi sử dụng Verilog để xây dựng thiết kế Các ngơn ngữ lập trình truyền thống như C, Java, … có ý nghĩa theo kiểu tuần tự được thực hiện từng bước, hết câu lệnh này đến câu lệnh khác vì vậy khơng thích hợp để miêu tả các phần cứng phức tạp hoạt động song song Thay vào đó ta có các ngơn ngữ phần cứng được thiết kế để mô tả các mạch điện song song hoạt động độc lập với nhau hoặc liên kết qua các kết nối chung, các ngõ vào ra của mạch và độ trễ tín hiệu
1.5.2 Phần mềm Questasim 10.2
Trang 3028
đưa vào phần mềm QuestaSim sẽ ánh xạ tệp và cho ra các thơng tin hiển thị dưới dạng sóng ngõ vào, ngõ ra theo đúng thiết kế Vì là phần mềm chun dùng để phân tích sóng nên phần mềm có thể phân tích timing, cơng suất của mạch, ngồi ra người dùng có thể thêm bớt các ngõ ra, ngõ vào để dễ dàng quan sát tiện lợi trong việc đánh giá các chức năng mạch
Việc chạy mô phỏng với Questasim có thể thực hiện bằng giao diện phần mềm, bằng chế độ lệnh hoặc bằng chế độ batch
- Chế độ sử dụng giao diện phần mềm: cho việc thực thi mô phỏng bằng các nút, menu tùy chọn hoặc bằng cách lệnh trong cửa sổ transcript mà giao diện hỗ trợ
- Dùng lệnh để chạy mô phỏng bằng cửa sổ lệnh của hệ điều hành Questasim sẽ bắt đầu thực thi với các biến được đặc tả trong file modelsim.ini, một file được trình mơ phỏng tự động tạo ra, hoặc một file do tùy chọn do người dùng tạo ra
- Batch: Dùng lệnh để chạy mô phỏng bằng cửa sổ lệnh của hệ điều hành với các biến được nhập trực tiếp từ ngõ vào hoặc từ file và xuất ra ngõ ra theo chuẩn hoặc file
1.5.3 Phần mềm Quartus Prime Lite
Đây là phần mềm đóng gói tích hợp đầy đủ phục vục cho thiết kế logic với các linh kiện Các dòng linh kiện logic được phần mềm Quartus II thiết kế như: PLD của Altera, các dòng APEX, Cyclone, FLEX, MAX, Stratix, … Mặt khác, Các tính năng mà phần mềm cung cấp cho việc thiết kế logic như:
- Môi trường thiết kế gồm: các bản vẽ, sơ đồ khối, công cụ soạn thảo các ngôn ngữ: VHDL, AHDL, Verilog và HDL
- Khả năng mô phỏng chức năng thời gian, phân tích thời gian
- Cho phép xuất, tạo và kết nối file nguồn cho phép cho tạo file chương trình - Khả năng lập trình và nhận diện linh kiện
Trang 3129
CHƯƠNG 2
THIẾT KẾ HỆ THỐNG
Trong chương này, Chúng ta thiết kế hệ thống hay những khối liên quan đến việc truyền nhận dữ liệu giữa hai thiết bị với 2 chế độ khác nhau là Master và Slave
2.1 Sơ đồ khối tổng quát của hệ thống
Hình 2.1 mơ tả sơ đồ khối tổng qt của hệ thống, trong đó module SPI có thể hoạt động được ở 2 chế độ Master và Slave tuỳ theo cấu hình được cài đặt trước
Hình 2.1: Sơ đồ khối tổng quát hệ thống
Trang 3230
xử lý trung tâm gửi đến module thông qua các chân kết nối của Wishbone bus Sau đó, module có nhiệm vụ giải mã các tín hiệu này và đưa dữ liệu tới các ngõ ra Bảng 2.1 bên dưới mô tả chức năng các chân của module được tham khảo từ tài liệu [13]
Bảng 2.1: Chức năng các chân của module
Giao diện Tên chân Loại Chiều dài (bit)
Chức năng
Wishbone
CLK_I Input 1 Xung clock gửi từ Wishbone RST_I Input 1 Tín hiệu tái khởi động DAT_I Input 8 Dữ liệu gửi từ Wishbone DAT_O Output 8 Dữ liệu gửi đến Wishbone
ADR_I Input 8 Địa chỉ gửi từ Wishbone WE_I Input 1 Tín hiệu cho phép ghi
CYC_I Input 1 Tín hiệu điều khiển cho phép truyền dữ liệu
STB_I Input 1 Tín hiệu cho phép Wishbone Slave đó giao tiếp với Wishbone Master SEL_I Input 4 Tín hiệu chọn thiết bị Slave
CTI_I Input 3 Tín hiệu mang thơng tin chu kỳ mà Slave sẽ giao tiếp như thế nào trong
chu kỳ đó
BTE_I Input 2 Tín hiệu mang thông tin về chuỗi các hoạt động của Wishbone LOCK_I Input 1 Tín hiệu khố Slave cho biết Slave
này không thể được điều khiển bởi một Master khác
ACK_O Output 1 Tín hiệu xác nhận đã nhận được dữ liệu
Trang 3331
RTY_O Output 1 Tín hiệu thử lại Slave INT_O Output 1 Tín hiệu báo ngắt Slave
SPI
SCLK Input/Output
1 Xung clock cấp cho Slave
MOSI Input/Output
8 Dữ liệu ra của Master cấp vào Slave
MISO Input/Output
8 Dữ liệu cấp vào Master từ Slave
SS_N Input/Output
1 Tín hiệu chọn Slave
2.2 Sơ đồ khối chi tiết 2.2.1 Chế độ Master
Khi được cấu hình là Master, khối có nhiệm vụ chuyển đổi dữ liệu nhận được từ Wishbone bus gửi đến Slave thông qua giao thức SPI Dưới đây là sơ đồ khối chi tiết của module được thể hiện ở Hình 2.2
Trang 3432
Ở chế độ Master, module lấy xung clock từ chân CLK_I, sau đó thực hiện chia tần số ra được giá trị mong muốn, cấp cho các khối Slave hoạt động thông qua chân ngõ ra SCLK Giá trị tần số SCLK được tính như sau:
SCLK = CLK_I
2 * (CLOCK_SEL + 1)=
CLK_I
4 (1)
Trong đó, hệ số CLOCK_SEL do người thiết lập tự chọn để cho ra tần số xung clock SCLK như mong muốn Ở đây, có thể chọn CLOCK_SEL = 1
Bên phía Wishbone bus, Master sẽ được điều khiển và nhận dữ liệu từ Wishbone, bắt đầu từ lúc SPI_ADR_I truyền tín hiệu chọn địa chỉ thanh ghi vào khối ADDRESS, địa chỉ này sẽ được tham chiếu tới thanh ghi được chọn và dữ liệu sẽ được truyền vào qua SPI_DAT_I hoặc xuất ra qua SPI_DAT_O
Đối với quá trình truyền, các dữ liệu từ Wishbone bus tới thanh ghi TXDATA tiếp tục truyền tới cho thanh ghi Transmit Shift và cuối cùng được đưa ra ngoài chân MOSI để đưa dữ liệu tới Slave
Quá trình nhận, dữ liệu được truyền từ Slave vào chân MISO tới thanh ghi Receive Shift và truyền dần sang cho thanh ghi RXDATA cuối cùng sẽ được truyền tới chân SPI_DAT_O để dữ liệu tới Wishbone bus
2.2.2 Chế độ Slave
Trang 3533
Tương tự khi ở chế độ Master, khối Slave cũng được thiết kế với 1 phía giao tiếp theo chuẩn Wishbone bus để điều khiển, 1 phía được thiết kế theo chuẩn SPI để giao tiếp với Master SPI Khi ở chế độ Slave, module sẽ nhận xung clock từ khối Master cấp vào thông qua chân SCLK, khi có tín hiệu Slave Select từ Master gửi tới chân SS_N sẽ thực hiện việc giao tiếp quá trình truyền và nhận dữ liệu ở chế độ Slave tương tự như quá trình truyền nhận dữ liệu ở chế độ Master
2.2.3 Mô tả thanh ghi
Các thanh ghi được sử dụng trong mơ hình SPI-Wishbone được mơ tả tại bảng 2.2 Trong đó các thanh ghi quan trọng được sử dụng liệt kê đến như thanh ghi đóng vai trị trong việc truyền dữ liệu đi RXDATA, thanh ghi đóng vai trị trong việc nhận dữ liệu đến TXDATA, ngồi ra có các thanh ghi phụ như hiển thị trạng thái STATUS, thanh ghi cấu hình điều khiển hoạt động CONTROL và thanh ghi có chức năng chọn Slave giao tiếp SS_MASK
Bảng 2.2: Mô tả sơ lược các thanh ghi dùng trong module
Thanh ghi Địa chỉ Độ rộng (bit) Quyền Truy cập Mô tả REG_RXDATA
(dw00_cs) 0x00 8 Chỉ được đọc Dữ liệu lấy từ giao thức SPI
REG_TXDATA
(dw04_cs) 0x04 8 Đọc/Ghi
Dữ liệu đến giao thức SPI, SSMASK
hoặc thanh ghi Control REG_STATUS
(dw08_cs) 0x08 8 Chỉ được đọc Thanh ghi Status REG_CONTROL
(dw0c_cs) 0x0C 8 Đọc/Ghi Thanh ghi Control REG_SSMASK
Trang 3634
Thanh ghi Status là thanh ghi 8 bit hiển thị trạng thái hoạt động của các thanh ghi
truyền nhận, trong đó mỗi bit có trạng thái 0 hoặc 1 sẽ biểu thị một chức năng riêng biệt Bảng 2.3 bên dưới mô tả chức năng của từng bit trong thanh ghi
Bảng 2.3: Chức năng mỗi bit của thanh ghi Status
Tên Bit Bit
Mức tích cựcMơ tả Reserved 1:0 Không sử dụng ROE 2 1
Quá tải trong quá trình nhận dữ liệu, Lỗi cho thấy thanh ghi RXDATA nhận dữ liệu mới trước khi dữ liệu trước đó được đọc, dữ liệu trước sẽ bị mất nếu
điều này xảy ra
TOE 3 1
Quá tải trong quá trình truyền dữ liệu, lỗi sảy ra khi thanh ghi TXDATA nhận dữ liệu mới trước khi dữ liệu được truyền sang cho thanh ghi Transmit shift TMT 4 1 Thanh ghi Transmit shift đang trống dữ liệu và sẵn
sàng nhận dữ liệu từ thanh ghi TXDATA TRDY 5 1 Thanh ghi TXDATA đang trống và sẵn sàng nhận dữ
liệu từ Wishbone bus truyền tới
RRDY 6 1 Thanh ghi RXDATA có dữ liệu và sẵn sàng cho việc đọc dữ liệu
Trang 3735
Thanh ghi Control là thanh ghi 8 bit điều khiển hoạt động của các khối Master hoặc
Slave trong quá trình truyền nhận dữ liệu Tương tự như thanh ghi Status, bảng 2.4 mô tả chức năng của từng bit trong thanh ghi
Bảng 2.4: Các chức năng mỗi bit của thanh ghi Control
Bit name Bit
Mức tích cực
Mơ tả
IROE 0 1 Yêu cầu ngắt khi quá trình nhận dữ liệu bị quá tải ITOE 1 1 Yêu cầu ngắt khi quá trình truyền dữ liệu bị quá tải Reserved 2 Không sử dụng
ITRDY 3 1 Ngắt hoạt động các khối khác khi khối truyền trong trạng thái sẵn sang truyền dữ liệu
IRRDY 4 1 Ngắt hoạt động các khối khác khi khối nhận dữ liệu trong trạng thái sẵn sang nhận dữ liệu
IE 5 1 Ngắt hoạt động khi quá trình truyền hoặc nhận bị lỗi quá tải
Reserved 6 Không sử dụng
SSO 7 1
Giữ sự liên kết khi quá trình truyền nhận dữ liệu giữa 2 khối SPI Master và SPI Slave, sau khi trao
Trang 3836
2.3 Thiết kế chi tiết
2.3.1 Khối truyền dữ liệu TX ở chế độ MASTER
Khối TX ở chế độ MASTER có nhiệm vụ xử lý và truyền dữ liệu đến cho SLAVE, dữ liệu được truyền từ wishbone bus tới cho các thanh ghi cho bộ TX và truyền ra chân MOSI cho SLAVE Khối TX_MASTER được mô tả dưới hình 2.4
Hình 2.4: Mạch điều khiển quá trình truyền dữ liệu TX_MASTER
Trang 3937
Tiếp đến, dữ liệu sau khi được dịch đủ sang cho thanh ghi TX_SHIFT_DATA vẫn sẽ phải chờ tín hiệu cho phép truyền đó là CLOCK_CNT phải ở trạng thái CLOCK_SEL là tín hiệu cạnh lên cần thiết để thực hiện việc truyền, C_STATUS phải ở trạng thái ST_TRANS là trạng thái cho phép truyền, CLOCK_PHASE phải cùng pha với CLOCK_MASTER (nghĩa là cùng mức logic với pha ban đầu của xung CLOCK_MASTER do vi xử lý cung cấp) và cuối cùng là trạng thái WAIT_ONE_TICK_DONE nghĩa là chân chờ khi dữ liệu đã được truyền qua đủ cho TX_SHIFT_DATA thì chân sẽ ở mức logic “1”, lúc này dữ liệu sẽ được dịch từng bit từ TX_SHIFT_DATA ra cho chân MOSI_MASTER
2.3.2 Khối truyền dữ liệu TX ở chế độ SLAVE
Khối TX ở chế độ SLAVE có nhiệm vụ xử lý và truyền dữ liệu đến cho MASTER, dữ liệu được thu thập từ các thiết bị có thể là cảm biến hoặc thiết bị khác truyền tới cho các thanh ghi cho bộ TX và truyền ra chân MISO cho MASTER Khối TX_SLAVE
được mơ tả dưới Hình 2.5
Hình 2.5: Mạch điều khiển quá trình truyền dữ liệu TX_SLAVE
Trang 4038
2.3.3 Khối nhận dữ liệu RX ở chế độ MASTER
Khối RX ở chế độ MASTER có nhiệm vụ nhận và xử lý dữ liệu đến cho wishbone bus trước khi gửi tới cho vi xử lý, dữ liệu được thu thập từ TX_SLAVE truyền tới cho các thanh ghi cho bộ RX và truyền ra thanh ghi REG_RXATA Khối RX_MASTER
được mơ tả dưới Hình 2.6
Hình 2.6: Mạch điều khiển quá trình nhận dữ liệu RX_MASTER
Chân MISO_MASTER nhận dữ liệu từ MISO_SLAVE gửi tới Tại thời điểm này dữ liệu muốn được dịch qua cho REG_RX_SHIFT_DATA Ở đây, cần phải có đủ các tín hiệu cho phép đó là: CLOCK_CNT phải ở trạng thái CLOCK_SEL, CLOCK_PHASE phải ở trạng thái SCLK_MASTER và cuối cùng C_STATUS phải ở trạng thái ST_TRANS