Các khai báo vòng lặp

Một phần của tài liệu TIẾP CẬN CÔNG NGHỆ FPGA (Trang 73 - 75)

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.4.4. Các khai báo vòng lặp

VHDL có một khai báo vịng lặp cơ bản có thể sử dụng các vòng lặp while và for giống như trong các ngơn ngữ lập trình khác. Cú pháp của một khai báo vòng lặp là:

[ nhãn vòng lặp : ]

[ lược đồ lặp ] loop

chuỗi các khai báo

end loop [ nhãn vòng lặp ];

lược đồ lặp ::=

while điều kiện

| for đặc điểm tham số lặp

đặc điểm tham số lặp định danh in phạm vi đơn

Nếu lược đồ lặp bị bỏ qua, chúng ta sẽ bị rơi vào vịng lặp vơ tận. Ví dụ về một vịng lặp vơ tận:

loop

do_something;

end loop;

Lược đồ lặp while cho phép kiểm tra một điều kiện để đánh giá trước mỗi một vòng lặp. Vòng lặp chỉ được thực hiện nếu việc kiểm tra được đánh giá là đúng (true). Nếu việc kiểm tra là sai (false), thì khai báo vịng lặp sẽ kết thúc. Ví dụ như sau:

while index < length and str(index) /= ‘’ loop

index := index + 1;

end loop;

Lược đồ lặp for cho phép chỉ định một số cố định vòng lặp. Đặc điểm tham số lặp được mô tả là một đối tượng sẽ thực hiện với giá trị đúng trong phạm vi đã cho

đối với mỗi vòng lặp. Cùng với các khai báo đóng trong vịng lặp, đối tượng được

coi như là hằng số, và do vậy không thể gán được. Ví dụ như:

for item in 1 to last_item loop

table(item) := 0;

Có hai khai báo bổ sung có thể sử dụng bên trong vịng lặp để kiểm tra mẫu cơ sở của vòng lặp. Khai báo “next” kết thúc việc kích hoạt vịng lặp hiện thời và bắt

đầu vòng lặp con. Khai báo “exit” kết thúc việc kích hoạt vịng lặp hiện thời và kết

thúc ln vịng lặp. Cú pháp của các khai báo đó là:

khai báo next ::= next [ nhãn vòng lặp ] [ when điều kiện ]; khai báo exit ::= exit [ nhãn vòng lặp ] [ when điều kiện ];

Nếu nhãn vòng lặp bị bỏ qua, thì khai báo được áp dụng cho vịng lặp gần nó nhất, ngược lại nó được gán cho tên của vòng lặp. Nếu mệnh đề when tồn tại nhưng

điều kiện lại sai (false), thì vịng lặp sẽ tiếp tục bình thường.

Ví dụ:

for i in 1 to max_str_len loop

a(i) := buf(i);

exit when buf(i) = NUL; end loop;

Ví dụ:

outer_loop : loop inner_loop : loop

do_something;

next outer_loop when temp = 0;

do_something_else;

end loop inner_loop; end loop outer_loop;

Một phần của tài liệu TIẾP CẬN CÔNG NGHỆ FPGA (Trang 73 - 75)

Tải bản đầy đủ (PDF)

(198 trang)