8分频verilog线_Verilog分频器的设计

大三都要结束了,才发现自己太多东西没深入学习。对于偶分频:(计数到分频数的一半就翻转)注:图中只用了一个计数器,当然也可以用多个;图中只计数到需要分频的一半,当然也可计数到更多;图中从第一个上升沿有效,当然也可延迟多个周期开始。例如:1 //任意偶分频设计2 modulefrequency_divider_6 (clk, rst, data_out);3 inputclk, rst;4 ...
摘要由CSDN通过智能技术生成

大三都要结束了,才发现自己太多东西没深入学习。

对于偶分频:(计数到分频数的一半就翻转)

注:

图中只用了一个计数器,当然也可以用多个;

图中只计数到需要分频的一半,当然也可计数到更多;

图中从第一个上升沿有效,当然也可延迟多个周期开始。

例如:

1 //任意偶分频设计

2 modulefrequency_divider_6 (clk, rst, data_out);3 inputclk, rst;4 outputdata_out;5 reg [1:0] counter;6 regdata_out;7 parameter N = 6; //改变N的值变成任意偶分频,同时counter的范围需要相应修改

8

9 always @ (posedge clk or negedgerst)10 begin

11 if (!rst) //复位置零

12 begin

13 counter <= 0;14 data_out <= 0;15 end

16 else //分频

17 begin

18 if (counter == N/2 - 1) //偶分频数一半时反相

19 begin

20 data_out <= ~data_out;21 counter <= 0; //置0,从0计数

22 end

23 else

24 counter <= counter + 1;25 end

26 end

27 endmodule

View Code

从仿真波形看出复位后并没有立刻达到分频效果,复位结束后的2.5个周期无效,之后才达到分频效果。

如果想从第一个上升沿就开始分频,那么就可以像我画的图中那样计数。如下所示:

1 /任意偶分频设计2 modulefrequency_divider_6 (clk, rst, data_out);3 inputclk, rst;4 outputdata_out;5 reg [1:0] counter;6 regdata_out;7 parameter N = 6; //改变N的值变成任意偶分频,同时counter的范围需要相应修改

8

9 always @ (posedge clk or negedgerst)10 begin

11 if (!rst) //复位置零

12 begin

13 data_out <= 0;14 end

15 else //分频,也可用底下注释部分

16 begin

17 if (counter == 0) //偶分频数一半时反相

18 begin

19 data_out <= ~data_out;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值