概述
今天突发奇想,比如我要得到上图所示的,高电平占7个CLK,低电平占2个CLK的输出方波。
设置个计数的寄存器,当计数值小于高电平持续时间时,输出高电平,当高于高电平持续时间小于总周期时,输出低电平。
程序如下:
module fenpinqi_buduicheng (clk, clr, q);
input clk;
input clr;
output reg q;
parameter high = 5, low = 2;
reg [3:0] count;
always @ (posedge clk)
begin
if (clr == 1)
begin
q <= 0;
count <= 1'b0;
end
if (clr == 0)
begin
if (count < high)
begin
count <= count+1'b1;
q <= 1;
end
if (count >= high)
begin
count <= count+1'b1;
q <= 0;
end
if (count == high+low-1)
begin
q <= 0;
count <= 1'b0;
end
end
end
endmodule
注意,count因为要计数到high+low-1,所以要注意reg的大小,我刚开始没有设置,默认为一位reg,导致计数值在0-1之间变化,所以输出一直是高电平。
最后
以上就是缥缈砖头为你收集整理的verilog实现一种任意占空比方波产生的全部内容,希望文章能够帮你解决verilog实现一种任意占空比方波产生所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复