Phân Loại và Tìm Hiểu Sâu về I/O
FPGA I/O được chia thành hai họ chính: Digital (Kỹ thuật số) và Analog (Tương tự).
A. Digital I/O (DIO)
Hoạt động với hai mức logic: CAO (TRUE, 1) và THẤP (FALSE, 0). DIO được dùng để đọc trạng thái công tắc, điều khiển relay, gửi/nhận tín hiệu giao tiếp số…
- Digital Input: Chỉ dùng để đọc trạng thái của một tín hiệu bên ngoài.
- Digital Output: Chỉ dùng để xuất ra một tín hiệu CAO hoặc THẤP để điều khiển thiết bị khác.
- Digital Input/Output (Tristate/Bidirectional): Đây là loại cổng linh hoạt nhất. Nó có thể hoạt động như một Input hoặc một Output. Trạng thái của nó được điều khiển bởi một tín hiệu đặc biệt gọi là
Output Enable
.
- Khi
Output Enable
là TRUE, cổng trở thành Output.
- Khi
Output Enable
là FALSE, cổng trở thành Input (ở trạng thái trở kháng cao – high impedance).
B. Analog I/O (AI/AO)
Hoạt động với một dải giá trị liên tục, thường là điện áp (ví dụ: từ -10V đến +10V). Được dùng để đọc giá trị từ cảm biến nhiệt độ, áp suất, hoặc xuất tín hiệu để điều khiển động cơ servo…
- Analog Input (AI): Khi bạn đọc một kênh AI, bộ chuyển đổi ADC (Analog-to-Digital Converter) trên phần cứng sẽ lấy mẫu điện áp và chuyển nó thành một **số nguyên có dấu (signed integer)**.
Ví dụ: Với thiết bị NI PXI-7831R có dải điện áp ±10V và ADC 16-bit, giá trị số bạn nhận được (gọi là `Binary Code`) sẽ nằm trong khoảng -32768 đến 32767. Công thức chuyển đổi ngược lại là: `Điện áp = (Binary Code / 32768) * 10.0V`. Việc chuyển đổi này thường được thực hiện trên Host VI.
- Analog Output (AO): Ngược lại, để xuất ra một mức điện áp, bạn cần ghi một **số nguyên** vào kênh AO. Bộ chuyển đổi DAC (Digital-to-Analog Converter) sẽ tạo ra mức điện áp tương ứng.
Ví dụ: Cũng với thiết bị trên, để xuất ra điện áp 5V, bạn phải tính toán và ghi giá trị số nguyên: `Binary Code = (5.0V * 32768) / 10.0V = 16384` vào I/O Node.