VHDL语言分频器的设计.ppt

上传人:b****1 文档编号:1393746 上传时间:2022-10-22 格式:PPT 页数:28 大小:160.50KB
下载 相关 举报
VHDL语言分频器的设计.ppt_第1页
第1页 / 共28页
VHDL语言分频器的设计.ppt_第2页
第2页 / 共28页
VHDL语言分频器的设计.ppt_第3页
第3页 / 共28页
VHDL语言分频器的设计.ppt_第4页
第4页 / 共28页
VHDL语言分频器的设计.ppt_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

VHDL语言分频器的设计.ppt

《VHDL语言分频器的设计.ppt》由会员分享,可在线阅读,更多相关《VHDL语言分频器的设计.ppt(28页珍藏版)》请在冰豆网上搜索。

VHDL语言分频器的设计.ppt

专题二.经典模块设计,分频器设计,专题内容:

1.分频器的原理2.二进制分频器的设计3.偶数分频器的设计4.奇数分频器的设计5.占空比可调的分频器的设计6.小数分频器的设计,1.分频器的原理,分频器就是对较高频率的信号进行分频,得到较低频率的信号。

常见的分频器有二进制分频器、偶数分频器、奇数分频器、占空比可调的分频器和小数分频器。

分频系数(倍率)rate=fin/fout,2.二进制分频器的设计,二进制分频就是对输入时钟进行2的整数次幂分频。

设计原理:

(rate=2N,N是整数)定义一个N位的计数器,对输入的时钟脉冲进行计数,计数结果的第N-1位就是对输入时钟的2的N次幂分频。

将相应的位数取出即可得到分频时钟。

二进制分频器的VHDL源程序,Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;Useieee.std_logic_arith.all;Entityfdivisgeneric(N:

integer:

=3);-rate=2N,N为正整数port(clkin:

INstd_logic;clkout:

OUTstd_logic);Endfdiv;,Architectureaoffdivissignalcnt:

std_logic_vector(N-1downto0);Beginprocess(clkin)beginif(clkineventandclkin=1)thencnt=cnt+1;endif;endprocess;clkout=cnt(N-1);Enda;,仿真结果,从波形图可以看到,clkout是clkin的8分频,也就是2的3次幂分频。

如果要产生其他次幂分频,直接修改generic类属变量参数即可。

3.偶数分频器的设计,rate=even(偶数),占空比50%设计原理:

定义一个计数器对输入时钟进行计数,在计数的前一半时间里,输出高电平,在计数的后一半时间里,输出低电平,这样输出的信号就是占空比为50%的偶数分频信号。

例如,6分频,计数值为02输出高电平,计数值为35输出低电平。

偶数分频器的VHDL源程序

(1),Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;Useieee.std_logic_arith.all;Entityfdivisgeneric(N:

integer:

=6);-rate=N,N是偶数port(clkin:

INstd_logic;clkout:

OUTstd_logic);Endfdiv;,Architectureaoffdivissignalcnt:

integerrange0ton-1;Beginprocess(clkin)-计数beginif(clkineventandclkin=1)thenif(cntn-1)thencnt=cnt+1;elsecnt=0;endif;endif;endprocess;process(cnt)-根据计数值,控制输出时钟脉冲的高、低电平beginif(cntn/2)thenclkout=1;elseclkout=0;endif;endprocess;Enda;,偶数分频器的VHDL源程序

(2),Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;Useieee.std_logic_arith.all;Entityfdivisgeneric(N:

integer:

=6);-rate=N,N是偶数port(clkin:

INstd_logic;clkout:

OUTstd_logic);Endfdiv;,Architectureaoffdivissignalcnt:

integerrange0ton/2-1;signaltemp:

std_logic;Beginprocess(clkin)beginif(clkineventandclkin=1)thenif(cnt=n/2-1)thencnt=0;temp=NOTtemp;elsecnt=cnt+1;endif;endif;endprocess;clkout=temp;Enda;,仿真结果,从波形图可以看到,clkout是clkin的6分频。

如果要产生其他分频,直接修改generic类属变量参数即可。

4.奇数分频器的设计,rate=odd(奇数),占空比50%设计原理:

定义两个计数器,分别对输入时钟的上升沿和下降沿进行计数,然后把这两个计数值输入一个组合逻辑,用其控制输出时钟的电平。

