Verilog练习一【奇数分频器】

练习:实现50%占空比的5分频

//5分频,占空比为50%
module clk_div_5(Clk_in, Rst_n, Clk_out);
	input Clk_in;
	input Rst_n;
	output Clk_out;
	
	reg [2:0] cnt, cnt1;
	reg clk_p, clk_n;
	
	parameter CNT_M = 3'd4,//N-1   
			  CNT_N = 3'd2;//(N-1)/2
		
	always @(posedge Clk_in) begin //上升沿 5 分频,占空比为 2/5
		if(!Rst_n) begin
			cnt <= 0;
			clk_p <= 0;
		end
		else begin
			if( cnt == CNT_M ) begin
				cnt <= 0;
				clk_p <= ~clk_p;
			end
			else begin
				cnt <= cnt + 1'b1;
				if ( cnt == CNT_N )
					clk_p <= ~clk_p;
				else
					clk_p <= clk_p;
			end
		end
	end
	
	always @(negedge Clk_in) begin //下降沿 5 分频,占空比为 2/5
		if(!Rst_n) begin
			cnt1 <= 0;
			clk_n <= 0;
		end
		else begin
			if( cnt1 == CNT_M ) begin
				cnt1 <= 0;
				clk_n <= ~clk_n;
			end
			else begin
				cnt1 <= cnt1 + 1'b1;
				if ( cnt1 == CNT_N )
					clk_n <= ~clk_n;
				else
					clk_n <= clk_n;
			end
		end
	end
	assign Clk_out = clk_p | clk_n; //错位相或
endmodule

仿真结果:
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值