是否可以根据参数的值在Verilog中创建条件硬件?像这样的东西
module test #(
parameter param = 1
)(
input wire clk
);
reg[3:0] counter = 0;
always @(posedge clk) begin
`ifdef (param == 0) // <-----
counter <= counter + 1'b1;
// ... more hardware here
`else
counter <= counter - 1'b1;
// ... a different hardware here
`endif
end
endmodule // test
编辑:
实际上有generate
块是由于这个原因发明的:
module test
#(parameter param = 1)
(input wire clk);
reg [3:0] counter = 0;
generate
if (param == 0)
always @(posedge clk) begin
counter <= counter + 1'b1;
// ... more hardware here
end
else
always @(posedge clk) begin
counter <= counter - 1'b1;
// ... a different hardware here
end
endgenerate
endmodule // test
是的,您可以对参数进行调节。只需使用它们就像在其他任何条件上一样(尽管你也可以在程序块之外使用它们来调整整个实例化,如果需要的话):
module test #(parameter param = 1)
(
input wire clk
);
reg[3:0] counter = 0;
always @(posedge clk) begin
if (param == 0) begin
counter <= counter + 1'b1;
end
else begin
counter <= counter - 1'b1;
end
end
endmodule // test