精华内容
下载资源
问答
  •  在集成度高度发展的今天,不能靠多个晶振源来解决问题,而且一旦晶振固定那么它的灵活性和可移植性必然受到很大影响,所以一些时钟分频芯片应运而生,今天我们将举一个很有代表性的AD9522时钟分频芯片的典型应用来...
  •  在集成度高度发展的今天,不能靠多个晶振源来解决问题,而且一旦晶振固定那么它的灵活性和可移植性必然受到很大影响,所以一些时钟分频芯片应运而生,今天我们将举一个很有代表性的AD9522时钟分频芯片的典型应用来...
  • IC君的第47篇原创文章 (欢迎关注公众号 icstudy)上一篇文章时钟分频系列——偶数分频/奇数分频/分数分频,IC君介绍了各种分频器的设计原理,其中分数分频器较为复杂,这一篇文章IC君再跟大家聊聊分数分频的具体设计...

    IC君的第47篇原创文章 (欢迎关注公众号 icstudy)

    上一篇文章时钟分频系列——偶数分频/奇数分频/分数分频,IC君介绍了各种分频器的设计原理,其中分数分频器较为复杂,这一篇文章IC君再跟大家聊聊分数分频的具体设计实现。

    一个分数分频器由两部分组成:以ZN和ZN+1为分频系数的多路分频器,还有一个ACC计数器。

    ZN/ZN+1分频器设计

    ZN/ZN+1分频器的设计包含了偶分频器和奇分频器,首先定义ZN/ZN+1分频器的模块名字MDIV。下图是MDIV的引脚信号的名字,及功能定义:

    废话不多说,Verilog硬件描述语言实现MDIV的代码如下:

    MDIV调用方法如下:

    具体的仿真波形如下所示:

    ACC计数器设计

    ACC计数器就是控制做N次ZN分频和M次ZN+1次分频,具体控制过程可以分为以下几种情况:

    第1种情况 :先做N次ZN分频,再做M次ZN+1次分频;

    第2种情况: 先做M次ZN+1次分频,再做N次ZN分频;

    第3种情况 :把N次ZN分频平均插入到M次ZN+1分频中;

    第4种情况 :把M次ZN+1次分频平均插入到N次ZN分频中。

    组合N次ZN分频和M次ZN+1次分频的情况很多。第1、2种情况前后时钟频率不太均匀,因此相位抖动比较大;

    第3、4种情况前后时钟频率均匀性稍好,因此相位抖动会减小。

    下面以8.7分频为例子设计ACC计数器模块名ACCT,下图为模块ACCT的引脚:

    8.7分频的原理是用3次8分频和7次9分频的对应的时钟总时间来等效原时钟87个周期的总时间。

    下图选用前面所述的第3种情况,把3次8分频平均地插入到7次9分频中,这个过程也叫混频。

    采用第3种情况设计ACCT的Verilog代码代码如下所示:

    代码的92-102行就是第3种情况混频,修改98行的数字可以得到不同的混频。

    8.7分频器设计

    完成了模块MDIV 和ACCT之后,就可以用组成一个8.7分频器,这个分频器的模块名是FENDIV,框图如下所示:

    Verilog代码如下:

    最终生成的clkout波形如下所示:

    有兴趣的可以试试用MDIV 和ACCT设计一个10.3分频器?

    IC君写一篇原创文章非常不容易,麻烦大家去微信公众号 icstudy 转发、分享、点“在看”哦,谢谢!

    展开全文
  • 【FPGA】时钟分频设计

    千次阅读 2015-09-19 14:38:36
    以前做的一些FPGA的一些简单设计,做个记录,比较基础。 本文是讲述时钟分频电路设计,可以分为偶数分频和奇数分频;

    时钟分频电路设计,可以分为偶数分频和奇数分频;


    偶数分频实例:

    二分频:

    // 二分频电路
    
    module clk_div2(clk_out, reset, clk_in);
    
    input reset;
    input clk_in;
    output clk_out;
    reg clk_out;
    
    always @(posedge clk_in) begin
    	if(!reset)
    		clk_out <= 0;
    	else
    		clk_out <= ~clk_out;
    end
    
    endmodule
    

    四分频:

    module clk_div4(clk_out, reset, clk_in);
    
    input clk_in;
    input reset;
    output clk_out;
    
    reg clk_out;
    
    reg [3:0] cnt;
    
    always @(posedge clk_in) begin
    	if(!reset) begin
    		cnt <= 0;
    		clk_out <= 0;
    	end
    	/* if(cnt == 1) begin */
    	else if(cnt == 1) begin
    		clk_out <= ~clk_out;
    		cnt <= 0;
    	end
    	else
    		cnt <= cnt + 1;
    	$strobe("cnt = %d", cnt);
    end
    
    endmodule
    

    规律:N分频(N为偶数),计数器计数到 N/2 - 1 时,计数清零,目标时钟电平翻转即可;

               二分频中2/2-1 = 0,因此不用判断;


    奇数分频实例:

    三分频:

    // 实现任意奇数倍分频。2015-7-10
    
    module clk_div3(clk_out, reset, clk_in);
    
    output clk_out;
    input reset;
    input clk_in;
    
    parameter N = 3; // 3分频 5分频对应改成5即可
    
    reg clk_out1;
    reg clk_out2;
    reg [N:0] cnt1;
    reg [N:0] cnt2;
    
    assign clk_out = clk_out1 || clk_out2; // 发现改成|结果也对,因为clk_out1和clk_out2都是1bit信号
    
    always @(posedge clk_in) begin
    	if(!reset) begin
    		cnt1 <= 0;
    		clk_out1 <= 0;
    	end
    	else begin
    		if(cnt1 == N-1) begin
    			cnt1 <= 0;
    			clk_out1 <= ~clk_out1;
    		end
    		else if(cnt1 == (N-1)/2) begin
    			cnt1 <= cnt1 + 1;
    			clk_out1 <= ~clk_out1;
    		end
    		else
    			cnt1 <= cnt1 + 1;
    	end
    end
    
    always @(negedge clk_in) begin
    	if(!reset) begin
    		cnt2 <= 0;
    		clk_out2 <= 0;
    	end
    	else begin
    		if(cnt2 == N-1) begin
    			cnt2 <= 0;
    			clk_out2 <= ~clk_out2;
    		end
    		else if(cnt2 == (N-1)/2) begin
    			cnt2 <= cnt2 +1;
    			clk_out2 <= ~clk_out2;
    		end
    		else
    			cnt2 <= cnt2 +1;
    	end
    end
    
    
    endmodule

    规律:

    N分频(N为奇数),要分频设计出占空比为50%的时钟方法:

    上升沿触发:cnt1计数到N-1时,cnt1清零,clk1翻转; cnt1计数到(N-1)/2时,cnt1+1, clk1翻转;

    下降沿触发:cnt2计数,方式同上!

    这样就能设计出任意倍数的奇数分频电路;


    展开全文
  • IC君的第47篇原创文章 (欢迎关注公众号 icstudy)上一篇文章时钟分频系列——偶数分频/奇数分频/分数分频,IC君介绍了各种分频器的设计原理,其中分数分频器较为复杂,这一篇文章IC君再跟大家聊聊分数分频的具体...

    92b45a4616b82f80a350550c5f28307b.png

    IC君的第47篇原创文章 (欢迎关注公众号 icstudy)

    上一篇文章时钟分频系列——偶数分频/奇数分频/分数分频,IC君介绍了各种分频器的设计原理,其中分数分频器较为复杂,这一篇文章IC君再跟大家聊聊分数分频的具体设计实现。

    一个分数分频器由两部分组成:以ZN和ZN+1为分频系数的多路分频器,还有一个ACC计数器。

    ZN/ZN+1分频器设计

    ZN/ZN+1分频器的设计包含了偶分频器和奇分频器,首先定义ZN/ZN+1分频器的模块名字MDIV。下图是MDIV的引脚信号的名字,及功能定义:

    2a17739a09280273d9657f4e7e19cace.png

    废话不多说,Verilog硬件描述语言实现MDIV的代码如下:

    bb344973b9d7028c9c49aeec880d09d7.png

    MDIV调用方法如下:

    e651286fa9c838f250cdf082342294cd.png

    具体的仿真波形如下所示:

    910428fe56b6d91247d65b1b7377e840.png

    ACC计数器设计

    ACC计数器就是控制做N次ZN分频和M次ZN+1次分频,具体控制过程可以分为以下几种情况:

    第1种情况 :先做N次ZN分频,再做M次ZN+1次分频;

    第2种情况: 先做M次ZN+1次分频,再做N次ZN分频;

    第3种情况 :把N次ZN分频平均插入到M次ZN+1分频中;

    第4种情况 :把M次ZN+1次分频平均插入到N次ZN分频中。

    组合N次ZN分频和M次ZN+1次分频的情况很多。第1、2种情况前后时钟频率不太均匀,因此相位抖动比较大;

    第3、4种情况前后时钟频率均匀性稍好,因此相位抖动会减小。

    下面以8.7分频为例子设计ACC计数器模块名ACCT,下图为模块ACCT的引脚:

    72a5f6e39bf2cb4a45f3d9bba98e646a.png

    8.7分频的原理是用3次8分频和7次9分频的对应的时钟总时间来等效原时钟87个周期的总时间。

    下图选用前面所述的第3种情况,把3次8分频平均地插入到7次9分频中,这个过程也叫混频。

    db09712e7b7a15f3e85828d4bc26ab06.png

    采用第3种情况设计ACCT的Verilog代码代码如下所示:

    a71e6e409692a940ebf116cf49d5006d.png

    代码的92-102行就是第3种情况混频,修改98行的数字可以得到不同的混频。

    8.7分频器设计

    完成了模块MDIV 和ACCT之后,就可以用组成一个8.7分频器,这个分频器的模块名是FENDIV,框图如下所示:

    1d7f91dce6575e8945cdbc6cd0203fd5.png

    Verilog代码如下:

    6e9c43b18d8a9ddf4e9d7f06c4c0c4b9.png

    最终生成的clkout波形如下所示:

    6c8e46f3501ede6cb8c7c1a9bf5af8a4.png

    有兴趣的可以试试用MDIV 和ACCT设计一个10.3分频器?

    IC君写一篇原创文章非常不容易,麻烦大家去微信公众号 icstudy 转发、分享、点“在看”哦,谢谢!

    展开全文
  • 任意切换1-8分频,且无论奇分频还是偶分频,占空比均为50%,我至今仍然认为,在那种紧张且时间有限的情况下(本科大约预留15分钟),真的能设计出这种可任意切换的分频电路(之前有所准备的话可以),反正我是没写...

    今天的笔试题是某芸科技的现场笔试题,数字前端的笔试题,要求很简单,就是现场写出代码实现:

    任意切换1-8分频,且无论奇分频还是偶分频,占空比均为50%,我至今仍然认为,在那种紧张且时间有限的情况下(本科大约预留15分钟),真的能设计出这种可任意切换的分频电路(之前有所准备的话可以),反正我是没写出来,笔试归来,我花了多个小时的时间写了一个且仿真了下。

    个人认为,这个电路的设计的步骤分为两部分,

    第一:

    确定整体架构,包括输入输出:如何任意切换?我写了一个分频模块,其中一个输入为div,你输入1到8,可实现1到8的分频。

    第二:

    确定分频实现电路,分频大家都会写,实现过程可分为奇分频的实现以及偶分频的实现,这两种的实现方法是不一样的,偶分频简单,直接计数即可,奇分频需要三个步骤,第一个步骤就是计数,第二个步骤就是下降沿采样,第三个步骤就是相与或相或,具体实现方法后面再说。


    思路简述:

    上面说了这个电路的设计分为两部分,第一部分确定整体架构,其中最重要的是输入输出:

    	input clk,
    	input [3:0] div,
    	input rst_n,
    	output clk_out

    确定好输入输出之后,我们想,我们是否需要一个使能信号,当输入分频述div后,我们让某一种分频模式使能,我们有8中分频模式,总不能傻傻地设置8个使能变量吧,en1,en2,...,en8;

    当然这样很不好看,而且不利于后面程序编写,我的方式是:

    	reg [7:0] fre_en;

    每次只能使能一位,fre_en[i]使能代表i+1分频模式有效。

    通过div的值来确认某种模式使能,其实现如下:

    	localparam DIV1 = 1, DIV2 = 2, DIV3 = 3, DIV4 = 4;
    	localparam DIV5 = 5, DIV6 = 6, DIV7 = 7, DIV8 = 8;
    
    	reg [7:0] fre_en;
    
    
    	always@(posedge clk or negedge rst_n) begin
    		if(~rst_n) begin
    			fre_en <= 0;
    		end
    		else begin
    			case(div)
    				DIV1: fre_en <= 8'b0000_0001;
    				DIV2: fre_en <= 8'b0000_0010;
    				DIV3: fre_en <= 8'b0000_0100; 
    				DIV4: fre_en <= 8'b0000_1000;
    				DIV5: fre_en <= 8'b0001_0000;
    				DIV6: fre_en <= 8'b0010_0000;
    				DIV7: fre_en <= 8'b0100_0000;
    				DIV8: fre_en <= 8'b1000_0000;
    			endcase
    		end
    
    
    	end

    我们说了,分频分为奇分频和偶分频,二者都有计数的过程,但是这里想做出一点改变,因为1分频等于没分频,2分频直接对输出时钟取反即可,其他分频就和计数有关了。

    我们写一个计数器,用于其他分频模式,8分频需要计数次数最多,我们设计数器位数为4位,其实3位就够了。

    根据模式使能确定计数次数。

    //计数模块
    	reg [3:0] fre_cnt;
    	always @(posedge clk or negedge rst_n) begin
    		if(~rst_n) begin
    			fre_cnt <= 0;
    		end 
    		else begin
    			case(1'b1)
    				fre_en[0]: begin
    					;
    				end
    				fre_en[1]: begin
    					;
    				end
    				fre_en[2]: begin //3分频计数
    					if(fre_cnt < 2) fre_cnt <= fre_cnt + 1;
    					else fre_cnt <= 0;
    				end
    				fre_en[3]: begin
    					if(fre_cnt < 3) fre_cnt <= fre_cnt + 1;
    					else fre_cnt <= 0; 
    				end
    				fre_en[4]: begin
    					if(fre_cnt < 4) fre_cnt <= fre_cnt + 1;
    					else fre_cnt <= 0;
    				end
    				fre_en[5]: begin
    					if(fre_cnt < 5) fre_cnt <= fre_cnt + 1;
    					else fre_cnt <= 0; 
    				end
    				fre_en[6]: begin
    					if(fre_cnt < 6) fre_cnt <= fre_cnt + 1;
    					else fre_cnt <= 0;
    				end
    				fre_en[7]: begin
    					if(fre_cnt < 7) fre_cnt <= fre_cnt + 1;
    					else fre_cnt <= 0;  
    				end
    			endcase 
    		end
    	end

    有了计数模块,就可以设计分频实现模块了,根据分频使能来确定分频模式,不同的分频模式对应不同的分频实现方式。

    reg clk_out_r;
    	reg clk_even;
    
    	always @(posedge clk or negedge rst_n) begin
    		if(~rst_n) begin
    			clk_even <= 0;
    			clk_out_r <= 0;
    		end 
    		else begin
    			case(1'b1)
    				fre_en[0]: begin //1 分频
    					;
    				end
    				fre_en[1]: begin //2 分频
    					clk_even <= ~clk_even;
    				end
    				fre_en[2]: begin //3 分频
    					if(fre_cnt == 1) clk_out_r <= ~clk_out_r;
    					else if(fre_cnt == 2)  clk_out_r <= ~clk_out_r;
    					else clk_out_r <= clk_out_r;
    				end
    				fre_en[3]: begin //4 分频
    					if(fre_cnt == 1) clk_even <= ~clk_even;
    					else if(fre_cnt ==3) clk_even <= ~clk_even;
    					else clk_even <= clk_even;
    				end
    				fre_en[4]: begin //5分频
    					if(fre_cnt == 2) clk_out_r <= ~clk_out_r;
    					else if(fre_cnt == 4) clk_out_r <= ~clk_out_r;
    					else clk_out_r <= clk_out_r;  
    				end
    				fre_en[5]: begin // 6分频
    					if(fre_cnt == 2) clk_even <= ~clk_even;
    					else if(fre_cnt == 5) clk_even <= ~clk_even;
    					else clk_even <= clk_even;
    				end
    				fre_en[6]: begin //7 分频
    					if(fre_cnt == 3) clk_out_r <= ~clk_out_r;
    					else if(fre_cnt == 6) clk_out_r <= ~clk_out_r;
    					else clk_out_r <= clk_out_r; 
    				end
    				fre_en[7]: begin //8 分频
    					if(fre_cnt == 3) clk_even <= ~clk_even;
    					else if(fre_cnt == 7) clk_even <= ~clk_even;
    					else clk_even <= clk_even; 
    				end
    			endcase  
    		end
    	end

    解释下上面的几个reg变量以及wire变量的意义,由于考虑到奇数分频最后的输出clk_out需要一段组合逻辑,所以需要使能wire类型。

    这就导致这个分频实现模块里不能直接使用clk_out作为左值。

    用clk_even用作偶分频输出clk_out的缓冲;

    至于clk_out_r,以及clk_out_rr是为了奇分频而声明的。

    这里提一下奇分频的实现原理:(之前写过Verilog HDL 训练】第 11 天(分频电路)

    假如N为奇数,那么进行N分频,需要先设计一个占空比为(N-1)/2 : N的分频输出clk_out_r,之后用时钟下降沿采样clk_out_r得到clk_out_rr;最后将clk_out_r或上clk_out_rr即可。

    具体可参考上面引用的博文。

    至于偶分频,则需要计数一半反转一次,计数结束反转一次即可。

    好了,下面继续解决奇分频的下降沿采样问题:

    //下降沿采样模块
    	reg clk_out_rr;
    
    	always @(negedge clk or negedge rst_n) begin
    		if(~rst_n) begin
    			clk_out_rr <= 0;
    		end 
    		else begin
    			case(1'b1)
    				fre_en[0]: ;
    				fre_en[1]: ;
    				fre_en[2]: begin
    					clk_out_rr <= clk_out_r;
    				end
    				fre_en[3]: ;
    				fre_en[4]: begin
    					clk_out_rr <= clk_out_r;
    				end
    				fre_en[5]: ;
    				fre_en[6]: begin
    					clk_out_rr <= clk_out_r;
    				end
    				fre_en[7]: ;
    
    			endcase 
    
    
    
    		end
    	end
    

    最后输出分频时钟:

    //产生分频时钟	
     assign clk_out = ( fre_en[0] | fre_en[1] | fre_en[3] | fre_en[5] | fre_en[7] )? clk_even : clk_out_r | clk_out_rr;

    由于一次输入只能有一个使能位有效,所以上述assign自然明白了吧。

    大概就是这么多了,给出一个简单的仿真,文章的最后会给出完整的代码以及仿真代码。

    先给出一个仿真,假如输入div为5,则进行5分频,则:

    假如输入div为6则进行6分频:

    先5分频在1分频:

    完美切换。

    最后的最后给出完整版程序以及测试。

     


    完整版程序:

    
    //任意切换1——8分频电路设计(某芸科技),无论是奇分频还是偶分频,占空比均为50%
    
    module Fre_Div(
    	input clk,
    	input [3:0] div,
    	input rst_n,
    	output clk_out
    
    
    	);
    
    	localparam DIV1 = 1, DIV2 = 2, DIV3 = 3, DIV4 = 4;
    	localparam DIV5 = 5, DIV6 = 6, DIV7 = 7, DIV8 = 8;
    
    	reg [7:0] fre_en;
    
    
    	always@(posedge clk or negedge rst_n) begin
    		if(~rst_n) begin
    			fre_en <= 0;
    		end
    		else begin
    			case(div)
    				DIV1: fre_en <= 8'b0000_0001;
    				DIV2: fre_en <= 8'b0000_0010;
    				DIV3: fre_en <= 8'b0000_0100; 
    				DIV4: fre_en <= 8'b0000_1000;
    				DIV5: fre_en <= 8'b0001_0000;
    				DIV6: fre_en <= 8'b0010_0000;
    				DIV7: fre_en <= 8'b0100_0000;
    				DIV8: fre_en <= 8'b1000_0000;
    			endcase
    		end
    
    
    	end
    	reg clk_out_r;
    	reg clk_even;
    
    
    	always @(posedge clk or negedge rst_n) begin
    		if(~rst_n) begin
    			clk_even <= 0;
    			clk_out_r <= 0;
    		end 
    		else begin
    			case(1'b1)
    				fre_en[0]: begin //1 分频
    					;
    				end
    				fre_en[1]: begin //2 分频
    					clk_even <= ~clk_even;
    				end
    				fre_en[2]: begin //3 分频
    					if(fre_cnt == 1) clk_out_r <= ~clk_out_r;
    					else if(fre_cnt == 2)  clk_out_r <= ~clk_out_r;
    					else clk_out_r <= clk_out_r;
    				end
    				fre_en[3]: begin //4 分频
    					if(fre_cnt == 1) clk_even <= ~clk_even;
    					else if(fre_cnt ==3) clk_even <= ~clk_even;
    					else clk_even <= clk_even;
    				end
    				fre_en[4]: begin //5分频
    					if(fre_cnt == 2) clk_out_r <= ~clk_out_r;
    					else if(fre_cnt == 4) clk_out_r <= ~clk_out_r;
    					else clk_out_r <= clk_out_r;  
    				end
    				fre_en[5]: begin // 6分频
    					if(fre_cnt == 2) clk_even <= ~clk_even;
    					else if(fre_cnt == 5) clk_even <= ~clk_even;
    					else clk_even <= clk_even;
    				end
    				fre_en[6]: begin //7 分频
    					if(fre_cnt == 3) clk_out_r <= ~clk_out_r;
    					else if(fre_cnt == 6) clk_out_r <= ~clk_out_r;
    					else clk_out_r <= clk_out_r; 
    				end
    				fre_en[7]: begin //8 分频
    					if(fre_cnt == 3) clk_even <= ~clk_even;
    					else if(fre_cnt == 7) clk_even <= ~clk_even;
    					else clk_even <= clk_even; 
    				end
    			endcase  
    		end
    	end
    
    	//下降沿采样模块
    	reg clk_out_rr;
    
    	always @(negedge clk or negedge rst_n) begin
    		if(~rst_n) begin
    			clk_out_rr <= 0;
    		end 
    		else begin
    			case(1'b1)
    				fre_en[0]: ;
    				fre_en[1]: ;
    				fre_en[2]: begin
    					clk_out_rr <= clk_out_r;
    				end
    				fre_en[3]: ;
    				fre_en[4]: begin
    					clk_out_rr <= clk_out_r;
    				end
    				fre_en[5]: ;
    				fre_en[6]: begin
    					clk_out_rr <= clk_out_r;
    				end
    				fre_en[7]: ;
    
    			endcase 
    
    
    
    		end
    	end
    
    	
    //产生分频时钟
    
     assign clk_out = fre_en[0] ? clk :( (  fre_en[1] | fre_en[3] | fre_en[5] | fre_en[7] )? clk_even : clk_out_r | clk_out_rr );
    
    //计数模块
    	reg [3:0] fre_cnt;
    	always @(posedge clk or negedge rst_n) begin
    		if(~rst_n) begin
    			fre_cnt <= 0;
    		end 
    		else begin
    			case(1'b1)
    				fre_en[0]: begin
    					;
    				end
    				fre_en[1]: begin
    					;
    				end
    				fre_en[2]: begin //3分频计数
    					if(fre_cnt < 2) fre_cnt <= fre_cnt + 1;
    					else fre_cnt <= 0;
    				end
    				fre_en[3]: begin
    					if(fre_cnt < 3) fre_cnt <= fre_cnt + 1;
    					else fre_cnt <= 0; 
    				end
    				fre_en[4]: begin
    					if(fre_cnt < 4) fre_cnt <= fre_cnt + 1;
    					else fre_cnt <= 0;
    				end
    				fre_en[5]: begin
    					if(fre_cnt < 5) fre_cnt <= fre_cnt + 1;
    					else fre_cnt <= 0; 
    				end
    				fre_en[6]: begin
    					if(fre_cnt < 6) fre_cnt <= fre_cnt + 1;
    					else fre_cnt <= 0;
    				end
    				fre_en[7]: begin
    					if(fre_cnt < 7) fre_cnt <= fre_cnt + 1;
    					else fre_cnt <= 0;  
    				end
    			endcase 
    		end
    	end
    
    
    
    
    
    
    endmodule
    

    测试:

    module Sim_Freq_Div(
    
        );
    	
    	reg clk;
    	reg rst_n;
    	reg [3:0] div;
    	wire clk_out;
    	
    	initial begin
    		clk = 0;
    		forever
    			#2 clk = ~clk;
    	
    	end
    	
    	
    	initial begin
    		rst_n = 0;
    		div = 5;
    		#15
    		rst_n = 1;
    		#60
    		div = 1;
    		
    	
    	end
    	
    	Fre_Div fre_div_tb(
    	.clk(clk),
    	.rst_n(rst_n),
    	.div(div),
    	.clk_out(clk_out)
    	);
    	
    	
    endmodule
    

     

     

     

     

     

    展开全文
  • IC君的第47篇原创文章 (欢迎关注公众号 icstudy)上一篇文章时钟分频系列——偶数分频/奇数分频/分数分频,IC君介绍了各种分频器的设计原理,其中分数分频器较为复杂,这一篇文章IC君再跟大家聊聊分数分频的具体...
  • 通常情况下,时钟的分频在FPGA设计中占有重要的地位,在此就简单列出分频电路设计的思考思路。 偶数分频电路:  如果要进行N倍偶数分频,可有待分频的时钟触发计数器,当计数器从0计到N/2-1时,输出时钟进行翻倍...
  • Verilog之分频电路设计

    2021-01-14 22:00:49
    Verilog之分频电路设计 一. 一个数字系统中往往需要多种频率的时钟脉冲作为驱动源,这样就需要对FPGA的系统时钟(频率较高)进行分频。比如在进行流水灯、数码管动态扫描设计时不能直接使用系统时钟(太快而肉眼无法...
  • FPGA学习笔记——分频电路设计

    千次阅读 2015-11-10 12:45:15
    FPGA学习笔记——分频电路设计 发布时间:2015-10-3023:29:52  分频就是用一个时钟信号通过一定的电路结构变成不同频率的时钟信号,这里介绍一下整数分频电路的设计方法。整数分频电路有偶数分频和奇数分频两种,...
  • CMOS分频电路设计

    2021-01-19 15:23:10
    摘要:本文讨论了用于高速串行收发系统接收端的时钟分频电路设计。通过对扭环计数器工作原理的分析,提出了一种基于类扭环计数器的分频电路,该电路可以模式可选的实现奇数和偶数分频,并达到相应的占空比。所设计...
  • 在数字逻辑电路设计中,分频器是一种基本的电路单元。通常用来对某个给定频率进行分频,以得到所需的频率。分频在FPGA的设计中一直都担任着很重要的角色,而说到分频,我相信很多人都已经想到了利用计数器计数来得到...
  • Verilog设计(二):分频电路设计

    万次阅读 2019-06-04 10:55:02
    分频器是FPGA中常用的设计之一,在FPGA设计中担任重要的角色(时钟对于FPGA电路系统的重要性不言而喻!)。尽管大多数设计中会广泛采用厂家集成的锁相环PLL资源进行分频,倍频和相移(每个厂商Xilinx/Alter等其开发...
  • 摘要:本文讨论了用于高速串行收发系统接收端的时钟分频电路设计。通过对扭环计数器工作原理的分析,提出了一种基于类扭环计数器的分频电路,该电路可以模式可选的实现奇数和偶数分频,并达到相应的占空比。所设计...
  • 虽然在实际工程中要产生分频时钟一般采用FPGA的时钟管理器来进行分频、倍频,通过设置一下IP核中的参数即可,这样做有很多别的方法(例如:直接用Verilog HDL设计分频电路)达不到的效果,产生时钟的质量也更好,...
  • IC君的第46篇原创文章 (欢迎关注公众号 icstudy)大家在参加IC相关工作笔试或者面试的时候,经常会...时钟分频电路(分频器)在IC设计中经常会用到,其目的是产生不同频率的时钟,满足系统的需要。比如一个系统,常...
  • 例如进行N倍数偶数分频,那么可以通过待分频时钟触发计数器计数,当计数器从0计数到N/2-1时,输出的时钟进行翻转,并且将计数器复位,是的下一个时钟从零开始计数。以此循环,即可实现任意偶数倍分频 奇数倍分频 ...
  • IC君的第46篇原创文章大家在参加IC相关工作笔试或者面试的时候,经常会碰到...时钟分频电路(分频器)在IC设计中经常会用到,其目的是产生不同频率的时钟,满足系统的需要。比如一个系统,常规操作都是在1GHz时钟下...
  • 从本期开始,数字前端版块开始推出”常用电路设计“专题,本期将详细介绍分频电路的设计。分频电路是数字电路中常见的逻辑电路类型。在时序逻辑电路中,时钟是必不可少的,但对于时钟要求不高的基本设计,自行设计的...
  • 从本期开始,数字前端版块开始推出”常用电路设计“专题,本期将详细介绍分频电路的设计。分频电路是数字电路中常见的逻辑电路类型。在时序逻辑电路中,时钟是必不可少的,但对于时钟要求不高的基本设...
  • 输入时钟信号和复位/信号,实现4分频/5分频,占空比为1:1.   二、设计思路 1.偶数分频 假设为N分频,计数到N/2-1时,时钟翻转、计数清零,如此循环就可以得到N(偶)分频   2.奇数分频(占空比为50%) (1)假设为N...
  • 从本期开始,数字前端版块开始推出”常用电路设计“专题,本期将详细介绍分频电路的设计。分频电路是数字电路中常见的逻辑电路类型。在时序逻辑电路中,时钟是必不可少的,但对于时钟要求不高的基本设...
  • vhdl设计分频电路1

    2013-02-06 12:48:00
    2^n分频电路设计:法一:对于2^n分频电路的实现来说,可以采用逐级翻转的设计方法来实现。具体实现过程是:首先定义一个中间信号,然后在输入的时钟信号的上升到来世进行中间信号的翻转操作,这样就可以得到2分频的...
  • verilog的时钟分频与时钟使能 时钟使能电路是同步设计的基本电路。在很多设计中,虽然内部不同模块的处理速度不同,但由于这些时钟是同源的,可以将它们转化为单一时钟处理。在ASIC中可以通过STA约束让分频始终和源...
  • verilog的时钟分频与时钟使能

    千次阅读 2019-03-26 22:25:14
    时钟使能电路是同步设计的基本电路,在很多设计中,虽然内部不同模块的处理速度不同,但由于这些时钟是同源的,可以将它们转化为单一时钟处理;在ASIC中可以通过STA约束让分频始终和源时钟同相,但FPGA由于器件本身...
  • Verilog HDL可控16/8/4/2分频电路设计,控制信号sel分别取值11/10/01/00时,输出对应的16/8/4/2/1分频信号需求分析电路构成分析verilog代码部分及仿真verilog代码 sel_div模块测试仿真部分vt文件生成的电路图...
  • 分频电路(偶分频、奇分频)

    千次阅读 2013-08-27 22:16:40
    在时序电路设计中,几乎所有的信号都需要依靠时钟向前传递,因此在进行VHDL开发前需要确定所需的时钟频率。 偶数分频电路 偶数倍分频是最简单的一种分频模式,可通过计数器来实现,有多种实现方法。下面介绍一种最...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 280
精华内容 112
关键字:

时钟分频电路设计