当前位置: 首页 > >

西安电子科技大学 VHDL大作业“程控滤波器设计”

发布时间:

一、 设计功能与要求 设计并制作程控滤波器,,其组成如图 8.108 所示。放大器增益可设置;低通或高通滤 波器通带、截止频率等参数可设置。 1. 放大器输入正弦信号电压振幅为 10mV,电压增益为 40dB,增益 10dB 步进可调,通 频带为 100Hz-40kHz,放大器输出电压无明显失真。 2. 滤波器可设置为低通滤波器,其-3dB 截止频率 fc 在 1kHz-20kHz 范围内可调,调节 的频率步进为 1kHz,2fc 处放大器与滤波器的总电压增益不大于 30dB,RL=1k。 3. 滤波器可设置为高通滤波器,其-3dB 截止频率 fc 在 1kHz-20kHz 范围内可调,调节 的频率步进为 1kHz,0.5fc 处放大器与滤波器的总电压增益不大于 30dB,RL=1k。 4. 电压增益与截止频率的误差均不大于 10%,有设置参数显示功能。 二.设计思路及框图 根据设计要求可画出 FPGA 控制模块的框图如下图所示。 控制信号 输入时钟 分频器 键盘输入 显示参数 控制模块 低通 滤波器 高通 滤波器 放大器 输 输 输 出 出 出 1 2 3 根据 FPGA 控制模块的框图可设计出如下图所示的 FPGA 控制核心模块原理,程序见附 录。其中,输入端 clk 接 50MHz 晶振电路;输入端接高低电*,00 时键盘控制低通滤波器, 01 时键盘控制高通滤波器,10 时键盘控制的程控滤波器;输入端接键盘。输出端 start 接发 光二极管,有键值输出时发光二极管显示;输出端接键盘;输出端接数码管 a、b、c、d、e、 f、g、h;输出端分别接四个共阴极数码管。KEYBOARD 是键盘模块,用于设置放大倍数和截 止频率;CONTROL 是控制模块,用于控制低通滤波器、高通滤波器和程控放大器是否工作, 并传送键盘数据;CONTROL1、CONTROL2、CONTROL3 模块分别用于控制低通滤波器、高通 滤波器的截止频率和放大器的放大倍数。 根据设计要求可画出 FPGA 控制模块的框图如下图所示。 系统各个模块介绍: 1 分频器模块 根据设计要求可画出分频器模块的框图如图所示。 输入时钟clk 进程1 进程2 输出clk0 输出clk1 分频器模块框图 该模块将 50MHz的晶振进行 25000 和 625 分频,得到两个不同频率的时钟信号,分别 为 clk0 ? 50MHz ? 1000Hz , clk1 ? 50MHz ? 40000Hz ,其中时钟 clk0 用来为键盘 2? 25000 2? 625 模块提供时钟信号,而时钟 clk1用来为键盘模块和低通滤波器控制模块、高通滤波器控制 模块和放大器控制模块提供时钟信号。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity FEN is port(clk:in std_logic; clk1,clk0:out std_logic); end FEN; architecture arch of FEN is signal clk_mid0,clk_mid:std_logic; begin process(clk) variable data:integer range 0 to 25000; begin if clk'event and clk='1' then if data=25000 then data:=0; clk_mid0<=not clk_mid0; else data:=data+1; end if; end if; clk0<=clk_mid0; end process; process(clk) variable data:integer range 0 to 625; begin if clk'event and clk='1'then if data=625 then data:=0; clk_mid<=not clk_mid; else data:=data+1; end if; end if; clk1<=clk_mid; end process; end arch; 仿真结果: 3.3.2 键盘模块 根据设计要求可画出键盘模块的框图如图 11 所示。 输入控制 信号 低通和高通 滤波器 放大器 时钟信号 clk1 加1或减1 加10或减10 键值 输出键值 时钟信号 clk0 显示参数 图 11 键盘模块框图 在时钟信号 clk0 和 clk1作用下,用行列式键盘来产生所需的键值,用 contro[1..0] 作为 控制信号,当其值为 '00' 或者 '01' 时,用键盘 C 键来加 1 实现高通滤波器和低通滤波器的截 止频率的步进,用 D 键来实现减 1 操作;当其值为 '10' 时,用键盘 C 键来加 10 实现放大器 增益步进,用 D 键来实现减 10 操作。从而实现放大倍数和截止频率的调节。同时将输入的 数据用数码管进行显示。信号从 data _ p[7..0]端口输出。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity KEYBOARD is port(control:in std_logic_vector(1 downto 0); control_out:out std_logic_vector(1 downto 0); clk_1k:in std_logic; clk_40k:in std_logic; key_lie:in std_logic



友情链接: