基于verilog的奇偶分频

基于verilog的奇偶分频
(1)**偶分频:**进行占空比为50%的分频比较容易。比如进行2N分频,可以计算时钟上升沿或下降沿的个数,如果计数到(2N/2)-1次,则时钟输出进行反转,并且计数清零,再重新计数,重复上述过程。
(2)**奇分频:**进行占空比为50%的分频比较麻烦,我采用的方法是分别对时钟的上升沿和下降沿进行计数。比如进行(2N+1)分频,该过程分为两大步:第一步是对时钟的上升沿计数,首先任选一个次数去进行计数,若达到该数时,则时钟输出进行反转,之后再计数((2N+1)-1)/2次,进行第二次反转,再计数到(2N)次,计数清零,重复上述步骤;第二步是对时钟的下降沿计数,工作原理和上升沿方式一致(注:和上升沿任选的参考数的一样)。最后上升沿获得的时钟输出和下降沿获得的时钟输出进行或运算。
实例:

module fre(
	Clk,
	Rst_n,
	Clk_out_even,//二分频 N=2
	Clk_out_odd//五分频   N=5
);
   input Clk;
	input Rst_n;
	output Clk_out_odd;
	output reg Clk_out_even;
//偶计数器   (N/2)-1次反转
   //reg cnt_even;
always @(posedge Clk or negedge Rst_n)
   if(!Rst_n)begin
//	   cnt_even<=0;
	    Clk_out_even<=0;	
	end
//   else if(cnt_even==1)begin
//		cnt_even<=0;
//		Clk_out_even<=~Clk_out_even;
//   end
   else begin
	   Clk_out_even<=~Clk_out_even;
//      cnt_even<=cnt_even+1'b1;
   end	
//奇上升沿计数器 N=5 模N计数  //两次反转;先选定一个计数进行反转,之后再进行(N-1)/2次计数后,进行第二次反转
	reg [2:0]cnt0_odd;
	reg Clk_out0_odd;
always @(posedge Clk or negedge Rst_n)
   if(!Rst_n)begin
	   cnt0_odd<=0;
	   Clk_out0_odd<=0;	
	end
   else if(cnt0_odd==1)begin
		cnt0_odd<=cnt0_odd+1'b1;
		Clk_out0_odd<=~Clk_out0_odd;		
   end
	else if(cnt0_odd==3)begin
		cnt0_odd<=cnt0_odd+1'b1;
		Clk_out0_odd<=~Clk_out0_odd;		
  end
	else if(cnt0_odd==4)begin
		cnt0_odd<=0;
//		Clk_out0_odd<=~Clk_out0_odd;		
   end
   else begin
      cnt0_odd<=cnt0_odd+1'b1;
   end	
//奇下降沿计数器
	reg [2:0]cnt1_odd;
	reg Clk_out1_odd;
always @(negedge Clk or negedge Rst_n)
   if(!Rst_n)begin
	   cnt1_odd<=0;
	   Clk_out1_odd<=0;	
	end
   else if(cnt1_odd==1)begin
		cnt1_odd<=cnt0_odd+1'b1;
		Clk_out1_odd<=~Clk_out0_odd;	
   end
	else if(cnt1_odd==3)begin
		cnt1_odd<=cnt0_odd+1'b1;
		Clk_out1_odd<=~Clk_out1_odd;		
   end
	else if(cnt1_odd==4)begin
		cnt1_odd<=0;		
   end
   else begin
      cnt1_odd<=cnt1_odd+1'b1;
   end	
assign Clk_out_odd=Clk_out0_odd | Clk_out1_odd;	//最后进行或运算
endmodule 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值