HCMUTE: Thiết kế và thi công bộ truyền nhận theo giao thức SPI Wishbone

Khám phá thiết kế và thi công bộ truyền nhận theo giao thức SPI Wishbone tại HCMUTE, ứng dụng trong công nghệ viễn thông và điện tử.

Người đăng

Ẩn danh

Thể loại

báo cáo tổng kết đề tài nghiên cứu khoa học

2022

59
12
1

Phí lưu trữ

30 Point

Mục lục chi tiết

MỞ ĐẦU

I. Tổng quan

I.1. Lý do chọn đề tài

I.2. Mục tiêu đề tài

I.3. Phương pháp nghiên cứu

I.4. Đối tượng và phạm vi nghiên cứu

1. CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

1.1. Giới thiệu về FPGA

1.2. Kiến trúc FPGA

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

1.4. Khối logic

1.5. Thanh ghi dịch

1.5.1. Phần tử nhớ

1.5.2. Thanh ghi dịch sử dụng Flip-Flop D

1.6. Giới thiệu về SPI

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

1.8. Hoạt động của SPI

2. THIẾT KẾ HỆ THỐNG

2.1. Sơ đồ khối tổng quát của hệ thống

2.2. Sơ đồ khối chi tiết

2.3. Mô tả thanh ghi

2.4. Thiết kế chi tiết

2.4.1. Khối truyền dữ liệu TX ở chế độ MASTER

2.4.2. Khối truyền dữ liệu TX ở chế độ SLAVE

2.4.3. Khối nhận dữ liệu RX ở chế độ MASTER

2.4.4. Khối nhận dữ liệu RX ở chế độ SLAVE

2.4.5. Thanh ghi điều khiển

2.4.6. Thanh ghi trạng thái

3. MÔ PHỎNG VÀ ĐÁNH GIÁ

3.1. Mô phỏng hoạt động

3.2. Sơ đồ kết nối và tổng quát các test case

3.3. Test case 1: Master truyền – Slave nhận

3.4. Test case 2: Master nhận – Slave truyền

3.5. Đánh giá kết quả mô phỏng

3.6. Tài nguyên sử dụng

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

K.1. Hướng phát triển

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Thiết kế bộ truyền nhận SPI Wishbone

Phần này tập trung vào thiết kế bộ truyền nhận SPI Wishbone, một thành phần cốt lõi của dự án. Thiết kế mạch điện tử HCMUTE được thực hiện dựa trên hiểu biết về giao tiếp SPIWishbone bus. Ngôn ngữ mô tả phần cứng (HDL), cụ thể là Verilog, được sử dụng để mô tả mạch. Thiết kế bao gồm các module chính: module truyền dữ liệu (TX), module nhận dữ liệu (RX), và module điều khiển. Module TX và RX hoạt động ở cả hai chế độ MasterSlave. Thiết kế hệ thống nhúng được tối ưu để đảm bảo hiệu quả và tốc độ truyền dữ liệu cao. Xây dựng module được thực hiện từng bước, đảm bảo tính chính xác và dễ bảo trì. Thiết kế mạch tích hợp được mô phỏng kỹ lưỡng trước khi triển khai trên FPGA. Báo cáo khoa học về SPIbáo cáo khoa học về Wishbone cung cấp nền tảng lý thuyết vững chắc cho thiết kế. Giáo trình thiết kế mạch điện tửtài liệu thiết kế mạch đã được tham khảo để đảm bảo tính chuẩn xác của thiết kế.

1.1 Mô tả kiến trúc hệ thống

