3. Các Phương Pháp Truyền Dữ Liệu Chi Tiết
Bên trong vòng lặp giao tiếp, bạn có hai lựa chọn chính để trao đổi dữ liệu, mỗi loại phù hợp với một nhu cầu khác nhau về tốc độ và khối lượng.
A. Read/Write Control: Giao tiếp Điều khiển & Trạng thái
Đây là phương pháp giao tiếp bằng cách đọc và ghi trực tiếp vào các Controls và Indicators trên Front Panel của VI FPGA. Nó sử dụng hàm Read/Write Control
trên Host VI.
- Cơ chế hoạt động: Mỗi lần hàm này được gọi, Host sẽ gửi một yêu cầu qua bus (ví dụ: PCIe, Ethernet) đến FPGA, ra lệnh “đọc giá trị của indicator X” hoặc “ghi giá trị Y vào control Z”.
- Đặc điểm:
- Thông lượng thấp (Low Throughput): Mỗi lần đọc/ghi là một giao dịch riêng lẻ, tốn nhiều thời gian cho việc gửi lệnh và chờ phản hồi. Không phù hợp để truyền các mảng dữ liệu lớn.
- Độ trễ thấp (Low Latency): Thời gian từ lúc ra lệnh đến lúc có kết quả cho một điểm dữ liệu là rất nhanh.
- Có thể mất dữ liệu (Lossy): Nếu FPGA cập nhật một indicator nhanh hơn tốc độ đọc của Host, các giá trị ở giữa sẽ bị bỏ qua.
- Tốn tài nguyên FPGA: Mỗi control/indicator trên top-level VI đều tiêu tốn tài nguyên logic đáng kể.
- Tình huống sử dụng lý tưởng:
- Gửi các giá trị cấu hình từ Host xuống FPGA khi chương trình bắt đầu.
- Đọc các giá trị trạng thái (status), cờ báo (flags), hoặc kết quả xử lý đơn lẻ từ FPGA lên Host.
- Gửi các lệnh điều khiển (commands) từ người dùng (ví dụ: nút Start/Stop).
B. DMA FIFO: Truyền Luồng Dữ Liệu Tốc Độ Cao
DMA (Direct Memory Access) là một kỹ thuật phần cứng cho phép truyền một khối dữ liệu lớn trực tiếp giữa bộ nhớ của FPGA (BRAM) và bộ nhớ của Host (RAM) mà không cần sự can thiệp của CPU. Đây là phương pháp hiệu quả nhất để truyền các luồng dữ liệu.
- Cơ chế hoạt động: LabVIEW tạo ra một cặp FIFO (một trên FPGA, một trên Host) được liên kết với nhau. VI FPGA chỉ cần ghi dữ liệu vào DMA FIFO trên chip. Phần cứng DMA sẽ tự động “hút” dữ liệu đó và đẩy nó vào bộ đệm trong RAM của Host. Host VI chỉ cần đọc dữ liệu từ bộ đệm đó.
- Đặc điểm:
- Thông lượng cực cao (Very High Throughput): Có thể đạt hàng trăm MB/s, lý tưởng cho việc truyền các tín hiệu waveform, hình ảnh, hoặc các tập dữ liệu lớn.
- Sử dụng CPU thấp: Vì CPU không tham gia vào quá trình truyền dữ liệu, nó được giải phóng để làm các việc khác như xử lý, hiển thị, lưu trữ.
- Không mất dữ liệu (Lossless): Cơ chế FIFO đảm bảo mọi điểm dữ liệu được ghi vào sẽ được đọc ra theo đúng thứ tự.
- Tình huống sử dụng lý tưởng:
- Thu thập tín hiệu từ ADC tốc độ cao và truyền lên Host để hiển thị và phân tích.
- Phát một tín hiệu waveform từ Host xuống DAC trên FPGA.
- Ghi lại một lượng lớn dữ liệu từ cảm biến để phân tích sau (post-analysis).