基于VHDL的可控脈冲发声器设计.docVIP

  • 20
  • 0
  • 约2.93千字
  • 约 5页
  • 2016-11-27 发布于重庆
  • 举报
基于VHDL的可控脈冲发声器设计

可控脉冲发生器的设计 1.设计要求: 实现周期、占空比均可调的脉冲发生器。 (1)采用1khz的工作时钟; (2)脉冲周期0.5s~6s,占空比10%~90%; (3)可初始化:周期2.5s,占空比50%; 2.实验目的 了解可控脉冲发生器的实现机理。 学会用示波器观察FPGA产生的信号。 学习用VHDL编写复杂功能的代码。 3.实验原理: 脉冲发生器就是要产生一个脉冲波形,而可控脉冲发生器则是要产生一个周期和占空比可变的脉冲波形。可控脉冲发生器的实现原理比较简单,可以简单的理解为一个计数器对输入的时钟信号进行分频的过程。通过改变计数器的上限值来达到改变周期的目的,通过改变电平翻转的阈值来达到改变占空比的目的。下面举个简单的例子来说明其工作原理。 假如有一个计数器T对时钟分频,其计数的范围是从0~N,另取一个 M(0≤M≤N),若输出为Q,那么Q只要满足条件 时,通过改变N值,即可改变输出的脉冲波的周期;改变M值,即可改变脉冲波的占空比。这样输出的脉冲波的周期和占空比分别为: 4.实验内容: 编写实现可控脉冲发生器程序,通过脉冲周期和占空比改变实现不同脉冲的输出。用Quartus软件对设计进行编译、综合、仿真,给出相应的时序仿真波形和硬件电路图。 5.程序设计及仿真: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity exp10 is port( Clk : in std_logic; --时钟输入 Rst : in std_logic; --复位输入 NU,ND : in std_logic; --输入:控制频率的改变 MU,MD : in std_logic; --输入:控制占空比的改变 Fout : out std_logic --波形输出 ); end exp10; architecture behave of exp10 is signal N_Buffer,M_Buffer : std_logic_vector(10 downto 0); signal N_Count :std_logic_vector(10 downto 0); signal clkin : std_logic; signal Clk_Count : std_logic_vector(12 downto 0); --产生一个低速时钟,用于按键判断 begin process(Clk) --计数器累加 begin if(Clkevent and Clk=1) then if(N_Count=N_Buffer) then N_Count=00000000000; else N_Count=N_Count+1; end if; end if; end process; process(Clk) --波形判断 begin if(Clkevent and Clk=1) then if(N_CountM_Buffer) then Fout=1; elsif(N_CountM_Buffer and N_CountN_Buffer) then Fout=0; end if; end if; end process; process(Clk) begin if(Clkevent and Clk=1) then Clk_Count=Clk_Count+1; end if; clkin=Clk_Count(12); end process; process(clkin) --频率及占空比的改变1 begin if(clkinevent and clkin=0) then if(Rst=0) then

文档评论(0)

1亿VIP精品文档

相关文档