《Verilog实现奇数和偶数分频器和半整数及任意小数分频器程序》由会员分享,可在线阅读,更多相关《Verilog实现奇数和偶数分频器和半整数及任意小数分频器程序(4页珍藏版)》请在金锄头文库上搜索。
1、Engineer Lhrace1、 半整数分频占空比不为 50%/说明:设计的史上最好用的半整数分频占空比不为 50%,包含设计思路module div_5(clk,clk_div,cnt1,cnt2,temp1,temp2);/N+0.5input clk;output clk_div;output reg31:0cnt1,cnt2;output reg temp1,temp2;initial begin temp1=0;temp2=1;end /首先进行初始化, temp1=0;temp2=1parameter N=5; /设定分频系数为 N+0.5always (posedge clk)
2、 /temp1 上升沿跳变beginif(cnt1=2*N) /2*Nbegin cnt131:0=M)begin pk-1:0=pk-1:0-M+N;delete=1b0;endif(pM) begin pk-1:0=pk-1:0+N;endif(N=p&pM)begin delete=1b1;endendalways(delete)/删除脉冲,相当于合并脉冲beginif(delete=1)clkout=1;elseclkout=clk;endreg cnb;wire cnc;output divclk;Engineer Lhraceassign cnc=cnb&clk;assign divclk=!cnc&clkout;always (posedge clk)begin if(delete=1)cnb=1;else cnb=0;endendmodule /output reg 5:0cnt1,cnt2; /cnt1,cnt2 用于验证脉冲是否准确/always (posedge clk)/begin /if(cnt1=M-1)/cnt1=0;/else cnt1=cnt1+1;/end/always (posedge clkout)/begin /if(cnt2=N-1)/cnt2=0;/else cnt2=cnt2+1;/end/endmodule