FPGA 5 分频设计

用Verilog设计一个5分频器。
   5分频,奇数分频都可以类似这么做,只需要改div1和div2的参数。div1为奇数分频除2的余数。采用上升延和下降延分别触发不同波形,最后叠加的方式产生奇数分频。
module divfreq(clk, clk1x, rst, clk1xpose, clk1xnege, coutpose, coutnege);
input clk;
input rst;
output clk1x;
output clk1xpose;
output clk1xnege;
output[2:0] coutpose;
output[2:0] coutnege;
reg clk1xpose;
reg clk1xnege;
reg[2:0] coutpose;
reg[2:0] coutnege;
parameter div1 = 2 , div2 = 4;   // div1 = 5 / 2, div2 = 5 - 1
assign clk1x = clk1xpose | clk1xnege;
always@(posedge clk or negedge rst)
begin
   if(!rst)
  
clk1xpose = 0;

   else if(coutpose == div1)
clk1xpose = ~clk1xpose;
   else if(coutpose == div2)
clk1xpose = ~clk1xpose;
   else
clk1xpose = clk1xpose;
end
always@(negedge clk or negedge rst)
begin
   if(!rst)
  
clk1xnege = 0;

   else if(coutnege == div1)
clk1xnege = ~clk1xnege;
   else if(coutnege == div2)
clk1xnege = ~clk1xnege;
   else
clk1xnege = clk1xnege;
end
always@(posedge clk or negedge rst)
begin
   if(!rst)
coutpose = 0;
   else if(coutpose == div2)
coutpose = 0;
   else
coutpose = coutpose + 1;
end
always@(negedge clk or negedge rst)
begin
   if(!rst)
coutnege = 0;
   else if(coutnege == div2)
coutnege = 0;
   else
coutnege = coutnege + 1;
end
endmodule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值