VHDL cũng cho phép người dùng tự định nghĩa các kiểu dữ liệu. Hai loại kiểu
dữ liệu người dùng định nghĩa được chỉ ra dưới đây bao gồm integer và enumerated.
Kiểu integer người dùng định nghĩa:
TYPE integer IS RANGE -2147483647 TO +2147483647; -- Thực ra kiểu này đã được định nghĩa trước bởi kiểu INTEGER.
TYPE natural IS RANGE 0 TO +2147483647;
-- Thực ra kiểu này được đã định nghĩa trước bởi kiểu NATURAL. TYPE my_integer IS RANGE -32 TO 32;
-- Một tập con các số integer mà người dùng định nghĩa.
TYPE student_grade IS RANGE 0 TO 100;
-- Một tập con các số nguyên hoặc số tự nhiên người dùng định nghĩa.
_ Các kiểu đếm người dùng định nghĩa:
TYPE bit IS ('0', '1');
-- Được định nghĩa trước bởi kiểu BIT
TYPE my_logic IS ('0', '1', 'Z');
-- Một tập con của std_logic mà người dùng định nghĩa
TYPE bit_vector IS ARRAY (NATURAL RANGE <>) OF BIT; -- đã được định nghĩa trước bởi BIT_VECTOR.
-- RANGE <> được sủ dụng để chỉ thị rằng các mức.không giới hạn.
-- NATURAL RANGE <>, on the other hand, indicates that the only -- restriction is that the range must fall within the NATURAL
-- range.
TYPE state IS (idle, forward, backward, stop);
Chương 2: Tìm hiểu ngôn ngữ VHDL 37
TYPE color IS (red, green, blue, white); -- Kiểu dữ liệu liệt kê khác.
Việc mã hóa các kiểu liệt kê được thực hiện một cách tuần tự và tựđộng.
Ví dụ: Cho kiểu màu như ở trên, để mã hóa cần 2 bit ( có 4 trạng thái),
bắt đầu ’00’ được gán cho trạng thái đầu tiên ( red), ‘01’ được gán cho trạng
thái thứ hai (green), ‘10’ kế tiếp (blue) và cuối cùng là trạng thái ‘11’ (while).