奇数分频



奇数分频思路:(结合图示进行理解)

第一步:在时钟的上升沿和下降沿分别产生一个计数器。cnt_up 在时钟上升沿计数,cnt_down 在时钟下降沿计数(例:如果是 N 分频,就从0计数到 N-1)

第二步:根据这两个计数器产生两个控制信号 clk_up , clk_down。

注意:clk_up 和 clk_down 的高低电平的比例是有规律的。

如果是N分频,比例为 N/2 : N/2+1 或者  N/2+1 : N/2

如果是3分频,那么比例就是 1:2 或者 2:1。

如果是5分频,比例位2:3或者3:2

以此论推

第三步:求得分频时钟

如果高低电瓶比例为N/2 : N/2+1,则分频时钟 clk_div = clk_up || clk_down (如图 1 所示)

如果高低电瓶比例为 N/2+1:N/2 ,则分频时钟 clk_div = clk_up && clk_down(如图 2 所示)



以3分频为例

图 1:高低电瓶比例为 1:2,或操作

图 2:高低电瓶比例为 2:1,与操作

 图1

图2 

图2



代码提示:clk_up 与 clk_down用组合逻辑,或者用 assign

以图2举例

例:assign clk_up   = (cnt_up==0 || cnt_up ==1) ? 1‘b1 : 1‘b0 ;

assign clk_down= (cnt_down==0 || cnt_down ==1) ? 1‘b1:1‘b0 ;

assign clk_div3 = clk_down && clk_up ;



转载请注明出处:http://www.cnblogs.com/aslmer/p/5838395.html

aslmer  come on !

打起精神,每天进步一点点,开开心心!

时间: 2024-10-10 08:04:57

奇数分频的相关文章

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

我们在做FPGA设计时,有时会用到时钟频率奇数分频的频率,例如笔者FPGA的晶振为50M,当我们需要10M的时钟时,一种方式可以使用DCM或PLL获取,系统会内部分频到10M,但其实VERILOG内部也完全能实现,所以我们还是来了解一下. 有这样一个欢乐的时钟了,我们要得到以下的分频效果: 奇数分频的难点就在于,三分频要求1.5倍的时钟时间翻转一次,这样整体的周期时间是原来的3倍,即三分频.五分频亦类似.而恰恰verilog不允许你在两个always模块里对同一reg赋值. 那怎么得到三分频的时

verilog 奇数分频设计

module tw(clk,k_or,k1,k2); input clk; output k_or,k1,k2; reg [2:0] c1,c2; reg m1,m2; initial begin c1=0; c2=0; m1=0; m2=0; end always @(posedge clk) begin if(c1==a) c1<=0;else c1<=c1+1; if(c1==1) m1=~m1;else if(c1==b) m1=~m1;end always @(negedge clk

【Verilog】verilog实现奇数次分频

实现占空比为50%的N倍奇数分频:首先进行上升沿触发进行模N计数,计数到某一个值时进行输出时钟翻转,然后经过(N-1)/2再次进行翻转得到一个占空比非50%的奇数n分频时钟.再者 同时进行下降沿触发的模N计数,到和上升沿触发输出时钟翻转选定值相同值时,进行输出时钟时钟翻转,同样经过(N-1)/2时,输出时钟再次翻转生成占空 比非50%的奇数n分频时钟.两个占空比非50%的n分频时钟相或运算,得到占空比为50%的奇数n分频时钟. /*奇数分频,占空比为50%,5分频*/ always @(pose

基于verilog的分频器设计(奇偶分频原理及其电路实现:上)

在一个数字系统中往往需要多种频率的时钟脉冲作为驱动源,这样就需要对FPGA的系统时钟(频率太高)进行分频.分频器主要分为奇数分频,偶数分频,半整数分频和小数分频,在对时钟要求不是很严格的FPGA系统中,分频器通常都是通过计数器的循环来实现的. 偶数分频:假设为N分频,由待分频的时钟触发计数器计数,当计数器从0计数到N/2-1时,输出时钟进行翻转,并给计数器一个复位信号,使得下一个时钟从零开始计数.以此循环下去.这种方法可以实现任意的偶数分频.如图所示,两个D触发器级联实现四分频电路,原理:来一个

Verilog实现任意分频和占空比

任意分频模板和技巧 (一)   偶数的分频技巧 (1)       任意偶数分频(占空比为50%)的模板 /******************** N  dividen clk   (1:1) duty  Template ***************/ module clk_div( inputclk_100, output clk_out ); /********* 10 dividen clk 1:1 duty   success *********/ //  1--2--3--4--

FPGA时钟分频(转)

http://www.cnblogs.com/fpga/archive/2009/10/24/1589318.html 占空比为50%的分频 偶数分频比较简单 比如N分频,那么计数到N/2-1,然后时钟翻转,代码如下: 1 module even(clk_in,clk_out,rst_n); 2 input clk_in; 3 input rst_n; 4 output clk_out; 5  6 parameter N=6; 7  8 reg [3:0] cnt; 9 reg clk_out;

基于Verilog的奇数偶数小数分频器设计

今天呢,由泡泡鱼工作室发布的微信公共号“硬件为王”(微信号:king_hardware)正式上线啦,关注有惊喜哦.在这个普天同庆的美好日子里,小编脑洞大开,决定写一首诗赞美一下我们背后伟大的团队,虽然连上我只有两个人,但丝毫不影响我们的工作热情和创业野心.合抱之木,生于毫末:九层之台,起于垒土:千里之行,始于足下! 首先小编在这里分享一个基于Verilog语言的分频器设计,该分频器实现了奇数.偶数.小数(0.5)分频,可综合,能跑700M左右的时钟,基本能够满足大部分应用需求. 一:背景 前天,

时钟分频

占空比为50%分频: 偶数分频,一个计数器就可以搞定: 奇数分频: 1.用两个计数器分别按照上升下降沿计数,最后如果高电平的比低电平多一个周期则用与门,少一个周期则用或门: 2.另一种使用异或门的形式组合如下图: 先根据上升沿计数(只用到一个计数器)从0计到(N-1) 再产生两个使能信号tff_1en.tff_2en,其中tff_1en为计数0时使能,tff_2en为计数到(N+1)/2时使能 然后根据tff_1en和上升沿产生分频时钟div1,根据tff_2en和下降沿产生分频时钟div2:

等占空比分频器的几种写法

转自http://www.cnblogs.com/yuphone/archive/2010/02/08/1666130.html 1 偶数分频 (1)2的幂分频 案例I 二分频 i: div_2.v module div_2( input i_clk, input i_rst_n, output o_clk ); reg [0:0] cnt; always @ (posedge i_clk, negedge i_rst_n) if (!i_rst_n) cnt <= 0; else cnt <