分频器,顾名思义,就是将一个波形,分成具有若干占空比的波。占空比是指在一个脉冲循环内,通电时间相对于总时间所占的比例。占空比(Duty Ratio)在电信领域中有如下含义:例如:脉冲宽度1μs,信号周期4μs的脉冲序列占空比为0.25。在一段连续工作时间内脉冲占用的时间与总时间的比值。
在CVSD调制(continuously variable slope delta modulation)中,比特”1”的平均比例(未完成)。
引申义:
在周期型的现象中,某种现象发生后持续的时间与总时间的比。
例如,在俗语中有句话:「三天打渔,两天晒网」,是说五天里有两天在晒网,即周期为5天,”打渔”的占空比为5分之3。
在Verilog数字系统设计中,我们要深入理解输入与输出端口,以及模块化设计。下图为其模块:
可以看出,我们要得到分配后的时钟,为其输出端口。
例如,我们要设计一个三天打鱼两天晒网的分频器,可以设计Verilog代码如下:
module div(
input clk,rst_n;
output [4:0] Q;
output clk_div;);
always@(posedge clk or negedge rst_n)
begin
if(!rst_n) begin
Q<=0;
clk_div<=1;
end
else if(Q<=4) begin //两天晒网
clk_div<=1;
Q<=Q+1;
end
else if(Q<=10&&Q>4) begin //三天打鱼
Q<=Q+1;
clk_div<=0;
end
else
Q<=0; //自动清零
end
endmodule
其testbeach测试代码如下:
`timescale 1ns/1ns
module div_tb();
reg clk,rst_n;
wire [4:0]Q;
wire clk_div;
initial begin
clk=0;
#10 forever clk=~clk;
end
initial begin
rst_n=0;
#20 rst_n=1;
end
div u1(
.clk(clk),
.rst_n(rst_n),
.Q(Q),
.clk_div(clk_div));
endmodule