这是因为计数值为奇数,占空比为50%,前半个和后半个周期所包含的不是整数个clkin的周期。

例如,5分频,前半个周期包含2.5个clkin周期,后半个周期包含2.5个clkin周期。

奇数分频器的VHDL源程序,Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;Useieee.std_logic_arith.all;Entityfdivisgeneric(N:

integer:

=5);-rate=N,N是奇数port(clkin:

INstd_logic;clkout:

OUTstd_logic);Endfdiv;,architectureaoffdivissignalcnt1,cnt2:

integerrange0toN-1;beginprocess(clkin)beginif(clkineventandclkin=1)then-上升沿计数if(cnt1N-1)thencnt1=cnt1+1;elsecnt1=0;endif;endif;endprocess;,process(clkin)beginif(clkineventandclkin=0)then-下降沿计数if(cnt2N-1)thencnt2=cnt2+1;elsecnt2=0;endif;endif;endprocess;clkout=1whencnt1(N-1)/2orcnt2(N-1)/2else0;enda;,仿真结果,从波形图可以看到,clkout是clkin的5分频。

如果要产生其他分频,直接修改generic类属变量参数即可。

5.占空比可调的分频器的设计,占空比为m:

n设计原理:

定义一个计数器,对输入时钟脉冲进行计数。

根据计数值来判断输出高电平还是低电平。

例如,占空比为3:

10的偶数分频器,当计数值为02时,输出高电平;当计数值为39时,输出低电平。

占空比可调的分频器VHDL源程序,Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;Useieee.std_logic_arith.all;Entityfdivisgeneric(n:

integer:

=10;m:

integer:

=3-占空比m:

n,rate=n);port(clkin:

INstd_logic;clkout:

OUTstd_logic);Endfdiv;,architectureaoffdivissignalcnt:

integerrange0ton-1;beginprocess(clkin)beginif(clkineventandclkin=1)thenif(cntn-1)thencnt=cnt+1;elsecnt=0;endif;endif;endprocess;clkout=1whencntmelse0;enda;,仿真结果,从波形图可以看到,clkout是clkin的10分频,且占空比为3:

10。

如果要产生其他分频,直接修改generic类属变量参数即可。

6.小数分频器的设计,时钟源与用户所需的频率不成整数倍关系,此时可采用小数分频器进行分频。

比如,分频系数为2.5、3.5等半整数分频器。

设计原理:

先设计两个不同分频比的整数分频器,然后通过控制单位时间内两种分频比出现的不同次数来获得所需要的小数分频值。

例如,10.1分频,可以设计出9次10分频,1次11分频,这样总的分频值为:

F=(910+111)/(9+1)=10.1这种实现方法,由于分频器的分频值不断改变,因此分频后得到的信号抖动较大,实际应用中不常用。

而当分频系数为N-0.5时,可控制扣除脉冲的时间,而不是一次N分频,一次N-1分频,这样可以得到一个稳定的脉冲频率。

半整数分频器(N-0.5)的设计框图,分频系数为N-0.5的半整数分频器电路可由一个异或门、一个模N计数器和一个二分频组成。

半整数分频器VHDL源程序,libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;ENTITYfdivISgeneric(N:

integer:

=5);-分频系数N-0.5PORT(clkin:

INSTD_LOGIC;-时钟源clkout:

BUFFERSTD_LOGIC-输出时钟);ENDfdiv;,ARCHITECTUREaOFfdivISSIGNALclk,div2:

STD_LOGIC;SIGNALcount:

integerrange0toN-1;BEGINclk=clkinXORdiv2;-clkin与div2异或后作为模N计数器的时钟PROCESS(clk)BEGINIF(clkeventANDclk=1)THENIF(count=0)THENcount=N-1;-置整数分频值Nclkout=1;ELSEcount=count-1;-模N计数器减法计数clkout=0;ENDIF;ENDIF;ENDPROCESS;,PROCESS(clkout)BEGINIF(clkouteventANDclkout=1)THENdiv2=NOTdiv2;-输出时钟二分频ENDIF;ENDPROCESS;ENDa;,仿真结果,从波形图可以看到,clkout是clkin的4.5分频。

如果要产生其他分频,直接修改generic类属变量参数即可。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1