给我一段数字频率计的verilog代码
时间: 2023-07-29 16:10:27 浏览: 48
以下是一个简单的数字频率计的 Verilog 代码:
```
module freq_counter(
input clk,
input reset,
input enable,
output reg [31:0] count
);
reg [31:0] count_reg;
reg [31:0] count_next;
always @(posedge clk) begin
if (reset) begin
count_reg <= 0;
end else if (enable) begin
count_reg <= count_next;
end
end
always @(posedge clk) begin
if (reset) begin
count_next <= 0;
end else if (enable) begin
count_next <= count_reg + 1;
end
end
assign count = count_reg;
endmodule
```
该模块包含一个时钟 `clk`、一个复位信号 `reset`、一个使能信号 `enable` 以及一个输出计数值的 `count` 信号。每当 `enable` 信号为高电平时,计数器会开始计数,每个时钟周期增加 1。当 `reset` 信号为高电平时,计数器归零。计数值存储在一个寄存器 `count_reg` 中,并在下一个时钟上升沿时更新为下一个计数值 `count_next`。最终的计数值通过 `assign` 语句赋值给 `count` 输出信号。