2. Gỡ Lỗi trong Môi trường Mô Phỏng (Trên Host PC)
Đây là tuyến phòng thủ đầu tiên và quan trọng nhất. Bằng cách chạy VI FPGA trên máy tính, bạn có thể sử dụng các công cụ gỡ lỗi quen thuộc của LabVIEW để xác minh logic một cách nhanh chóng.
A. Chế độ “Simulation with Simulated I/O”
Đây là chế độ mặc định khi bạn chạy VI FPGA trên Host. Trong chế độ này:
- Toàn bộ Block Diagram sẽ được thực thi bởi CPU của máy tính.
- Các node I/O (ví dụ: đọc tín hiệu analog) sẽ không đọc từ phần cứng thật, thay vào đó chúng sẽ trả về dữ liệu ngẫu nhiên.
- Ưu điểm: Cực kỳ nhanh. Bạn có thể sử dụng
Probes, Highlight Execution, Breakpoints để theo dõi luồng dữ liệu và kiểm tra các thuật toán xử lý tín hiệu bên trong VI.
B. Xây dựng “Test Bench” với “Custom VI for FPGA I/O”
Dữ liệu ngẫu nhiên không đủ để kiểm tra một logic phức tạp. Chúng ta cần một cách để cung cấp các tín hiệu đầu vào có kiểm soát và kiểm tra xem tín hiệu đầu ra có đúng như mong đợi hay không. Kỹ thuật này được gọi là xây dựng Test Bench.
LabVIEW cho phép bạn tạo một VI đặc biệt (gọi là Custom VI) để “giả lập” toàn bộ thế giới bên ngoài cho VI FPGA. Khi VI FPGA gọi một node I/O để đọc dữ liệu, LabVIEW sẽ gọi Custom VI này để cung cấp dữ liệu. Khi VI FPGA ghi ra một node I/O, LabVIEW sẽ gửi dữ liệu đó đến Custom VI để bạn có thể kiểm tra.
- Tạo Stimulus (Tín hiệu kích thích): Trong Custom VI, bạn có thể tạo ra các dạng sóng cụ thể (sóng sine, vuông, một chuỗi dữ liệu đã biết trước) để làm đầu vào cho VI FPGA.
- Kiểm tra Response (Phản hồi): Khi nhận được dữ liệu đầu ra từ VI FPGA, bạn có thể so sánh nó với kết quả mong đợi và bật một cờ báo lỗi nếu chúng không khớp.
- Tự động hóa: Bạn có thể xây dựng một Host VI để tự động chạy VI FPGA trong môi trường mô phỏng, cung cấp các bộ stimulus khác nhau và ghi lại kết quả pass/fail. Đây là nền tảng của quy trình xác minh tự động.
C. Chế độ “Simulation with Real I/O”
Một số Target hỗ trợ chế độ đặc biệt này. Logic VI vẫn chạy trên CPU của máy tính, nhưng các node I/O sẽ giao tiếp với phần cứng I/O thật trên bo mạch. Chế độ này hữu ích khi bạn muốn gỡ lỗi một thuật toán phức tạp cần tín hiệu thực từ cảm biến nhưng vẫn muốn sử dụng các công cụ như Probe.