Chương3 Loại dữ liệu trong Verilog
3.9.4 Đặc tả tham số (specify parameter) 1 Giới thiệu
3.9.4.1 Giới thiệu
Từ khóa specparam khai báo nó là một loại ñặc biệt của tham số
(parameter) chỉ dùng cho mục đích cung cấp giá trị ñịnh thời (timing) và
Lâm Đức Khải University of Information Technology Page 83 mà biểu thức đó khơng ñược gán ñến một tham số (parameter) và biểu thức
đó cũng khơng phải là phần mơ tả độ rộng trong một khai báo. Những tham
số ñặc tả ( specparams) ñược phép khai báo bên trong khối ñặc tả (specify block) hoặc bên trong một module chính.
Một tham số ñặc tả (specify parameter) khai báo bên ngồi một khối
đặc tả (specify block) thì cần được khai báo trước khi nó được sử dụng. Giá
trị mà được gán đến một tham số đặc tả có thể là một biểu thức hằng số bất kì. Một tham số đặc tả có thể ñược dùng như là phần của một biểu thức
hằng số cho một khai báo tham số ñặc tả kế tiếp. Không giống như một
tham số module (module parameter), một tham số đặc tả khơng thể được
gán lại giá trị từ bên trong ngơn ngữ Verilog, nhưng nó có thể được gán lại giá trị thông qua tập tin dữ liệu SDF ( Standard Delay Format).
Những tham số ñặc tả (specify parameter) và tham số module
(module parameter) thì khơng thể thay thế cho nhau. Ngoài ra, tham số module (module parameter) khơng thể được gán bởi một biểu thức hằng số mà có chứa tham số đặc tả ( specify parameter). Bảng 4.7 tóm tắt sự khác
nhau giữa hai loại khai báo tham số.
Specparams (tham số ñặc tả) Parameters ( tham số module) Sử dụng từ khóa specparam Sử dụng từ khóa parameter Cần được khai báo bên trong một
module hoặc một khối ñặc tả (
specify block)
Cần được khai báo bên ngồi những khối ñặc tả ( specify block)
Lâm Đức Khải University of Information Technology Page 84 module hoặc một khối ñặc tả (
specify block)
những khối ñặc tả (specify block).
Có thể được gán bởi tham số đặc tả
(specparam) và tham số module (parameter).
Không thể ñược gán bởi specparams.
Sử dụng tập tin dữ liệu SDF ñể gán ñè giá trị cho tham số ñặc tả.
Dùng phát biểu defparam hoặc phép gán giá trị tham số cho instance của module ñể gán ñè giá trị cho tham
số.
Một tham số đặc tả (specify parameter) có thể được mơ tả độ rộng. Độ rộng của những tham số ñặc tả cần tuân theo những qui luật sau:
• Một khai báo tham số đặc tả mà khơng có mơ tả ñộ rộng thì mặc ñịnh sẽ là
ñộ rộng của giá trị cuối cùng được gán đến nó, sau khi có bất kì giá trị nào
gán đè lên nó.
• Một khai báo tham số đặc tả mà có mơ tả độ rộng thì độ rộng của nó sẽ theo
độ rộng khai báo. Độ rộng sẽ khơng bị ảnh hưởng bởi bất kì giá trị nào được
gán đè lên nó.
Việc chọn bit hay một phần của tham số cục bộ mà loại dữ liệu của nó khơng phải là real thì được phép.
Ví dụ:
specify
Lâm Đức Khải University of Information Technology Page 85
specparam tRise_control = 40, tFall_control = 50; endspecify
Những dịng ở giữa những từ khóa specify và endspecify là ñể khai
báo bốn tham số ñặc tả. Dịng đầu tiên khai báo hai tham số ñặc tả
tRise_clk_q và tFall_clk_q với giá trị tương ứng là 150 và 200. Dòng thứ hai khai báo hai tham số ñặc tả tRise_control và tFall_control với giá trị
tương ứng là 40 và 50. Ví dụ:
module RAM16GEN (output [7:0] DOUT, input [7:0] DIN, input
[5:0] ADR,
input WE, CE);
specparam dhold = 1.0; specparam ddly = 1.0; parameter width = 1;
parameter regsize = dhold + 1.0; // Không hợp lệ - không thể gán
tham số ñặc tả (specparam) ñến một tham số (parameter)
endmodule