verilog分频器50mhz分成1hz,10hz代码,并写出测试代码
时间: 2024-03-17 09:43:22 浏览: 631
下面是一个简单的 Verilog 分频器模块,将 50MHz 信号分成 1Hz 和 10Hz 信号输出:
```verilog
module clk_divider (
input clk,
output reg clk_1hz,
output reg clk_10hz
);
reg [27:0] counter_1hz = 0;
reg [25:0] counter_10hz = 0;
always @(posedge clk) begin
// 1Hz 分频器
counter_1hz <= counter_1hz + 1;
if (counter_1hz >= 25000000) begin
counter_1hz <= 0;
clk_1hz <= ~clk_1hz;
end
// 10Hz 分频器
counter_10hz <= counter_10hz + 1;
if (counter_10hz >= 2500000) begin
counter_10hz <= 0;
clk_10hz <= ~clk_10hz;
end
end
endmodule
```
测试代码:
```verilog
`timescale 1ns/1ns
module clk_divider_tb;
reg clk;
wire clk_1hz;
wire clk_10hz;
clk_divider dut (
.clk(clk),
.clk_1hz(clk_1hz),
.clk_10hz(clk_10hz)
);
initial begin
clk = 0;
#10;
repeat (100) begin
#10;
clk = ~clk;
end
$finish;
end
endmodule
```
此测试代码将会模拟 100 个时钟周期,每个时钟周期为 10ns,总时长为 1us,然后结束仿真。在仿真过程中,你可以观察到 clk_1hz 和 clk_10hz 信号的输出情况。
阅读全文