数字频率计实验报告
数字频率计实训报告

ALE/ :党访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的低8位字节。当在Flash编程时还可以作为编程脉冲输出( )。
一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。但也要注意,每当访问外部数据存储器时将跳过一个ALE脉冲。
1.1课题背景
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
当执行内部编程指令时, 应该接到VCC端。
·XTAL1:振荡器反相放大器以及内部时钟电路的输入端。
·XTAL2:振荡器反相放大器的输出端。
在本次设计中,采用89C51作为CPU处理器,充分利用其硬件资源,结合D触发器Cቤተ መጻሕፍቲ ባይዱ4013,分频器CD4060,模拟转换开关CD4051,计数器74LS90等数字处理芯片,主要控制两大硬件模块,量程切换以及显示模块。下面还将详细说明。
2.1系统硬件的构成
本频率计的数据采集系统主要元器件是单片机AT89C51,由它完成对待测信号频率的计数和结果显示等功能,外部还要有分频器、显示器等器件。可分为以下几个模块:放大整形模块、秒脉冲产生模块、换档模拟转换模块、单片机系统、LCD显示模块。
各模块关系图如图2所示:
图2数字频率计功能模块
2.2系统工作原理图
关键词:频率测量,频率计,单片机,LED显示
目录
摘要…………………………………………………………………………………………1
实验报告模板:实验四 数字频率计设计

实验四数字频率计设计【实验目的】1.掌握数字频率计的Verilog描述方法;2.学习设计仿真工具的使用方法;3.学习层次化设计方法;【实验内容】1.用4位十进制计数器对用户输入时钟进行计数,计数间隔为1秒,计数满1秒后将计数值(即频率值)锁存到4位寄存器中显示,并将计数器清0,再进行下一次计数。
2.为上述设计建立元件符号【实验原理】根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽位1 秒的输入信号脉冲计数允许信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一次测频计数周期做准备的计数器清零信号。
这3个信号由测频控制信号发生器TESTCTL产生,它的设计要求是,TESTCTL的计数使能信号输出CNT_EN 能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。
当CNT_EN高电平时,允许计数;当CNT_EN低电平时停止计数,并保持所计的脉冲数。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进各个锁存器REG4B中,并由外部的七段译码器译出,显示计数值。
设置锁存器的好处是,显示数据稳定,不会由于周期性的清零信号而不断闪烁。
信号锁存之后,还必须用清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作做准备。
【程序源代码】(加注释)module CNT10(CLK,RST,EN,COUT,DOUT); //4位计数器input CLK,RST,EN; //时钟,复位,时钟使能output COUT; //计数进位输出output[3:0] DOUT; //计数数据输出[3:0] Q; reg COUT;always @ (posedge CLK or posedge RST)begin //时序部分if(RST) Q=0; //RST=1时,对内部寄存器单元异步清零else if(EN) begin //同步使能EN=1,则允许计数if(Q<9) Q=Q+1; //当Q小于9时,累加计数else Q=0;end //否则一个时钟后清0返回初值endalways @ (Q) //组合电路过程if(Q==4'b1001) COUT=1; //当Q==4'b1001时,输出进位COUT=1else COUT=0; //否则,输出进位为0assign DOUT=Q; //把Q赋值给DOUTendmodulemodule RGB4(DIN,LOAD,DOUT); //4为数据寄存器input LOAD; //加载信号input[3:0] DIN; //外加输入信号output[3:0] DOUT;reg[3:0] DOUT;always @ (posedge LOAD)DOUT=DIN; // LOAD有效则将外加输入信号加载endmodulemodule CNTL(CLK,CNL_EN,RST_CNL,LOAD);//控制部分input CLK; //由CLK信号产生CNL_EN,RST_CNL,LOAD信号output CNL_EN,RST_CNL,LOAD; 时钟使能,时钟复位,数据加载控制信号reg CLKDIV,CNL_EN,LOAD,RST_CNL;always @ (posedge CLK)CLKDIV=~CLKDIV; //在时钟信号在上升沿时,将CLKDIV取反always @ (posedge CLK) beginCNL_EN=CLKDIV; //在时钟信号在上升沿时, 把CLKDIV赋给使能信号CNL_EN LOAD=~CLKDIV;end //在时钟信号在上升沿时, 将CLKDIV取反并赋值给加载信号always @ (CLK) beginif(CLK==1'b0&&CNL_EN==1'b0)RST_CNL=1; //当使能信号与时钟信号均为低电平时,RST_CNL=1 elseRST_CNL=0; end //否则RST_CNL=0endmodulemodule FREG (clk1HZ,uclk,led0,led1,led2,led3,rst,en,load);input clk1HZ, uclk; //时钟信号和待测信号output [3:0]led0,led1,led2,led3; //4个八段数码管output load,rst,en; //复位和加载信号wire in_load,in_rst,in_en,c0,c1,c2;wire [3:0]dout0,dout1,dout2,dout3;assign load=in_load;assign rst=in_rst;assign en=in_en;CNTL u1(.CLK(clk1HZ),.CNL_EN(in_en),.RST_CNL(in_rst),.LOAD(in_load));CNT10 u2 (.CLK(uclk),.EN(in_en),.RST(in_rst),.COUT(c0),.DOUT(dout0));CNT10 u3 (.CLK(c0),.EN(in_en),.RST(in_rst),.COUT(c1),.DOUT(dout1));CNT10 u4 (.CLK(c1),.EN(in_en),.RST(in_rst),.COUT(c2),.DOUT(dout2));CNT10 u5 (.CLK(c2),.EN(in_en),.RST(in_rst),.DOUT(dout3));RGB4 u6 (.DIN(dout0),.LOAD(in_load),.DOUT(led0));RGB4 u7 (.DIN(dout1),.LOAD(in_load),.DOUT(led1));RGB4 u8 (.DIN(dout2),.LOAD(in_load),.DOUT(led2));RGB4 u9 (.DIN(dout3),.LOAD(in_load),.DOUT(led3));LED7 u10 (.IN(led0));LED7 u11 (.IN(led1));LED7 u12 (.IN(led2));LED7 u13 (.IN(led3));endmodule【元件符号与总框图】【仿真和测试结果】功能分析:在波形中,CLK1HZ的频率为1HZ,以CLK1HZ为输入,产生CNL_EN(en),RST_CNL(rst),LOAD(load)的输出波形。
数字频率计课程设计实习报告

