欢迎来到天天文库
浏览记录
ID:11893507
大小:90.00 KB
页数:5页
时间:2018-07-14
《基于vhdl的可控脉冲发声器 设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、可控脉冲发生器的设计1.设计要求:实现周期、占空比均可调的脉冲发生器。(1)采用1khz的工作时钟;(2)脉冲周期0.5s~6s,占空比10%~90%;(3)可初始化:周期2.5s,占空比50%;2.实验目的1、了解可控脉冲发生器的实现机理。2、学会用示波器观察FPGA产生的信号。3、学习用VHDL编写复杂功能的代码。3.实验原理:脉冲发生器就是要产生一个脉冲波形,而可控脉冲发生器则是要产生一个周期和占空比可变的脉冲波形。可控脉冲发生器的实现原理比较简单,可以简单的理解为一个计数器对输入的时钟信号进行分频的过程。通过改变计数器的上限值来达到改变周期的目的,通过改
2、变电平翻转的阈值来达到改变占空比的目的。下面举个简单的例子来说明其工作原理。假如有一个计数器T对时钟分频,其计数的范围是从0~N,另取一个M(0≤M≤N),若输出为Q,那么Q只要满足条件时,通过改变N值,即可改变输出的脉冲波的周期;改变M值,即可改变脉冲波的占空比。这样输出的脉冲波的周期和占空比分别为:4.实验内容:编写实现可控脉冲发生器程序,通过脉冲周期和占空比改变实现不同脉冲的输出。用Quartus软件对设计进行编译、综合、仿真,给出相应的时序仿真波形和硬件电路图。5.程序设计及仿真:libraryieee;useieee.std_logic_1164.al
3、l;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityexp10isport(Clk:instd_logic;--时钟输入Rst:instd_logic;--复位输入NU,ND:instd_logic;--输入:控制频率的改变MU,MD:instd_logic;--输入:控制占空比的改变Fout:outstd_logic--波形输出);endexp10;architecturebehaveofexp10issignalN_Buffer,M_Buffer:std_logic_vecto
4、r(10downto0);signalN_Count:std_logic_vector(10downto0);signalclkin:std_logic;signalClk_Count:std_logic_vector(12downto0);--产生一个低速时钟,用于按键判断beginprocess(Clk)--计数器累加beginif(Clk'eventandClk='1')thenif(N_Count=N_Buffer)thenN_Count<="00000000000";elseN_Count<=N_Count+1;endif;endif;endproce
5、ss;process(Clk)--波形判断beginif(Clk'eventandClk='1')thenif(N_CountM_BufferandN_Count6、)--频率及占空比的改变1beginif(clkin'eventandclkin='0')thenif(Rst='0')thenM_Buffer<="01000000000";N_Buffer<="10000000000";elsif(NU='0')thenN_Buffer<=N_Buffer+1;elsif(ND='0')thenN_Buffer<=N_Buffer-1;elsif(MU='0')thenM_Buffer<=M_Buffer+1;elsif(MD='0')thenM_Buffer<=M_Buffer-1;endif;endif;endproce7、ss;endbehave;(2)仿真图:6.引脚绑定:7.心得体会:在课程设计的这段时间里,我认为收获还是很多的,不但进一步掌握了数字电子技术的基础知识及一门专业仿真软件的基本操作,还提高了自己的设计能力及动手能力,同时对于抢答器来了个系统的总结。更多的是让我看清了自己,明白了凡事需要耐心,实践是检验学习的唯一标准。理论知识的不足在这次课设中表现的很明显。这将有助于我今后的学习,端正自己的学习态度,从而更加努力的学习。总之,通过本次课程设计不但让我又学到了一些知识,而且也提高了我的综合能力。使我在各方面都得到了锻炼,非常感谢我们的指导老师,使我这次的课程设计任务8、圆满完成。
6、)--频率及占空比的改变1beginif(clkin'eventandclkin='0')thenif(Rst='0')thenM_Buffer<="01000000000";N_Buffer<="10000000000";elsif(NU='0')thenN_Buffer<=N_Buffer+1;elsif(ND='0')thenN_Buffer<=N_Buffer-1;elsif(MU='0')thenM_Buffer<=M_Buffer+1;elsif(MD='0')thenM_Buffer<=M_Buffer-1;endif;endif;endproce
7、ss;endbehave;(2)仿真图:6.引脚绑定:7.心得体会:在课程设计的这段时间里,我认为收获还是很多的,不但进一步掌握了数字电子技术的基础知识及一门专业仿真软件的基本操作,还提高了自己的设计能力及动手能力,同时对于抢答器来了个系统的总结。更多的是让我看清了自己,明白了凡事需要耐心,实践是检验学习的唯一标准。理论知识的不足在这次课设中表现的很明显。这将有助于我今后的学习,端正自己的学习态度,从而更加努力的学习。总之,通过本次课程设计不但让我又学到了一些知识,而且也提高了我的综合能力。使我在各方面都得到了锻炼,非常感谢我们的指导老师,使我这次的课程设计任务
8、圆满完成。
此文档下载收益归作者所有