fpga学习笔记1分频电路设计

上传人:jiups****uk12 文档编号:93375944 上传时间:2019-07-21 格式:DOC 页数:5 大小:13.71KB
返回 下载 相关 举报
fpga学习笔记1分频电路设计_第1页
第1页 / 共5页
fpga学习笔记1分频电路设计_第2页
第2页 / 共5页
fpga学习笔记1分频电路设计_第3页
第3页 / 共5页
fpga学习笔记1分频电路设计_第4页
第4页 / 共5页
fpga学习笔记1分频电路设计_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《fpga学习笔记1分频电路设计》由会员分享,可在线阅读,更多相关《fpga学习笔记1分频电路设计(5页珍藏版)》请在金锄头文库上搜索。

1、FPGA学习笔记1分频电路设计  分频就是用一个时钟信号通过一定的电路结构变成不同频率的时钟信号,这里介绍一下整数分频电路的设计方法。整数分频电路有偶数分频和奇数分频两种,我们以实现占空比为50%的分频电路为例子来解释一下分频电路设计的基本原理。假设时钟周期为T,则二分频后输出的时钟周期为2T,三分频后输出的时钟周期为3T,N分频后输出的时钟周期为NT,这是设计分析的基本思路。 1.偶数分频实现 二分频电路设计 二分频电路的实现是最为简单的,只需要用一个D触发器便能实现,因为D触发的输出值每隔一个输入时钟周期T才更新一次值,所以我们只要每次D触发器寄存值的时候把它的输出值取反就可以了

2、,这样它的高电平持续时间为T,低电平持续时间也为T,则为二分频。具体的代码如下所示。 module clkdiv(clk,rst_n,clk_2); input clk,rst_n; output clk_2; reg q; always (posedge clk or negedge rst_n) if(!rst_n) q<=1b0; else q<=q; assign clk_2=q; endmodule 这个设计非常简单,不作过多解释。 六分频电路设计 按照设计的思路,六分频总的时钟周期应该为6T,高电平持续时间为3T,低电平持续时间为3T,我们只需要用一个0-5的计数器,计

3、数从0到5一直循环,当计数器为0,1,2时,输出高电平,计数器为3,4,5时,输出低电平。 具体代码实现如下 module clkdiv6(clk,rst_n,clk_2); input clk,rst_n; output clk_2; reg 2:0 q; /因为用到0-5的计数器,一共要3位D触发器 reg clk_2; always (posedge clk or negedge rst_n) if (!rst_n) q<=3d0; else if(q=3d5) q<=3d0; else q<=q+1b1; always (posedge clk or negedge

4、rst_n) if(!rst_n) clk_2<=1b0; else if(q<3d3) clk_2<=1b1; else clk_2<=1b0; endmodule 经过仿真,符合六分频的设计思路,占空比也为50%,3T的时间为高电平,3T的时间为低电平。 2N分频电路设计思路 偶数分频电路的基本实现思路就是利用计数器,利用0-(2N-1)的计数器,当计数器计数在0-(N-1)的时候输出高电平,其余时间输出低电平就可以完成占空比50%的2N分频电路了 2.奇数分频实现 三分频电路实现 三分频的电路如果按照偶数分频的思想来设计就会遇到一个难题,因为是奇数,不能做到计数器

5、计数到一半的时候输出取反,也就是说按照偶数分频的思路做不到占空比50%,在这里要换一个思路来设计。我们仍然分析一下三分频电路的特点,三分频电路的周期为3T,高电平持续时间为1.5T,低电平持续时间也为1.5T。假设用上面的思路,用1个计数器来分频,则也可以得到三分频,但是占空比为66.7%,即高电平持续时间为2T,低电平持续时间为1T。以下为占空比50%的三分频电路实现,用2个三进制计数器,第1个为时钟上升沿触发,第2个为时钟下降沿触发。对第1个计数器而言,小于2取高电平则,0-2T为高电平,2T-3T为低电平,对第2个计数器而言,小于2取高电平,则0.5T-2.5T为高电平,2.5T-3.5

6、T为低电平,实质上第2个的波形延时了0.5T,他们公共的取高电平的时间为0.5T-2T,刚好是1.5T,正式三分频占空比为50%高电平所持续的时间。下面为具体代码实现。 module clkdiv3(clk,rst_n,clk_2); input clk,rst_n; output clk_2; reg 1:0count1;/上升沿触发的3进制计数器1 reg 1:0count2;/下降沿触发的3进制计数器2 reg clk_p,clk_n; always (posedge clk or negedge rst_n)/上升沿触发的3进制计数器1 if(!rst_n) count1<=2d

7、0; else if(count1=2d2) count1<=1b0; else count1<=count1+1b1; always (posedge clk or negedge rst_n) if(!rst_n) clk_p<=1b0; else if(count1<2d2) clk_p<=1b1; else clk_p<=1b0; always (negedge clk or negedge rst_n)/下降沿触发的3进制计数器2 if(!rst_n) count2<=2d0; else if(count2=2d2) count2<=2

8、d0; else count2<=count2+1b1; always (negedge clk or negedge rst_n) if(!rst_n) clk_n<=1b0; else if (count2<2d2) clk_n<=1b1; else clk_n<=1b0; assign clk_2=clk_p&clk_n; endmodule 仿真的波形图如下 可见,实现了三分频占空比为50%的功能,但是仍然有不足的地方就是相位不是和原始时钟同相,延迟了0.5T。 五分频电路设计 按照三分频的分频思路,五分频的代码如下 module clkdiv5(

9、clk,rst_n,clk_2); input clk,rst_n; output clk_2; reg 2:0count1;/上升沿触发的5进制计数器1 reg 2:0count2;/下降沿触发的5进制计数器2 reg clk_p,clk_n; always (posedge clk or negedge rst_n)/上升沿触发的5进制计数器1 if(!rst_n) count1<=3d0; else if(count1=3d4) count1<=1b0; else count1<=count1+1b1; always (posedge clk or negedge rs

10、t_n) if(!rst_n) clk_p<=1b0; else if(count1<5d4) clk_p<=1b1; else clk_p<=1b0; always (negedge clk or negedge rst_n)/下降沿触发的5进制计数器2 if(!rst_n) count2<=3d0; else if(count2=3d4) count2<=3d0; else count2<=count2+1b1; always (negedge clk or negedge rst_n) if(!rst_n) clk_n<=1b0; else if (count2<3d4) clk_n<=1b1; else clk_n<=1b0; assign clk_2=clk_p&clk_n; endmodule 设计的思路和三分频一样,只是把计数器的进制改动了,并且把翻转时的判断逻辑改动了。 总结 按照以上偶数分频和奇数分频的方法,可以设计任意的N分频电路,以获得占空比为50%的时钟,不足之处是奇数分频不能获得与时钟同相的波形。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号