1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết Kế Và Thi Công Bộ Truyền Nhận Theo Giao Thức Spi-Wishbone.pdf

59 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 59
Dung lượng 2,64 MB

Nội dung

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 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

Trang 2

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

Trang 3

1 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 4

2

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 5

3

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 6

4

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 7

5

Trang 8

6

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 9

7

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 10

8

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 11

9

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 12

10

đề 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 13

11

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 14

12

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 15

SPI-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 16

14

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 17

15

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 18

16

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 19

17

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 20

18

 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 21

19

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 22

20

- 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 23

21

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 24

22

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 25

23

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 26

24

Hình 1.11: Một thiết bị Master và nhiều thiết bị Slave ở chế độ độc lập

Trang 27

25

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 28

26

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 29

27

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 30

28

đư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 31

29

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 32

30

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 33

31

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 34

32

Ở 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 35

33

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 36

34

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 37

35

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 38

36

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 39

37

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 40

38

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

Ngày đăng: 24/06/2023, 19:42