- 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)