【Verilog_11】: 设计一个11分频的分频器,要求输出占空比为50%,不能使用PLL

5.设计一个11分频的分频器,要求输出占空比为50%,不能使用PLL

法一

author : Mr.Mao
e-mail : 2458682080@qq.com

module div11x
(
	input clk,
	input reset_n,
	output q
);


reg [3:0] cnt;
reg x_p,x_n;




always @(posedge clk,negedge reset_n)
	if(!reset_n)
		cnt <= 0;
	else if(cnt < 11-1)
		cnt <= cnt + 1'b1;
	else
		cnt <= 0;

always @(posedge clk,negedge reset_n)
			if(!reset_n)
				x_p <= 0;
			else  if(cnt < 11/2)
				x_p <= 1;
			else
				x_p <= 0;

always @(negedge clk,negedge reset_n)
					if(!reset_n)
						x_n <= 0;
					else
						x_n <= x_p;
						
assign q = x_p | x_n;						
			
				


endmodule 

法二

author : Mr.Mao
e-mail : 2458682080@qq.com


module Fre_div_11(clk , clk_out, rst_n) ;       //11分频

input clk,rst_n ;                          //奇数分频需要对上升沿和下降沿分别采样,得到占空比为50%的时钟
  
output clk_out ;

reg [3:0] cnt_p, cnt_n;

reg clk_p, clk_n;

 

always@(posedge clk or negedge rst_n)          //上升沿触发

begin

       if(!rst_n)     begin cnt_p <= 0; clk_p <=0; end

       else

       begin

       if(cnt_p == 10)                               

                cnt_p <= 0 ;                          //计数清零

       else

                cnt_p <= cnt_p + 1 ;

       if(cnt_p == 4)                               

                clk_p <=~ clk_p ;          //时钟翻转

       else if(cnt_n == 9)                               

                clk_p <=~ clk_p ;          //时钟翻转

       end

end

 

always@(negedge clk or negedge rst_n)          //下降沿触发

begin

       if(!rst_n)     begin cnt_n <= 0; clk_n <= 0 ; end

       else

       begin

       if(cnt_n == 10)

                cnt_n <= 0 ;                          //计数清零

       else 

                cnt_n <= cnt_n + 1 ;

       if(cnt_n == 4)                               

                clk_n <= ~ clk_n ;           //时钟翻转

       else if(cnt_n == 9)                               

                clk_n <= ~ clk_n ;           //时钟翻转

       end

end

 

assign clk_out = clk_n | clk_p ;         //两输出波形相或运算,assign只能是net型

 

endmodule 
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值