Khai báo tham số

Một phần của tài liệu Thiết kế mạch số với vhdl & verilog pps (Trang 68 - 70)

Chương3 Loại dữ liệu trong Verilog 3.1Khái quát

3.9 Khai báo tham số

3.9.1Giới thiệu

Trong Verilog HDL, loại dữ liệu tham số (parameter) không thuộc loại dữ liệu biến (variables: reg, integer, time, real, realtime) cũng như loại dữ liệu net. Dữ liệu tham số không phải là biến mà chúng là hằng số. Có hai loại tham số: tham số module (module parameter), và tham số ñặc tả (specify parameter). Việc khai báo trùng tên giữa net, biến hay tham số là không ñược phép.

Cả hai loại tham số trên ñều ñược phép khai báo ñộ rộng. Mặc ñịnh,

parameters và specparams sẽ có ñộ rộng ñủ ñể chứa giá trị của hằng số, ngoại trừ khi tham số ñó có khai báo ñộ rộng.

3.9.2Tham số module (module parameter)

Tham số module có hai loại khai báo: parameter và localparameter.

3.9.2.1 Parameter

3.9.2.1.1Giới thiệu

Giá trị của khai báo parameter trong một module có thể ñược thay ñổi từ bên ngoài module ñó bằng phát biểu defparam hoặc phát biểu gọi instance của module ñó. Thông thường khai báo parameter ñược dùng ñể mô tả ñịnh thời hoặc ñộ rộng của biến.

Lâm Đức Khải University of Information Technology Page 69

3.9.2.1.2Cú pháp

parameter_declaration ::=

parameter [ signed ] [ range ] list_of_param_assignments

| parameter parameter_type list_of_param_assignments

parameter_type ::=

integer | real | realtime | time

list_of_param_assignments ::= param_assignment { , param_assignment } param_assignment ::= parameter_identifier = constant_mintypmax_expression range ::= [ msb_constant_expression : lsb_constant_expression ] 3.9.2.1.3Ví dụ

parameter msb = 7; // ñịnh nghĩa tham số msb có giá trị hằng số là 7 parameter e = 25, f = 9; // ñịnh nghĩa hai hằng số

parameter r = 5.7; // khai báo r là một hằng số thực parameter byte_size = 8,

Lâm Đức Khải University of Information Technology Page 70 byte_mask = byte_size - 1;

parameter average_delay = (r + f) / 2; parameter signed [3:0] mux_selector = 0; parameter real r1 = 3.5e17;

parameter p1 = 13'h7e;

parameter [31:0] dec_const = 1'b1; // giá trị ñược ñổi sang 32 bit parameter newconst = 3'h4; // ngụ ý là tham số này có ñộ rộng [2:0] parameter newconst = 4; // ngụ ý là tham số này có ñộ rộng tối thiểu là 32 bit.

Một phần của tài liệu Thiết kế mạch số với vhdl & verilog pps (Trang 68 - 70)