module cnt_1Hz( input sys_clk, input sys_rst_n, output OneHertz, output [2 : 0] en );1赫兹计数器system verilog代码
时间: 2024-03-26 21:35:19 浏览: 136
verilog 计数器编码
以下是一个使用SystemVerilog实现的1赫兹计数器的代码:
```systemverilog
module cnt_1Hz(
input logic sys_clk,
input logic sys_rst_n,
output logic OneHertz,
output logic [2:0] en
);
logic [24:0] count = 0;
logic tick = 0;
always_ff @(posedge sys_clk, negedge sys_rst_n) begin
if (!sys_rst_n) begin
count <= 0;
tick <= 0;
end else begin
if (count == 0) begin
tick <= ~tick;
count <= 25_000_000; // 1 second at 25 MHz
end else begin
count <= count - 1;
end
end
end
always_ff @(posedge sys_clk, negedge sys_rst_n) begin
if (!sys_rst_n) begin
OneHertz <= 0;
en <= 0;
end else begin
OneHertz <= tick;
en <= 3'b111;
end
end
endmodule
```
这个代码的工作原理与之前的Verilog实现相同。使用`always_ff`块来描述时钟边沿触发的逻辑,同时使用`logic`关键字声明变量。请注意,在SystemVerilog中,可以使用下划线来增加数字的可读性,例如在这里我们使用`25_000_000`代替Verilog中的`25000000`。
阅读全文