实验七 分频器电路设计.doc
上传人:yy****24 上传时间:2024-09-09 格式:DOC 页数:5 大小:65KB 金币:12 举报 版权申诉
预览加载中,请您耐心等待几秒...

实验七 分频器电路设计.doc

实验七分频器电路设计.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

12 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验七、分频器电路设计一、实验目的1、学习任意分频器的设计方法;2、学习数控分频器的设计、分析和测试方法。二、实验要求1、基本要求设计一个偶分频器设计一个2n分频器设计一个奇分频器设计一个半整数分频器设计一个数控分频器2、扩展要求1、设计一个任意N分频计数器。N为奇数或偶数2、设计一个硬件电子琴电路三、实验原理1、偶数分频对时钟进行偶数分频,使占空比为50%。只要使用一个计数器,在计数器的前一半时间使输出为高电平,在计数器的后一半时间使输出为低电平,即可得到偶分频时钟。2、奇数分频对时钟进行奇数分频,使占空比为50%。先对输入时钟的上升沿进行计数,让一个内部信号在前一半时间(分频系数除2取整)为高电平,后一半时间为低电平;再对输入时钟的下降沿进行计数,让另一个内部信号在前一半时间为高电平,后一半时间为低电平;然后将这内部两个信号相或后即得到奇数分频时钟。3、2n分频器用一个M(2M>=f0)位的二进制计数器对输入时钟进行计数。其第0位为输入时钟的二分频,第1位为输入时钟的四分频,第2位为输入时钟的8分频,依此类推,第n-1位为输入时钟的2n分频。4、半整数分频器分频系数为N=0.5的整数倍的分频器电路可由一个异或门、一个模N的计数器和一个2分频构成。通用半整数分频器电路组成如图7-1所示。异或门模N计数器2分频器F0/(N-5)F0/(2N-1)图7-1通用半整数分频器电路框图与原理图5、数控分频器数控分频器的功能就是在输入端给定不同的输入数据时,将对输入的时钟信号有不同的分频比。数控分频器一般是用计数值可并行预置的加法计数器完成的,方法是将计数溢出位与预置数加载输入信号相接即可。四、实验步骤建立一个工程项目,路径如:D:\20050837\seventh,项目名和顶层实体名为freq_div。1、设计一个分频系数可预置的偶分频器(如8分频器),并进行编译仿真。2、设计一个2n分频器(如输入频率为1024HZ,输出频率为256HZ,64Hz,4Hz等),并进行编译仿真。3、设计一个分频系数可预置的占空比为50%的奇分频器(如5分频器),并进行编译仿真。4、根据图7-1设计一个分频系数是N-0.5的半整数分频器,并进行编译仿真。5、设计一个数控分频器,进行编译仿真,下载测试,并画出该程序的RTL电路图。图7-2当给出不同输入值D时,FOUT输出不同频率(CLK周期=50ns)(1)仿真:输入不同的CLK频率和预置值D,给出如图7-2的时序波形。(2)下载测试:频率选65536Hz或更高(确保分频后落在音频范围);输出FOUT接扬声器(SPKER)。编译下载后进行硬件测试:改变输入值,可听到不同音调的声音。五、参考程序1、偶分频器程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYFDIV8ISGENERIC(N:INTEGER:=8);PORT(CLR,CLKIN:INSTD_LOGIC;CLKOUT:OUTSTD_LOGIC);ENDFDIV8;ARCHITECTUREONEOFFDIV8ISSIGNALCOUNT:INTEGER;BEGINPROCESS(CLKIN,CLR)BEGINIFCLR=‘1’THENCOUNT<=0;ELSIF(CLKIN'EVENTANDCLKIN=‘1’)THENIF(COUNT=N-1)THENCOUNT<=0;ELSECOUNT<=COUNT+1;IFCOUNT<INTEGER(N/2)THENCLKOUT<=‘0’;ELSECLKOUT<=‘1’;ENDIF;ENDIF;ENDIF;ENDPROCESS;ENDONE2、设计一分频器,输入频率为1024HZ,输出频率为512HZ,64HZ,4HZ,1HZ.LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYFPQISPORT(CLK,CLR:INSTD_LOGIC;CLK1024,CLK64,CLK4,CLK1:OUTSTD_LOGIC);ENDFPQ;ARCHITECTUREARTOFFPQISSIGNALCOUNT:STD_LOGIC_VECTOR(9DOWNTO0);BEGINPROCESS(CLK,CLR)BEGINIF(CLR=‘1’)THENCOUNT<=(OTHERS=>’0’);ELSIF(CLK'EVENTANDCLK=‘1’)THENCOUNT<