定稿格式参考

更新时间:2024-04-13 03:09:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

湘潭大学 毕业设计说明书

题 目:学 院:专 业:学 号:姓 名:指导教师:完成日期:

基于EDA技术的频率计系统设计

职业技术学院 应用电子技术 20089201124 周 佩 蓉 冷 爱 莲

2011年5月20日

湘 潭 大 学

毕业设计任务书

设计题目: 基于EDA技术的频率计系统设计

学 号: 20089201124 学生姓名: 周佩蓉 专 业: 应用电子技术 指导教师姓名(职称):冷爱莲(讲师 )、 系(教研室)主任: 唐 平

一 、主要内容及基本要求:

主要内容:

用可编程逻辑器件CPLD(或FPGA)为核心硬件, 用硬件描述语言

VHDL编写源程序,在MAX-PLUSⅡ平台上,设计一个数字测频系统。 基本要求 :

1. 能测量正弦波、方波等周期性信号; 2. 数字显示测频结果;

3. 测量频率范围:1Hz~10MHz; 4. 输入信号幅度:0.5V~5V。

二、重要研究的内容:

1、测频原理组成方框图。 2、各模块的VHDL程序设计。

三、进度安排:

1 2 3 4 5 6 7 8

各阶段完成的内容 选题 收集资料 分析、设计方案 完成设计操作 准备设计说明书初稿 进行第一次初稿的修改 定稿 打印提交 起止时间 2011.1.10前 2011.3.10前 2011.3.10~3.30 2011.4.1~4.15 2011.4.16~4.25 2011.4.26~5. 8 2011.5.9~5.15 2011.5.20前 四、应收集的资料及主要参考文献:

1、 章彬宏 .EDA应用技术 北京理工大学出版社,2007. 2、 杨刚等. 现代电子技术——VHDL与数字系统设计 电子工业出版社,2004. 3、 张亦华等. 数字电路EDA入门---VHDL程序实例集 北京邮电大学出版社,2004.

4、 顾斌等. 数字电路EDA设计 西安电子科技大学出版社, 2004年.

5、 姜立东. VHDL语言程序设计及应用(第二版) 北京邮电大学出版社,2007. 6、 潘松.. VHDL实用教程 电子科技大学出版社, 2004.

7、 刘爱荣等. EDA技术与CPLD/FPGA开发应用简明教程 清华大学出版社,2007. 8、 唐俊英 EDA技术应用实例教程 电子工业出版社,2008. 9、 何伟. 现代数字系统实验及设计 重庆大学出版社,2005. 10、林明权.VHDL数字控制系统设计范例 电子工业出版社,2003.

湘潭大学毕业设计评阅表