数字频率计设计报告书一、设计要求设计一个4位十进制数字式频率计,最大测量范围为10MHz。
量程分10kHz、100kHz、1MHz和10MHz四档(最大读数分别为9.999kHz、99.99kHz、999.9kHz、9999.kHz).量程自动转换规则如下:(1)当读数大于9999时,频率计处于超量程状态,此时显示器发出溢出指示,下一次测量时,量程自动增大一档,小数点位置随量程变更自动移位。
(2)可用手动方式使量程在每次测量开始时处于最低档。
显示方式如下:(3)采用记忆显示方式,即计数过程中不显示数据,待计数过程结束以后,显示计数结果,将此显示结果保持到下一次计数结束。
显示时间应不小于1s。
(4)送入信号应是符合CMOS电路要求的脉冲波,对于小信号模拟信号应有放大整形电路。
二、方案设计<1>整体思路所谓频率就是周期性信号在单位时间 (1s)内变化的次数。
若在一定时间间隔 T内测得周期性信号的重复变化次数为 N ,则频率可表示为 f =N /T (Hz)。
被测信号fx经放大整形电路变成计数电路所要求的脉冲信号,其频率与被测信号fx的频率相同。
基准电路提供标准时间基准信号clk,其高电平持续时间 t 1 = 1 s,当 1 s信号来到时 ,闸门电路开通 ,被测脉冲信号通过闸门电路,成为计数电路的计数脉冲 CP,计数电路开始计数,直到 ls信号结束时闸门电路关闭 ,停止计数。
若在闸门时间 1 s内计数电路计得的脉冲个数为 N ,则被测信号频率 f =NHz。
控制电路的作用有两个:一是产生锁存脉冲 CLK,使显示电路上的数字稳定;二是产生清“0”脉冲,使计数电路每次测量从零开始计数。
<2>时钟信号的选择设计电路中时钟信号采用12M有源晶振产生,下面是12M有源晶振引脚图:<3>整形电路的选择整形电路中可以用运算放大器LM311组成电压选择器实现,以下是关于此芯片的资料:引脚功能:GROUND/GND 接地INPUT + 正向输入端INPUT - 反向输入端OUTPUT 输出端BALANCE 平衡BALANCE/STROBE 平衡/选通V+ 电源正V- 电源负NC 空脚LM311引脚图由于LM311过于复杂且此次设计要求精度不高,整形电路可以改为如下电路:这样产生稳定3.3V为幅值的信号送入EPM570中,对芯片起到保护作用。
频率计实验报告

