II. Giới thiệu môi trường lập trình ISE.
CHƯƠNG IV: NGÔN NGỮ VHDL 4.1 Giới thiệu chung về ngôn ngữ VHDL
4.2.3. Các biểu thức và toán tử
Các biểu thức trong VHDL hoàn toàn tương tự như các biểu thức trong các ngơn ngữ lập trình khác. Một biểu thức là một công thức kết hợp các đa thức với các toán tử. Các đa thức bao gồm tên các đối số, ký hiệu bằng chữ, các hàm gọi và
các dấu ngoặc của biểu thức. Các toán tử được liệt kê trong bảng 4.1 theo thứ tự ưu tiên.
Bảng 4.1. Các toán tử và thứ tự ưu tiên
Ưu tiên cao nhất: **; abs; not; *; /; mod; rem; + (sign); – (sign) +; –; &;
=; /=; <; <=; >; >=;
Ưu tiên thấp nhất: And; or; nand; nor; xor;
Các toán tử logic and, or, nand, nor, xor và not hoạt động trên các giá trị kiểu bit hoặc là boolean, và trên các mảng 1 chiều của các kiểu đó. Đối với các tốn hạng là mảng (array), sự hoạt động tuân theo các phần tử tương ứng của từng mảng, thường thì độ lớn của mảng có cùng độ lớn với kết quả. Đối với các toán hạng bit và boolean, các toán tử and, or, nand và nor là các toán tử “ngắn mạch” (short-circuit),
do chúng chỉ ưu tiên hơn so với toán hạng bên phải của chúng nếu tốn hạng bên trái khơng xác định được kết quả. Do and và nand chỉ ưu tiên hơn so với toán hạng bên phải nếu toán hạng bên trái là “true” hoặc “1”, còn or và nor chỉ ưu tiên hơn
toán hạng bên phải nếu toán hạng bên trái là “false” hoặc “0”.
Các toán tử quan hệ =, /=, <, <=, > và >= phải có các tốn hạng ở hai đầu cùng kiểu, và thường là cho các kết quả theo kiểu boolean. Các tốn tử bằng (= và /=) có thể có các tốn hạng theo bất kỳ kiểu nào. Đối với các toán tử so sánh, hai giá trị bằng nhau nếu tất cả các phần tử tương ứng của chúng bằng nhau. Các tốn tử cịn lại phải có các tốn hạng có kiểu vơ hướng hoặc mạng một chiều của các kiểu riêng biệt.
Các toán tử dấu (+ và -), các toán tử cộng (+) và trừ (-) có cách sử dụng của chúng trên các tốn hạng dạng số. Tốn tử móc xích (&) làm việc trên các mảng
một chiều thành dạng một mảng mới với nội dung của toán hạng bên phải kế tiếp toán hạng trái. Nó có thể móc nối một phần tử đơn vào một mảng hoặc hai phần tử
độc lập để thành một mảng mới. Tốn tử móc xích sử dụng cho hầu hết các xâu.
Các toán tử nhân (*) và chia (/) làm việc với các số nguyên, số dấu phẩy động và các kiểu đơn vị vật lý. Các toán tử chia lấy phần nguyên (mod- modulus) và chia lấy phần dư (rem - remainder) chỉ làm việc với kiểu số nguyên. Toán tử giá trị tuyệt
đối (abs) chỉ làm việc với bất kỳ kiểu số nào. Cuối cùng tốn tử mũ (**) có thể làm
việc với kiểu số nguyên và toán hạng trái của kiểu số dấu phẩy động, nhưng phải có một số nguyên ở toán hạng phải, cịn tốn hạng phải mà âm chỉ được phép nếu toán hạng trái là một số dấu phẩy động dạng số.