VII. CÁC KIỂU DỮ LIỆU TRONG VHDL
j. Kiểu liệt kê
Kiểu liệt kê là một công cụ hỗ trợ đắc lực cho quá trình thiết kế bằng ngôn ngữ VHDL. Người thiết kế có thể dùng các loại dữ liệu liệt kê đại diện chính xác cho các giá trị chính xác được yêu cầu cho phép toán chỉ định. Tất cả các giá trị của kiểu dữ liệu liệt kê do người dùng định nghĩa. Các giá trị này có thể là tên hoặc các hằng số đặc tính đơn, ví dụ cho tên là x, abc, … hằng số đặc tính đơn là ‘X’, ‘1’ và ‘0’.
Loại dữ liệu liệt kê cho hệ thống có 4 giá trị mô phỏng như sau: TYPE fourval IS („X‟, „0‟, „1‟, „Z‟);
Một ứng dụng có dùng kiểu liệt kê là minh hoạ cho tất cả các lệnh của vi xử lý. Ví dụ 2-48 kiểu liệt kê cho một vi xử lý đơn giản như sau:
Ví dụ 2-48:
TYPE instruction IS (add, sub, lda, ldb, sta, stb, outa, xfr); Và mô hình cho hệ thống vi xử lý:
PACKAGE instr IS
TYPE instruction IS (add, sub, lda, ldb, sta, stb, outa, xfr); END instr;
USE work.instr.ALL; ENTITY mp IS
PORT (instr: IN instruction;
addr: IN INTEGER;
data: INOUT INTEGER);
END mp;
ARCHITECTURE mp OF mp IS BEGIN
PROCESS (instr)
TYPE regtype IS ARRAY (0 to 255 ) OF INTEGER; VARIABLE a, b: INTEGER;
CASE instr IS
WHEN lda => a:= data; -- load a accumulator WHEN ldb => b:= data; -- load b accumulator WHEN add => a:= a + b; -- add accumulator WHEN sub => a:= a - b; -- subtract accumulator WHEN sta => reg(addr) := b; -- put b accu in reg array WHEN out => data<= a ; -- output a accumulator WHEN xfr => a:= b ; -- transfer b to a
END CASE;
END PROCESS ; END mp;
Mô hình nhận một chuỗi lệnh (instr), một địa chỉ (addr) và một chuỗi dữ liệu (data). Dựa vào giá trị của instr được liệt kê mà lệnh tương ứng được thực hiện. Phát biểu CASE được dùng để lựa chọn lệnh để thực hiện. Phát biểu được thực hiện và sau đó quá trình sẽ đợi cho đến lệnh kế.