概述
verilog
实现任意占空比、任意分频的方法
在
verilog
程序设计中,我们往往要对一个频率进行任意分频,而且占空比也有一定的
要求这样的话,
对于程序有一定的要求,
现在我在前人经验的基础上做一个简单的总结,
实
现对一个频率的任意占空比的任意分频。
比如:我们
FPGA
系统时钟是
50M Hz
,而我们要产生的频率是
880Hz
,那么,我们需要对系
统时钟进行分频。我们很容易想到用计数的方式来分频:
50000000/880 = 56818
这个数字不是
2
的整幂次方,
那么怎么办呢?我们可以设定一个参数,
让它到
56818
的时候
重新计数不就完了吗?呵呵,程序如下:
module div(clk, clk_div);
input clk;
output clk_div;
reg [15:0] counter;
always @(posedge clk) if(counter==56817) counter <= 0; else counter <= counter+1;
assign clk_div = counter[15];
endmodule
下面我们来算一下它的占空比:我们清楚地知道,这个输出波形在
counter
为
0
到
32767
的
时候为低,在
32767
到
56817
的时候为高,占空比为
40%
多一些,如果我们需要占空比为
50%
,那么怎么办呢?不用急,慢慢来。
我们再设定一个参数,
使它为
56817
的一半,
使达到它的时候波形翻转,
那不就完了吗?呵
呵,再看看:
module div(clk, clk_div);
input clk;
output clk_div;
reg [14:0] counter;
最后
以上就是仁爱纸鹤为你收集整理的verilog 任意比例分频电路的实现_verilog 实现任意占空比、任意分频的方法的全部内容,希望文章能够帮你解决verilog 任意比例分频电路的实现_verilog 实现任意占空比、任意分频的方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复