一. 想法
LED与二进制计数信号的同时闪亮,每秒一次。
二. HDL描述
counter_LED.v / Verilog
module counter_LED (
output wire [7:0] LED, // 低电平有效
input rst_n, // 异步置零
input CLOCK_50 // 50 MHz 时钟
);
reg [7:0] mLED;
wire clk_1_Hz; // 秒钟
divider divider_50M ( // 例化分频器
.o_clk(clk_1_Hz),
.rst_n(rst_n),
.i_clk(CLOCK_50)
);
always @ (posedge clk_1_Hz, negedge rst_n)
begin
if (!rst_n)
mLED <= 0;
else
begin
if (mLED == 8'b11111111)
mLED <= 0;
else
mLED <= mLED + 1'b1;
end
end
assign LED = ~mLED;
endmodule
divider.v / Verilog
module divider (
output reg o_clk, // 分频后的时钟
input rst_n,
input i_clk
);
parameter N = 50_000_000; // 分频倍数
parameter M = 24_999_999; // M="N/2-1"
reg [25:0] cnt; // 分频倍数二进制位宽
always @ (posedge i_clk, negedge rst_n)
begin
if (!rst_n)
cnt <= 0;
else
begin
if (cnt == N)
cnt <= 0;
else
cnt <= cnt + 1'b1;
end
end
always @ (posedge i_clk, negedge rst_n)
begin
if (!rst_n)
o_clk <= 0;
else
begin
if (cnt <= M)
o_clk <= 1;
else
o_clk <= 0;
end
end
endmodule
三. 其他
本例可作为使用分频器的范例。
用户162438 2008-9-25 11:05
用户485340 2008-9-5 16:39
用户1373524 2008-9-2 18:45
用户1268540 2008-9-1 22:39