分频器的应用
分频器的应用
- 设计输出频率为2KHz,占空比为0~100%可调PWM信号的应用电路。要求占空比的分辨率为1%。
分析
要求占空比为0~100%可调,分辨率为1%。应该有101种,用复位信号控制占空比为1,用100进制BCD码计数器控制占空比为0~99%。
开发板提供50MHz时钟,分频至2KHz,
50M/2k=25k
要产生101种占空比,需要将计数器的容量等分为100份,每份占25k/100=250个计数值。当计数值小于占空比*250时,PWM的输出为高,反之为低。
产生频率为2KHz,占空比满足要求的代码如下:
//2KHz,占空比0-100%可调,分辨率1%。
module pwm_N (
input clk_50,
input clr_n,
input [7:0]BCDduty, //2位BCD码表示占空比数值
output reg pwm
);
parameter N = 25000,M=250;
reg [14:0]cnt_q; //2^15=32768>25k
wire [6:0]duty; //占空比
//BCD码表示的占空比转换为二进制表示的占空比:高位BCD码*10+低位BCD码
//*10分解成*8加*2
assign duty=(BCDduty[7:4]<<3)+(BCDduty[7:4]<<1)+BCDduty[3:0];
//分频计数
always @(posedge clk_50 or negedge clr_n) begin
if(!clr_n)
cnt_q<=15'b0;
else if(cnt_q==N-1)
cnt_q<=15'b0;
else
cnt_q<=cnt_q+1'b1;
end
//PWM输出
always @(clr_n,duty,cnt_q)
if(!clr_n)
pwm=1'b1;
else if(cnt_q<duty*M)
pwm=1'b1;
else
pwm=1'b0;
Endmodule
用signaltap分析25%,50%,75%占空比:
参考:
- 张俊涛,陈晓莉.现代EDA技术及其应用.[M].北京,清华大学出版社。