Kiến trúc hệ thống được thiết kế dựa trên chuẩn Wishbone giao tiếp. Bộ truyền nhận SPI Wishbone được chia thành các module con rõ ràng, bao gồm module truyền dữ liệu TX và module nhận dữ liệu RX. Mỗi module có thể hoạt động độc lập ở chế độ Master hoặc Slave, cho phép linh hoạt trong cấu hình hệ thống. Vi điều khiển sẽ tương tác với bộ truyền nhận SPI thông qua Wishbone bus. IP core SPI được tích hợp vào hệ thống để tối ưu hiệu suất. Mạch số được thiết kế để đảm bảo tính ổn định và độ tin cậy cao. Thiết kế mạch tổng hợp kết hợp cả phần cứng và phần mềm, cho phép kiểm soát và giám sát quá trình truyền nhận dữ liệu một cách hiệu quả. Hệ thống nhúng này được thiết kế để có thể mở rộng và tích hợp với các module khác trong tương lai. Mạch nhậnmạch phát được thiết kế riêng biệt nhưng hoạt động đồng bộ. Mạch điều khiển chịu trách nhiệm quản lý toàn bộ quá trình truyền nhận dữ liệu, bao gồm chọn chế độ hoạt động (Master/Slave), quản lý tín hiệu đồng hồ (clock), và xử lý tín hiệu ngắt. Vi xử lý sẽ gửi và nhận dữ liệu qua các thanh ghi điều khiển. Sơ đồ khối tổng quát của hệ thống được mô tả chi tiết trong báo cáo.

1.2 Quá trình thiết kế và mô phỏng

Quá trình thiết kế mạch điện tử bắt đầu với việc phân tích yêu cầu và thiết kế kiến trúc hệ thống. Verilog được sử dụng để mô tả hành vi của các module. Môi trường mô phỏng Questasim 10 được sử dụng để kiểm tra chức năng và hiệu suất của thiết kế. Mô phỏng mạch được thực hiện với nhiều test case khác nhau, bao gồm cả các trường hợp biên để đảm bảo tính ổn định. Kết quả mô phỏng mạch cho thấy thiết kế hoạt động chính xác và hiệu quả. Tối ưu hóa mạch được thực hiện để giảm thiểu tài nguyên sử dụng trên FPGA. Kiểm thử mạch được thực hiện kỹ lưỡng, đảm bảo chất lượng của thiết kế trước khi triển khai. Quartus Prime Lite được sử dụng để tổng hợp và lập trình mạch lên FPGA. HDL (Hardware Description Language) cho phép mô tả mạch một cách chính xác và hiệu quả. Mạch nhúng được thiết kế để đáp ứng các yêu cầu về thời gian thực. Tài nguyên sử dụng trên FPGA được đánh giá và phân tích. Dự án tốt nghiệp HCMUTE này tập trung vào việc tối ưu hóa thiết kế về cả hiệu suất và tài nguyên.

II. Thi công và kiểm thử

Phần này trình bày quá trình thi công bộ truyền nhận SPI Wishbone và các kết quả kiểm thử. Sau khi hoàn thành thiết kế mạch điện tử, thiết kế được tổng hợp và lập trình lên FPGA. Kiểm thử mạch được thực hiện để xác nhận chức năng và hiệu suất của hệ thống. Mạch nhúng được đánh giá dựa trên các chỉ số hiệu suất chính như tốc độ truyền dữ liệu, độ trễ, và sử dụng tài nguyên. Kết quả kiểm thử cho thấy hệ thống hoạt động ổn định và đáp ứng các yêu cầu kỹ thuật. Sinh viên HCMUTE đã hoàn thành thành công việc thi công mạch điện tử. Đại học Công nghệ TP.HCM đã cung cấp môi trường và trang thiết bị cần thiết cho dự án. Nghiên cứu khoa học HCMUTE đã hỗ trợ quá trình nghiên cứu và phát triển.

2.1 Triển khai trên FPGA

