Tài liệu: Đề tài nckh thiết kế và thi công bộ truyền nhận theo giao thức

Tài liệu nghiên cứu Đề tài nckh thiết kế và thi công bộ truyền nhận theo giao thức spiwishbone, tổng hợp lý thuyết và thực hành, cung cấp kiến thức chuyên sâu về .

Người đăng

Ẩn danh

Thể loại

Đề Tài Nghiên Cứu Khoa Học Của Sinh Viên

2022

58
1
0

Phí lưu trữ

30 Point

Tóm tắt

I. Giới thiệu về Đề tài Nghiên cứu Khoa học Thiết kế và Thi công Bộ Truyền Nhận

Đề tài nghiên cứu khoa học về thiết kế và thi công bộ truyền nhận theo giao thức SPI-Wishbone là một dự án quan trọng trong lĩnh vực điện tử - viễn thông. Đây là công trình được thực hiện tại Trường Đại học Sư phạm Kỹ thuật TPHCM, mã số SV2022-178, thuộc nhóm ngành khoa học kỹ thuật. Dự án này nhằm thiết kế một hệ thống truyền nhận dữ liệu hiệu quả, kết hợp hai giao thức quan trọng: SPI (Serial Peripheral Interface)Wishbone bus. Công trình được hướng dẫn bởi TS. Đỗ Duy Tân và thực hiện bởi sinh viên Võ Thiện Tùng, lớp 18161CLVT1A. Mục tiêu chính là xây dựng một module truyền nhận có khả năng hoạt động ở cả chế độ MasterSlave, đáp ứng các yêu cầu của hệ thống hiện đại.

1.1. Lý do chọn Đề tài Thiết kế Bộ Truyền Nhận SPI Wishbone

Giao thức SPI là một trong những giao thức truyền thông nối tiếp phổ biến nhất trong các ứng dụng nhúng. Kết hợp với Wishbone bus, một kiến trúc bus mở được sử dụng rộng rãi, dự án này mang lại giải pháp truyền nhận dữ liệu linh hoạt và hiệu quả. Lý do chọn đề tài bao gồm nhu cầu tăng cao về các module truyền nhận có tính tương thích cao, khả năng hoạt động đa chế độ, và ứng dụng thực tiễn trong các hệ thống FPGA hiện đại.

1.2. Mục tiêu Nghiên cứu Khoa học

Mục tiêu chính của đề tài thiết kế và thi công bộ truyền nhận là phát triển một module truyền nhận hoàn chỉnh theo giao thức SPI-Wishbone. Mục tiêu cụ thể bao gồm: thiết kế kiến trúc hệ thống, xây dựng các khối chức năng truyền nhận (TX/RX), tối ưu hóa hiệu năng, mô phỏng toàn bộ hoạt động, và đánh giá tài nguyên sử dụng trên FPGA.

II. Kiến thức Nền tảng về FPGA và Giao thức Truyền thông

Để hiểu rõ về đề tài thiết kế bộ truyền nhận, cần nắm vững kiến thức về FPGA (Field-Programmable Gate Array) và các giao thức truyền thông. FPGA là một mạch tích hợp cỡ lớn có cấu trúc mảng phần tử logic có thể lập trình được. Kiến trúc của FPGA bao gồm các Configurable Logic Block (CLB), bộ nhớ đệm, và các khối I/O. Giao thức SPI là một giao diện ngoại vi nối tiếp với cấu tạo bao gồm 4 dây tín hiệu chính: CLK, MOSI, MISO, và SS. Wishbone bus là một kiến trúc bus mở cho phép kết nối các module khác nhau một cách linh hoạt và có tính tương thích cao. Sự kết hợp giữa SPI và Wishbone tạo nên một giải pháp truyền nhận dữ liệu mạnh mẽ.

2.1. Kiến trúc FPGA và Thanh ghi Dịch

Kiến trúc FPGA bao gồm các phần tử logic cơ bản được sắp xếp theo mảng lưới, cho phép người dùng lập trình lại cấu hình logic. Thanh ghi dịch là một thành phần quan trọng trong hệ thống, được xây dựng từ các Flip-Flop D để lưu trữ và chuyển dịch dữ liệu nối tiếp hoặc song song. Thanh ghi dịch được sử dụng để chuyển đổi giữa dữ liệu nối tiếp và song song.

2.2. Giao thức SPI và Cấu trúc Wishbone Bus

Giao thức SPI hoạt động ở chế độ Master-Slave với tốc độ truyền cao. Sơ đồ kết nối SPI bao gồm một Master và một hoặc nhiều Slave. Cấu trúc kết nối Wishbone bus cung cấp một giao diện chuẩn cho phép kết nối dễ dàng giữa các module khác nhau, với các chân tín hiệu như DAT_I, DAT_O, ADR, SEL, ACK, và CLK.

