实验5:数控分频器的设计1201410223潘震麟一、实验目的通过按键1、2控制产生不同分频,进而在扬声器上产生不同的音频。二、实验仪器与器材计算机1台,GW48-PK2S实验箱1台,QuartusⅡ9.01套。三、实验内容1.设计一个数控分频器2.利用VHDL语言输入进行设计并进行仿真果并进行硬件下载验证。四、实验设计原理数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可,其基本的框图如图1所示。五、实验步骤(1)建立工作库目录文件夹为E:/DVF/。(2)选择目标器件。Acex1k—EP1K100QC208-3。(3)输入源程序。打开QuartusII,选择菜单File→New命令。然后在VHDL文本编辑框窗中输入n位乘法器的VHDL源代码DVF.vhd。(4)文件存盘。选择File→SaveAs命令,找到已设立的文件夹E:/DVF/,VHDL文件的存盘文件名应与实体名一致,均为DVF.vhd。(5)编译和排错。(6)仿真与分析。七、源程序与原理LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDVFISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC_VECTOR(7DOWNTO0);FOUT:OUTSTD_LOGIC);END;ARCHITECTUREoneOFDVFISSIGNALFULL:STD_LOGIC;BEGINP_REG:PROCESS(CLK)VARIABLECNT8:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFCLK'EVENTANDCLK='1'THENIFCNT8=11111111THENCNT8:=D;--当CNT8计数计满时,输入数据D被同步预置给计数器CNT8FULL='1';--同时使溢出标志信号FULL输出为高电平ELSECNT8:=CNT8+1;--否则继续作加1计数FULL='0';--且输出溢出标志信号FULL为低电平ENDIF;ENDIF;ENDPROCESSP_REG;P_DIV:PROCESS(FULL)VARIABLECNT2:STD_LOGIC;BEGINIFFULL'EVENTANDFULL='1'THENCNT2:=NOTCNT2;--如果溢出标志信号FULL为高电平,D触发器输出取反IFCNT2='1'THENFOUT='1';ELSEFOUT='0';ENDIF;ENDIF;ENDPROCESSP_DIV;END;八、仿真分析九、硬件逻辑验证选择实验电路结构图NO.1:CLOCK9CLOCK5CLOCK2CLOCK0SPEAKER扬声器NO.1PIO11-PIO8PIO15-PIO12PIO48PIO49D15D16HEXHEXPIO32PIO33PIO34PIO35PIO36PIO37PIO38PIO39D1D2D3D4D5D6D7D8实验电路结构图译码器译码器译码器译码器FPGA/CPLD目标芯片12345678PIO3-PIO0PIO7-PIO4HEXHEX键1键2键3键4键5键6键7键8PIO39-PIO32PIO31-PIO28PIO27-PIO24PIO23-PIO20PIO19-PIO16引脚的锁定:十.心得总结总的来说,这次设计的数控分频器还是比较成功的。通过实验我初步掌握了分频计数器的设计原理我基本上掌握了实验的步骤,能够脱离课本操作,但熟练程度有待于提高。在硬件下载时遇到了问题,我们做了很多尝试,比如换试验箱,替换管脚等都无法成功。分频计数器输入的源程序是在老师的帮助下完成的,我认为我们应养成独立思索的好习惯,下次我会尝试自己编写程序。一次生,二回熟。我相信只要我敢于编程,勤于编程,就一定会有进步。