FPGA三分频,五分频,奇数分频

Posted yf869778412

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FPGA三分频,五分频,奇数分频相关的知识,希望对你有一定的参考价值。

我们在做FPGA设计时,有时会用到时钟频率奇数分频的频率,例如笔者FPGA的晶振为50M,当我们需要10M的时钟时,一种方式可以使用DCM或PLL获取,系统会内部分频到10M,但其实VERILOG内部也完全能实现,所以我们还是来了解一下。

技术分享

 

 

              有这样一个欢乐的时钟了,我们要得到以下的分频效果:

   

             技术分享

奇数分频的难点就在于,三分频要求1.5倍的时钟时间翻转一次,这样整体的周期时间是原来的3倍,即三分频。五分频亦类似。而恰恰verilog不允许你在两个always模块里对同一reg赋值。

        那怎么得到三分频的时钟呢?请看下图

技术分享

如果生成这样一个占空比2/3,周期三倍于时钟的信号(2行)。同时产生一个超前或落后于它半个Clock周期时间的信号(3行),对两信号做与运算

,得到的结果就恰好是三分频的时钟(4行);而Verilog中恰好不允许你在两个always模块里对同一reg赋值,但允许你在Clock的Posedge和Negedge分别对两个不相关的信号赋值。

 

 

[cpp] view plain copy
 
 print?
  1.               assign clkout=state1[1]&state2[1];  
  2. [email protected](posedge clk)  
  3. begin  
  4.     case(state1)  
  5.     begin  
  6.         2‘b01:state<=2‘b10;  
  7.         2‘b10:state<=2‘b11;  
  8.         2‘b11:state<=2‘b01;  
  9.     endcase  
  10. end  
  11. [email protected](negedge clk)  
  12. begin  
  13.     case(state2)  
  14.         2‘b01:state<=2‘b10;  
  15.         2‘b10:state<=2‘b11;  
  16.         2‘b11:state<=2‘b01;  
  17.     endcase  
  18. end  


技术分享

 

同样的,五分频

 

[cpp] view plain copy
 
 print?
  1. assign clkout=state1[1]&state2[1];  
  2. [email protected](posedge clk)  
  3. begin  
  4.     case(state1)  
  5.     begin  
  6.         3‘b010:state<=3‘b011;  
  7.         3‘b011:state<=3‘b100;  
  8.         3‘b100:state<=3‘b101;  
  9.         3‘b101:state<=3‘b110;  
  10.         3‘b110:state<=3‘b111;  
  11.         3‘b111:state<=3‘b010;  
  12.     endcase  
  13. end  
  14. [email protected](negedge clk)  
  15. begin  
  16.     case(state2)  
  17.         3‘b010:state<=3‘b011;  
  18.         3‘b011:state<=3‘b100;  
  19.         3‘b100:state<=3‘b101;  
  20.         3‘b101:state<=3‘b110;  
  21.         3‘b110:state<=3‘b111;  
  22.         3‘b111:state<=3‘b010;  
  23.     endcase  
  24. end  

什么原理呢?其实这样想挺好理解的:

 

三分频,每1.5个时钟周期就要翻转一次,因此我们通过时钟上升沿构造低电平占1个时钟周期,高电平占2个时钟周期的信号,再通过时钟的下降沿产生相同的信号,这相当与把原信号右移了半个时钟周期,相与后高电平被削掉了半个周期,低电平添了半个周期,就产生了1.5个时钟周期翻转一次的效果。

五分频类似。

由此猜测11分频可以由上升沿构造低电平占5个时钟周期,高电平占6个时钟周期的信号产生,我们来验证一下

技术分享

验证是的啦

 

 转载自:http://blog.csdn.net/lt66ds/article/details/10035187


以上是关于FPGA三分频,五分频,奇数分频的主要内容,如果未能解决你的问题,请参考以下文章

基础项目任意时钟分频程序设计讲解

RTL基本知识:奇数分频器

五分频器

EDA常用模块 奇数分频 偶数分频 冒泡排序

EDA常用模块 奇数分频 偶数分频 冒泡排序

奇数分频