III. Thiết kế Chi tiết Hệ thống Truyền Nhận SPI Wishbone

Thiết kế chi tiết hệ thống bao gồm sơ đồ khối tổng quát, các khối chức năng chính, thanh ghi điều khiển, và thanh ghi trạng thái. Sơ đồ khối tổng quát thể hiện mối liên kết giữa các thành phần chính của hệ thống. Khối TX (Transmit) ở chế độ MasterSlave chịu trách nhiệm truyền dữ liệu với chuỗi dữ liệu được điều khiển bởi xung đồng hồ. Khối RX (Receive) ở cả hai chế độ nhận dữ liệu từ đường truyền. Thanh ghi điều khiển chứa các bit cấu hình để kiểm soát hoạt động của module, bao gồm bật/tắt module, chọn chế độ Master/Slave, thiết lập tần số chia. Thanh ghi trạng thái cung cấp thông tin về trạng thái hiện tại của module, bao gồm trạng thái truyền nhận, ngắt, và tràn buffer. Mô tả chi tiết các chân tín hiệu giúp hiểu rõ chức năng từng phần.

3.1. Sơ đồ Khối Tổng Quát và Module Master Slave

Sơ đồ khối tổng quát hiển thị cấu trúc chính của hệ thống với các khối TX, RX, và thanh ghi điều khiển. Module ở chế độ Master kiểm soát quá trình truyền nhận dữ liệu, trong khi module ở chế độ Slave phản ứng với tín hiệu điều khiển từ Master. Mô tả chi tiết các khối bao gồm hành vi logic, dòng dữ liệu, và tín hiệu đồng bộ hóa.

3.2. Thanh ghi Điều khiển và Trạng thái

Thanh ghi điều khiển (Control Register) chứa các bit để cấu hình hoạt động của module như Enable, Master/Slave mode, Interrupt enable. Thanh ghi trạng thái (Status Register) cung cấp thông tin về quá trình truyền nhận, lỗi, và tín hiệu ngắt. Các bit trong thanh ghi trạng thái bao gồm Transmission complete, Reception complete, Buffer overflow, và Interrupt flag.

IV. Mô phỏng Đánh giá Kết quả và Hướng Phát triển

Mô phỏng hoạt động của hệ thống được thực hiện bằng phần mềm Questasim 10 để xác minh chức năng của thiết kế. Sơ đồ kết nối kiểm tra hoạt động bao gồm các test case khác nhau. Test case 1 kiểm tra trường hợp Master truyền - Slave nhận, trong khi Test case 2 kiểm tra Master nhận - Slave truyền. Các dạng sóng mô phỏng cho thấy quá trình truyền nhận dữ liệu chi tiết, bao gồm giai đoạn cài đặt, truyền, và nhận dữ liệu. Đánh giá kết quả mô phỏng xác nhận rằng hệ thống hoạt động chính xác theo thiết kế. Tài nguyên sử dụng trên FPGA được theo dõi bao gồm số lượng logic cell, bộ nhớ được sử dụng, và tần số hoạt động tối đa. Hướng phát triển trong tương lai bao gồm tối ưu hóa hiệu năng, tăng tốc độ truyền, và tích hợp các tính năng bổ sung.

4.1. Quá trình Mô phỏng và Các Test Case

Mô phỏng hoạt động sử dụng Questasim để kiểm tra từng khối chức năng của hệ thống. Test case 1 mô phỏng quá trình truyền dữ liệu từ Master đến Slave, trong khi Test case 2 kiểm tra chiều ngược lại. Các dạng sóng hiển thị tín hiệu CLK, MOSI, MISO, SS, và dữ liệu được truyền nhận. Mỗi test case được chạy với dữ liệu khác nhau để đảm bảo độ chính xác cao.

4.2. Đánh giá Tài nguyên và Hướng Phát triển Tương lai

Đánh giá kết quả cho thấy hệ thống sử dụng tối thiểu tài nguyên logic, công suất tiêu thụ thấp, và tần số hoạt động đạt 100+ MHz. Kết luận xác nhận đề tài đã hoàn thành thành công. Hướng phát triển trong tương lai bao gồm: tối ưu hóa hiệu năng, tăng tốc độ truyền, thêm các chế độ truyền dữ liệu mới, và tích hợp với các giao thức khác.

28/12/2025

Trích đoạn nội dung tài liệu

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 đó. 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.

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ể. 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].

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.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].

Thanh ghi dịch 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ộ.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.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.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. 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. 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]. 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 → 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).

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. 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ả.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.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. 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.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