频率计实验报告一,实验目的1. 应用AT89S52单片机、单片机的I/O端口外扩驱动器74HC573和74HC138、LED数码管动态显示等实现对外部信号频率进行准确计数的设计。
二,实验要求A.基本要求:使用单片机的定时器/计数器功能,设计频率测量装置。
(1)当被测频率fx<100Hz时,采用测周法,显示频率XXX.XXX;当被测频率fx>100Hz时,采用测频法,显示频率XXXXXX。
(2)利用键盘分段测量和自动分段测量。
(3)完成单脉冲测量,输入脉冲宽度范围是100µs-0.1s。
B.扩展部分:三,实验基本原理以单片机AT89S52为核心,利用单片机AT89S52的计数/定时器(T1和T0)的功能来实现频率的计数,并且利用单片机的动态扫描把测出的数据送到数字显示电路显示。
利用7SEG-MPX8-CC-BLUE共阴极数码管,显示电路共由六位共阴极数码管组成,总体原理框图如图1.1所示。
图1.1 总体设计框图测频原理测量频率有测周法和测频法两种。
如图2.2和图2.3所示图1.2测周法 图1.3测频法(1)测频法(T 法):通过测量脉冲宽度来确定频率,适用于高频。
(2)测周法(M 法):是计数器在一定时间内对速度的脉冲数,确定频率,适用于低频。
四,实验设计分析针对要实现的功能,采用AT89S52单片机进行设计,AT89S52 单片机是一款低功耗,高性能CMOS8位单片机,片内含8KB 在线可编程(ISP )的可反复擦写1000次的Flash 只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 52指令系统及80C52引脚结构。
这样,既能做到经济合理又能实现预期的功能。
在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。
延时程序等。
运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。
首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。
频率计实验报告

频率计实验报告一、实验目的本次实验的目的是通过设计和搭建频率计电路,掌握频率测量的基本原理和方法,熟悉相关电子元器件的使用,提高电路设计和调试的能力,并深入理解数字电路中计数器、定时器等模块的工作原理。
二、实验原理频率是指周期性信号在单位时间内重复的次数。
频率计的基本原理是通过对输入信号的周期进行测量,并将其转换为频率值进行显示。
常见的频率测量方法有直接测频法和间接测频法。
直接测频法是在给定的闸门时间内,对输入信号的脉冲个数进行计数,从而得到信号的频率。
间接测频法则是先测量信号的周期,然后通过倒数计算出频率。
在本次实验中,我们采用直接测频法。
使用计数器对输入信号的脉冲进行计数,同时使用定时器产生固定的闸门时间。
在闸门时间结束后,读取计数器的值,并通过计算得到输入信号的频率。
三、实验设备与器材1、数字电路实验箱2、示波器3、函数信号发生器4、集成电路芯片(如计数器芯片、定时器芯片等)5、电阻、电容、导线等若干四、实验步骤1、设计电路原理图根据实验要求和原理,选择合适的计数器芯片和定时器芯片,并设计出相应的电路连接图。
确定芯片的引脚连接方式,以及与外部输入输出信号的连接关系。
2、搭建实验电路在数字电路实验箱上,按照设计好的电路原理图,插入相应的芯片和元器件,并使用导线进行连接。
仔细检查电路连接是否正确,确保无短路和断路现象。
3、调试电路接通实验箱电源,使用示波器观察输入信号和输出信号的波形,检查电路是否正常工作。
调整函数信号发生器的输出频率和幅度,观察频率计的测量结果是否准确。
4、记录实验数据在不同的输入信号频率下,记录频率计的测量值,并与函数信号发生器的设定值进行比较。
分析测量误差产生的原因,并尝试采取相应的措施进行改进。
五、实验数据与分析以下是在实验中记录的部分数据:|输入信号频率(Hz)|测量值(Hz)|误差(%)||||||100|98|2||500|495|1||1000|990|1||2000|1980|1|从数据中可以看出,测量值与输入信号的实际频率存在一定的误差。
数字频率计实验报告

