【发布时间】:2018-04-24 09:45:33
【问题描述】:
我想构建一个 Verilog 模块,以便用户可以通过模块参数选择某些输入时钟信号的灵敏度。例如,我编写了以下计数器,它可以对参数clockEdge 选择的 posedge 或 negedge 进行计数。
module Counter (clk, reset, value);
parameter clockEdge = 1; // react to rising edge by default
input clk;
input reset;
output reg [7:0] value;
generate
if(clockEdge == 1) begin
always @(posedge clk or posedge reset) begin
if (reset) begin
value <= 0;
end else begin
value <= value + 1;
end
end
end else begin
always @(negedge clk or posedge reset) begin
if (reset) begin
value <= 0;
end else begin
value <= value + 1;
end
end
end
endgenerate
endmodule
这个原则是有效的,但是我不喜欢这两种变体的实现基本上都是复制和粘贴。什么是没有重复的较短版本?
【问题讨论】:
标签: verilog