《数字频率计专业课程设计.doc》由会员分享,可在线阅读,更多相关《数字频率计专业课程设计.doc(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘要 数字频率计是直接用十进制数字来显示被测信号频率一个测量装置。它不仅能够测量正弦波、方波、三角波、尖脉冲信号和其它含有周期特征信号频率,而且还能够测量它们周期。经过改装,能够测量脉冲宽度,做成数字式脉宽测量仪;能够测量电容做成数字式电容测量仪;在电路中增加传感器,还能够做成数字脉搏仪、计价器等。所以数字频率计在测量物理量方面应用广泛。本设计用VHDL在CPLD器件上实现数字频率计测频系统,能够用十进制数码显示被测信号频率,能够测量正弦波、方波和三角波等信号频率,而且还能对其它多个物理量进行测量。含有体积小、可靠性高、功耗低特点。数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺乏测
2、量仪器。采取VDHL编程设计实现数字频率计,除被测信号整形部分、键输入部分和数码显示部分以外,其它全部在一片FPGA芯片上实现,整个系统很精简,而且含有灵活现场可更改性。在不更改硬件电路基础上,对系统进行多种改善还能够深入提升系统性能。该数字频率计含有高速、正确、可靠、抗干扰性强和现场可编程等优点。关键词:FPGA芯片、VHDL语言、数字频率计、数字频率计原理图、EDA技术AbstractDigital cymometer is to directly show to be measured a kind of diagraph of signal frequency to equip wit
3、h the decimal system number.It not only can measure sine wave, square wave, triangle wave, sharp pulse signal and other have a period of the frequency of the signal of characteristic, and can also measure their periods.Has been refitted, can measure pulse width, make into the number type vein breadt
4、h to measure an instrument;Can measure electric capacity to make into a number type the electric capacity measure an instrument;Increase to spread a feeling machine in the electric circuit, can also make into a number pulse instrument, account a price machine etc.Therefore the digital cymometer acco
5、unts in the diagraph physics to measure aspect applied extensive.This design is used VHDL the spare part is at CPLD up carry out digital cymometer to account to measure repeatedly system, can show to be measured the frequency of signal with the decimal system figures, can measure the frequency of si
6、ne wave, square wave and triangle wave etc. signal, and return an ability as to its he various physical quantity carry on diagraph.Have the physical volume small and dependable sex Gao and achievement to consume a low characteristics.digital cymometer is the diagraph instrument of research productio
7、n realm indispensabilities, such as calculator, communication equipments and audio frequency video frequency.etc.The digital cymometer that adopts VDHL to weave a distance to design a realization accounts, in addition to is measured the orthopedics of signal part, the key importation part and figure
8、s show part, rest all in one FPGA realization of chip, the whole system simplifies very much, and has vivid spot to change sex.On the foundation that doesnt change hardware electric circuit, carries on various function that the improvement can also raise system further to the system.The numbers freq
9、uency accounts to have high speed, precision, credibility, the anti- interference is strong and the spot programmable etc. advantage.Key words: The FPGA chip, VHDL language and digital cymometer, the digital cymometer account principle diagram ,EDA technique目录引言1技术性能指标及分工2第1章 频率计设计背景及原理31.1 设计背景31.2
10、 设计原理31.2.1 频率计设计原理31.2.2 原理框图41.3 设计思绪5第2章 频率计测量频率层次化设计方案62.1频率产生器62.2测频控制信号发生器72.3十进制计数器92.4 24位锁存器112.5 数码管控制器122.6 译码器142.7元件申明及例化16总结20心得体会21参考文件22附录23引言所谓频率,就是周期性信号在单位时间(1s)里改变次数。本频率计设计测量频率基础原理是,首先让被测信号和标准信号一起经过一个闸门,然后用计数器计数信号脉冲个数,把标按时间内计数结果,用锁存器锁存起来,最终用显示译码器,把锁存结果用LED数码显示管显示出来。依据数字频率计基础原理,本设计
11、方案分三个模块来实现其功效,即整个数字频率计系统分为时基产生和测频时序控制电路模块、待测信号脉冲计数电路模块、锁存和译码显示控制电路模块等多个单元,而且分别用VHDL硬件描述语言对其进行编程,实现了控制电路、计数电路、锁存和译码显示电路。技术性能指标及分工1)能够测量正弦波、三角波、锯齿波、矩形波等周期性信号频率;2)能直接用十进制数字显示测得频率;3)频率测量范围:1HZ999999HZ;4)测量时间:T=2.0S;5)用CPLD/FPGA可编程逻辑器件实现;进度安排:/06/27 集体针对设计进行分析、讨论,确定好分工,明确设计进度,和对设计 总体上有个了解。 /06/28 各组员针对自己
12、任务,查找相关资料,完成各自相关部分。/06/29 集体讨论,找出一个较佳方案。06/3007/05 进行可行性分析,进行程序设计及仿真,对有错或不佳地方加以更正。07/0607/07 最终分析整理,书写课程设计汇报。/07/08 打印相关图纸,答辩。分配任务: 郭跃明 上网搜集资料,审核,打印; 李 宝 对资料进行初步整理,以备选择,写论文; 江时文 确定设计方案,设计程序及仿真。第1章 频率计设计背景及原理1.1 设计背景伴随数字电子技术发展,频率测量成为一项越来越普遍工作,所以测频计常受到大家青睐。现在很多高精度数字频率计全部采取单片机加上外部高速计数器来实现,然而单片机时钟频率不高造成
13、测频速度比较慢,而且在这种设计中,因为PCB版集成度不高,造成PCB板走线长,所以难以提升计数器工作频率。为了克服这种缺点,大大提升测量精度和速度,我们能够设计一个可编程逻辑器件来实现数字频率计。EDA技术是以大规模可编程逻辑器件为设计载体,以硬件语言为系统逻辑描述关键方法,以计算机、大规模可编程逻辑器件开发软件及试验开发系统为设计工具,经过相关开发软件,自动完成用软件设计电子系统到硬件系统设计,最终形成集成电子系统或专用集成芯片一门新技术。其设计灵活性使得EDA技术得以快速发展和广泛应用。以QUARTUS II软件为设计平台,采取VHDL语言实现数字频率计整体设计。伴伴随集成电路(IC)技术
14、发展,电子设计自动化(EDA)逐步成为关键设计手段,已经广泛应用于模拟和数字电路系统等很多领域。电子设计自动化是一个实现电子系统或电子产品自动化设计技术,它和电子技术,微电子技术发展亲密相关,它吸收了计算机科学领域大多数最新研究结果,以高性能计算机作为工作平台,促进了工程发展。EDA一个关键特征就是使用硬件描述语言(HDL)来完成设计文件,VHDL语言是经IEEE确定标准硬件语言,在电子设计领域受到了广泛接收。1.2 设计原理1.2.1 频率计设计原理数字频率计基础原理是用一个频率稳定度高频率源作为基按时钟,对比测量其它信号频率。通常情况下计算每秒内待测信号脉冲个数,即闸门时间为1s。闸门时间
15、能够依据需要取值,大于或小于1s全部能够。闸门时间越长,得到频率值就越正确,但闸门时间越长,则每测量一次频率间隔就越长。闸门时间越短,测得频率值刷新就越快,但测得频率精度就受影响。通常取1s作为闸门时间。在电子技术中,频率是最基础参数之一,而且和很多电参量测量方案、测量结果全部有十分亲密关系,所以,频率测量就显得更为关键。测量频率方法有多个,其中电子计数器测量频率含有精度高、使用方便、测量快速,和便于实现测量过程自动化等优点,是频率测量关键手段之一。数字式频率计测量原理有两类:一是直接测频法,即在一定闸门时间内测量被测信号脉冲个数;二是间接测频法即测周期法,如周期测频法。直接测频法适适用于高频
16、信号频率测量,通常采取计数器、数据锁存器及控制电路实现,并经过改变计数器阀门时间长短在达成不一样测量精度;间接测频法适适用于低频信号频率测量,本设计中使用就是直接测频法,即用计数器在计算1S内输入信号周期个数。数字频率计是数字电路中一个经典应用,实际硬件设计用到器件较多,连线比较复杂,而且会产生比较大延时,造成测量误差、可靠性差。伴随现场可编程门阵列FPGA广泛应用,以EDA工具作为开发手段,利用VHDL等硬件描述语言语言,将使整个系统大大简化,提升了系统整体性能和可靠性。本设计中使用就是直接测频法,即用计数器在计算1s内输入信号周期个数,其测频范围为1Hz999999Hz。1.2.2 原理框
17、图设计原理框图以下所表示: 图1 数字频率计原理框图1.3 设计思绪 1、经过脉冲转换电路将三角波、锯齿波、正弦波,矩形波等周期性信号转换成矩形脉冲,本论文中就不包含这方面设计。矩形脉冲转换原理图: 图2 矩形脉冲生成原理图2、频率测量基础原理是计算每秒钟内待测信号转换生成脉冲个数。这就要求测频控制信号发生器testpl计数使能信号tsten能产生一个1秒脉宽周期信号,并对频率计每一计数器cnt10使能端en进行同时控制。当tsten为高电平1时,许可计数;为低电平0时停止计数,并保持其计数结果。在停止计数期间,首先需要一个锁存信号load上跳沿将计数器在前1 秒种计数值锁存进24位锁存器re
18、g24b中。锁存信号以后,必需有一个清零信号clr_cnt对计数器进行清零,为下1 秒计数操作做准备。然后由外部数码管控制器ledcom控制8段译码器ymq译出,并稳定显示。第2章 频率计测量频率层次化设计方案2.1频率产生器频率计电路工作时先要产生一个计数许可信号(即闸门信号),闸门信号宽度为单位时间,如1S。在闸门信号有效时间内,对被测信号计数,即为信号频率。该频率计电路精度取决于闸门信号T。本设计中选择基准信号频率为40khz,为了得到1s高电平周期性闸门信号,本设计采取对频率为40khz基准信号进行分频就能得到1HZ基准信号,这么得到门闸信号高电平为1秒钟,处理后能够产生用于测频所需计
19、数许可、锁存数据和清零三个控制信号。同时产生400HZ信号来控制数码管显示。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity lpm_counter0 is port(clock: in std_logic ; clk_div1 : out std_logic; clkq: out std_logic);end lpm_counter0;architecture syn of lpm_counter0 is signal q1,q2 :std_logic;beginprocess(cl
20、ock) variable cnt1 : integer range 1 to 50; variable cnt2 : integer range 1 to 400; begin if clockevent and clock=1 then if cnt1=50 then cnt1:=1; q1 = not q1; -扫描信号 if cnt2=400 then cnt2:=1; q2 =not q2; else cnt2:=cnt2+1; end if; else cnt1:=cnt1+1; end if; end if; end process; clk_div1 =q1; clkq =q2
21、;end syn;编译成功后生成元件图以下:仿真时设置总时间为4s,对clock引脚输入设置成时间信号,周期是25ns,则其频率为40kHZ。经过分频后产生1HZ基准信号,从clkq输出。仿真波形图下图:2.2测频控制信号发生器输入端clk收到1Hz信号后,其输出端testen控制各个cnt10使能,clr_cnt控制各个cnt10清零,load控制锁存器内数据输出。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testpl is port(clk:in std_logic;-1H
22、z信号 tsten:out std_logic;-计数器使能信号 clr_cnt:out std_logic;-计数器清零信号 load:out std_logic);-锁存器输出控制信号end testpl;architecture art of testpl is signal div2clk:std_logic;begin process(clk) begin if clkevent and clk=1then div2clk=not div2clk; -div2clk为2Hz end if ; end process; process (clk ,div2clk) begin if(
23、clk=0and div2clk=0)then clr_cnt=1; -当div2clk和clk同时为零时计数器清零 else clr_cnt=0; -当div2clk处于高电平时计数器计数 end if; end process; load=not div2clk; -锁存器输出和计数器使能信号反相 tsten=div2clk; end art;编译成功后生成元件图以下:从测频控制信号发生器模块仿真图,很鲜明给出了时钟信号和计数许可信号tsten、清零信号clr_cnt和锁存信号load关系,从仿真图能够看出计数许可信号、清零信号和锁存信号和变量Q之间所存在相对应关系。仿真结果以下图所表示:
24、2.3十进制计数器有一时钟使能输入端en,用于锁定计数值。当高电平1时许可计数器计数,低电平0时严禁计数。多位十进制计数器时,最低位计数器clk端输入被测信号,各计数器进位输出端c10将信号输到下一位十进制计数器cnt10输入端clk,最高位十进制计数器cnt10进位输出端c10给carry_out,进行报警提醒(超出量程)。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 is port(clk,clr,en: in std_logic; -clk:计数器时钟,clr:清
25、零信号,en:计数使能信号 q: out std_logic_vector(3 downto 0);-q:4位计数结果输出 c10: out std_logic); -计数进位end cnt10;architecture art of cnt10 issignal cqi: std_logic_vector(3 downto 0);begin process (clk,clr) begin if clr=1 then cqi=0000; -当输入clr_cnt为低电平0时清零 elsif clkevent and clk=1 then if en=1 then -当输入tesen为高电平1时许
26、可计数 if (cqi9) then cqi=cqi+1; else cqi=0000; -等于9则计数器清零 end if; -当输入tesen为低电平0时严禁计数,锁定计数值 end if; end if;end process;-产生进位process(cqi) begin if cqi=1001 then c10=1; -当加9时产生进位输出 else c10=0; end if;end process;q=cqi;end art;在项目编译仿真成功后,将设计十进制计数器电路设置成可调用元件cnt10.sym,用于以下顶层设计。编译成功后生成元件图以下:在源程序中c10是计数器进位输出
27、;q3.0是计数器状态输出;clk是被测信号转换后矩形脉冲输入端;clr是复位控制输入端,当clr=1时,q3.0=0;en是使能控制输入端,当en=1时,计数器计数,当en=0时,计数器保持状态不变。编译成功后进行仿真,其仿真波形以下:2.4 24位锁存器将已经有24 位bcd码存在于此模块输入口din23.0,在信号load上升沿后即被锁存到寄存器reg24b内部,并由reg24b输出端dout23.0输出,设置锁存器好处是,数码管上显示数据稳定,不会因为周期性清零信号而不停闪烁。library ieee;use ieee.std_logic_1164.all;use ieee.std_l
28、ogic_unsigned.all;entity reg24b is port (load: in std_logic;-输出锁存控制信号 din: in std_logic_vector(23 downto 0); dout: out std_logic_vector(23 downto 0);end reg24b;architecture art of reg24b isbegin process(load,din) begin if loadevent and load=1then -load为高电平时teten为低电平,计数器严禁 dout=din; -锁存输入数据 end if; e
29、nd process;end art;编译成功后生成元件图以下:在源程序中load 是锁存信号,上升沿触发;din23.0是寄存器输入;dout23.0是寄存器输出。仿真结果以下图所表示:2.5 数码管控制器两个输入端一个为datain23.0,另一个为数码管显示选择扫描频率输入端clk,输出端为数码管选择信号com5.0和对应显示数码管BCD码信号端dataout3.0,数码管显示选择随扫描频率clk循环改变,实现稳定显示。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ledco
30、m isport(clk:in std_logic; -数码管扫描频率 datain: in std_logic_vector(23 downto 0);-锁存器输入24位信号 dataout: out std_logic_vector(3 downto 0);-输出至译码器4位信号 com: out std_logic_vector(5 downto 0);-输出数码管选择信号end ledcom;architecture art of ledcom is signal comclk: std_logic_vector(2 downto 0); begin -comclk同扫描频率clk循环
31、改变 process(clk)begin if rising_edge(clk) then if comclk 5 thencomclk=comclk+1; else comclk com com com com com comNULL; end case; end process;-对应数码管输出 process(comclk,datain)begin case comclk is when 101= dataout dataout dataout dataout dataout dataoutNULL; end case; end process;end art;编译成功后生成元件图以下:
32、 在clk信号控制下,数码管进行循环控制输出。仿真结果图所表示:2.6 译码器输入端d_in3.0将接收BCD码信号,译码后输出端d_out7.0输出8段数码管信号,其中输出第8位均为高电平1能够使四个数码管小数点不显示。经译码器处理输出后数码管显示对应数值。library IEEE;use IEEE.std_logic_1164.all;entity ymq is port( d_in: in std_logic_vector(3 downto 0); -数码管控制器输入四位信号 d_out: out std_logic_vector(7 downto 0); -输出8位信号 end ymq
33、; -第8位d_out7为逗号architecture art of ymq isbegin process(d_in) begin case d_in is -第8位为1高电平逗号不显示 when 0000 = d_out d_out d_out d_out d_out d_out d_out d_out d_out d_outNULL; end case; end process;end art;编译成功后生成元件图以下: 将对应BCD码转换成数码管显示信号,最终以十进制形式显示出来。仿真结果以下图所表示:2.7元件申明及例化将各个元器件依据设计相连:library ieee;use ie
34、ee.std_logic_1164.all;entity lx is port(clkqq: in std_logic; clk0: in std_logic; led: out std_logic_vector(7 downto 0); ledc: out std_logic_vector(5 downto 0); carry_out: out std_logic);end lx;architecture art of lx iscomponent lpm_counter0 -待调用频率生成器端口定义 port(clock: in std_logic ; clk_div1 : out std
35、_logic; clkq: out std_logic);end component;-十进制计数器component cnt10 -待调用有时钟使能十进制计数器端口定义 port(clk,clr,en: in std_logic; q: out std_logic_vector(3 downto 0); c10: out std_logic);end component;-16位锁存器component reg24b -待调用32位锁存器端口定义 port (load: in std_logic; din: in std_logic_vector(23 downto 0); dout: ou
36、t std_logic_vector(23 downto 0);end component;-测频控制器component testpl -待调用测频控制信号发生器端口定义 port(clk:in std_logic; tsten:out std_logic; clr_cnt:out std_logic; load:out std_logic);end component;-数码管选择器component ledcom -待调用数码管选择器端口定义port(clk:in std_logic; datain: in std_logic_vector(23 downto 0); dataout:
37、out std_logic_vector(3 downto 0); com: out std_logic_vector(5 downto 0);end component;-译码器component ymq -待调用译码器端口定义 port(d_in: in std_logic_vector(3 downto 0); d_out: out std_logic_vector(7 downto 0);end component; signal clk1,clk2,clk3: std_logic;-clk1为1Hz信号,clk2为被测信号,clk3为数码管扫描信号 signal tsten,clr,
38、load: std_logic; signal c1,c2,c3,c4,c5: std_logic; signal qout,rout: std_logic_vector(23 downto 0); signal datao: std_logic_vector(3 downto 0);begin u0:testpl port map(clk1,tsten,clr,load); u1:cnt10 port map(clk0,clr,tsten,qout(3 downto 0),c1); u2:cnt10 port map(c1,clr,tsten,qout(7 downto 4),c2); u3
39、:cnt10 port map(c2,clr,tsten,qout(11 downto 8),c3); u4:cnt10 port map(c3,clr,tsten,qout(15 downto 12),c4); u5:cnt10 port map(c4,clr,tsten,qout(19 downto 16),c5); u6:cnt10 port map(c5,clr,tsten,qout(23 downto 20), carry_out); u7:reg24b port map(load,qout(23 downto 0),rout); u8:ledcom port map(clk2,ro
40、ut,datao,ledc); u9:ymq port map(datao,led); u10:lpm_counter0 port map(clkqq, clkq=clk1, clk_div1=clk2);end art;编译成功后生成元件图以下:其中clk0为系统待测信号,led7.0是八段数码输出,ledc5.0数码管控制片选输出,carry_out超出量程报警输出。总仿真时间设置1s,clkqq为40KHZ基频信号,设置周期为25us;clk0为被测信号,周期任意(为了检测设置周期为80us,计频率为12.5kHZ,从仿真图中能够看出测得频率为12500HZ,和设计一样)。经过1.5s后
41、就能读出待测信号频率。仿真结果图下图所表示:总结本频率计满足试验要求,测量频率范围是1-999999HZ,采取直接测频法对被测信号进行测量,但也存在不足地方,最好设计方法是用测周法和直接测频法相结合方法,在频率低于1000HZ采取测周法,高于1000HZ时采取直接测频法,这么好处于于减小量化误差。而两种测量方法之间进行自动选择,首先采取测周法进行测量,若频率超出1000HZ则产生溢出信号,自动选择采取测频法进行测量,这么设计是最合理频率计设计,若只采取某一个方法进行测量全部存在不足之处。周期测量时信号频率越低,测量误差越小,周期倍乘值越大,误差越小,另外也能够经过愈加好时基信号来进行计数来减小量化误差影响。