Các hàm (function );

Một phần của tài liệu luận văn tìm hiểu ngôn ngữ vhdl viết chương trình thiết kê mạch cộng 8 bit song song cho 2 toán hạng (Trang 78 - 80)

- TOP làm ột generic.

Ch ương 8: CÁC CHƯƠNG TRÌNHCON VÀ QUÁ TRÌNH TRÀN

8.1.1 Các hàm (function );

Các hàm dùng mô tả các thuật toán tuần tự trả về 1 giá trị . Giá trị này trả về cho chương trình gọi bằng phát biểu return , được sử dụng cho các hàm xác định và các hàm có kiểu chuyển biến . Sau đây là ví dụ 1 thân hàm :

function LARGEST ( TOTAL_NO : INTEGER ; SET : PATTERN ) return REAL is

--PATTERN is elsewhere defined to be a type of 1-D array of -- non_negative floating point value .

variable PATTERN_VALUE : REAL :=0; begin

for K in SET’range loop

if SET(K) > RETURN_VALUE then RETURN_VALUE := SET (K); end if;

end loop;

return RETURN_VALUE; end LARGEST;

Biến RETURN_VALUE được đưa vào giá trịđầu là 0.0 trong thời gian hàm được gọi . Nó không còn tồn tại sau điểm cuối của hàm .

Cú pháp chung của chương trình con xác định cho thân hàm là :

[ pure | impure ] function function_name ( parameter_list) return return_type

Một hàm nguyên mẫu (Pure function) là giá trị trả về tương ứng mỗi thời gian mà hàm gọi đến tập hợp số

thực tương ứng . Impure function là sự trả về giá trị khác với mỗi thời gian mà nó gọi đến tập hợp số thực tương ứng .

Ví dụ NOW là 1 impure function bởi vì nó trả về giá trị khác với khi gọi tại thời điểm khác . Nếu không có từ khóa pure hay impure thì hàm đó mặc nhiên được xem là pure function .

Parameter_list mô tả danh sách của các tham số hình thức cho function . Mode của các tham số này chỉ

cho phép là mode in , ngoài ra chỉ có đối tượng constant và tín hiệu mới cho vào các tham số , lớp đối tượng mặc nhiên là constant. Ví dụ trong function LARGEST , TOTAL_NO là constant và giá trị của nó không thể

thay đổi trong thân function .

Một ví dụ khác của thân function , xem phần sau . Function này trả về là true nếu xuất hiện cạnh lên trên tín hiệu input . Function này là 1 pure function :

pure function VRISE ( signal CLOCK_NAME : BIT ) return BOOLEAN is begin

return CLOCK_NAME =’1’ and CLOCK_NAME ‘ event ; end VRISE ;

Sau đây là 2 ví dụ về impure function :

impure function RANDOM (SEED :REAL) return REAL is variable NUM : REAL;

attribute FOREIGN of RANDOM : function is ‘NUM = rand (seed)’; begin

return NUM; end RANDOM;

impure function USE (TO_ALLOCATE : POSITIVE) return POSITIVE is --ALLOCATE is a shared variable declared elsewhere , but

--visible to this function . begin

ALLOCATE := ALLOCATE + TO_ALLOCATE ; Return ALLOCATE ;

end function USE; -- keywork function after end is optional.

Function gọi là 1 biểu thức và có thể sử dụng trong biểu thức lớn . Ví dụ :

SUM := SUM+ LARGEST (MAX_COINS, COLLECTION ); Function gọi có dạng là :

Function _ name ( list_of_actuals)

Các số thực có thể xácđịnh bởi vị trí ( số thực đầu tiên tương ứng với số hình thức đầu tiên , số thực thứ

hai tương ứng với số hình thức thứ hai và cứ thế tiếp tục ) hoặc xác định bằng liên kết ( sự liên kết của các số

thực và số hình thức xác định 1 cách rõ ràng ). Function gọi trong ví dụ trước , viết lại theo dạng liên kết :

LARGEST ( SET => COLLECTION, TOTAL_NO => MAX_COINS)

Các hàm thông thường cho việc biến đổi kiểu . sau đây là 1 ví dụ của hàm biến đổi 1 giá trị từ kiểu STD_ULOGIC tới giá trị kiểu CHARACTER :

function TO_CHARACTER ( ARG : STD_ULOGIC ) return CHARACTER is

begin

case ARG is

when ‘U’ => return ‘U’; when ‘X’ => return ‘X’; when ‘0’ => return ‘0’; when ‘1’ => return ‘1’; when ‘Z’ => return ‘Z’; when ‘W’ => return ‘W’; when ‘L’ => return ‘L’; when ‘H’ => return ‘H’; when ‘-’ => return ‘-’; end case; end TO_CHARACTER ; Function gọi có dạng : TO_CHARACTER ( STD_ULOGIC(‘U’))

Hàm trả về ký tữ ‘U’ . Ngoài ra nó còn có khả năng biến đổi kiểu nhiều hơn , sử dụng bởi bảng look_up . Sau đây là hàm TO_CHARACTER mô tả bảng look_up .

type LOOK_UP is array (STD_ULOGIC) of CHARACTER; constant TO_CHARACTER : LOOK_UP := (‘U’ => ‘U’, ‘X’ =>’X’, ‘1’=>’1’,’Z’ =>’Z’,’W’ =>’W’,’L’ => ‘L’,’H’=>’H’,’-‘=>’-‘); Sau đây là biểu thức :

TO_CHARACTER ( STD_ULOGIC (‘U’))

Cho ra ký tự ‘U’ . Chú ý trong cả 2 hệ thống cách gọi cho việc thực hiện biến đổi kiểu là không đổi.

Một phần của tài liệu luận văn tìm hiểu ngôn ngữ vhdl viết chương trình thiết kê mạch cộng 8 bit song song cho 2 toán hạng (Trang 78 - 80)

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

(103 trang)