⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 5分频.v

📁 5分代码及说明
💻 V
字号:
这很简单,按下列方法可以获得占空比为50%的分频器:

(1)写一个根据上升沿触发的2:3的5分频器(低2高3);
(2)再写一个根据下降沿触发的2:3的5分频器;
(3)两个输出相“与”即可。

提供一个简单的时钟线控制实现50%占空比的方案,当然对与不对,大家指教。
比如大家要计数到5:0,1,2,3,4;在计到2的时候,使得控制信号
为1,并将该控制信号与时钟信号异或。这样假如采用上升沿计数的话,
在下一个下降沿就会被反转为上升沿,使得在一个时钟周期内,输出
2和3。输出3后时钟线恢复正常。于是我们实现了在5个周期内输出6
个状态,我想下面的事情,诸位大侠都是知道的罗,不罗嗦啦

我想我提供的方法应该可以和时钟边沿同步,只要合适地选择
状态的编码,使得状态0,1,2对应输出为0,状态3,4,5对应输出为
1即可。



module tridivf(clk,rst,clk3);
    input clk,rst;
    output clk3;
    reg QA,QB,C,clk3;

always @(QA or QB)
    C = ~(QA & QB);

always @(posedge clk or posedge rst)
 if(rst)
  QA <= 1'b0;
 else
  if(!C)
   QA <= ~QA;
  else
   QA <= 1'b1;

always @(negedge clk or posedge rst)
 if(rst)
  QB <= 1'b0;
 else
  if(!C)
   QB <= ~QB;
  else
   QB <= 1'b1;

always @(posedge C or posedge rst)
 if (rst)
  clk3 <= 1'b0;
 else
  clk3 <= ~clk3;
endmodule
觉得这个写法不好,看起来很简洁,不过我觉得不够规范。//随便说说。
1)always @(posedge C)
    clk3 = ~clk3;   这相对于clk应该是一个异步电路
2)既用到posedge clk,也用到negedge clk,对于综合做sta来说,
并不提倡这样写。

3)always @(posedge clk )
    if (C)
        QA = ~QA;
    else
        QA = 1'b1;
改成:always@(posedge clk)
        if(!C)
          QA = 1'b1;
        else
          QA = ~QA; 也许更符合电路的行为吧。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -