Verilog 中的奇偶分频器学习

本文分享了使用Verilog语言实现3分频器的过程,并详细介绍了通过同步计数器实现2、4、8、16分频的方法。文章探讨了奇偶分频器的设计思路,适合初学者理解和学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如有疏漏请大神不吝赐教!!!(*^__^*) 嘻嘻……

这学期刚学了Verilog语言,觉得挺好玩,有点类似C语言,不过马上就要考试了,再看奇偶分频器时感觉有点不懂,

所以就查找资料加深理解。。。以下是这次的学习过程。。。

代码

3分频

module EVEN(clk, rst_n, clk_3);
   input clk, rst_n;
   output clk_3;
   reg [1:0]state;
   reg clk1;
   
   always @ (posedge clk or negedge rst_n)
      if(!rst_n)
         state <= 2'b00;
      else
         case(state)
             2'b00:state <= 2'b01;
             2'b01:state <= 2'b11;
             2'b11:state <= 2'b00;
         endcase
   always @ (negedge clk or negedge rst_n)
      if(!rst_n)
         clk1 <= 1'b0;
      else
         clk1 <= state[0];
    assign clk_3 = state[0] & clk1;
endmodule

实现2、4、8、16分频

module ODD(clk, rst_n, clk_2, clk_4, clk_8, clk_16);
   input clk;
   input rst_n;
   output clk_2, clk_4, clk_8, clk_16;
   
   reg [3:0] cnt;
   
   always @ (posedge clk or negedge rst_n)
   begin
       if(!rst_n)
          cnt <= 4'b0;
       else
          cnt <= cnt + 1;
   end
   
   assign clk_2 = !cnt[0];
   assign clk_4 = !cnt[1];
   assign clk_8 = !cnt[2];
   assign clk_16 = !cnt[3];
endmodule

对于偶分频(只涉及2^n,其他的还为研究,一步步来)

具体思想:用高速时钟做一个同步计数器,然后在相应的位抽头即可。

对于奇分频(目前还没找到合理的解释,只是看懂了代码,渣子一个~~)

转载于:https://www.cnblogs.com/TB-Go123/p/3411437.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值