Verilog分频器的设计(6分频和1.5分频)

一.分频器的设计

  • 分频:将一个时钟N分频,则分频等到的时钟频率为原时钟的1/N,而周期为原时钟周期的N倍。
  • 4种分频: 2n 分频:如2、4、8、16分频等;
                     偶数分频:如6分频,10分频等;
                     奇数分频:如3分频,7分频等;
                     小数分频:如1.5分频、3.22分频等。
  • 分频的方法:使用计数器实现。

二、六分频器的设计

  1. 偶数分频(2m分频):使用2m进制计数器实现,而且可使时钟均匀,占空比50%。 例子:设计一个6分频时钟,则需要一个6进制计数器来实现。
  2. 代码
    module div6(clk,reset,div6);
    input reset,clk;
    output div6;
    
    reg div6;
    reg [2:0]counter;
    always@(posedge clk)
    	begin 
    	if(reset)counter<=0;
    	else
    		begin
    		if(counter==5)counter<=0;
    		else counter<=counter+1;
    		end
    	end
    always@(posedge clk)
    	begin 
    	if(reset)div6<=0;
    	else if(counter<3)div6<=1;
    	else div6<=0;
    	end
    endmodule

     

  3. 仿真波形

    三、1.5分频器的设计 

1. 在进行N.5分频是shiftcount需要2N位 分别采用上升沿与下降沿进行采样,其中采样的高电平时间为N,最后将二者的结果进行或运算。

2.代码

module div1dot5(clk,reset,div1d5,clkN,clkP,count);
  input clk,reset;
  output div1d5,clkN,clkP;
  output [2:0] count;
  reg [2:0] count;
  wire [2:0]shiftcount;
  reg clkP,clkN;
  
  assign shiftcount = 3'b001;
  always @ (posedge clk ,negedge reset)
	  if(!reset)count <= shiftcount;
	  else count <= {count[1:0],count[2]}; 
	  
  always @ (negedge clk or negedge reset)
	  if(!reset)clkN <= 0;
	  else if(count == 3'b010)clkN <= 1;
	  else clkN <= 0;  
	  
  always @ (posedge clk or negedge reset)
     if(!reset)clkP <= 0;
	  else if(count == 3'b100)clkP <= 1;
     else clkP <= 0;  
assign div1d5 = clkP | clkN;
endmodule

3.仿真波形
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值