收藏 分销(赏)

FPGA奇数和偶数分频器和半整数及任意小数分频器设计(Verilog程序).doc

上传人:xrp****65 文档编号:6276519 上传时间:2024-12-04 格式:DOC 页数:4 大小:54.50KB 下载积分:10 金币
下载 相关 举报
FPGA奇数和偶数分频器和半整数及任意小数分频器设计(Verilog程序).doc_第1页
第1页 / 共4页
FPGA奇数和偶数分频器和半整数及任意小数分频器设计(Verilog程序).doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
Engineer Lhrace Author: ---Engineer Lhrace 1、半整数分频占空比不为50% //说明:设计的史上最好用的半整数分频占空比不为50%,包含设计思路 module div_5(clk,clk_div,cnt1,cnt2,temp1,temp2);//N+0.5 input clk; output clk_div; output reg[31:0]cnt1,cnt2; output reg temp1,temp2; initial begin temp1=0;temp2=1;end //首先进行初始化,temp1=0;temp2=1 parameter N=5; //设定分频系数为N+0.5 always @(posedge clk) //temp1上升沿跳变 begin if(cnt1==2*N) //2*N begin cnt1[31:0]<=32'd0;end else begin cnt1[31:0]<=cnt1[31:0]+32'd1;end if(cnt1==32'd0) begin temp1<=1;end //高电平时间为N+1; if(cnt1==N+1) begin temp1<=0;end //低电平时间为N; end always@(negedge clk) //temp2下降沿跳变 begin if(cnt2==2*N) //2*N begin cnt2[31:0]<=32'd0;end else begin cnt2[31:0]<=cnt2[31:0]+32'd1;end if(cnt2==32'd0) begin temp2<=0;end //低电平时间为N; if(cnt2==N) begin temp2<=1;end //高电平时间为N+1; end assign clk_div=temp1&&temp2; //逻辑与 endmodule //如果要进行N+0.5分频 //思路:总的来说要进行N+1+N=2N+1次分频 //在时钟的上升沿和下降沿都进行跳变 //上升沿进行占空比为N+1比N的时钟temp1; //下降沿进行占空比为N比N+1的时钟temp2; //最后div=temp1&&temp2 即可得到所需要的半整数分频 分频5.5仿真结果 2、奇数分频占空比为50% //说明:奇数分频。 module div_5(clk,clk_div,cnt1,cnt2,temp1,temp2);// input clk; output clk_div; output reg[31:0]cnt1,cnt2; output reg temp1,temp2; parameter N=5; //设定分频系数 always @(posedge clk) begin if(cnt1==N-1) //N-1进行N计数 begin cnt1[31:0]<=32'd0;end else begin cnt1[31:0]<=cnt1[31:0]+32'd1;end if(cnt1==32'd0) begin temp1<=1;end // if(cnt1==(N-1)/2) begin temp1<=0;end //当计数到(N-1)/2时翻转 end always@(negedge clk) begin if(cnt2==N-1) //N-1 begin cnt2[31:0]<=32'd0;end else begin cnt2[31:0]<=cnt2[31:0]+32'd1;end if(cnt2==32'd0) begin temp2<=1;end //; if(cnt2==(N-1)/2) begin temp2<=0;end //当计数到(N-1)/2时翻转; end assign clk_div=temp1||temp2; //逻辑或 endmodule 2任意小数分频 Module xiao_fenpin(clk,divclk);//占空比为50%任意小数分频 input clk; reg clkout; reg delete; parameter k=10; reg [k-1:0]p; parameter M=13;// clk输入的频率, parameter N=11;//需要得到的频率 //假如是13Mhz,要生成一个11M的频率 //占空比为50%//由M时钟分频等到N频率的方法。 always@(posedge clk) begin if(p>=M)begin p[k-1:0]<=p[k-1:0]-M+N;delete<=1'b0;end if(p<M) begin p[k-1:0]<=p[k-1:0]+N;end if(N<=p&&p<M)begin delete<=1'b1;end end always@(delete)//删除脉冲,相当于合并脉冲 begin if(delete==1) clkout<=1; else clkout<=clk; end reg cnb; wire cnc; output divclk; assign cnc=cnb&&clk; assign divclk=!cnc&&clkout; always @(posedge clk) begin if(delete==1) cnb<=1; else cnb<=0; end endmodule ////////////////////// //output reg [5:0]cnt1,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
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服