【FPGA】分频器


分频器

分频器是数字系统设计中最常见的基本电路之一。所谓“分频”,就是把输入信号的频率成倍数的低于输入频率的输出信号。
分频器分为偶数分频器和奇数分频器,和计数器非常类似,有时候甚至可以说就是一个东西。

偶数分频器

这里用六分频器作为例子
在这里插入图片描述
波形图:
在这里插入图片描述
代码:

module divider_six
(
input wire sys_clk,
input wire sys_rst_n,

output reg clk_out
);
reg [1:0] cnt;
always@(posedge sys_clk or negedge sys_rst_n)
if (!sys_rst_n == 1`d0)
cnt <= 2`d0;
else if (cnt == 2`d2)
cnt <= 2`d0;
else 
cnt <= cnt+2`d0;

always@(posedge sys_clk or negedge sys_rst_n)
if (!sys_rst_n == 1`b0)
clk_out <= 1`b0;
else if(cnt == 2`d2)
clk_out <= ~clk_out;
else 
clk_out <= clk_out;



endmodule

电路图:
在这里插入图片描述

奇数分频器

波形图:
在这里插入图片描述
代码:

module divider_five
(
input wire sys_clk,
input wire sys_rst,

output wire clk_out

);
reg [2:0] cnt;
reg clk_1;
reg clk_2;

always @(posedge sys_clk or negedge sys_rst)
   if (!sys_rst == 1`b0)
	cnt <=3`d0;
	else  if(cnt == 3`d4)
	cnt <=3`d0;
	else 
	cnt <=cnt + 3`d1;
	
always@(posedge sys_clk or negedge sys_rst)
   if(!sys_rst ==1`b0)
	clk_1 <= 1`b0;
	else  if(cnt == 3`d2)
	clk_1 <= 1`b1;
	else  if ( cnt == 3`d4)
	clk_1 <= 1`b0;
	else clk_1 <= clk_1;

always@(posedge sys_clk or negedge sys_rst)
   if(!sys_rst ==1`b0)
	clk_2 <= 1`b0;
	else if (cnt ==3`d2)
	clk_2 <= 1`b1;
	else if (cnt == 3`d4)
	clk_2 <= 1`b0;
	else 
	clk_2 <= clk_2;
	
assign clk_out = (clk_1 | clk_2);

endmodule

电路图:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值