Các đóng gói ( Packages ).

Một phần của tài liệu Sổ tay lập trình VHDL (Trang 66 - 68)

b. Thủ tục và các đặc trưng của chúng.

3.8.Các đóng gói ( Packages ).

Bạn có thể đóng gói để cất các chương trình con, các kiểu dữ liệu, các

hằng ...thường dùng để sử dụng chúng trong các thiết kế khác. Một package

bao gồm hai phần chính: Phần khai báo và phần thân package, phần khai báo

chỉ ra giao tiếp cho package . Cú pháp của khai báo package như sau:

package package _nameis

{package _declarative_item}

end [package _name];

Phần package _declarative_item có thể là bất kỳ kiểu nào sau đây:

- Khai báo kiểu.

- Khai báo các kiểu con. - Khai báo tín hiệu. - Khai báo các hằng.

- Khai báo bí danh ALIAS. - Khai báo các thành phần.

- Khai báo các chương trình con. - Các mệnh đề USE.

Chú ý ! khai báo tín hiệu trong package có một số vấn đề cần lưu ý trong khi tổng hợp, bởi vì một tín hiệu không thể được chia sẻ bởi hai Entity. Vì vậy nếu muốn dùng chung khai báo tín hiệu bạn phải khai báo tín hiệu này là tín hiệu toàn cục.

Phần thân của package chỉ ra hoạt động thực tế của một package. Phần thân của package phải luôn có tên trùng với phần khai báo. Cú pháp của khai báo này như sau:

package bodypackage _nameis

{package _body_declarative-item}

end [package _name] ;

Phần package _body_declarative-item có thể bao gồm:

- Khai báo kiểu.

- Khai báo các kiểu con. - Khai báo các hằng - Mệnh đề use.

- Thân các chương trình con. Ví dụ:

library IEEE;

use IEEE.NUMERIC_BIT.all;

package PKG is

subtype MONTH_TYPE is integer range 0 to 12;

subtype DAY_TYPE is integer range 0 to 31;

subtype BCD4_TYPE is unsigned ( 3 downto 0);

subtype BCD5_TYPE is unsigned ( 4 downto 0) ;

constant BCD5_1: BCD5_TYPE : = b"0_0001" ;

constant BCD5_7: BCD5_TYPE : = b"0_0111" ;

function BCD_INC (L : in BCD4_TYPE) return BCD5_TYPE; (adsbygoogle = window.adsbygoogle || []).push({});

end PKG;

package body PKG is

function BCD_INC (L :in BCD4_TYPE) return BCD5_TYPE is

variable V,V1, V2 : BCD5_TYPE; begin V1 : = L + BCD5_1; V2 : = L + BCD5_7; case V2(4) is when ' 0 ' => V : = V1; when ' 1 ' => V : = V2; end case;

return (V);

end BCD_INC;

end PKG;

Một phần của tài liệu Sổ tay lập trình VHDL (Trang 66 - 68)