1、 摘 要功能原理:该频率计可以测量1HZ999999HZ信号频率,并在六位数码管上显示.该系统包括标准时钟发生器,控制器,计数器,锁存器,扫描电路及译码电路六个模块构成. 当系统正常工作时,标准时钟发生器提供的1 Hz的输入信号,经过控制模块进行信号的变换,产生计数信号,被测信号送入计数模块,计数模块对输入的矩形波进行计数,将计数结果送入锁存器中,保证系统可以稳定显示数据,译码电路将二进制表示的计数结果转换成相应的能够在七段数码显示管上可以显示的十进制结果。在数码显示管上可以看到计数结果. ctrl为控制模块。ctrl的计数使能信号能产生一个1 s宽的周期信号,并对频率计的每一计数器CNT10
2、的en使能端进行同步控制:当EN高电平时允许计数、低电平时停止计数。 latch为锁存器。在信号Load的上升沿时,立即对模块的输入口的数据锁存到Latch的内部,并由输出端q输出,然后,七段译码器可以译码输出。在这里使用了锁存器,好处是可以稳定显示数据,不会由于周期性的清零信号而不断闪烁。 count10为十进制计数器。有一时钟使能输入端en,用于锁定计数值。当高电平时允许计数,低电平时禁止计数。图1中将6个十进制计数器CNT10级联起来实现6位十进制计数功能。 decode为七段译码显示驱动电路,可以将频率计数的结果译成能在数码管上显示相对应的阿拉伯数字,便于读取测量的结果。 为了实现系统
3、功能,测频控制信号发生器、计数器、锁存器存在一个工作时序的问题,设计时需要综合考虑。 图3给出了系统的工作时序。图2中CLK是由图1中标准时钟发生器产生的频率为1 Hz的标准时钟信号,当控制器ctrl的en端为高电平时允许计数、低电平时停止计数,在停止计数期间,控制器ctrl的Load端产生一个上升沿,将计数器在前1 s的计数值锁存进24b锁存器latch中,并由6个7段译码器将计数结果译出稳定显示。锁存信号之后经过半个clk周期,测频控制信号发生器clr的端产生一个上升沿,对计数器进行清零。为下1 s的计数操作做准备目 录第一章 设计任务 4第二章 需求分析 6第三章 设计原理 9第四章 系
4、统功能模块设计 11第五章 调试并分析结果 29第六章 结论 31参考文献 32第一章 设计任务1.1 项目名称:数字频率计1.2 项目设计说明1.2.1 设计任务和要求此频率计共分4档:一档:09999Hz;二档:1099.99kHZ;三档:100.0999.9kHz;,四档:1.000999MHz;在换挡的设计方面,此程序突破了以往改变闸门时间的方法,使自动换挡的实现更加简单可靠。1.2.2 进度安排 第一节课:画出模块及程序流程图第二节课:调试各模块程序使其无误第三节课:连接整个程序并下载到试验箱是数字频率计的功能实现第四节课:改进程序设计实现创新,然后完成课程设计报告第五节课:完成答辩
5、1.3 项目总体功能模块图如下图1-1第二章 需求分析 2.1 问题基本描述所谓频率,就是周期信号在单位时间(1秒)内变化的次数。频率计的测量范围为1MHZ,为了测量精确量程分别为10KHZ,100KHZ,1000KHZ和1MHZ四个档。即最大读数分别为9.999KHZ,99.99KHZ,999.9KHZ,999MHZ。要求两成自动换挡。其具体功能如下:(1) 当量程超过999时,自动增大一档,下一次测量时量程大一档;(2) 当超过测量范围时,显示溢出,报警器报警。(3) 小数点位置随量程变化自动移位。(4) 采用记忆显示方法,在测量过程中不显示数据,在测量完成以后显示测频结果,并将此结果 保
6、存到下次测量结束,显示时间不少于1秒。(5) 根据频率计的测频原理,可以选择合适的时基信号即阀门时间,对输入信号脉冲进行计数,实现测频的目的。(6) 根据数字频率计的设计原理,可以将数字频率计设计分为五个模块来实现其功能。即分频模块,控制模块,计数模块,锁存模块和显示模块。用CLDH语言进行编程。(7) 弄清什么情况下是测频率,就是选择合适的时基信号的问题。测频率时以输入信号作为时钟信号,因为输入信号的频率大于频率计的基准频率。: 数字频率计的系统流程图如下图2-12.2 系统模块分解及各模块功能的基本要求 计数器在各个档是被反复应用的,如果在各个档分别设计计数器就造成资源的浪费,而且在测周期
7、和频率的时候,计数器的时基信号和输入信号要进行调换,但计数功能是一样的,所以将计数器设为单独的模块。七段译码器也是被重复使用的,也设成单独的模块,这样的话就不用在重复使用的时候重复书写译码电路了。总体来说数字频率计分为五个模块来设计,即分频模块计数模块,锁存模块,预测控制信号发生器,显示模块。分频模块为计数模块提供1秒的阀门时间。计数模块是整个程序的核心,它完成在1秒的时间里对被测信号计数的功能,并通过选择输出数据实现自动换挡的功能。锁存模块在信号L的下降沿到来时将信号A4,A3,A2,A1锁存。显示模块对应于数码管片选信号,将相应的数据送出,其中档位也通过数码管显示。第三章 设计原理3.1
8、设计原理 众所周知,频率信号易于传输,抗干扰性强,可以获得较好的测量精度。因此,频率检测是电子测量领域最基本的测量之一。频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1 s。闸门时间可以根据需要取值,大于或小于1 s都可以。闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。一般取1 s作为闸门时间。 数字频率计的关键组成部分包括测频控制信号发生器、计数器、锁存器、译码驱动电路和显示电路,其原理框图如图3-1所示。图
9、3-1数字频率计原理图3.2 MAXPLUSII介绍MAX+PLUS(Multiple Array and Programming Logic User System)开发工具是Altera公司推出的一种EDA工具,具有灵活高效、使用便捷和易学易用等特点。Altera公司在推出各种CPLD的同时,也在不断地升级相应的开发工具软件,已从早起的第一代A+PLUS、第二代MAX+PLUS发展到第三代MAX+PLUS和第四代Quartus。使用MAX+PLUS软件,设计者无需精通器件内部的复杂结构,只需用业已熟悉的设计输入工具,如硬件描述语言、原理图等进行输入即可,MAX+PLUS就会自动将设计转换成
10、目标文件下载到器件中去。MAX+PLUS开发系统具有以下特点。(1) 多平台。MAX+PLUS软件可以在基于PC机的操作系统如Windows95、Windows98、Windows2000、Windows NT下运行,也可以在Sun SPAC station等工作站上运行。(2) 开放的界面。MAX+PLUS提供了与其他设计输入、综合和校验工具的接口,借口符合EDIF 200/300、LPM、VHDL、Verilog-HDL等标准。目前MAX+PLUS所支持的主流第三方EDA工具主要有Synopsys、Viewlogic、Mentor、Graphics、Cadence、OrCAD、Xilinx
11、等公司提供的工具。(3) 模块组合式工具软件。MAX+PLUS具有一个完整的可编程逻辑设计环境,包括设计输入、设计处理、设计校验和下载编程4个模块,设计者可以按设计流程选择工作模块。(4) 与结构无关。MAX+PLUS开发系统的核心Compiler(编译器)能够自动完成逻辑综合和优化,它支持Altera的Classic、MAX7000、FLEX8000和FLEX10K等可编程器件系列,提供一个与结构无关的PLD开发环境。(5) 支持硬件描述语言。MAX+PLUS支持各种HDL设计输入语言,包括VHDL、Verilog-HDL和Altera的硬件描述语言AHDL。(6) 丰富的设计库。MAX+P
12、LUS提供丰富的库单元供设计者调用,其中包括一些基本的逻辑单元,74系列的器件和多种特定功能的宏功能模块以及参数化的兆功能模块。调用库单元进行设计,可以大大减轻设计人员的工作量,缩短设计周期。第四章 系统功能模块4.1 FEN 模块4.1.1 FEN 模块流程图图4-14.1.2输入输出引脚及其功能说明模块FEN如图9-87所示。通过对4MHz时钟的分频得到0.5Hz时钟,为模块CORNA提供1s的闸门时间。CLK:输入时钟信号;Q:输出分频后的基准信号。程序代码的实现如下library ieee;use ieee.std_logic_1164.all; entity fen is port(
13、clk:in std_logic;q: out std_logic); 图4-2end fen;architecture fen_arc of fen isbeginprocess(clk)variable cnt: integer range 0 to 999999;variable x: std_logic;beginif clkevent and clk = 1 thenif cnt999999 thencnt:=cnt+1;elsecnt:=0;x:= not x;end if;end if;q=x;end process;end fen_arc;4.2 SEL模块4.2.1 SEL
14、模块流程图图4-34.2.2 SEL模块输入输出引脚及其功能说明CLK:基准时钟信号; Q2.0:产生数码管的片选信号。4.2.3 程序代码实现library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sel isport(clk: in std_logic; 图4-4q:out std_logic_vector(2 downto 0); end sel;architecture sel_arc of sel isbeginprocess(clk)variable cnt:std_logic_
15、vector(2 downto 0);beginif clkevent and clk=1 thencnt:=cnt+1;end if;q=cnt;end process;end sel_arc;4.3 模块CORNA 4.3.1 CORNA 模块流程图图4-54.3.2 输入输出引脚及其功能说明 该模块是整个程序的核心,它完成在1s的时间里对被测信号计数的功能,并通过选择输出数据实现自动换挡的功能输入输出引脚及其功能说明CLR:复位按钮;SIG:待测频率信号;DOOR:基准时钟频率;ALM:蜂鸣器;DANG3.0:档位值;Q043.0:计算后的频率值。4.3.3程序代码实现library i
16、eee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity corna isport(clr,sig,door : in std_logic;alm : out std_logic;q3,q2,q1,q0,dang : out std_logic_vector(3 downto 0);end corna;architecture corn_arc of corna isbeginprocess (door,sig)variable c0,c1,c2,c3,c4,c5,c6: std_logic_vector (3
17、 downto 0);variable x:std_logic; beginif sigevent and sig=1 thenif door=1 thenifc01001thenc0:=c0+1;elsec0:=0000;if c11001 then c1:=c1+1;elsec1:=0000; 图4-6ifc21001 then c2:=c2+1;elsec2:=0000;ifc31001 thenc3:=c3+1;elsec3:=0000;ifc41001 then c4:=c4+1;elsec4:=0000;ifc51001 thenc5:=c5+1;elsec5:=0000;ifc6
18、1001 thenc6:=c6+1;elsec6:=0000;alm=1;end if;end if;end if;end if;end if;end if;end if;elseif clr = 0 thenalm = 0;end if;c6:=0000;c5:=0000;c4:=0000;c3:=0000;c2:=0000;c1:=0000;c0:=0000;end if;if c6/=0000 thenq3=c6;q2=c5;q1=c4;q0=c3;dang=0100;elsif c5/=0000 thenq3=c5;q2=c4;q1=c3;q0=c2;dang=0011;elsif c
19、4/=0000 thenq3=c4;q2=c3;q1=c2;q0=c1;dang=0010;elseq3=c3;q2=c2;q1=c1;q0=c0;dang=0001;end if;end if;end process;end corn_arc;4.4 模块LOCK4.4.1 LOCK 模块流程图图4-74.4.2 输入输出引脚及其功能说明 该模块实现锁存器的功能,在信号L的下降沿到来时信号A4、A3、A2、A1锁存。输入输出引脚及其功能说明L:基准时钟信号;A043.0:接受计数器CORNA传过来的值并锁存;Q043.0:向数据选择器传值。4.4.3 程序代码实现library ieee;u
20、se ieee.std_logic_1164.all;entity lock isport (l: in std_logic; a4,a3,a2,a1,a0:in std_logic_vector(3 downto 0); q4,q3,q2,q1,q0:out std_logic_vector(3 downto 0);end lock;architecture lock_arc of lock isbeginprocess(l)variable t4,t3,t2,t1,t0:std_logic_vector(3 downto 0);beginif levent and l=0 thent4:=
21、a4;t3:=a3;t2:=a2;t1:=a1;t0:=a0; end if;q4=t4;q3=t3;q2=t2;q1=t1;q0qqqqqqqqqqqqqqqqq=0000000;end case;end process;end disp_arc; 第五章 调试并分析结果5.1输入说明 SIG:接1KHz频率;CLR:接开关;CLK:接4MHz频率。5.2预计输出 低两位数码管显示1;高四位数码管显示1000。5.3 测试结果记录 低两位数码管显示1;高四位数码管显示1000。5.4 测试结果分析本频率计满足试验要求,使用周期和直接测量法进行测量,这样会减小误差。实验中也遇到了很多问题,在器
22、件在线编程过程中,program各项操作无法进行,如果是首次编程,则需要设置下载端口,如果还比能进行操作,可能是芯片或者试验箱出现问题,所以应该换芯片或试验箱。在连接引脚是要特别注意 ,否则显示管无法显示。此外此试验还有需要改进的地方,比如测量频率的精度和灵敏度。待测信号给的是1KHz,数码管档位显示为一档(09999Hz);频率显示为1000;与预计输出完全一样。因为基准信号和待测信号是同一个信号源,故如此准确。也论证了上述设计的正确性。图5-1如上图,待测信号sig 10KHz,clk接1MHz显示如图,第一行和第二行为脉冲频率,第三行为档位,10KHz的待测信号档位为二档。第六章 结论心
23、得体会经过这次的实验课程设计,我学到了如何将多个程序绑在一起使用并构成一个完整的系统。在老师的指导下、在我们实验设计小组的共同努力下、在其他同学的热情帮助下,我们完整滴完成了数字频率计的设计、组装,并做了些创新。虽然实验成功,我们同样在实验过程中遇到了一些问题:1. 刚开始时候的设计是每组组员做一部分, 但是问题就是有些系数不能同一。因此造成了一开始实验进展缓慢。2. 在实验过程中,器材的问题也被我们遇到了。因此也得到了些经验:要对自己的实验成果由信心,不要一出问题就从程序中找问题。可能对你最大的阻碍就是你没有考虑到的器材问题。3. 在最后仿真时候,导线的顺序也是常出问题的地方。由于没有及时发现问题的所在,我们小组花费了整整一节课的时间在改程序,浪费了许多宝贵时间。参考文献【1】VHDL数字电路设计与应用与实践教程【2】第2版王振红 主编机械工业出版社32