VHDL语言分频器的设计ppt课件

上传人:鲁** 文档编号:592450484 上传时间:2024-09-20 格式:PPT 页数:28 大小:474.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课件(28页珍藏版)》请在金锄头文库上搜索。

1、专题二. 经典模块设计分频器设计1;.专题内容:n1. 分频器的原理n2. 二进制分频器的设计n3. 偶数分频器的设计n4. 奇数分频器的设计n5. 占空比可调的分频器的设计n6. 小数分频器的设计2;.1. 分频器的原理n分频器就是对较高频率的信号进行分频,得到较低频率的信号。n常见的分频器有二进制分频器、偶数分频器、奇数分频器、占空比可调的分频器和小数分频器。n分频系数(倍率) rate=fin / fout3;.2. 二进制分频器的设计n二进制分频就是对输入时钟进行2的整数次幂分频。n设计原理:(rate=2N,N是整数)定义一个N位的计数器,对输入的时钟脉冲进行计数,计数结果的第N-1

2、位就是对输入时钟的2的N次幂分频。将相应的位数取出即可得到分频时钟。4;.二进制分频器的VHDL源程序nLibrary ieee;nUse ieee.std_logic_1164.all;nUse ieee.std_logic_unsigned.all;nUse ieee.std_logic_arith.all;nEntity fdiv isn generic(N: integer:=3); -rate=2N,N为正整数n port(n clkin: IN std_logic;n clkout: OUT std_logicn );nEnd fdiv;5;.nArchitecture a of

3、fdiv isn signal cnt: std_logic_vector(N-1 downto 0);nBeginn process(clkin)n beginn if(clkinevent and clkin=1) thenn cnt = cnt+1;n end if;n end process;n clkout = cnt(N-1);nEnd a;6;.仿真结果n从波形图可以看到,clkout是clkin的8分频,也就是2的3次幂分频。n如果要产生其他次幂分频,直接修改generic类属变量参数即可。7;.3. 偶数分频器的设计nrate=even(偶数),占空比50%n设计原理:定义一

4、个计数器对输入时钟进行计数,在计数的前一半时间里,输出高电平,在计数的后一半时间里,输出低电平,这样输出的信号就是占空比为50%的偶数分频信号。例如,6分频,计数值为02输出高电平,计数值为35输出低电平。8;.偶数分频器的VHDL源程序(1)nLibrary ieee;nUse ieee.std_logic_1164.all;nUse ieee.std_logic_unsigned.all;nUse ieee.std_logic_arith.all;nEntity fdiv isn generic(N: integer:=6); -rate=N,N是偶数n port(n clkin: IN

5、std_logic;n clkout: OUT std_logicn );nEnd fdiv;9;.nArchitecture a of fdiv isn signal cnt: integer range 0 to n-1;nBeginn process(clkin) -计数n beginn if(clkinevent and clkin=1) thenn if(cntn-1) thenn cnt = cnt+1;n elsen cnt = 0;n end if;n end if;n end process;n n process(cnt) -根据计数值,控制输出时钟脉冲的高、低电平n be

6、ginn if(cntn/2) thenn clkout = 1;n elsen clkout = 0;n end if;n end process;nEnd a;10;.偶数分频器的VHDL源程序(2)nLibrary ieee;nUse ieee.std_logic_1164.all;nUse ieee.std_logic_unsigned.all;nUse ieee.std_logic_arith.all;nEntity fdiv isn generic(N: integer:=6); -rate=N,N是偶数n port(n clkin: IN std_logic;n clkout:

7、OUT std_logicn );nEnd fdiv;11;.nArchitecture a of fdiv isn signal cnt: integer range 0 to n/2-1;n signal temp: std_logic;nBeginn process(clkin)n beginn if(clkinevent and clkin=1) thenn if(cnt=n/2-1) thenn cnt = 0;n temp = NOT temp;n elsen cnt = cnt+1;n end if;n end if;n end process;n clkout = temp;n

8、End a;12;.仿真结果n从波形图可以看到,clkout是clkin的6分频。n如果要产生其他分频,直接修改generic类属变量参数即可。13;.4. 奇数分频器的设计nrate=odd(奇数),占空比50%n设计原理:定义两个计数器,分别对输入时钟的上升沿和下降沿进行计数,然后把这两个计数值输入一个组合逻辑,用其控制输出时钟的电平。这是因为计数值为奇数,占空比为50%,前半个和后半个周期所包含的不是整数个clkin的周期。例如,5分频,前半个周期包含2.5个clkin周期,后半个周期包含2.5个clkin周期。14;.奇数分频器的VHDL源程序nLibrary ieee;nUse ie

