Chương3 Loại dữ liệu trong Verilog 3.1Khái quát
3.9.4 Đặc tả tham số (specify parameter) 1Giớ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à giá trị trì hoãn (delay), nhưng nó có thể xuất hiện trong bất kì biểu thức nào
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 ngoà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 ngoà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