Chương3 Loại dữ liệu trong Verilog
3.9.2.1.4.1 Phát biểu defparam
Sử dụng phát biểu defparam, giá trị tham số có thể được thay đổi bên trong instance của module thơng qua việc sử dụng tên phân cấp của tham số.
Tuy nhiên, phát biểu defparam được mơ tả trong một instance hoặc một dãy các instance thì sẽ khơng làm thay ñổi giá trị tham số trong những instance khác của cùng một module.
Biểu thức bên phải của phép gán defparam là biểu thức hằng số chỉ bao gồm số và những tham số tham chiếu ñã ñược khai báo trước đó trong cùng module với phát biểu defparam.
Phát biểu defparam ñặc biệt hữu dụng vì ta có thể nhóm tất cả các
phép gán thay ñổi giá trị các tham số của các module khác nhau chỉ trong một module.
Trong trường hợp có nhiều phát biểu defparam cho một tham số duy nhất thì giá trị tham số đó sẽ lấy giá trị của phát biểu defparam sau cùng.
Lâm Đức Khải University of Information Technology Page 72 Nếu phát biểu defparam của một tham số ñược khai báo trong nhiều file
khác nhau thì giá trị của tham số đó sẽ khơng được xác định. Ví dụ: module top; reg clk; reg [0:4] in1; reg [0:9] in2; wire [0:4] o1; wire [0:9] o2; vdff m1 (o1, in1, clk); vdff m2 (o2, in2, clk); endmodule
module vdff (out, in, clk); parameter size = 1, delay = 1; input [0:size-1] in;
input clk;
output [0:size-1] out;
Lâm Đức Khải University of Information Technology Page 73 always @(posedge clk)
# delay out = in;
endmodule module annotate; defparam top.m1.size = 5, top.m1.delay = 10, top.m2.size = 10, top.m2.delay = 20; endmodule
Trong ví dụ trên, module annotate có phát biểu defparam, giá trị từ phát biểu này sẽ ñè lên những giá trị tham số size và delay trong instance
m1 và m2 trong module top. Hai module top và annotate ñều ñược xem
như module top-level.