ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:214.83KB ,
资源ID:23184102      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23184102.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(西安电子科技大学 VHDL大作业程控滤波器设计.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、西安电子科技大学 VHDL大作业程控滤波器设计一、 设计功能与要求设计并制作程控滤波器,其组成如图8.108所示。放大器增益可设置;低通或高通滤波器通带、截止频率等参数可设置。 1. 放大器输入正弦信号电压振幅为10mV,电压增益为40dB,增益10dB步进可调,通频带为100Hz-40kHz,放大器输出电压无明显失真。 2. 滤波器可设置为低通滤波器,其-3dB截止频率fc在1kHz-20kHz范围内可调,调节的频率步进为1kHz,2fc处放大器与滤波器的总电压增益不大于30dB,RL=1k。 3. 滤波器可设置为高通滤波器,其-3dB截止频率fc在1kHz-20kHz范围内可调,调节的频率

2、步进为1kHz,0.5fc处放大器与滤波器的总电压增益不大于30dB,RL=1k。 4. 电压增益与截止频率的误差均不大于10%,有设置参数显示功能。2设计思路及框图根据设计要求可画出FPGA控制模块的框图如下图所示。根据FPGA控制模块的框图可设计出如下图所示的FPGA控制核心模块原理,程序见附录。其中,输入端clk接50MHz晶振电路;输入端接高低电平,00时键盘控制低通滤波器,01时键盘控制高通滤波器,10时键盘控制的程控滤波器;输入端接键盘。输出端start接发光二极管,有键值输出时发光二极管显示;输出端接键盘;输出端接数码管a、b、c、d、e、f、g、h;输出端分别接四个共阴极数码管

3、。KEYBOARD是键盘模块,用于设置放大倍数和截止频率;CONTROL是控制模块,用于控制低通滤波器、高通滤波器和程控放大器是否工作,并传送键盘数据;CONTROL1、CONTROL2、CONTROL3模块分别用于控制低通滤波器、高通滤波器的截止频率和放大器的放大倍数。根据设计要求可画出FPGA控制模块的框图如下图所示。系统各个模块介绍:1 分频器模块根据设计要求可画出分频器模块的框图如图所示。分频器模块框图该模块将的晶振进行25000和625分频,得到两个不同频率的时钟信号,分别为,其中时钟用来为键盘模块提供时钟信号,而时钟用来为键盘模块和低通滤波器控制模块、高通滤波器控制模块和放大器控制

4、模块提供时钟信号。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;beginprocess(clk)variable data:integer range 0 to 25000;b

5、eginif clkevent 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 clkevent and clk=1then if data=625 then data:=0; clk_mid=not clk_mid; else data:=data+1; end if;end i

6、f;clk1=clk_mid;end process;end arch;仿真结果:3.3.2 键盘模块根据设计要求可画出键盘模块的框图如图11所示。图11 键盘模块框图在时钟信号和作用下,用行列式键盘来产生所需的键值,用作为控制信号,当其值为或者时,用键盘C键来加1实现高通滤波器和低通滤波器的截止频率的步进,用D键来实现减1操作;当其值为时,用键盘C键来加10实现放大器增益步进,用D键来实现减10操作。从而实现放大倍数和截止频率的调节。同时将输入的数据用数码管进行显示。信号从端口输出。library ieee;use ieee.std_logic_1164.all;use ieee.std_l

7、ogic_arith.all;use ieee.std_logic_unsigned.all;entity KEYBOARD isport(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_vector(3 downto 0); start:out std_logic; key_hang:out std_logic_vector(3 downto

8、 0); data_p:out std_logic_vector(7 downto 0); disp_data:out std_logic_vector(7 downto 0); disp_sel:out std_logic_vector(3 downto 0) );end;architecture arch of KEYBOARD is signal int:std_logic;signal clk_sel:std_logic;signal start_reg:std_logic;signal disp_sel_reg:std_logic_vector(3 downto 0);signal

9、data_l,data_h:std_logic_vector(3 downto 0);signal data_tmp:std_logic_vector(3 downto 0);signal key_hang_tmp:std_logic_vector(3 downto 0);signal disp_data_reg:std_logic_vector(3 downto 0);signal key_code:std_logic_vector(7 downto 0);signal data_p_reg:std_logic_vector(7 downto 0);begin control_out=con

10、trol;key_code=key_hang_tmp&key_lie;data_p=data_p_reg;start=start_reg;key_hang=key_hang_tmp;disp_sel=disp_sel_reg;clk_sel=clk_1k and (not int);process(clk_sel,clk_40k,int)variable state:integer range 0 to 3;begin if rising_edge(clk_40k)then int key_hang_tmpkey_hang_tmpkey_hang_tmpkey_hang_tmp data_tm

11、p case key_code is when 01110111= data_l=0001; data_h data_l=0010; data_h data_l=0011; data_h data_l=0100;-4 data_h data_l=0101; data_h data_l=0110; data_h data_l=0111;-7 data_h data_l=1000; data_h data_l=1001; data_h data_l=0000;-0 data_h-C if control=10then-+10 if data_h=1001 then data_h=1001; els

12、e data_h=data_h+1; end if; elsif control=00or control=01 then -+1 if data_h=1001then if data_l=1001then data_h=1001; data_l=1001; else data_l=data_l+1; end if; elsif data_l=1001then data_l=1000; data_h=data_h+1; else data_l=data_l+1; data_h-D if control=10then-10 if data_h=0000 then data_h=0000; els

13、e data_h=data_h-1; end if; elsif control=00or control=01 then -1 if data_l=0000and data_h=0000then data_l=0000; data_h=0000; elsif data_l=0000then data_l=1001; data_h=data_h-1; else data_l=data_l-1; data_h-E data_l=0000; data_l-F data_l=data_l; data_h=data_h; data_p_reg=data_h&data_l; start_reg stat

14、e:=2; end case; when 2= if counter=99999 then counter:=0; state:=3; else counter:=counter+1; state:=2; end if; when 3= start_reg disp_sel_reg=1011; disp_data_reg disp_sel_reg=0111; disp_data_reg disp_sel_reg=1110; if control=00or control=01 then disp_data_reg=1100;-k elsif control=10then disp_data_r

15、eg disp_sel_reg=1101; if control=00or control=01 then disp_data_reg=1101;-h elsif control=10then disp_data_reg disp_data disp_data disp_data disp_data disp_data disp_data disp_data disp_data disp_data disp_data disp_data disp_data disp_data disp_data disp_data road1=1; road2=0; road3=0; data_out1 ro

16、ad1=0; road2=1; road3=0; data_out2 road1=0; road2=0; road3=1; data_out3null;end case;end process;end arch;仿真结果如下:3.3.4 低通滤波器控制模块根据设计要求可画出低通滤波器模块的框图如图13所示。图13 低通滤波器模块框图在时钟信号的作用下,将传送来的键盘数据转化成十进制数,然后与预先设置好的数值进行比较得到选通的频率,从而通过,输出二进制代码,进而输入到模拟开关,最后选通相应的开关,从而实现截止频率的控制。低通滤波器控制模块如图12所示。library ieee;use ieee.

17、std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity CONTROL1 is port(control:in std_logic; clk:in std_logic; bcd:in std_logic_vector(7 downto 0); d0,d1,d2,d3,d4:out std_logic_vector(2 downto 0) );end CONTROL1;architecture arch of CONTROL1 isbeginprocess(clk,bcd)var

18、iable data:integer range 0 to 100;begin if clkevent and clk=1then data:=conv_integer(bcd(7 downto 4)*10+conv_integer(bcd(3 downto 0);if control=1then case data is when 1= d0=000; d1=100; d2=100; d3=100; d4 d0=001; d1=100; d2=100; d3=100; d4 d0=010; d1=100; d2=100; d3=100; d4 d0=011; d1=100; d2=100;

19、d3=100; d4 d0=100; d1=000; d2=100; d3=100; d4 d0=100; d1=001; d2=100; d3=100; d4 d0=100; d1=010; d2=100; d3=100; d4 d0=100; d1=011; d2=100; d3=100; d4 d0=100; d1=100; d2=000; d3=100; d4 d0=100; d1=100; d2=001; d3=100; d4 d0=100; d1=100; d2=010; d3=100; d4 d0=100; d1=100; d2=011; d3=100; d4 d0=100; d1=100; d2=100; d3=000; d4 d0=100; d1=100; d2=

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1