基于FPGA数字频率计设计开题报告
- 格式:doc
- 大小:98.00 KB
- 文档页数:10
基于FPGA的数字频率计设计学院:专业:班级:姓名:学号:审阅老师:评分:目录一、课程设计目的 (3)二、设计任务 (3)三、功能要求与技术指标 (3)四、数字频率计工作原理概述 (3)五.数字频率计实现方法 (4)六.结论与误差分析 (11)七.VHDL程序: (12)一、课程设计目的熟悉EDA工具,掌握用VHDL语言进行数字系统设计的基本方法和流程,提高工程实践能力。
二、设计任务设计一数字频率计,用VHDL语言描述,用QuartusII工具编译和综合,并在实验板上实现。
三、功能要求与技术指标1.基本功能要求(1)能够测量出方波的频率,其范围50Hz~50KHz。
(2)要求测量的频率绝对误差±5Hz。
(3)将测量出的频率以十进制格式在实验板上的4个数码管上显示。
(4)测量响应时间小于等于10秒。
以上(1)~(4)基本功能要求均需实现。
2.发挥部分(1)提高测量频率范围,如10Hz~100KHz或更高、更低频率,提高频率的测量绝对值误差,如达到±1Hz。
(2)可以设置量程分档显示,如X1档(显示范围1Hz~9999Hz),X10档(显示范围0.001KHz~9.999KHz),X100档(显示范围0.100KHz~999.9KHz)...可以自定义各档位的范围。
量程选择可以通过按键选择,也可以通过程序自动选择量程。
(3)若是方波能够测量方波的占空比,并通过数码管显示。
以上(1)~(3)发挥功能可选择实现其中的若干项。
四、数字频率计工作原理概述1.数字频率计简介在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。
而数字频率计是采用数字电路制成的实现对周期性变化信号的频率的测量。
2.常用频率测量方法:方案一采用周期法。
通过测量待测信号的周期并求其倒数,需要有标准倍的频率,在待测信号的一个周期内,记录标准频率的周期数,这种方法的计数值会产生最大为±1个脉冲误差,并且测试精度与计数器中记录的数值有关,为了保证测试精度,测周期法仅适用于低频信号的测量。
开题报告通信工程数字频率计设计一、课题研究意义及现状频率计又称频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器,频率测量的原理归结成一句话就是:单位时间内对被测信号进行计数。
在传统的电子测量仪器中,频率计的应用范围越来越广,它不仅可以测量普通的如正弦波信号的频率,在教学、科研、高精度仪器测量、工业控制等领域也都有广泛的应用。
示波器虽然可以对信号进行频率测量,但缺点是精度较低,误差较大。
频谱仪虽然有也准确的测量频率和显示被测信号的频谱的优点,但它的测量速度比较慢,比较耗时间,也不能实时精确的捕捉到被测信号频率的变化情况。
但频率计却能够快速精确的捕捉到被测信号频率的变化,所以,频率计在各个重要的领域中被普遍使用到。
例如:在传统的生产制造企业中,频率计被广泛的应用在生产线的生产测试中。
当生产线中有故障的晶振产品时,频率计就可以快速准确的定位到发生故障的那件晶振产品,生产人员就可以及时的采取措施,以确保产品的质量保证。
在计量实验室中,频率计也可以对各种电子测量设备等产品的本地振荡器进行校准。
在无线通讯测试中,就可以用频率计对无线通讯基站的主时钟进行校准,还可以对无线电台的跳频信号和频率调制信号进行分析。
虽然目前使用的频率计产品很多,但基本上都是采用专用技术芯片(如ICM7240等)和数字逻辑电路组成,由于这些芯片本身的工作频率不高(如ICM7240仅有15MHZ左右),从而限制了产品工作频率的提高,远不能达到在一些特殊场合需要测量很高频率的要求,而且测量精度也收到芯片本身的极大限制。
随着社会的进步、科技的发展,频率计所测量的频率范围极影越来越大,精度也越来越高,但最重要的是如今的频率计已不仅仅是简单的用来测量频率和一些具有周期特性的频率:经过改装,做成数字式脉宽测量仪,就可以测量脉冲宽度;也可以经过改装后做成可以测量电容的数字式电容测量仪;还可以在电路中增加传感器,使之可以测量长度、重量、压力、温度等非电量的测量。
毕业设计〔论文〕材料之二〔2〕毕业设计(论文)开题报告题目:基于FPGA的数字频率计的设计开题报告内容与要求一、毕业设计〔论文〕内容及研究意义〔价值〕数字频率计是计算机、通讯设备、音频视频等科研生成领域不可缺少的测量仪器,并且与许多电参量的测量方案、测量结果都有十分密切的关系。
在数字电路中,频率计属于时序电路,它主要由具有记忆功能的触发器构成。
在计算机,被广泛应用于航天、电子、测控等领域。
实际的硬件设计用到的器件较多,连线比拟复杂,而且会产生比拟大的延时,造成测量误差大、可靠性差。
随着可编程逻辑器件的广泛应用,以EDA 工具作为开发平台,运用VHDL 语言,将使整个系统大大简化,从而提高整体的性能和可靠性。
本设计中包含由测频控制信号发生器模块、锁存器和译码显示模块,提出了采用VHDL语言设计一个复杂的电路系统, 运用自顶向下的设计思想, 将系统按功能逐层分割的层次化设计方法进展设计。
在顶层对内部各功能块的连接关系和对外的接口关系进展了描述, 而功能块的逻辑功能和具体实现形式那么由下一层模块来描述,各功能模块采用VHDL 语言描述。
二、毕业设计〔论文〕研究现状和开展趋势〔文献综述〕在电子技术中,频率是最根本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。
测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。
电子计数器测频有两种方式:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。
直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。
本文阐述了用VHDL语言设计了一个简单的数字频率计的过程。
而FPGA是英文Field Programmable Gate Arry的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的根底上进一步开展的产物。
开题报告电子信息工程基于FPGA的频率计的设计一、课题研究意义及现状电子计数器(测量频率仪器)于20世纪50年代初期问世,它是出现最早,发展最快的一类数字式仪器。
今天的电子计数器与初期相比,面貌已焕然一新。
就功能而言,早已冲破了初期只能测量频率的范围,成为一机多能的仪器;就其所采用的元件而言,不但早已晶体管化,并且已经大量采用集成电路,特别是近几年来采用了大规模集成电路,使仪器在小型化,耗电,可靠性各方面都有了很大的改善。
目前,电子计数器已经完全取代了模拟式频率测量仪器。
电子计数器分为四大类:通用计数器,频率计数器,时间计数器,特种计数器。
通用计数器是具有多种测量功能,可以测量频率,周期,多周期平均,时间间隔等等功能,配上传感器,还可以测量长度,位移,重量,压力,温度等等。
频率计数器是专门用来测量高频和微波频率的计数器,功能只有测频率和计数,频率范围很宽。
时间计数器是以时间测量为基础的计数器,测量的准确度很高。
特种计数器具有特种功能[1]。
随着现代科学技术的发展,频率及时间的测量以及它们的控制技术在科学技术各领域,特别是在计量学、电子技术、信息科学、通信、天文和电子仪器等领域占有越来越重要的地位。
从国际发展的趋势上看,频率标准的准确度和稳定度提高得非常快,几乎是每隔6至8年就提高一个数量级。
本文采用VHDL来设计频率计。
VHDL(Very High Speed Integrated Circuit Hardware Description Language,超高速集成电路硬件描述语言)诞生于1982年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE(The Institute of Electrical and Electronics Engineers)的一种工业标准硬件描述语言。
相比传统的电路系统的设计方法,VHDL具有多层次描述系统硬件功能的能力,支持自顶向下(Top to Down)和基于库(LibraryBased)的设计的特点,因此设计者可以不必了解硬件结构。
综合电子课程设计--基于FPGA的数字频率计班级: 0410101班作者:同组:2013年11月3日目录1.实验内容及要求 (3)2.实验原理 (3)2.1频率测量原理 (3)2.2周期测量原理 (3)3.试验方案介绍 (4)3.1系统整体逻辑框图 (4)3.2测试信号源模块 (4)3.3频率测试模块 (5)3.4频率测试模块 (5)3.4分频模块 (6)3.4.1系统50M时钟分频得到2HZ信号 (6)3.4.2系统50M时钟分频得到2MHZ信号 (6)3.5频率周期测试切换模块 (7)3.6系统显示模块 (8)4. FPGA的资源分配介绍 (9)4.1 FPGA的引脚资源分配 (9)4.2 FPGA的系统资源占用情况 (9)5. 课设收获及感想 (9)6. 附录 (10)6.1 Verilog语言程序源代码 (10)基于FPGA的数字频率计系统1.实验内容及要求信号频率和周期测量信号:脉冲波;频率:1Hz~100KHz2.实验原理2.1频率测量原理测量频率的基本方法是在单位时间(如2s)内统计待测信号的周期数。
本设计采用等精度测量法,使门控信号和被测信号同步,消除对被测信号计数产生的一个脉冲的误差,在测量过程中分别对被测信号和标准信号同时计数。
测量的具体方法是:首先给个闸门开启信号(预置闸门信号),此时计数器并不开始计数,而是等被测信号的上升沿到来时计数器才开始计数,然后预置闸门信号关闭信号(下降沿),计数器并不立即停止计数,而是等到被测信号上升沿来到时才停止计数,完成一次测量过程,过程如下图所示。
图2.1频率测试原理设计时,采用门控信号为2S,因此,测得的标准信号N s为1,故,被测信号Nx的值,即为实际的频率值,可以处理后直接显示。
2.2周期测量原理测量周期的基本方法是在待测信号一个周期内对高频脉冲信号(如2MHz)进行计数。
以待测信号作为闸门信号的开启,在待测信号的一个周期内高电平的期间对2MHZ标准信号进行计数,计出来的数为N,对应的信号周期即为N,单位为微秒。
摘要频率是常用的物理量,工程中很多物理量的测量,如时间测量、速度控制等,都可转化为频率测量。
此外,还经常遇到以频率为参数的测量信号,例如流量、转速等。
所以频率测量方法的研究越来越受到重视。
基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,在实用中有较大的局限性, 而等精度频率计不但具有较高的测量精度, 而且在整个频率区域能保持恒定的测试精度。
本课题设计的等精度数字频率计是采用当今电子设计领域流行的EDA技术,以FPGA为核心,配合STC89C51单片机。
同时,采用等精度测频原理,实现了0.01Hz--50MHz信号频率的等精度频率测量。
此外,该系统还实现测量周期、脉宽、占空比等功能。
设计中用一块FPGA芯片EP2C5Q208C8完成各种时序逻辑控制、计数功能。
在Ouartus II平台上,用VHDL语言编程完成FPGA的软件设计、编译、调试、仿真和下载。
用STC89C51单片机作为系统的主控部件,实现整个电路的测试信号控制、数据运算处理、键盘扫描和控制数码管的显示输出。
系统将单片机STC89C51的控制灵活性及FPGA芯片的现场可编程性相结合,不但大大缩短了开发研制周期,而且使本系统具有结构紧凑、体积小,可靠性高,测频范围宽、精度高等优点。
关键词:频率计;EDA技术;FPGA;单片机AbstractFrequency is commonly used physical quantity, lots of measurement of physical quantity in the project, such as the measurement of time, the control of velocity, can be changed into the measurement of frequency. Besides, the measured signal with a frequency parameter, such as the rate of flow, the rotational speed, is often encountered. So the research of the method of measuring frequency has become more and more significant in the real application.According to the principles of traditional frequency measurement , the measurement accuracy of frequency meter will decrease with the signal frequency decrease .but it has more limitations in the real application, equal precision frequency meter not only has high accuracy, but also maintains constant test accuracy in the whole frequency region .With the help of FPGA and cooperating with the single chip computer STC89C51,The digital frequency design in our program has realized the precision measurement of 0.01Hz-50MHz signal frequency by adopting the current EDA technique prevailing in the electronic designs and using the principle of multi-period synchrony frequency measurement. Besides, the system can complete the cycle, pulse width, duty cycle measurement function .In this design, using an FPGA chip EP2C5Q208C8 completes a variety of temporal logic control and counting function. In the platform of Ouartus II, using VHDL language completes FPGA software design, compiler, debugging, simulation, and download. By use of the STC89C51 single chip computer as the main controlling parts, the control of the tested signal, the scan of keyboard and the output display of LED can be realized. The system combines the control flexibility of STC89C51 with programmable performance of FPGA, consequently,not only can it shorten the period of the development and research, but also it has the advantages of compact structure, little volume, high reliability, wide scope and high precision. Keywords:Frequency meter,EDA technique,FPGA, Single chip computer目录摘要 (I)Abstract (II)目录 (III)1 绪论 (1)1.1 本课题的研究背景及意义 (1)1.2 本课题的主要内容 (2)2 系统设计的相关理论 (3)2.1 频率测量方法的研究 (3)2.1.1 常用测频方案 (3)2.1.2 等精度测频原理 (3)2.1.3 等精度测频误差分析 (5)2.2 单片机模块理论及知识 (5)2.2.1 MCS-51单片机结构简介 (5)2.2.2 Keil μvision 3软件概述 (7)2.2.3 Proteus软件概述 (7)2.3 FPGA模块理论及知识 (8)2.3.1 FPGA原理概述 (8)2.3.2 Quartus II 软件概述 (9)2.3.3 VHDL语言简介及开发优点 (11)3 系统硬件电路设计 (13)3.1 系统顶层电路组成 (13)3.2 被测信号放大整形电路设计 (13)3.3 单片机模块设计 (14)3.3.1 单片机最小系统 (14)3.3.2 键盘接口电路 (15)3.3.3 LED数码管显示电路 (17)3.4 FPGA模块电路设计 (18)3.4.1 基本单元电路 (19)3.4.2 测量与自检选择电路 (23)3.4.3 脉宽控制电路 (24)3.4.4 测频与测周期电路 (25)3.5 单片机与FPGA的相互控制电路 (26)4 系统软件设计 (28)4.1 单片机主程序设计 (28)4.2 复位自检程序设计 (28)4.3 键盘程序设计 (29)4.4 测频子程序设计 (30)4.5 测周期子程序设计 (31)4.6 测脉宽子程序设计 (32)4.7 测占空比子程序设计 (32)4.8 LED数码管显示子程序设计 (33)5 系统性能分析 (34)5.1 测量范围分析 (34)5.2 测量精度分析 (34)5.3 被测信号幅值分析 (34)结论 (35)致谢 (36)参考文献 (37)附录一FPGA程序 (38)附录二单片机程序 (41)1绪论1.1本课题的研究背景及意义EDA(Electronic Design Automation——电子设计自动化)代表了当今电子设计技术的最新发展方向,通过VHDL(V ery High Speed Integrated Circuit Hardware Description Language)硬件描述语言的设计,用FPGA(Field-Programmable Gate Array——现场可编程门阵列)来实现小型电子设备的设计,是开发仪器仪表的主流。
湖南大学电气与信息工程学院本科生课程设计题目:数字频率计课程:电子技术综合设计专业:电子信息工程班级:1703指导老师:设计时间:目录一、选题 (1)二、要求 (1)三、方案原理 (3)四、框图 (4)五、单元电路说明 (6)1分频模块 (6)2 显示模块六、参考资料 (21)一、选题数字式频率计的VERILOG设计二、要求对输入FPGA开发板的一定频率的输入信号的频率进行测量,并通过LCD进行显示,并使可测量范围尽可能大,精度尽可能高三、方案原理(1)L CD显示原理本次设计中使用的是基于HD44780的LCD1602。
管脚定义图如下:要实现液晶显示功能有如下关键步骤:1.确定字符显示位置:要在液晶上的某个位置上显示某个字符,就是要向DDRAM的某个地址写入要显示的数据代码。
屏幕物理位置与DDRAM地址的对应关系如下:2.确定显示字符的内容:液晶要显示某个字符时,实质上就是显示该字符的字模, ,即向DDRAM里写数,数据与字模对照表如下:3.将数据写入LCD:执行以下步骤:清屏指令->功能设置指令->进入模式设置指令->显示开关控制指令->设定DDRAM地址指令->数据写入DDRAM指令,相关指令如下:液晶读数据时序:把数据写入液晶时序:由上图可知要保证液晶能正常显示,在E的下降沿时,数据要有效。
(2)频率测量原理利用分频模块获得一个1HZ的clk脉冲,同时设定一个计数脉冲,clk 脉冲作为时基,同时设定一个计数脉冲,每当clk脉冲跳变时,将计数寄存器中的数据送至显示寄存器,同时清零计数寄存器,并显示寄存器中的内容送至LCD显示模块,即可完成频率测量功能模块例化思路分频模块产生多种频率的信号供不同模块使用顶层文件脉冲计数count门控信号二-十进制转换模块LCD1602模块显示频率(最小单位1Hz)和占空比(最小单位0.1%)Clk_In,sysclkClk_GateClk_500Cnt7~Cnt0countClk_500。
基于FPGA的高精度频率计设计实验一.实验目的1.熟悉数字存储示波器基本工作原理。
2.掌握硬件测频和测周的基本原理。
3.掌握在现有综合实践平台上开发DSO硬件频率U•模块的方案及流程。
二.实验内容1.结合数据采集、存储和触发模块的FPGA代码,理解DSO的基本工作原理。
2.编写FPGA代码完善DSO的频率计模块,实现高精度测频和测周功能。
三.预备知识1.了解综合实践平台硬件结构。
2.熟悉Xilinx ISE Design Suite 13.2开发环境使用方法。
3.熟悉Verilog HDL硬件描述语言的语法及运用。
四.实验设备与工具硬件:测试技术与嵌入式系统综合实践平台,PC机Pentium 100以上,XILINX USB调试下载器。
软件:PC机Win XP操作系统,Xilinx ISE Design Suite 13.2 开发环境五.实验步骤1.打开工程文件SYPT_FPGA.xise2.打开freq_measure.v和period_measure.v文件,先根据定义好的模块端口输入输山信号,结合测频和测周的原理,在提示添加代码处补充代码:a.测频模块(freq_measure.v)测频模块的基本功能是测量闸门吋间内被测信号的脉冲个数。
实现过程如下:(1)由标准时钟计数产生一个预设闸门信号,然后用被测信号同步预设闸门信号产生实际闸门信号;要求:预设闸门时间可根据用户选择信号(select_parameter)在50ms、100ms、Is、10s屮切换。
具体代码如下阁//select gate value: CNT_GATA_VALUEalways @(posedge clkin)begincase (select_parauceter [1:0])2*b00: CNT_GATA_VALUE = 500000; //gate 50ms2*b01: CNT:GATA:VALUE = 1000000; //gate 100ms2*bl0: CNT:GATA:VALUE = 10000000; //gate Is2^11: CNT:GATA:VALUE = 100000000; //gate 10sendcaseend(2)标准时钟和被测信号在实际闸门内计数。
基于FPGA的数字频率计设计随着科学技术的不断进步,数字电子技术在各个领域都得到了广泛的应用。
其中,FPGA(现场可编程门阵列)作为一种灵活、可编程、可重构的数字电路设备,具有较高的性能和灵活性,被广泛应用于数字信号处理、通信、图像处理等各个领域。
本篇文章将介绍基于FPGA的数字频率计设计。
一、概述数字频率计是一种用于测量信号频率的设备,可以方便快速地获取信号的频率信息。
传统的数字频率计通常采用微处理器或专用集成电路来实现,但是这些方案在某些应用场景下存在着局限性。
使用FPGA来设计数字频率计,既可以充分利用FPGA的灵活性和并行性,又可以实现高性能和低功耗的设计。
二、基于FPGA的数字频率计设计原理基于FPGA的数字频率计主要通过计数器和时钟信号来实现。
其设计原理可以分为以下几个步骤:1. 时钟信号同步:通过FPGA内部的PLL(锁相环)模块,可以实现时钟信号的同步和稳定。
2. 信号输入:将待测信号输入FPGA,可以通过外部接口或模拟输入模块实现。
3. 计数器设计:利用FPGA内部的计数器模块,对输入信号进行计数,从而获取信号的频率信息。
4. 频率计算:根据计数器的计数值和时钟信号的周期,可以计算出输入信号的频率信息。
三、基于FPGA的数字频率计设计实现基于上述原理,可以利用FPGA内部的逻辑资源,设计出一个高性能的数字频率计。
具体实现步骤如下:1. 确定输入信号的接口:选择适合的输入接口,可以是数字信号接口、模拟信号接口或者通用IO口。
2. 设计计数器模块:根据待测信号的频率范围和精度要求,设计合适的计数器模块,可以结合FPGA的时钟管理模块实现高精度计数。
3. 编写频率计算算法:根据计数器得到的计数值和时钟信号的周期,设计频率计算算法,可以采用移位运算、累加运算等实现高效的频率计算。
4. 实现显示与输出:设计合适的显示模块和输出接口,将测得的频率信息在显示屏或者外部设备上进行输出。
四、基于FPGA的数字频率计设计应用基于FPGA的数字频率计设计可以广泛应用于各种领域,如通信、测控、仪器仪表等。
数字系统设计实验报告一、设计要求:1、(1)频率测量范围10Hz~1MHz(2)量程自动转换,量程分为10KHz (1s) 、100KHz (0.1s) 、1MHz (10ms)三档。
转换规则如下:当读数大于9999时,频率计处于超量程状态,下一次测量时,量程自动增大一档;当读数小于0999时,频率计处于欠量程状态,下一次测量时,量程自动减小一档(3)数据采用记忆显示方式,即计数过程中不显示数据,待计数过程结束以后,显示计数结果,并将此显示结果保持到下一次计数结束。
(4)用发光二极管显示量程二、方案选则1测量原理:当预置门控信号为高电平时,启动计数器,被测信号(频率为fx) 计数当预置门控信号为低电平时,关闭计数器设在一次预置门控时间Tg内对被测信号计数值为Nx,则fx= Nx / Tg2具体方案:本设计中将2MHz的时钟分三次频,分别作为防抖电路的周期信号、显示模块片选信号、计数及锁存模块闸门信号。
防抖电路滤去窄波,显示模块用模4计数器来分别输出四位测量结果。
计数器通过在0.1s内对输入信号的高电平(发生期)进行计数来得出结果,并且为了达到换挡目的,测量时计六位数,通过结果选择档位进行输出。
二、原理图三、总体电路图四、流程图五、设计清单1、防抖电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY debounce ISPORT(key,cp: IN STD_LOGIC; --复位键imp:OUT STD_LOGIC); --去掉窄波后输出END debounce;ARCHITECTURE base OF debounce ISSIGNAL ql,q2:STD_LOGIC;BEGINPROCESS(cp)BEGINIF cp'event AND cp='1'THENq2<=ql; ql<=key;END IF;END PROCESS;imp<=ql AND NOT q2;END base;时序仿真波形:2、分频电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;ENTITY dividefre4 ISPORT(cp_2m:IN STD_LOGIC; --2MHzcpl:OUT STD_LOGIC; --200Hzcp2:OUT STD_LOGIC; --25Hzcp3:OUT STD_LOGIC); --5HzEND dividefre4;ARCHITECTURE behavior OF dividefre4 IS SIGNAL tout:INTEGER RANGE 0 TO 4999; --5000分频SIGNAL toutl:INTEGER RANGE 0 TO 7; --8分频SIGNAL tout2:INTEGER RANGE 0 TO 39; --40分频SIGNAL cp_1:STD_LOGIC;SIGNAL cp_2:STD_LOGIC;SIGNAL cp_3:STD_LOGIC;SIGNAL cp:STD_LOGIC;BEGINPROCESS(cp_2m) –分出400Hz时钟BEGINIF(cp_2m'event AND cp_2m='1')THENIF tout=4999 THENtout<=0;ELSE tout<=tout+1;END IF;IF tout=2499 THENcp<='0';ELSE cp<='1';END IF;END IF;END PROCESS;PROCESS(cp) --200Hz时钟BEGINIF(cp'event AND cp='1')THENcp_1<=NOT cp_1;END IF;END PROCESS;PROCESS(cp_1) --25Hz时钟和5HzBEGINIF(cp_1'event AND cp_1='1')THENIF toutl=7 THEN toutl<=0;ELSE toutl<=toutl+1;END IF;IF toutl=3 THENcp_2<='1';ELSIF toutl=7 THEN cp_2<='0'; --8分频得25Hz END IF;IF tout2=39 THEN tout2<=0; --40分频得5HzELSE tout2<=tout2+1;END IF;IF tout2=39 THENcp_3<='1';ELSIF tout2=19 THEN cp_3<='0';END IF;END IF;END PROCESS;cpl<=cp_1;cp2<=cp_2;cp3<=cp_3;END behavior;仿真波形:(因原程序所分频倍数太大,所以这里将5000倍分频降至50倍)3、计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;ENTITY fretest ISPORT(enable:IN STD_LOGIC; --使能cp3:IN STD_LOGIC; --闸门INput:IN STD_LOGIC; --被测信号reset:IN STD_LOGIC; --复位信号overflow:OUT STD_LOGIC; --大于1000kHzPlay0,playl,play2,play3:OUT INTEGER RANGE 0 TO 9;decimal:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));--小数点,即档位END fretest;ARCHITECTURE behavior OF fretest ISSIGNAL r0_1,r1_1,r2_1,r3_1,r4_1,r5_1:INTEGER RANGE 0 TO 9;BEGINPROCESS(INput,enable,reset,cp3)BEGINIF enable='0'THEN NULL; --不测量ELSIF(input'event AND input='1')THEN --检测被测信号IF reset='1'THEN --同步复位,高电平有效overflow<='0';r0_1<=0;r1_1<=0;r2_1<=0;r3_1<=0;r4_1<=0;r5_1<=0;ELSIF cp3='0'THEN --闸门为0时清零Overflow<='0';r0_1<=0;r1_1<=0;r2_1<=0;r3_1<=0;r4_1<=0;r5_1<=0;ELSE --闸门为高电平计数r0_1<=r0_1+1;IF r0_1=9 THEN r1_1<=r1_1+1;r0_1<=0;IF(r1_1=9)THEN r2_1<=r2_1+1;r1_1<=0;IF(r2_1=9)THEN r3_1<=r3_1+1;r2_1<=0;IF(r3_1=9)THEN r4_1<=r4_1+1;r3_1<=0;IF(r4_1=9)THEN r5_1<=r5_1+1;r4_1<=0;IF(r5_1=9)THEN r5_1<=0;overflow<='1'; --大于1000kHz END IF;END IF;END IF;END IF;END IF;END IF;END IF;END IF;END PROCESS;PROCESS(r5_1,r4_1)BEGINIF r5_1=0 AND r4_1=0 THEN --为小于9999Hz时play0<=r0_1;playl<=r1_1;play2<=r2_1;play3<=r3_1;decimal<="100";ELSIF r5_1=0 THEN --为几十kHz时play0<=r1_1;playl<=r2_1;play2<=r3_1;play3<=r4_1;decimal<="010";ELSE --为几百kHz时play0<=r2_1;playl<=r3_1;play2<=r4_1;play3<=r5_1;decimal<="001";END IF;END PROCESS;END behavior;仿真波形4、锁存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;ENTITY frelatch ISPORT(reset:IN STD_LOGIC; --复位cp3:IN STD_LOGIC; --时钟Overflow: IN STD_LOGIC; --大于1000kHz表示play0,playl,play2,play3:IN INTEGER RANGE 0 TO 9;decimal:IN STD_LOGIC_VECTOR(2 DOWNTO 0);--小数点overlatch:OUT STD_LOGIC; --大于1000kHzp0latch,pllatch,p21atch,p31atch:OUT INTEGER RANGE 0 TO 9; delatch:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));--小数点END frelatch;ARCHITECTURE behavior OF frelatch ISBEGINPROCESS(cp3,reset)BEGINIF reset='1'THENoverlatch<='0';p0latch<=0;pllatch<=0;p21atch<=0;p31atch<=0;delatch<=decimal;ELSIF cp3'event AND cp3='0'THENoverlatch<=overflow;p0latch<=play0;pllatch<=playl;p21atch<=play2;p31atch<=play3;delatch<=decimal;END IF;END PROCESS;END behavior;仿真波形5、显示模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;ENTITY display ISPORT( cpl:IN STD_LOGIC; --时钟overflow:IN STD_LOGIC; --高于1000kHz标志p0,p1,p2,p3:IN INTEGER RANGE 0 TO 9;--BCD码输入 show:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--7段码输出 sel:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));--位扫描码END dISplay;ARCHITECTURE behavior OF display ISSIGNAL count: INTEGER RANGE 0 TO 3;SIGNAL sel_1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(cpl)BEGINIF(cpl'event AND cpl='1') THENIF count=3 THEN count<=0;ELSEcount<=count+1;END IF;END IF;END PROCESS;PROCESS(count)BEGINCASE count ISWHEN 0=>sel_1<="1110"; --第0位WHEN 1=>sel_1<="1101"; --第1位WHEN 2=>sel_1<="1011"; --第2位WHEN 3=>sel_1<="0111"; --第3位END CASE;END PROCESS;PROCESS(overflow,sel_1)BEGINIF(overflow='1')THENshow<="0110111"; --高于1000kHz,显示HELSIF(sel_1(0)='0')THEN --第0位数码管译码CASE p0 ISWHEN 0=>show<="1111110";--显示0,a-gWHEN 1=>show<="0110000";--1WHEN 2=>show<="1101101";--2WHEN 3=>show<="1111001";WHEN 4=>show<="0110011";WHEN 5=>show<="1011011";WHEN 6=>show<="0011111";WHEN 7=>show<="1110000";WHEN 8=>show<="1111111";WHEN 9=>show<="1110011";END CASE;ELSIF(sel_1(1)='0')THEN --第1位译码 CASE p1 ISWHEN 0=>show<="1111110";WHEN 1=>show<="0110000";WHEN 2=>show<="1101101";WHEN 3=>show<="1111001";WHEN 4=>show<="0110011";WHEN 5=>show<="1011011";WHEN 6=>show<="0011111";WHEN 7=>show<="1110000";WHEN 8=>show<="1111111"; WHEN 9=>show<="1110011";END CASE;ELSIF(sel_1(2)= '0')THEN --第2位译码 CASE p2 ISWHEN 0=>show<="1111110";WHEN 1=>show<="0110000";WHEN 2=>show<="1101101";WHEN 3=>show<="1111001";WHEN 4=>show<="0110011";WHEN 5=>show<="1011011";WHEN 6=>show<="0011111";WHEN 7=>show<="1110000";WHEN 8=>show<="1111111";WHEN 9=>show<="1110011";END CASE;ELSIF(sel_1(3)='0')THEN --第3位译码 CASE p3 ISWHEN 0=>show<="1111110";WHEN 1=>show<="0110000";WHEN 2=>show<="1101101";WHEN 3=>show<="1111001";WHEN 4=>show<="0110011";WHEN 5=>show<="1011011";WHEN 6=>show<="0011111";WHEN 7=>show<="1110000";WHEN 8=>show<="1111111";WHEN 9=>show<="1110011";END CASE;END IF;END PROCESS; sel<=sel_1; END behavior; 仿真波形。