考虑到测量方便,将数字频率计划分为四档:10~99Hz 、100~999Hz 、1000~9999Hz 、10000~99999Hz 。
这样可以保证每一档三位有效数字,而且第三位有效数字误差在±2以内时即可达到精度要求。
三个输入信号:待测信号、标准时钟脉冲信号和复位脉冲信号。
设计细化要求:频率计能根据数字频率计设计计双0102 雷昊 2001011830786一、课程设计内容及要求本次课程设计要求设计并用FPGA 实现一个数字频率计,具体设计要求如下:测量频率范围: 10Hz ~100KHz 精度: ΔF / F ≤ ±2 %系统外部时钟: 1024Hz 测量波形: 方波 Vp-p = 3~5 V 硬件设备:Altera Flex10K10 五位数码管 LED 发光二极管编程语言:Verilog HDL / VHDL二、系统总体设计输入待测信号频率自动选择量程,并在超过最大量程时显示过量程,当复位脉冲到来时,系统复位,重新开始计数显示频率。
基于上述要求,可以将系统基本划分为四个模块,分别为分频、计数、锁存和控制,并可以确定基本的连接和反馈,如上图所示。
三、系统及模块设计与说明如左图所示为数字频率计测量频率的原理图。
已知给定标准时钟脉冲高电平时间,将此0T 高电平信号作为计数器闸门电平,通过计数器得到时间内待测脉冲的个数N ,则有。
由图示可以看出,一个闸门电平时间内0T 0T Nf计数的最大误差为N ±1,为保证误差要求取N ≥100。
经计算,四档的闸门电平时间分0T 别为10s 、1s 、0.1s 和0.01s 。
仅对计数器计数值N 进行简单的移位即可得到结果。
产生闸门电平的工作由分频器完成。
分频器采用计数分频的方法,产生计数闸门电平和一系列控制脉冲,并接受计数器和控制器的反馈。
控制器主要用来判断计数器计数是否有效,从而控制档位转换,锁存器打开、关闭和设定值。
计数器在分频器和控制器的作用下对输入待测信号计数,并把计数值输出,在计数溢出时向控制器和分频器发送溢出脉冲。
数字频率计设计实验报告

成绩指导教师日期张歆奕2011-5-12 五邑大学实验报告实验课程名称:电子系统EDA院系名称:信息学院专业名称:通信工程实验项目名称:实验3 数字频率计班级:AP08054 学号:AP0805422 报告人:彭志敏实验3 数字频率计一、实验目的1、学会利用Quartus II 进行层次化设计;2、练习混合设计输入方法;3、巩固用实验箱验证设计的方法。
二、频率计的原理数字频率计是用来测量输入信号的频率并显示测量结果的系统。
一般基准时钟的高电平的持续时间为01T S ,若在这0T 内被测信号的周期数为N 则被测信号的频率就是N ,选择不同的0T ,可以得到不同的测量精度。
一般0T 越大,测量精度越高,但一次的测量时间及频率计所需的硬件资源也增加。
下面是数字频率计测量原理示意图(图一):▲图一:数字频率计测量原理示意图三、频率计设计及其简要说明(可分模块进行说明)数字频率计可由三模块组成,控制模块、计数模块、锁存显示模块。
下面先介绍顶层设计,然后分模块介绍。
1.顶层设计。
改频率计顶层设计采用原理设计,主要包过6个10进制计数器,一个门控制电路和一个锁存器。
输入引脚包括时钟信号CLK 和复位按钮reset 以及待测频率信号输入端signer ,输出引脚一个24位output 。
▲图二:数字频率计顶层设计原理图2.控制模块。
控制模块是此次设计的设计重点和难点,在标准时钟的作用下,它需要提供计数模块的时钟信号和周期为2秒的控制信号,还要提供锁存器必要时候的锁存允许信号,在一定时候锁存计数器测得的频率值。
主要由门电路和D 触发器构成,下面是控制模块原理图(图三)和时序图(图四)。
▲图三控制模块原理图▲图四控制模块时序图3.计数模块。
计数模块有六个相同的十进制计数器构成,各级计数器之间采用级联方式。
计数器就就采用参数化宏单元调用即可。
下图是参数化宏单元计数器生成的符号(图五):▲图五 10进制计数器4.锁存显示模块。
数字频率计实验报告