学号 20089201124 姓名 周 佩 蓉 专业 应 用 电 子 技 术 毕业论文(设计)题目: 基于EDA技术的频率计系统设计 评价项目 选 题 能 力 评 价 内 容 1.是否符合培养目标,体现学科、专业特点和教学计划的基本要求,达到综合训练的目的; 2.难度、份量是否适当。 1.是否有查阅文献、综合归纳资料的能力; 2.是否有综合运用知识的能力; 3.是否具备研究方案的设计能力、研究方法和手段的运用能力; 4.是否具备一定的外文与计算机应用能力; 5.工科是否有经济分析能力。 论文质量 1.立论是否正确,论述是否充分,结构是否严谨合理;实验是否正确,设计、计算、分析处理是否科学;技术用语是否准确,符号是否统一,图表是否完备、整洁、正确;引文是否规范; 2.文字是否通顺,有无观点提炼,综合概括能力如何; 工作量 综 合 评 价 评阅人姓名(职称): 年 月 日 3.有无理论价值或实际应用价值,有无创新之处。 工作量是否饱满,论文篇幅、图纸`等是否达到规定要求。

湘 潭 大 学 毕业设计鉴定意见

学 号: 20089201124 学生姓名: 周 佩 蓉 专 业: 应用电子技术 毕业论文(设计说明书) 28 页 图表: 24 张

论文题目:基于EDA技术的频率计系统设计 内容提要: 伴随着集成电路(IC)技术的发展,电子设计自动化(EDA)逐渐成为重要的设计手段,已经广泛应用于模拟与数字电路系统等许多领域。电子设计自动化是一种实现电系统或电子产品自动化设计的技术,它与电子技术、微电子技术的发展密切相关,它吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,促进了工程发展。

数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置。它能够测量正弦波、方波等信号的频率。具有体积小、可靠性高、功耗低的特点。 本设计主要是围绕一个8位数字式等精度频率计的设计所展开,主要包括以下几模块:信号源模块、控制模块、计数模块、锁存器模块和显示器模块。 本设计使用VHDL语言编写,可控制数字频率计按特定的规律进行工作,测出需要测量的频率。最后,通过MAX+Plus II软件进行仿真测试,达到预计的测试效果,使整个设计更加紧凑、稳定且可靠。

指导教师评语 指导教师姓名: 年 月 日 答辩委员会意见 经答辩委员会讨论,同意该毕业设计成绩评定为 答辩委员会主任:

年 月 日

目 录

摘 要.............................................................................................................................I Abstract........................................................................................................................ II 引 言.............................................................................................................................. 1 第一章 EDA的概述 .................................................................................................... 2

1.1 EDA技术的发展 .................................................................................................. 2 1.2 基于EDA的FPGA/CPLD开发 ........................................................................... 3

1.2.1 FPGA/CPLD简介 ....................................................................................... 3 1.2.2 用FPGA/CPLD开发的优点 ...................................................................... 4 1.3 VHDL语言 .......................................................................................................... 4

1.3.1 VHDL简介 ................................................................................................ 4 1.3.2 VHDL程序结构 ......................................................................................... 5 1.4 Max+plusII软件操作 ............................................................................................ 6

第二章 数字频率计的频率测量 ................................................................................. 8

2.1 数字频率计的工作原理 ....................................................................................... 8 2.2 测频原理及误差分析 ........................................................................................... 9

2.2.1测频方案构思............................................................................................. 9 2.2.2 等精度测频原理 ........................................................................................ 9 2.2.3 误差分析 ..................................................................................................11

第三章 基于EDA的频率计系统设计与功能仿真 ................................................. 12

3.1 数字频率计系统的总体设计 .............................................................................. 12 3.2 信号源模块 ....................................................................................................... 13 3.3 分频器 .............................................................................................................. 15 3.4 测频控制信号产生器 ......................................................................................... 16 3.5 锁存器 .............................................................................................................. 18 3.6 十进制计数器 ................................................................................................... 19 3.7 显示模块 .......................................................................................................... 21

3.7.1 显示模块设计 .......................................................................................... 21 3.7.2 显示电路 ................................................................................................. 24 3.7.3 七段译码器 ............................................................................................. 24 3.8数字频率计顶层图 ............................................................................................. 25

结 论............................................................................................................................ 26 致 谢.......................................................................................................................... 27 参 考 文 献................................................................................................................ 28

基于EDA的数字频率计系统设计

摘 要

伴随着集成电路(IC)技术的发展,电子设计自动化(EDA)逐渐成为重要的设计手段,已经广泛应用于模拟与数字电路系统等许多领域。电子设计自动化是一种实现电系统或电子产品自动化设计的技术,它与电子技术、微电子技术的发展密切相关,它吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,促进了工程发展。

数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置。它不仅可以测量正弦波、方波、三角波、尖脉冲信号和其他具有周期特性的信号的频率,而且还可以测量它们的周期。经过改装,可以测量脉冲宽度,做成数字式脉宽测量仪;可以测量电容做成数字式电容测量仪;在电路中增加传感器,还可以做成数字脉搏仪、计价器等。因此数字频率计在测量物理量方面应用广泛。

本设计通过FPGA运用VHDL编程,利用FPGA(现场可编程门阵列)芯片设计了一个8位数字式等精度频率计,该频率计能够测量正弦波、方波等信号的频率并且测量范围为1-10MHZ,利用Max+plusII集成开发环境进行编辑、综合、波形仿真,并下载到CPLD器件中,经实际电路测试,仿真和实验结果表明,该频率计有较高的实用性和可靠性。

关键词:数字频率计、EDA技术、FPGA、VHDL语言、Max+plusII软件

I

Abstract

The Electronic Design Automation (EDA) technology has become an important design method of analog and digital circuit system as the integrated circuit's growing. The EDA technology, which is closely connected with the electronic technology, microelectronics technology and computer science, can be used in designing electronic product automatically.

Digital cymometer is to directly show to be measured a kind of diagraph of signal frequency to equip with 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 breadth 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 accounts in the diagraph physics to measure aspect applied extensive.

VHDL is used for programming of this design .Using of FPGA (Field Programmable Gate Array) chip design such as the precision of a digital frequency meter, this frequency meter can measure the frequency of sine wave, square wave etc and it's measuring range is 0-10MHZ,use Max+plusII integrated development environment for editing, synthesis, wave simulation, and download to the CPLD device, by the actual circuit testing, simulation and experimental results show that the frequency meter has high practical and reliability.

Key words:digital cymometer and EDA technique,FPGA and VHDL language

and Max+plusII software

II

引 言

21世纪人类将全面进入信息化社会,对微电子信息技术和微电子VLSI基础技术将不断提出更高的发展要求,微电子技术仍将继续是21世纪若干年代中最为重要的和最有活力的高科技领域之一。而集成电路(IC)技术在微电子领域占有

重要的地位。伴随着IC技术的发展,电子设计自动化(Electronic Design Automation,

EDA)己经逐渐成为重要设计手段,其广泛应用于模拟与数字电路系统等许多领域。

数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差,可靠性差。随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言。将使整个系统大大简化。提高整体的性能和可靠性。

数字频率计是通信设备、音、视频等科研生产领域不可缺少的测量仪器。采用VHDL编程设计实现的数字频率计,除被测信号的整形部分、键输入部分和数码显示部分外,其余全部在一片FPGA芯片上实现。整个系统非常精简,且具有灵活的现场可更改性。

本设计用VHDL在CPLD器件上实现一种8 位数字频率计测频系统,能够用十进制数码显示被测信号的频率,不仅能够测量正弦波、方波等周期性信号的频率,而且能对其他多种频率信号进行测量。具有体积小、可靠性高、功耗低的特点。

1

第一章 EDA的概述

1.1 EDA技术的发展

EDA技术的发展始于70年代,至今经历了三个阶段。电子线路的CAD(计算机辅助计)是EDA发展的初级阶段,是高级EDA系统的重要组成部分。它利用计算机的图形编辑、分析和存储等能力,协助工程师设计电子系统的电路图、印制电路板和集成电路板图;采用二维图形编辑与分析,主要解决电子线路设计后期的大量重复性工作,可以减少设计人员的繁琐重复劳动,但自动化程度低,需要人工干预整个设计过程。这类专用软件大多以微机为工作平台,易于学用,设计中小规模电子系统可靠有效,现仍有很多这类专用软件被广泛应用于工程设计。

80年代初期,EDA技术开始设计过程的分析,推出了以仿真(逻辑模拟、定时分析和故障仿真)和自动布局与布线为核心的EDA产品,这一阶段的EDA已把三维图形技术、窗口技术、计算机操作系统、网络数据交换、数据库与进程管理等一系列计算机学科的最新成果引入电子设计,形成了 CAE—计算机辅助工程。也就是所谓的EDA技术中级阶段。其主要特征是具备了自动布局布线和电路的计算机仿真、分析和验证功能。其作用已不仅仅是辅助设计,而且可以代替人进行某种思维。CAE这种以原理图为基础的EDA系统,虽然直观,且易于理解,但对复杂的电子设计很难达到要求,也不宜于设计的优化。所以,90年代出现了以自动综合器和硬件描述语言为基础,全面支持电子设计自动化的ESDA(电子系统设计自动化),即高级EDA阶段、也就是目前常说的EDA。过去传统的电子系统电子产品的设计方法是采用自底而上(Bottom_Up)的程序,设计者先对系统结构分块,直接进行电路级的设计。这种设计方式使设计者不能预测下一阶段的问题,而且每一阶段是否存在问题,往往在系统整机调试时才确定,也很难通过局部电路的调整使整个系统达到既定的功能和指针,不能保证设计一举成功。

EDA技术高级阶段采用一种新的设计概念:自顶而下(Top_Down)的设计程序和并行工程(Concurrent engineering )的设计方法,设计者的精力主要集中在所要电子产品的准确定义上,EDA系统去完成电子产品的系统级至物理级的设计。此阶段EDA技术的主要特征是支持高级语言对系统进行描述,高层次综合(High Level Synthesis )理论得到了巨大的发展,可进行系统级的仿真和综合。

2

图1.1给出了上述三个阶段的示意图。

图1.1 EDA发展阶段示意图

EDA技术是指以计算机大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关开发软件,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术。

1.2 基于EDA的FPGA/CPLD开发

1.2.1 FPGA/CPLD简介

FPGA和CPLD都是高密度现场可编程逻辑芯片,都能够将大量的逻辑功能集成于一个单片集成电路中,其集成度已发展到现在的几百万门。复杂可编程逻辑器件CPLD是由PAL ( Programmable Array Logic,可编程数组逻辑)或GAL ( Generic Array Logic,通用数组逻辑)发展而来的。它采用全局金属互连导线,因而具有较大的延时可预测性,易于控制时序逻辑;但功耗比较大。现场可编程门阵列(FPGA)是由掩膜可编程门阵列(MPGA)和可编程逻辑器件二者演变而来的,并将它们的特性结合在一起,因此FPGA既有门阵列的高逻辑密度和通用性,又有可编程逻辑器件的用户可编程特性。FPGA通常由布线资源分隔的可编程逻辑单元(或宏单元)构成数组,又由可编程I/O单元围绕数组构成整个芯片。其内部资源是分段互联的,因而延时不可预测,只有编程完毕后才能实际测量。

CPLD和FPGA建立内部可编程逻辑连接关系的编程技术有三种:基于反熔丝技术的器件只允许对器件编程一次,编程后不能修改。其优点是集成度、工作频率和可靠性都很高,适用于电磁辐射干扰较强的恶劣环境。基于EEPROM内

3

存技术的可编程逻辑芯片能够重复编程100次以上,系统掉电后编程信息也不会丢失。编程方法分为在编程器上编程和用下载电缆编程。用下载电缆编程的器件,只要先将器件装焊在印刷电路板上,通过PC, SUN工作站、ATE(自动测试仪)或嵌入式微处理器系统,就能产生编程所用的标准5V, 3.3V或2.5V逻辑电平信号,也称为ISP ( In System Programmable)方式编程,其调试和维修也很方便。基于SRAM技术的器件编程数据存储于器件的RAM区中,使之具有用户设计的功能。在系统不加电时,编程数据存储在EPROM、硬盘、或软盘中。系统加电时将这些编程数据实时写入可编程器件,从而实现板级或系统级的动态配置。 1.2.2 用FPGA/CPLD开发的优点

基于EDA技术的FPGA/CPLD器件的开发应用可以从根本上解决MCU所遇到的问题。与MCU相比,FPGA/CPLD的优势是多方面的和根本性的:

(1) 编程方式简便、先进。

(2) 高速。FPGA/CPLD的时钟延迟可达纳秒级,结合其并行工作方式,超高速应用领域和实时测控方面有非常广阔的应用前景。

(4) 开发工具和设计语言标准化,开发周期短。

(5) 功能强大,应用广阔。目前,FPGA/ CPLD可供选择范围很大,可根据不同的应用选用不同容量的芯片。

1.3 VHDL语言

1.3.1 VHDL简介

VHDL是超高速集成电路硬件描述语言的英文字头缩写简称,其英文全名是Very-High -Speed Integrated Circuit Hardware Description Language。它是在70 ~ 80年代中由美国国防部资助的VHSIC(超高速集成电路)项目开发的产品,诞生于1982年。1987年底,VHDL被IEEE(The Institute of Electrical and Electronics Engineers)确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本((IEEE std 1076-1987标准)之后,各EDA公司相继推出了自己的VHDL设计环境。此后,VHDL在电子设计领域受到了广泛的接受,并逐步取代了原有的非标准HDL。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即ANSI/IEEE std 1076-1993版本。1996年IEEE 1076.3成为VHDL综合标准。

VHDL主要用于描述数字系统的结构、行为、功能和接口,非常适用于可编

4

程逻辑芯片的应用设计。与其它的HDL相比,VHDL具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。就目前流行的EDA工具和VHDL综合器而言,将基于抽象的行为描述风格的VHDL程序综合成为具体的FPGA和CPLD等目标器件的网表文件己不成问题。VHDL语言在硬件设计领域的作用将与C和C++在软件设计领域的作用一样,在大规模数字系统的设计中,它将逐步取代如逻辑状态表和逻辑电路图等级别较低的繁琐的硬件描述方法,而成为主要的硬件描述工具,它将成为数字系统设计领域中所有技术人员必须掌握的一种语言。VHDL和可编程逻辑器件的结合作为一种强有力的设计方式,将为设计者的产品上市带来创纪录的速度。 1.3.2 VHDL程序结构

一个相对完整的VHDL程序(或称为设计实体)具有如图1.2所示的比较固定的结构。至少应包括三个基本组成部分:库、程序包使用说明,实体说明和实体对应的结构体说明。

图1.2 VHDL程序设计基本结构

实体是设计实体的表层设计单元,其功能是对这个设计实体与外部电路进行接口进行描述,它规定了设计单元的输入输出接口信号或引脚,是设计实体对外的一个通信界面。

结构体是用于描述设计实体的内部结构以及实体端口间的逻辑关系。结构体内部构造的描述层次和描述内容一般可以用图1.3来说明。

5

常数说明结构体说明结子程序说明构块语句体结构体功能描述元件例化语句子程序调用语句信号赋值语句进程语句例化元件说明信号说明数据类型说明

图1.3 结构体构造图

1.4 Max+plusII软件操作

Max+plusII是一个全集成化的可编程逻辑器件开发平台。它支持ACEX1K、FLEX10K、FLEX10KA、FLEX10KE、FLEX8000、FLEX6000、 FLEX9000 MAX7000AE、MAX7000B、MAX7000S、MAX3000A、Classic等系列器件的开发。

Max+plusII支持VHDL、Verilog-HDL、AHDL等硬件描述语言程序输入法、原理图输入法、波形图输入法等,能够满足用户的多种设计要求。它强大高效的功能大大简化了设计过程,使设计者可以快速完成所需的设计。Max+plusII将整个设计过程分为新建项目、设计输入、器件选择和引脚绑定、项目编译、模拟仿真和器件编程下载6个主要的过程。

6

表1-1列出了各个步骤及相应的功能。

表1-1 Max+plusII软件的功能表

设计步骤 新建项目 设计输入 器件选择和 引脚绑定 编译 功 能 创建项目用以管理整个工程文件 输入设计文件,包括原理图输入,文本输入等。 选择合适的器件,然后将所设计电路的输入/输出端口和器件的管脚进行一一对应绑定。 对整个项目进行错误检查、网表提取、逻辑综合、器件适配,并产生仿真文件、时序文件和编译配置文件。 模拟仿真 对所设计的电路进行仿真,这时的仿真包含了器件和连线的延时。 编程下载 将产生的下载程序,通过电缆下载到可编程逻辑器件中,用硬件实现电路的功能。

本章小结

本章主要介绍了EDA技术的基本内涵和发展概况,以及在EDA技术应用的过程中关于FPGA/ CPLD芯片和在Max+plusII环境下VHDL语言的相关知识做了基本介绍。

7

第二章 数字频率计的频率测量

2.1 数字频率计的工作原理

数字频率计的设计原理实际上是测量单位时间内的周期数。这种方法免去了实测以前的预测,同时节省了划分频段的时间,克服了原来高频段采用测频模式而低频段采用测周期模式的测量方法存在换挡速度慢的缺点。

采用一个标准的基准时钟,在单位时间(1s)里对被测信号的脉冲数进行计数,即为信号的频率。由于闸门的起始和结束时刻对于信号来说是随机的,将会有一个脉冲周期的量化误差。进一步分析测量准确度:设待测信号脉冲周期为Tx,频率为Fx,当测量时间为T=1s时,测量准确度为&=Tx/T=1/Fx。由此可知直接测频法的测量准确度与信号的频率有关:当待测信号频率较高时,测量准确度也较高,反之测量准确度也较低。因此直接测频法只适合测量频率较高的信号,不能满足在整个测量频段内的测量精度保持不变的要求。

为克服低频段测量的不准确问题,采用门控信号和被测信号对计数器的使能信号进行双重控制,大大提高了准确度。当门控信号为1时,使能信号并不为1,只有被测信号的上升沿到来时,使能端才开始发送有效信号,两个计数器同时开始计数。当门控信号变为0时,使能信号并不是立即改变,而是当被测信号的下一个上升沿到来时才变为0,计数器停止计数。因此测量的误差最多为一个标准时钟周期。当采用10MHz的信号作为标准信号时,误差最大为0.1μs。

计算每秒钟内待测信号脉冲个数。这就要求计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器cnt10的ENA使能端进行同步控制。当TSTEN为高电平时,允许计数;低电平时,停止计数,并保持其所计的数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进32位锁存器REG32B中,并由外部的译码器译出并稳定显示。锁存信号之后,必须由清零信号CLR_CNT对计数器进行清零,为下一秒钟的计数操作做准备。

当系统正常工作时,脉冲发生器提供的1 Hz的输入信号,经过测频控制信号发生器进行信号的变换,产生计数信号,被测信号通过信号整形电路产生同频率的矩形波,送入计数模块,计数模块对输入的矩形波进行计数,将计数结果送入锁存器中,保证系统可以稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在数码显示管上可以显示的十进制结果。在数码显示管

8

上可以看到计数结果。

2.2 测频原理及误差分析

2.2.1测频方案构思

频率测量方案:

方案一:采用周期法。通过测量待测信号的周期并求其倒数,需要有标准倍的频率,在待测信号的一个周期内,记录标准频率的周期数,这种方法的计数值会产生最大为±1个脉冲误差,并且测试精度与计数器中记录的数值有关,为了保证测试精度,测周期法仅适用于低频信号的测量。

方案二:采用直接测频法。直接测频法就是在确定的闸门时间内,记录被测信号的脉冲个数。由于闸门时间通常不是待测信号的整数倍,这种方法的计数值也会产生最大为±1个脉冲误差。进一步分析测量准确度:设待测信号脉冲周期为Tx,频率为Fx,当测量时间为T=1s时,测量准确度为&=Tx/T=1/Fx。由此可知直接测频法的测量准确度与信号的频率有关:当待测信号频率较高时,测量准确度也较高,反之测量准确度也较低。因此直接测频法只适合测量频率较高的信号,不能满足在整个测量频段内的测量精度保持不变的要求。

方案三:采用等精度频率测量法,测量精度保持恒定,不随所测信号的变化而变化。在快速测量的要求下,要保证较高精度的测频,必须采用较高的标准频率信号。单片机受本身时钟频率和若干指令运算的限制,测频速度较慢,无法满足高速、高精度的测频要求;而采用高集成度、高速的现场可编程门阵列FPGA为实现高速、高精度的测频提供了保证。

本设计所采用的测频方法就是等精度频率测量法,下面我们将对等精度频率测量法做进一步介绍。 2.2.2 等精度测频原理

等精度测频方法是在直接测频方法的基础上发展起来的。它的闸门时间不是固定的值,而是被测信号周期的整数倍,即与被测信号同步,因此,避除了对被测信号计数所产生±1个字误差,并且达到了在整个测试频段的等精度测量。其测频原理如图2.1所示。在测量过程中,有两个计数器分别对标准信号和被测信号同时计数。首先给出闸门开启信号(预置闸门上升沿),此时计数器并不开始计数,而是等到被测信号的上升沿到来时,计数器才真正开始计数。然后预置闸门关闭信号(下降沿)到时,计数器并不立即停止计数,而是等到被测信号的上升沿

9

到来时才结束计数,完成一次测量过程。可以看出,实际闸门时间t与预置闸门时间t1并不严格相等,但差值不超过被测信号的一个周期。

图2.1 等精度测频原理波形图

等精度测频的实现方法可简化为图2.2所示。CNT1和CNT2是两个可控计数器,标准频率信号从CNT1的时钟输入端CLK输入;经整形后的被测信号从CNT2的时钟输入端CLK输入。当预置门控信号为高电平时,经整形后的被测信号的上升沿通过D触发器的Q端同时启动CNT1和CNT2。CNT1、CNT2同时对标准频率信号和经整形后的被测信号进行计数,分别为NS与NX。当预置门信号为低电平的时候,后而来的被测信号的上升沿将使两个计数器同时关闭,标准信号的频率为FS,则所测得的频率为(FS/NS)* NX。则等精度测量方法测量精度与预置门宽度的标准频率有关,与被测信号的频率无关。在预置门时间和常规测频闸门时间相同而被测信号频率不同的情况下,等精度测量法的测量精度不变。

图2.2 等精度测频实现原理图

10

2.2.3 误差分析

设在一次实际闸门时间t中计数器对被测信号的计数值为Nx,对标准信号的计数值为Ns。标准信号的频率为fs,则被测信号的频率如式(2-1):

fx=(Nx/Ns)·fs (2-1)

由式1-1可知,若忽略标频fs的误差,则等精度测频可能产生的相对误差如式(2-2):

δ=(|fxe-fx|/fxe)×100% (2-2)

其中fxe为被测信号频率的准确值。

在测量中,由于fx计数的起停时间都是由该信号的上升沿触发的,在闸门时间t内对fx的计数Nx无误差(t=NxTx);对fs的计数Ns最多相差一个数的误差,即|ΔNs|≤1,其测量频率如式(2-3):

fxe=[Nx/(Ns+ΔNs)]·fs (2-3)

将式(2-1)和(2-3)代入式(2-2),并整理如式(2-4):

δ=|ΔNs|/Ns≤1/Ns=1/(t·fs) (2-4)

由上式可以看出,测量频率的相对误差与被测信号频率的大小无关,仅与闸门时间和标准信号频率有关,即实现了整个测试频段的等精度测量。闸门时间越长,标准频率越高,测频的相对误差就越小。标准频率可由稳定度好、精度高的高频率晶体振荡器产生,在保证测量精度不变的前提下,提高标准信号频率,可使闸门时间缩短,即提高测试速度。

综上所述,通过对各种频率测量方法的比对,对等精度频率计的实现,在理论上起到了作用。

本章小结

本章从各个方面说明了频率计的工作原理,介绍了频率测量的原理和误差的分析,通过对各种频率测量方法的比对,对等精度频率计的实现,在理论上起到了作用。

11

第三章 基于EDA的频率计系统设计与功能仿真

3.1 数字频率计系统的总体设计

当系统正常工作时,由系统时钟提供的10MHz的输入信号,经过信号源模块,先通过10分频产生1MHZ的时钟信号,再将1MHZ的时钟信号分频产生1HZ的输出频率,这1HZ的频率被作为控制模块的时钟输入,也被作为显示模块的时钟输入,由控制模块产生的计数使能信号testen和清零信号clr对计数模块进行控制,而由其产生的锁存信号load对锁存模块进行控制,一旦计数使能信号为高电平,并且时钟上升沿到来,计数器便开始正常计数,清零信号到来则计数清零,而当锁存信号为高电平时,数据便被锁存器锁存,然后将锁存的数据输出到显示模块显示出来,数据锁存保证系统可以稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在数码显示管上可以显示的十进制结果。在数码显示管上可以看到计数结果。数字频率计的原理框图如图3.1所示。主要由5个模块组成,分别是:信号源模块、控制模块、计数模块、锁存器模块和显示器模块。

图3.1 数字频率计的原理框图

根据数字频率计的系统原理,cnt控制信号发生器。testctl的计数使能信号testen能产生一个1 s宽的周期信号,并对频率计的每一计数器Cnt10的ENA使能端进行同步控制:当testen高电平时允许计数、低电平时停止计数。

reg32b为锁存器。在信号load的上升沿时,立即对模块的输入口的数据锁存到reg32b的内部,并由reg32b的输出端输出,然后,七段译码器的动态扫描可以译码输出。在这里使用了锁存器,好处是可以稳定显示数据,不会由于周期

12

性的清零信号而不断闪烁。

Cnt10为十进制计数器。有一时钟使能输入端ENA,用于锁定计数值。当高电平时允许计数,低电平时禁止计数。将八个十进制计数器Cnt10级联起来实现8 位十进制计数功能。

LED7_8为七段译码动态扫描显示驱动电路,可以将频率计数的结果译成能在数码管上显示的相对应的阿拉伯数字,便于读取测量的结果。

为了实现系统功能,测频控制信号发生器testctl、计数器Cnt10、锁存器reg32b存在一个工作时序的问题,设计时需要综合考虑。

8位数字频率计的顶层框图(sheji.gdf),设计实现包括信号源模块(PIN1MHZ_1)、测频控制信号产生器模块(TESTCTL)、计数器模块(CNT10)和显示模块(LED7_8)等几个大模块。下面分别介绍这些模块的结构和实现方法。

3.2 信号源模块

信号源是为了产生1MHz 的门控信号和待测的定频信号,而对输入系统时钟clk(5MHz)进行分频的模块,设计源代码PIN1MHZ.VHD 对输入系统时钟clk(5MHz)进行分频产生1MHz 信号。

信号源模块源程序如下: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_arith.all;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PIN1MHZ_1 IS PORT ( clkin : IN STD_LOGIC; clkout: OUT STD_LOGIC); END PIN1MHZ_1;

ARCHITECTURE Behavioral OF PIN1MHZ_1 IS signal out1:std_logic:='0'; signal temp1:integer range 0 to 10; BEGIN

13

clkout<=out1; PROCESS(clkin) BEGIN

IF (clkin'event and clkin='1')then temp1<=temp1+1; IF temp1=4 then

out1<=not out1; temp1<=0; END IF; END IF; END PROCESS; END Behavioral;

PIN1MHZ_1的封装图如3.2所示,图中CLKIN为接入的10MHZ信号,图中CLKOUT为接到CNT的CLK的1MHZ的信号。

图3.2 PIN1MHZ_1封装图

PIN1MHZ_1的工作时序仿真图如图3.3所示。

图3.3 信号源模块真图

从PIN1MHZ_1的工作时序仿真图可以看出:由系统时钟提供的10MHz的输入信号,经过信号源模块,通过10分频产生1MHZ的时钟信号,达到了设计所需的预期效果。

14

3.3 分频器

此程序要求将1MHZ的输入频率进行213分频(产生1HZ的输出频率freq1)。 分频器源程序如下: library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt is

port(clk : in std_logic; freq1 : out std_logic); end cnt;

architecture behv of cnt is

signal temp: std_logic_vector(19 downto 0); begin process(clk) begin

if clk'event and clk ='1' then

if temp=\ temp<=\ else

temp<=temp+1; end if; end if; end process; freq1<=temp(19); end behv;

CNT的封装图如图3.4,图中CLK为PIN1MHZ输入的1MHZ信号,freq1为输出给控制信号发生器的1HZ信号。

图3.4 CNT封装图

15

CNT的工作时序仿真图如图3.5所示。

图3.5 CNT的时序仿真图

当1MHZ频率波形输入后,产生了设计所需要的1HZ的输出频率freq1。

3.4 测频控制信号产生器

控制模块的作用是产生测频所需要的各种控制信号。控制信号的标准输入时钟为1HZ,每两个时钟周期进行一次频率测量。该模块产生的3个控制信号,分别为TSTEN,LOAD,CLR_CNT.CLR_CNT信号用于在每次测量开始时,对计数器进行复位,以清除上次测量的结果,该复位信号高电平有效,持续半个时钟周期的时间。TSTEN为计数允许信号,在TSTEN信号的上升沿时刻计数模块开始对输入信号的频率进行测量,测量时间恰为一个时钟周期(正好为单位时间1s),在此时间里被测信号的脉冲数进行计数,即为信号的频率。然后将值锁存,并送到数码管显示出来。设置锁存器的好处是使显示的数据稳定,不会由于周期性的清零信号而不断闪烁。在每一次测量开始时,都必须重新对计数器清0。

测频控制信号发生器源程序如下: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY TESTCTL IS

PORT ( CLK: IN STD_LOGIC; --1 Hz测频控制时钟 TSTEN: OUT STD_LOGIC; --计数器时钟使能 CLR_CNT: OUT STD_LOGIC; --计数器清零 LOAD: OUT STD_LOGIC); --输出锁存信号 END TESTCTL;

ARCHITECTURE ART OF TESTCTL IS SIGNAL DIV2CLK :STD_LOGIC; BEGIN

PROCESS ( CLK ) BEGIN

16

IF CLK'EVENT AND CLK= '1' --1 HZ时钟二分频

THEN DIV2CLK<=NOT DIV2CLK; END IF ; END PROCESS;

PROCESS ( CLK,DIV2CLK ) BEGIN

IF CLK= '0' AND DIV2CLK = '0' THEN --产生计数器清零信号 CLR_CNT<= '1'; ELSE CLR_CNT<= '0' ; END IF; END PROCESS;

LOAD<=NOT DIV2CLK; TSTEN<=DIV2CLK; END ART;

测频控制产生器如图3.6,图中CLK接CNT的FREQ1的1HZ的信号,TSTEN为计数允许信号,接计数器CNT10的ENA,CLR_CNT信号用于在每次测量开始时,对计数器进行复位,接计数器CNT10的CLR,LOAD接锁存器的LOAD。

图3.6 TESTCTL的封装图

测频控制信号发生器TESTCTL的工作时序图,控制模块的几个控制信号的时序关系图如图3.7所示。

图3.7 TESTCTL的时序仿真图

从图中可看出,计数使能信号TSTEN在1s的高电平后,利用其反相值的上跳沿产生一个锁存信号LOAD,随后产生清0信号上跳沿CLR_CNT。为了产生这个时序图需首先建立一个由D触发器构成的二分频器,在每次时钟CLK上升沿

17

到来时令其翻转。其中,控制信号时钟clk的频率取1HZ,而信号TSTEN的脉宽恰好为1s,可以用作闸门信号。此时,根据测频的时序要求,可得出信号LOAD和CLR_CNT的逻辑描述。由图可知,在计数完成后,计数使能信号TETEN在1s的高电平后,利用其反相值的上跳沿产生一个锁存信号LOAD,0.5s后,CLR_CNT产生一个清零信号上跳沿。

3.5 锁存器

锁存器模块也是必不可少的,测量模块测量完成后,在load信号的上升沿时刻将测量值锁存到寄存器中,然后输出到显示模块。锁存器是起数据保持的作用,它将会把数据保存到下次触发或复位。主要是主从触发器组成的。用于存储数据来进行交换,使数据稳定下来保持一段时间不变化,直到新的数据将其替换。

锁存器源程序如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY REG32B IS

PORT(LOAD: IN STD_LOGIC;

DIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0); DOUT: OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END REG32B;

ARCHITECTURE ART OF REG32B IS BEGIN

PROCESS ( LOAD, DIN ) BEGIN

IF LOAD 'EVENT AND LOAD= '1' THEN DOUT<=DIN; --锁存输入数据 END IF; END PROCESS; END ART;

18

锁存器REG32B的封装如图3.8,图中LOAD接控制测频产生器TESTCTL的LOAD,而DIN[31..0]接计数器CNT10的CQ[3..0],DOUT[31..0]接显示器LED7_8的D[31..0]端。

图3.8 REG32B的封装图

32位锁存器REG32B的工作时序图如图3.9。

图3.9 REG32B的时序仿真图

本程序是用来实现锁存器模块的功能,但它的程序相当简单,在锁存信号load的上升沿到来时,锁存器将测量值锁存到寄存器,然后输出到显示模块。但从仿真图3.9中可以明显的看出,锁存输出并不是立即进行的,而是经历了一个短暂的延时,这是由于硬件引起的。

3.6 十进制计数器

计数器模块是由8个带有同步清零端,进位信号输出的模为10的计数模块级连而成。此十进制计数器的特殊之处是,有一时钟使能输入端ENA,用于锁定计数器。当高电平计数允许,低电平时计数禁止。计数器模块用于对输入信号的脉冲进行计数,该模块必须有计数允许、异步清零等端口,以便于控制模块对其进行控制。

十进制计数器源程序如下: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY CNT10 IS

PORT (CLK:IN STD_LOGIC; --计数时钟信号

19

CLR:IN STD_LOGIC; --清零信号 ENA:IN STD_LOGIC; --计数使能信号

CQ :OUT INTEGER RANGE 0 TO 15; --4位计数结果输出 CARRY_OUT:OUT STD_LOGIC); --计数进位 END CNT10;

ARCHITECTURE ART OF CNT10 IS SIGNAL CQI :INTEGER RANGE 0 TO 15; BEGIN

PROCESS(CLK,CLR,ENA) BEGIN

IF CLR= '1' THEN CQI<= 0; --计数器异步清零 ELSIF CLK'EVENT AND CLK= '1' THEN IF ENA= '1' THEN IF CQI=10 THEN cqi<=1;

ELSE CQI<=cqi+1;END IF; --等于9,则计数器清零 END IF; END IF; END PROCESS; PROCESS (CQI) IS BEGIN

IF CQI=10 THEN CARRY_OUT<= '1'; --进位输出 ELSE CARRY_OUT<= '0'; END IF; END PROCESS; CQ<=CQI; END ART;

20

CNT10的封装如图3.10,其中CLR为复位接TESTCTL的CLR_CNT端,ENA接TESTCTL的TSTEN端,CQ[3..0]接锁存器的DIN[31..0]端。

图3.10 CNT10的封装图

有时钟使能的十进制计数器CNT10的工作时序仿真如图3.11。

图3.11 CNT10的时序仿真图

此程序模块实现的功能是带使能端的10进制计数。程序要求只有当使能端信号为高电平时计数器才能正常工作,每个时钟的上升沿到来时计数器加1,因为这里要实现的是10进制计数,所以当计数到10时计数器清零,同时产生进位信号,这里的进位信号仅为一个脉冲信号,一旦计数从10变为1,脉冲信号立即变为低电平。同时该计数器也应带有清零信号,一旦清零信号为高电平,计数器立即清零。

3.7 显示模块

3.7.1 显示模块设计

LED有段码和位码之分,所谓段码就是让LED显示出八位数据,一般情况下要通过一个译码电路,将输入的8位2进制数转换为与LED显示对应的8位段码。位码也就是LED的显示使能端,对于共阳级的LED而言,低电平使能,在本设计中设计了一个3位的循环计数器,将计数结果输入到译码器,译码结果输出即可依次使能每个LED。例如:要让8个LED同时工作显示数据,就是要不停的循环扫描每一个LED,并在使能每一个LED的同时,输入所需显示的数据对应的8位段码。虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED

21

同时工作。LED7_8 模块的顶层图如下所示。CNT8[2..0]计数产生动态扫描信号(位码),译码模块用于查表产生LED段码输出。

显示模块源程序如下: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY LED7_8 IS

PORT (CLK:IN STD_LOGIC;

D: IN STD_LOGIC_VECTOR(31 DOWNTO 0); SEG : out STD_LOGIC_VECTOR(7 DOWNTO 0)) ; END ;

ARCHITECTURE simple OF LED7_8 IS

SIGNAL CNT8:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL SEG1: STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL SEG_DAT: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN SEG <=SEG1; P1:PROCESS(CLK) BEGIN

IF clk'event and clk='1' THEN CNT8<=CNT8+1; END IF; END PROCESS P1; P2:PROCESS(CNT8) BEGIN

CASE CNT8 IS

WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \

22

WHEN OTHERS=>NULL; END CASE; END PROCESS P2; P3:PROCESS(SEG_DAT) BEGIN

CASE SEG_DAT IS

WHEN \--显示“0” WHEN \--显示“1” WHEN \--显示“2” WHEN \--显示“3” WHEN \--显示“4” WHEN \--显示“5” WHEN \--显示“6” WHEN \--显示“7” WHEN \--显示“8” WHEN \--显示“9” WHEN OTHERS=>SEG1<=B\ END CASE; END PROCESS P3; END;

显示模块LED7_8的封装如图3.12,图中D[31..0]接锁存器的DOUT[31..0]端,clk接分频器的freq1端。

图3.12 LED7_8的封装图

LED7_8的工作时序图如图3.13所示。

图3.13 LED7_8的工作时序图

23

用8个LED将待测频率显示出来,将通过十进制计数器的时钟信号CLK,输出为时钟信号计数译码后的显示驱动端,在八段LED译码为对应的八段二进制编码,并由数码显示器显示出来。图3.13中为相应二进制编码与相对应的屏显数字。 3.7.2 显示电路

SEG[7..0]

D[31..0]

图3.14 LED7_8硬件结构图

此部分如图3.14,图中主要由0~7循环累加器、3-8译码器、BCD-7段显示译码器、8选1多路数据开关和8个LED显示器组成的扫描数码显示器。其中循环累加器的a、b、c三端相当于LED7_8程序中的CNT8[2..0],3-8译码器主要产生位码控制8个LED中的一个,BCD-7段显示译码器的输出端SEG[7..0]输出段码在LED上显示对应的数。 3.7.3 七段译码器

七段译码器将输入的从0~9的8位二进制数,以七段译码的方式输出。可以使用一个8位向量来分别表示七段译码器中的八段,如图3.15所示。

A B

F

图3.15 七段LEDG 与向量元素的对应

通过图3.15所示的各个LED的选通表示不同的数字,具体数字显示对应代C 码如表1-1所示。

E

D .H 24

表1-1 七段译码器的代码核对功能表 输入的驱动代码 X3 X2 X1 X0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 输出的显示代码 H G F E D C B A 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0

显示数 0 1 2 3 4 5 6 7 8 9

3.8数字频率计顶层图

完成各模块设计仿真后,根据整体原理图,把各模块按照图3.16连接起来。

25

图3.16 频率计顶层图

对频率计顶层图进行仿真,其波形如图3.17所示。

图3.17 频率计整体时序仿真图

本章小结

本章介绍了频率计的各个软件组成模块,通过运用Max+plusII集成开发环境对各功能模块进行编辑、综合、波形仿真,对各功能模块的的仿真图,及其仿真功能做了基本讲解,对本设计的实现起到了主要作用。

结 论

本设计对等精度频率计进行了系统的设计。首先介绍了频率测量的一般方

26

法,着重介绍等精度测频原理并进行了误差分析,利用等精度测量原理,通过FPGA运用VHDL编程,利用FPGA(现场可编程门阵列)芯片设计了一个8位数字式等精度频率计,该频率计的输入信号幅度为0.5V-5V,它的频率测量范围为1HZ-10MHZ,利用Max+plusII集成开发环境进行编辑、综合、波形仿真,并下载到CPLD器件中,经实际电路测试,仿真和实验结果表明,该频率计有较高的实用性和可靠性,达到预期的结果。和传统的频率计相比,利用FPGA设计的频率计简化了电路板设计,提高了系统设计的实用性和可靠性,实现数字系统的软件化,这也是数字逻辑设计的趋势。

本次毕业设计中,不但让我对本专业的相关基础知识进行了很好的复习,还对原由书本上的知识进行了拓展和延伸。通过查阅文献、搜索资料、请教老师并自己不断思考和实践,不但锻炼了我的动手能力,也提高了我处理问题的能力,并且学会了许多新的知识,总的来说,受益匪浅!

致 谢

通过两个多月的努力,参阅了大量的文献、专著、和资料,才使我有了较为清晰的思路来完成本课题的设计。设计也引用了其中的部分内容,在此,对这些

27

文献、专著和资料的作者和编著们表示感谢。

在这里同时也要非常感谢指导老师冷爱莲老师,感谢她自始至终以严谨的治学作风和崇高的责任心给予了我全面的指导!特别是在程序编译和仿真的过程中我遇到了很多弄不懂的,正是有了冷老师的指点我的毕业设计才得以顺利进行。而且在整个设计的撰写过程中出现的问题冷老师也给予了及时的指正,最后我的设计才得以顺利完成。

在设计撰写和设计模块的仿真过程中,我也得到了很多同学和朋友的帮助与支持,在这里一并表示感谢。同时,也向我的家人致以真心的谢意!他们在我的大学阶段中给予我的一切是无法用言语来表达的。

最后,衷心感谢在百忙之中参与评阅我的设计的各位老师!谢谢!

参 考 文 献

[1] 章彬宏.EDA应用技术.北京理工大学出版社,2007.

[2] 杨刚等.现代电子技术——VHDL与数字系统设计.电子工业出版社,2004.

28

[3] 张亦华等.数字电路EDA入门---VHDL程序实例集.北京邮电大学出版社,2004. [4] 顾斌等.数字电路EDA设计.西安电子科技大学出版社,2004年.

[5] 姜立东.VHDL语言程序设计及应用(第二版).北京邮电大学出版社,2007. [6] 潘松.VHDL实用教程.电子科技大学出版社,2004.

[7] 刘爱荣等.EDA技术与CPLD/FPGA开发应用简明教程.清华大学出版社,2007. [8] 唐俊英.EDA技术应用实例教程.电子工业出版社,2008. [9] 何伟.现代数字系统实验及设计.重庆大学出版社,2005. [10] 林明权.VHDL数字控制系统设计范例.电子工业出版社,2003.

29

本文来源:https://www.bwwdw.com/article/sa0p.html

Top