IX. CHƯƠNG TRÌNH CON VÀ GÓ
c. Hàm phân tích:
Hàm phân tích được sử dụng để trả về giá trị của một tín hiệu khi tín hiệu được kích bởi nhiều driver. Sẽ không hợp lệ trong VHDL khi có một tín hiệu với nhiều driver mà không có hàm phân tích gán cho tín hiệu đó. Một hàm phân tích được gọi mỗi khi một driver của tín hiệu có một sự kiện xảy ra. Hàm phân tích sẽ được thực thi và sẽ trả về một giá trị duy nhất trong tất cả các giá trị của các driver; giá trị này sẽ là giá trị mới của tín hiệu.
Trong các trình mô phỏng điển hình, các hàm phân tích được cài đặt sẵn hoặc cố định. Với VHDL người thiết kế có khả năng định nghĩa bất kỳ loại hàm phân tích nào mong muốn, wired-or, wired-and, giá trị trung bình tín hiệu, …
Một hàm phân tích có một ngõ vào đối số duy nhất và trả về một giá trị duy nhất. Đối số ngõ vào duy nhất này bao gồm một dãi ràng buộc các giá trị của driver của tín hiệu mà hàm phân tích được gán. Nếu tín hiệu có hai driver, dải không ràng buộc sẽ có hai phần tử; nếu tín hiệu có ba driver, dải không ràng buộc sẽ có ba phần tử. Hàm phân tích sẽ xem xét các giá trị của tất cả các driver và trả về một giá trị duy nhất gọi là giá trị phân tích (resolved value) của tín hiệu.
Ta hãy khảo sát một hàm phân tích đối với kiểu fourval đã được sử dụng trong các ví dụ hàm chuyển đổi. Khai bao kiểu cho fourval như sau:
TYPE fourval IS (X, L, H, Z);
4 giá trị phân biệt được khai báo biểu diễn tất cả các giá trị có thể có mà tín hiệu có thể chứa. Giá trị L biểu diễn logic 0, giá trị H logic 1, giá trị Z biểu diễn điều kiện tổng trở cao, giá trị X biểu diễn điều kiện chưa biết, trong đó giá trị có thể biểu diễn logic 0 hoặc logic 1 (nghĩa là tùy định) nhưng ta không chắc là giá trị nào. Các điều kiện này có thể xảy ra khi hai driver đang kích một tín hiệu – một driver kích với logic H và driver kia kích với logic L.
Liệt kê vào theo thứ tự độ mạnh, với yếu nhất ở trên cùng, các giá trị này như sau.
Z – yếu nhất – H, L và X có thể ghi đè.