的工作由分频器完成。
分频器采用计数分频的方法,产生计数闸门电平和一系列控制脉冲,并接受计数器和控制器的反馈。
控制器主要用来判断计数器计数是否有效,从而控制档位转换,锁存器打开、关闭和设定值。
计数器在分频器和控制器的作用下对输入待测信号计数,并把计数值输出,在计数溢出时向控制器和分频器发送溢出脉冲。
锁存器用来储存有效计数值,以稳定输出。
四、系统及模块具体实现与说明系统总体结构图见附图1,下面对每一个模块的具体功能、引脚分配和Verilog HDL语言编程实现进行详细说明。
在分模块介绍之前先说明两个重要的寄存器状态STAT[1..0]和LATCH_STAT[1..0]。
STAT[1..0]用来保存当前档位信息,STA T[1..0]等于0则为第一档,等于1则为第二档,依此类推,共可标记四档,它位于控制模块中,也是输出,这样其他模块可以通过访问它得到当前档位信息,而控制模块可以修改它从而调整档位(注:在系统总图中由于所有与STAT[1..0]相连的线路均为对应顺序连接,故没有才用MAX+plus II中默认的总线连接,而是采用单根线)。
LATCH_STAT[1..0]用来保存锁存器状态信息,LATCH_STA T[1..0]=0时,锁存器在CLK作用下打开关闭。
LATCH_STAT[1..0]=1时,锁存器强制置零,CLK无效。
LATCH_STA T[1..0]=2时,锁存器强制置1FFFF,CLK无效。
它也在控制器中,这样可以通过对其改变数值达到控制锁存器锁存、复位和显示过量程的功能。
计数器COUNTER计数器设计图见附图1右上部分,由四个十进制计数器级联。
四个输入端口:时钟脉冲CLK、使能端EN、清零端CLRN、档位状态端STAT[1..0]。
五个输出端口:四个四位十进制BCD码输出OUT1[3..0]~OUT4[3..0]、过量程溢出OF。
功能表见下:表格1十进制计数器功能表进制计数器用V erilogHDL语言编程实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大连理工大学城市学院数字电路与系统课程设计设计题目:数字频率计学院:电子与自动化学院专业:自动化学生:揣智涵同组人:王晓宁周英茹指导教师:于海霞完成日期: 2012年3月26日目录第一章设计任务1.1项目名称1.2项目设计说明1.2.1设计任务和要求1.2.2进度安排1.3项目总体功能模块图第二章需求分析2.1问题基本描述(要求分析得出整个系统流程图)2.2系统模块分解及各模块功能的基本要求第三章设计原理3.1 设计原理3.2 MAXPLUSII介绍第四章系统功能模块设计4.1 FEN模块4.1.1 FEN模块流程图4.1.2 输入输出引脚及其功能说明4.1.3 程序代码实现4.2 SEL模块4.2.1 SEL模块流程图4.2.2输入输出引脚及其功能说明4.2.3程序代码实现4.3 CORNA模块4.3.1 CORNA模块流程图4.3.2 输入输出引脚及其功能说明4.3.3 程序代码实现4.4 LOCK模块4.4.1 LOCK模块流程图4.4.2 输入输出引脚及其功能说明4.4.3 程序代码实现4.5 CH模块4.5.1 输入输出引脚及其功能说明4.5.2 程序代码实现4.6 DISP模块4.6.1 输入输出引脚及其功能说明4.6.2 程序代码实现第五章调试并分析结果5.1输入说明5.2预计输出5.3测试结果记录5.4测试结果分析第六章结论心得体会参考文献第一章设计任务1.1 项目名称:数字频率计1.2 项目设计说明1.2.1 设计任务和要求此频率计共分4档:一档:0~9999Hz;二档:10~99.99kHZ;三档:100.0~999.9kHz;,四档:1.000~999MHz;在换挡的设计方面,此程序突破了以往改变闸门时间的方法,使自动换挡的实现更加简单可靠。
1.2.2 进度安排第一节课:画出模块及程序流程图第二节课:调试各模块程序使其无误第三节课:连接整个程序并下载到试验箱是数字频率计的功能实现第四节课:改进程序设计实现创新,然后完成课程设计报告第五节课:完成答辩1.3 项目总体功能模块图如下图1-1第二章需求分析2.1 问题基本描述所谓频率,就是周期信号在单位时间(1秒)内变化的次数。
频率计的测量范围为1MHZ,为了测量精确量程分别为10KHZ,100KHZ,1000KHZ和1MHZ四个档。
即最大读数分别为9.999KHZ,99.99KHZ,999.9KHZ,999MHZ。
要求两成自动换挡。
其具体功能如下:(1) 当量程超过999时,自动增大一档,下一次测量时量程大一档;(2) 当超过测量范围时,显示溢出,报警器报警。
(3) 小数点位置随量程变化自动移位。
(4) 采用记忆显示方法,在测量过程中不显示数据,在测量完成以后显示测频结果,并将此结果保存到下次测量结束,显示时间不少于1秒。
(5) 根据频率计的测频原理,可以选择合适的时基信号即阀门时间,对输入信号脉冲进行计数,实现测频的目的。
(6) 根据数字频率计的设计原理,可以将数字频率计设计分为五个模块来实现其功能。
即分频模块,控制模块,计数模块,锁存模块和显示模块。
用CLDH语言进行编程。
(7) 弄清什么情况下是测频率,就是选择合适的时基信号的问题。
测频率时以输入信号作为时钟信号,因为输入信号的频率大于频率计的基准频率。
:数字频率计的系统流程图如下图2-12.2 系统模块分解及各模块功能的基本要求计数器在各个档是被反复应用的,如果在各个档分别设计计数器就造成资源的浪费,而且在测周期和频率的时候,计数器的时基信号和输入信号要进行调换,但计数功能是一样的,所以将计数器设为单独的模块。
七段译码器也是被重复使用的,也设成单独的模块,这样的话就不用在重复使用的时候重复书写译码电路了。
总体来说数字频率计分为五个模块来设计,即分频模块计数模块,锁存模块,预测控制信号发生器,显示模块。
分频模块为计数模块提供1秒的阀门时间。
计数模块是整个程序的核心,它完成在1秒的时间里对被测信号计数的功能,并通过选择输出数据实现自动换挡的功能。
锁存模块在信号L的下降沿到来时将信号A4,A3,A2,A1锁存。
显示模块对应于数码管片选信号,将相应的数据送出,其中档位也通过数码管显示。
第三章设计原理3.1 设计原理众所周知,频率信号易于传输,抗干扰性强,可以获得较好的测量精度。
因此,频率检测是电子测量领域最基本的测量之一。
频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。
通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为 1 s。
闸门时间可以根据需要取值,大于或小于1 s都可以。
闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。
闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。
一般取1 s作为闸门时间。
数字频率计的关键组成部分包括测频控制信号发生器、计数器、锁存器、译码驱动电路和显示电路,其原理框图如图3-1所示。
图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Ⅱ就会自动将设计转换成目标文件下载到器件中去。
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等公司提供的工具。
(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+PLUSⅡ提供丰富的库单元供设计者调用,其中包括一些基本的逻辑单元,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 isport (clk:in std_logic;q: out std_logic); 图4-2 end fen;architecture fen_arc of fen isbeginprocess(clk)variable cnt: integer range 0 to 999999;variable x: std_logic;beginif clk'event and clk = '1' thenif cnt<999999 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 模块流程图图4-34.2.2 SEL模块输入输出引脚及其功能说明CLK:基准时钟信号; Q[2..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-4 q:out std_logic_vector(2 downto 0));end sel;architecture sel_arc of sel isbeginprocess(clk)variable cnt:std_logic_vector(2 downto 0);beginif clk'event and clk='1' thencnt:=cnt+1;end if;q<=cnt;end process;end sel_arc;4.3 模块CORNA4.3.1 CORNA 模块流程图图4-54.3.2 输入输出引脚及其功能说明该模块是整个程序的核心,它完成在1s的时间里对被测信号计数的功能,并通过选择输出数据实现自动换挡的功能输入输出引脚及其功能说明CLR:复位按钮;SIG:待测频率信号;DOOR:基准时钟频率;ALM:蜂鸣器;DANG[3..0]:档位值;Q0~4[3..0]:计算后的频率值。
4.3.3程序代码实现library ieee;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 downto 0);variable x:std_logic;beginif sig'event and sig='1' thenif door='1' thenif c0<"1001"thenc0:=c0+1;elsec0:="0000";if c1<"1001" thenc1:=c1+1;elsec1:="0000"; 图4-6if c2<"1001" thenc2:=c2+1;elsec2:="0000";if c3<"1001" thenc3:=c3+1;elsec3:="0000";if c4<"1001" thenc4:=c4+1;elsec4:="0000";if c5<"1001" thenc5:=c5+1;elsec5:="0000";if c6<"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 c4/="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锁存。