Thiết kế đã được tổng hợp và lập trình lên FPGA sử dụng phần mềm Quartus Prime Lite. Quá trình này bao gồm việc ánh xạ thiết kế vào cấu trúc của FPGA, tổng hợp mã HDL thành cấu trúc phần cứng, và lập trình cấu hình vào FPGA. Tối ưu hóa mạch được thực hiện để giảm thiểu sử dụng tài nguyên trên FPGA, bao gồm cả logic và bộ nhớ. Kiến trúc FPGA đã được lựa chọn một cách cẩn thận để phù hợp với yêu cầu của dự án. Mạch số được tổng hợp và kiểm tra các thông số thời gian để đảm bảo hoạt động đúng như mong muốn. Giải pháp điện tử này được triển khai trên một mạch in được thiết kế riêng biệt. Module được tích hợp vào một hệ thống lớn hơn. Phân tích tài nguyên của FPGA đã được thực hiện sau khi tổng hợp. Báo cáo chi tiết về quá trình triển khai đã được ghi lại đầy đủ.

2.2 Đánh giá hiệu suất và kết luận

Hiệu suất của bộ truyền nhận SPI Wishbone được đánh giá dựa trên các chỉ số quan trọng như tốc độ truyền dữ liệu, độ trễ, và sử dụng tài nguyên trên FPGA. Kết quả cho thấy hệ thống đạt được tốc độ truyền dữ liệu cao và độ trễ thấp, đáp ứng yêu cầu của ứng dụng. Việc sử dụng tài nguyên trên FPGA cũng được tối ưu hóa. Nghiên cứu bộ truyền nhận SPI này đã đóng góp vào sự phát triển của công nghệ mạch sốhệ thống nhúng. Dự án tốt nghiệp này cho thấy khả năng thiết kế và triển khai các hệ thống mạch điện tử phức tạp. Ứng dụng bộ truyền nhận SPI có thể được mở rộng sang nhiều lĩnh vực khác nhau. Kết luận của dự án nhấn mạnh tầm quan trọng của việc áp dụng các kỹ thuật thiết kế hiện đại và tối ưu hóa để tạo ra các hệ thống hiệu quả và đáng tin cậy. Nghiên cứu khoa học này có tiềm năng ứng dụng thực tiễn cao.

01/02/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. 16 Luan van 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]. 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 Luan van  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 Luan van 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 Luan van - 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ả. 20 Luan van 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.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.

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

Bài viết "Thiết kế và thi công bộ truyền nhận SPI Wishbone tại HCMUTE" cung cấp cái nhìn sâu sắc về quy trình thiết kế và thi công một bộ truyền nhận SPI Wishbone, một thành phần quan trọng trong các hệ thống nhúng. Tác giả không chỉ trình bày các bước thực hiện mà còn nhấn mạnh những thách thức và giải pháp trong quá trình phát triển. Độc giả sẽ nhận được những kiến thức quý giá về công nghệ SPI, cũng như cách áp dụng nó trong thực tiễn, từ đó nâng cao khả năng thiết kế và thi công các hệ thống điện tử.

Nếu bạn muốn mở rộng thêm kiến thức về các công nghệ liên quan, hãy tham khảo bài viết Luận văn thạc sĩ kỹ thuật viễn thông nghiên cứu và thiết kế vi mạch khuếch đại nhiễu thấp băng thông rộng 618 ghz, nơi bạn sẽ tìm thấy thông tin về thiết kế vi mạch trong lĩnh vực viễn thông. Ngoài ra, bài viết Luận văn thạc sĩ kỹ thuật điện tử thiết kế hệ thống nhúng nhận dạng chữ viết tay cũng sẽ giúp bạn hiểu rõ hơn về ứng dụng của công nghệ nhúng trong nhận dạng tín hiệu. Cuối cùng, bài viết Luận án nghiên cứu thiết kế và chế tạo thiết bị ghi đo bức xạ hiện trường sử dụng kỹ thuật xử lý tín hiệu số dsp vào mảng các phần tử logic lập trình fpga sẽ cung cấp thêm thông tin về việc áp dụng DSP và FPGA trong thiết kế thiết bị đo. Những tài liệu này sẽ giúp bạn mở rộng kiến thức và hiểu sâu hơn về các công nghệ liên quan.