9、ee.std_logic_1164.all;nUse ieee.std_logic_unsigned.all;nUse ieee.std_logic_arith.all;nEntity fdiv isn generic(N: integer:=5); -rate=N,N是奇数n port(n clkin: IN std_logic;n clkout: OUT std_logicn );nEnd fdiv;15;.narchitecture a of fdiv isn signal cnt1, cnt2: integer range 0 to N-1;nbeginn process(clkin)

10、n beginn if(clkinevent and clkin=1) then -上升沿计数n if(cnt1N-1) thenn cnt1 = cnt1+1;n elsen cnt1 = 0;n end if;n end if;n end process;16;.n process(clkin)n beginn if(clkinevent and clkin=0) then -下降沿计数n if(cnt2N-1) thenn cnt2 = cnt2+1;n elsen cnt2 = 0;n end if;n end if;n end process;n n clkout = 1 when

11、cnt1(N-1)/2 or cnt2(N-1)/2 elsen 0;nend a;17;.仿真结果n从波形图可以看到,clkout是clkin的5分频。n如果要产生其他分频,直接修改generic类属变量参数即可。18;.5. 占空比可调的分频器的设计n占空比为m:nn设计原理:n定义一个计数器,对输入时钟脉冲进行计数。根据计数值来判断输出高电平还是低电平。例如,占空比为3:10的偶数分频器,当计数值为02时,输出高电平;当计数值为39时,输出低电平。19;.占空比可调的分频器VHDL源程序nLibrary ieee;nUse ieee.std_logic_1164.all;nUse iee

12、e.std_logic_unsigned.all;nUse ieee.std_logic_arith.all;nEntity fdiv isn generic(n n: integer:=10; n m: integer:=3 -占空比m:n,rate=nn );n port(n clkin: IN std_logic;n clkout: OUT std_logicn );nEnd fdiv;20;.narchitecture a of fdiv isn signal cnt: integer range 0 to n-1;nbeginn process(clkin)n beginn if(c

13、lkinevent and clkin=1) thenn if(cntn-1) thenn cnt = cnt+1;n elsen cnt = 0;n end if;n end if;n end process;n n clkout = 1 when cntm elsen 0;nend a;21;.仿真结果n从波形图可以看到,clkout是clkin的10分频,且占空比为3:10。n如果要产生其他分频,直接修改generic类属变量参数即可。22;.6. 小数分频器的设计n时钟源与用户所需的频率不成整数倍关系,此时可采用小数分频器进行分频。 比如,分频系数为2.5、3.5等半整数分频器。n设计

14、原理:先设计两个不同分频比的整数分频器,然后通过控制单位时间内两种分频比出现的不同次数来获得所需要的小数分频值。 例如,10.1分频,可以设计出9次10分频,1次11分频,这样总的分频值为: F = (910+111) / (9+1) = 10.1这种实现方法,由于分频器的分频值不断改变,因此分频后得到的信号抖动较大,实际应用中不常用。而当分频系数为N-0.5时,可控制扣除脉冲的时间,而不是一次N分频,一次N-1分频,这样可以得到一个稳定的脉冲频率。23;.半整数分频器(N-0.5)的设计框图n分频系数为N-0.5的半整数分频器电路可由一个异或门、一个模N计数器和一个二分频组成。24;.半整数

15、分频器VHDL源程序nlibrary ieee;nuse ieee.std_logic_1164.all;nuse ieee.std_logic_unsigned.all;nuse ieee.std_logic_arith.all;nENTITY fdiv ISn generic(N: integer:=5); -分频系数N-0.5n PORT(n clkin: IN STD_LOGIC; -时钟源n clkout: BUFFER STD_LOGIC -输出时钟n );nEND fdiv; 25;.nARCHITECTURE a OF fdiv ISn SIGNAL clk, div2: ST

16、D_LOGIC;n SIGNAL count: integer range 0 to N-1;nBEGINn clk = clkin XOR div2;-clkin与div2异或后作为模N计数器的时钟n PROCESS(clk)n BEGINn IF(clkevent AND clk=1) THENn IF(count=0) THENn count = N-1;-置整数分频值Nn clkout = 1;n ELSEn count = count-1;-模N计数器减法计数n clkout = 0;n END IF;n END IF;n END PROCESS; 26;.n PROCESS(clkout)n BEGINn IF(clkoutevent AND clkout=1) THENn div2 = NOT div2;-输出时钟二分频n END IF;n END PROCESS;nEND a;27;.仿真结果n从波形图可以看到,clkout是clkin的4.5分频。n如果要产生其他分频,直接修改generic类属变量参数即可。28;.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

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