写一个计数器 有清零端(低电平有效)使能端 当使能为高时开始计数,当使能为低时暂停计数
时间: 2024-02-21 10:59:03 浏览: 13
以下是一个基于Verilog语言的计数器示例代码,其中包含清零端和使能端:
```verilog
module counter (
input clk, // 时钟信号
input en, // 使能信号
input rst_n, // 清零信号(低电平有效)
output reg [7:0] count // 计数器输出
);
reg [7:0] count_reg; // 计数器寄存器,保存计数器的值
always @(posedge clk or negedge rst_n) begin
if (~rst_n) begin
count_reg <= 0;
end else if (en) begin
count_reg <= count_reg + 1;
end
end
assign count = en ? count_reg : count;
endmodule
```
在上述代码中,我们使用了一个寄存器`count_reg`来保存计数器的值。当`rst_n`信号为低时,计数器被清零;当`en`信号为高时,计数器开始计数,此时计数器的值被更新到寄存器中;当`en`信号为低时,计数器暂停计数,此时计数器的值被保持不变。在模块的输出中,我们使用了一个三目运算符来控制输出,即当`en`为高时输出`count_reg`的值,否则输出上一次的计数值。这样,在使能端为低时,计数器暂停计数并保持当前值,直到下一次使能端为高时继续计数。注意,在清零端使用了`~rst_n`来表示低电平有效的清零信号。