如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
数控分频器的设计1、实验目的:学习数控分频器的设计、分析和测试方法。2、实验原理:数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可,详细设计程序如例下文所示。1)VHDL及语句分析LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDVFIS--定义实体DVFPORT(CLK:INSTD_LOGIC;--时钟输入D:INSTD_LOGIC_VECTOR(7DOWNTO0);--7位预置数FOUT:OUTSTD_LOGIC);--输出的频率ENDDVF;ARCHITECTUREoneOFDVFIS--定义结构体oneSIGNALFULL:STD_LOGIC;--定义信号fullBEGINP_REG:PROCESS(CLK)--进程P_REG中CNT8从预置数D开始逐步累加到255后,FULL置1;再将CNT8置为D,循环以获得一个新的周期脉冲序列FULL,即产生新的频率VARIABLECNT8:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFCLK'EVENTANDCLK='1'THENIFCNT8="11111111"THENCNT8:=D;FULL<='1';ELSECNT8:=CNT8+1;FULL<='0';ENDIF;ENDIF;ENDPROCESSP_REG;P_DIV:PROCESS(FULL)--进程P_DIV中,FOUT是占空比为50%的周期信号。FULL上升沿时CNT2取反,形成0/1交替的序列。而FOUT随CNT2变化。VARIABLECNT2:STD_LOGIC;BEGINIFFULL'EVENTANDFULL='1'THENCNT2:=NOTCNT2;IFCNT2='1'THENFOUT<='1';ELSEFOUT<='0';ENDIF;ENDIF;ENDPROCESSP_DIV;END;进程P_REG的功能进程P_REG中CNT8从预置数D开始逐步累加到255后,FULL置1;再将CNT8置为D,循环以获得一个新的周期序列FULL,即用预置数D产生新频率的序列,达到分频的效果。如下图所示,当CNT8累加到255后,标记位FULL置1。因此,FULL与CLK的频率关系为:FULL=CLK/(256-D)注:当D=255时,FULL始终为1,FULL的频率为0。下面是不同的D与FULL之间的关系。进程P_DIV的功能进程P_DIV中,FOUT是占空比为50%的周期信号。FULL上升沿时CNT2取反,形成0/1交替的序列。而FOUT随CNT2变化。因此,FULL与FOUT的频率关系为:FOUT=FULL/2注:当D=255时,FULL始终为1,FULL的频率为0,所以FOUT的频率也为0。CLK、FULL和FOUT之间的分频关系FULL与CLK的频率关系为:FULL=CLK/(256-D)FULL与FOUT的频率关系为:FOUT=FULL/2因此,FOUT与CLK的频率关系为:FOUT=CLK/2(256-D)3、实验结果以下是电路的时序仿真图以下是RTL电路图