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) và 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ế độ Master và Slave, đá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ế độ Master và Slave 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.