电子科技大学-电子技术实验-FPGA-频率计-实验报告(共25页).doc
《电子科技大学-电子技术实验-FPGA-频率计-实验报告(共25页).doc》由会员分享,可在线阅读,更多相关《电子科技大学-电子技术实验-FPGA-频率计-实验报告(共25页).doc(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上现代电子技术综合实验论文报告XX XXX中文摘要摘 要:随着电子信息产业的不断发展,信号频率的测量在科技研究和实际应用中的作用日益重要。传统的频率计通常是用很多的逻辑电路和时序电路来实现的,这种电路一般运行缓慢,而且测量频率的范围比较小。考虑到上述问题,本文设计一个基于FPGA技术的数字频率计。首先,我们把方波信号送入计数器里进行计数,获得频率值;最后把测得的频率数值送入显示电路里进行显示。本文从频率计的具体设计触发,详细阐述了基于FPGA的数字频率计的设计方案,设计了各模块的代码,并对硬件电路进行了仿真。关键词:FPGA,VHDL,频率计,测量一、 引言随着电子信息
2、产业的发展,信号作为其最基础的元素,其频率的测量在科技研究和实际应用中的作用日益重要,而且需要测频的范围也越来越宽。传统的频率计通常采用组合电路和时序电路等大量的硬件电路构成,产品不但体积较大,运行速度慢,而且测量范围低,精度低。因此,随着对频率测量的要求的提高,传统的测频的方法在实际应用中已不能满足要求。因此我们需要寻找一种新的测频的方法。随着FPGA技术的发展和成熟,用FPGA来做为一个电路系统的控制电路逐渐显示出其无与伦比的优越性。因此本采用FPGA来做为电路的控制系统,设计一个能测量10Hz到100MHz的数字频率计。用FPGA来做控制电路的数字频率计测量频率精度高,测量频率的范围得到
3、很大的提高。二、 项目任务与设计思路1、 实验项目数字频率计的设计2、 实验指标被测输入信号:方波测试频率范围为:10Hz100MHz 量程分为三档:第一档:闸门时间为1S时,最大读数为999.999KHz 第二档:闸门时间为0.1S时,最大读数为9999.99KHz 第三档:闸门时间为0.01S时,最大读数为99999.9KHz显示工作方式:a、用六位BCD七段数码管显示读数。 b、采用记忆显示方法 c、实现对高位无意义零的消隐。 3、 实验思路根据实验指标,将电路设计分成6个模块:分频器,闸门选择,门控电路,计数器,锁存器,显示控制。三、 基于VHDL方法的设计方案1、 设计方框图2、 具
4、体说明石英振荡器:48MHz的晶振信号。分频器:将48MHz的信号分频成1Hz,10Hz,100Hz的基准频率;同时产生1kHz的信号作为扫描显示控制子系统的时钟。闸门选择开关:设置三个开关sel1,sel10,sel100。闸门选择:设置一个选择频率输出和三个小数点输出dp1,dp2,dp3。根据闸门选择开关的信号,当se11有效而其他两个无效时,选择频率输出1Hz信号,dp1,dp2,dp3分别输出0,1,1;当sel10有效而其他两个无效时,选择频率输出10Hz信号,dp1,dp2,dp3分别输出1,0,1;当sel100有效而其他两个无效时,选择频率输出100Hz信号,dp1,dp2,
5、dp3分别输出1,1,0。门控电路:根据选择频率信号产生闸门信号(计数器使能信号),清零信号,锁存使能信号,各信号的时序关系如图所示:计数器:考虑采用6个10进制计数器同步级联的方法。锁存器:门控电路产生的锁存使能信号的上升沿触发。扫描显示控制子系统:考虑该系统由三部分组成:预显示部分,消隐部分,显示部分。预显示部分:设计一个选择信号switch负责选择对应的LED灯(根据1kHz),并根据传来的数据,产生对应的数码管使能信号序列led(6:0)。消隐部分:设计一个信号hide(5:0),该信号的每一位分别代表一个LED灯,若该信号某一位为1,则对应的LED灯消隐。hide信号的赋值根据dp1
6、,dp2,dp3的值以及高位的数据是否为零决定。显示部分,设置一个使能输出信号G,并令它为低电平,根据hide信号和led信号以及dp1,dp2,dp3信号决定最终的输出。四、 系统电路设计五、 系统单元模块设计1、 分频器entity freq_divider isport(clkin: in std_logic; clkout1: out std_logic; clkout10: out std_logic; clkout100: out std_logic; clkout1k: out std_logic);end freq_divider;architecture Behavioral
7、 of freq_divider issignal clkcnt1: integer range 0 to :=0;signal clkcnt10: integer range 0 to :=0;signal clkcnt100: integer range 0 to :=0;signal clkcnt1k: integer range 0 to 48000:=0;signal clk1,clk10,clk100,clk1k: std_logic:=1; beginfc1: process(clkin) begin if rising_edge(clkin) then if clkcnt1=
8、then clkcnt1=1; clk1= not clk1; else clkcnt1=clkcnt1+1; end if; end if; end process; fc10: process(clkin) begin if rising_edge(clkin) then if clkcnt10= thenclkcnt10=1;clk10= not clk10; else clkcnt10=clkcnt10+1;end if; end if; end process; fc100: process(clkin) begin if rising_edge(clkin) then if clk
9、cnt100= then clkcnt100=1; clk100= not clk100; else clkcnt100=clkcnt100+1; end if; end if; end process; fc1k: process(clkin) begin if rising_edge(clkin) then if clkcnt1k=24000 thenclkcnt1k=1;clk1k= not clk1k; else clkcnt1k=clkcnt1k+1;end if; end if; end process;- assignmentclkout1=clk1;clkout10=clk10
10、;clkout100=clk100;clkout1k=clk1k;end Behavioral;2、 闸门选择entity gate_sel isport(se1: in std_logic; se10: in std_logic; se100: in std_logic; f1: in std_logic; f10: in std_logic; f100: in std_logic; fref: out std_logic; dp1: out std_logic; dp2: out std_logic; dp3: out std_logic);end gate_sel;architectur
11、e Behavioral of gate_sel issignal sel: std_logic_vector(2 downto 0):=000;beginselfref=f1;dp1=0;dp2=1;dp3 fref=f10;dp1=1;dp2=0;dp3fref=f100;dp1=1;dp2=1;dp3fref=0;dp1=1;dp2=1;dp3=1;end case;end process;end Behavioral;3、 门控电路entity gate_con isport(Bsignal: in std_logic; gate,reset,latch: out std_logic)
12、;end gate_con;architecture Behavioral of gate_con issignal gate_tmp: std_logic:=0;signal latch_tmp: std_logic:=0;beginprocess(Bsignal) begin if rising_edge(Bsignal) then gate_tmp= not gate_tmp;end if; if falling_edge(Bsignal) then latch_tmp= not gate_tmp;end if;end process;gate=gate_tmp;latch=latch_
13、tmp;reset=(not Bsignal)and(not gate_tmp)and(latch_tmp);end Behavioral;4、 计数器entity conunter isport(count_en: in std_logic; Csignal: in std_logic; clear: in std_logic; carry_out:out std_logic; result: out std_logic_vector(3 downto 0);end conunter;architecture Behavioral of conunter is signal count: s
14、td_logic_vector(3 downto 0):=0000; signal co_tmp: std_logic:=0;beginprocess(count_en,Csignal,clear)beginif clear=1 thencount=0000;elseif rising_edge(Csignal) thenif count_en=1 thenif count=1001 thencount=0000;else count=count+1;end if;end if;end if;end if;end process;process(count,clear)beginif clea
15、r=1 thenco_tmp=0;elseif count=1001 and count_en=1 thenco_tmp=1;elseco_tmp=0;end if;end if;end process;carry_out=co_tmp;result=count;end Behavioral;5、 锁存器entity latch isport(latchin: in std_logic; overin: in std_logic; numin1: in std_logic_vector(3 downto 0); numin2: in std_logic_vector(3 downto 0);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子科技大学 电子技术 实验 FPGA 频率计 报告 25
限制150内