基于FPGA的数字频率计设计

上传人:仙*** 文档编号:82057969 上传时间:2022-04-28 格式:DOC 页数:44 大小:892KB
返回 下载 相关 举报
基于FPGA的数字频率计设计_第1页
第1页 / 共44页
基于FPGA的数字频率计设计_第2页
第2页 / 共44页
基于FPGA的数字频率计设计_第3页
第3页 / 共44页
点击查看更多>>
资源描述
本科学生毕业论文论文题目:基于FPGA的数字频率计设计学 院:电子工程学院年 级:2010专 业:集成电路设计与集成系统姓 名:周景超学 号:20103665指导教师:林连冬2014年 5 月 11 日摘要EDA技术的发展,改变了传统的电子设计方法。FPGA等大规模可编程逻辑器件的广泛应用,使电子设计变得和软件编程一样方便快捷。电子设计技术的进步,也改变了传统频率计的设计方法。常用的频率测量方法既有模拟的利用电路频率特性测量频率的方法,又有利用脉冲计数测量频率的数字方法。随着数字电路技术的发展,以脉冲计数法为基础衍生出各种改进型的数字测频方法,在测量精度、测量响应的快速性等方面都有了很大提高。 本文分析了直接测频法和周期测频法的测量原理,说明了这两种测频方法产生1 个计数误差的原因。多周期同步测频法由于实现了测频的闸门信号与被测脉冲信号的同步,消除了被测信号的1个计数误差。文中对多周期同步测频原理进行了深入分析,并通过计算这三种测频方法的测量误差,说明了这三种测频方法的优缺点和适用的测频场合。由于多周期同步测频法的测量精度和被测信号的频率无关,是一种等精度测量方法,适用于宽范围的频率测量,所以本文采用多周期同步测频法来进行频率计的设计,给出了设计总体方案。最终设计了一种基于FPGA技术的数字频率计,应用VHDL硬件开发语言,在QuartusII集成开发环境进行了仿真实现。 关键词数字频率计;直接测频法;FPGA;硬件开发语言AbstractDevelopment of EDA technology has changed the traditional method of electrical design. Extensive application of programmable logic devices such as FPGA has made the electrical design as convenient as software programming. The progress of electrical design technology also changed the traditional design method of frequency meter. The common measurement method of frequency is to utilize the frequency characteristics of the circuit to measure frequency, and also to adopt numerical method of utilizing pulse counting to measure frequency. With the development of digital circuit technology, a variety of improved frequency measurement methods are produced based on pulse counting method. This paper analyzes the direct frequency measurement method and the measuring principle of periodic frequency measurement method, which shows the reasons why these two methods produce error of 1 counts. Multi-period synchronous frequency measurement method realized the synchronization of gate signal of frequency measurement and the measured pulse signal, eliminating the measured signal error of 1 counts. The paper analyzes the multi-period synchronous frequency measurement principle in depth and indicates the advantages and disadvantages of these three measurement methods and suitable measuring occasions by calculating the measurement error of these three methods. As the measurement accuracy of multi-period synchronous frequency measurement method is independent on the measured signal frequency, which is an equal-accquracy measurement method, it is applicable to a wide range of frequency measurement. The final design of the digital frequency meter, application development language VHDL hardware based on FPGA technology in QuartusII integrated development environment simulation implementation.Key wordsDigital frequency meter;Direct frequency measurement method;FPGA;VHDLII目录摘要IAbstractII第一章 绪论11.1 课题的研究背景11.2 频率计的发展现状11.3 课题研究的主要内容21.4 论文各章主要内容3第二章 频率计测量原理42.1 常用频率测量方法42.1.1 直读法测频42.1.2 比较法测频52.1.3 脉冲计数法测频52.2 脉冲计数法测量原理52.3 基于脉冲计数的直接测频法62.3.1直接测频法原理62.3.2直接测频法误差及测频范围分析72.4 基于脉冲计数的周期测频法72.4.1 周期测频法原理72.4.2 周期测频法的误差分析82.5 本章小结8第三章 基于FPGA频率计的设计方案93.1 FPGA的结构与工作原理93.1.1 查找表的原理与结构93.1.2 FPGA的数字逻辑实现原理103.2 EDA技术与VHDL113.2.1 VHDL语言113.2.2 EDA设计方法123.2.3 基于EDA工具的FPGA设计流程133.3 频率计的总体设计方案153.4 频率计各功能模块的设计原理163.4.1 计数单元设计163.4.2 数码管拆分过程183.4.3 除法器设计193.5 本章小结20第四章 频率计各功能模块的设计实现214.1 频率测量及显示控制模块214.1.1 测频闸门信号产生模块的设计214.1.2 测频闸门信号模块的端口信号214.1.3 测频闸门信号模块的VHDL设计流程224.2 计数器模块234.2.1 计数器的端口信号244.2.2 计数器的VHDL设计流程244.3 除法器模块254.3.1 除法器的端口信号254.3.2 除法器的设计原理264.3.3 除法器的VHDL实现274.4 信号整形模块284.5 电源模块304.6 显示模块314.7 数字频率计仿真324.7.1 搭建硬件仿真平台324.7.2 除法器的仿真334.7.3 计数仲裁单元仿真334.7.4 计时过程仿真344.7.5 计数过程仿真344.8 本章小结35结论36参考文献37致谢38基于FPGA的数字频率计设计第一章 绪论频率是电子技术领域最基本的参数之一,频率计是电子电气、仪器仪表等应用领域不可缺少的测量仪器,除电量以外,不少物理量的测量,如振动、转速等的测量都涉及到或可以转化为频率的测量。1.1 课题的研究背景频率计的设计技术是随着电子电路技术的发展而逐步向前发展的,早期的频率计采用分立元件设计,设计周期长、稳定性差,并且成品体积大、功耗高。数字电子技术和集成电路的发展,使得数字频率计广泛应用,数字频率计可以使用单元电路和单片机来设计实现。相比分立件式的频率计来说,数字频率计提高了稳定性,减小了体积,但是数字频率计仍然存在着电路复杂、设计周期长等缺点,数字频率计的测量范围都是有限的,为测量不同频率的信号都要专门的设计某一部分电路,灵活性差。 20世纪末,随着微电子技术的进步和计算机技术的发展,在二者的相互促进下,以FPGA系列器件为代表的可编程逻辑器件的应用逐渐普及。可编程逻辑器件把通用集成电路通过编程集成到一块尺寸很小的硅片上,成倍缩小了电路的体积,同时由于走线短,减少了干扰,提高了系统的可靠性。由于这类器件可以通过软件编程而对其硬件的结构和工作方式进行重构,使得硬件的设计可以如同软件设计那样方便快捷,为数字电路系统的设计带来了极大的灵活性。随着可编程逻辑器件集成规模不断扩大,自身功能的不断完善和计算机辅助设计技术的提高,在现代电子系统设计领域中的EDA便应运而生了。 EDA(电子设计自动化)是在CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)基础上发展起来的计算机辅助设计系统,EDA是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统设计的主要表达方式,以计算机软硬件开发系统为设计工具,自动完成集成电子系统设计的一门新技术。 1.2 频率计的发展现状由于社会发展和科技发展的需要,信息传输和处理的要求的提高,对频率的测量精度也提出了更高的要求,需要更高准确度的时频基准和更精密的测量技术。而 频率测量所能达到的精度,主要取决于作为标准频率源的精度以及所使用的测量设备和测量方法。目前,国内外使用的测频的方法有很多,有直接测频法、内插法、游标法、时间电压变化法、多周期同步法、频率倍增法、频差倍增法以及相位比较法等等。直接测频的方法较简单,但精度不高。内插法和游标法都是采用模拟的方法,虽然精度提高了,但是电路设计却很复杂。时间电压变化法是利用电容的充放电时间进行测量,由于经过A/D转换,速度较慢,且抗干扰能力较弱。多周期同步法是精度较高的一种。为了进一步地提高精度,通常采用模拟内插法或游标法与多周期同步法结合使用,虽然精度有了进一步的提高,但始终未解决1个字的计数误差(1个字的误差是指在规定的闸门时间内存在1个信号的脉冲计数误差),而且这些方法设备复杂,不利于推广。频率误差倍增法可以减小计数器的1个字的误差,提高测量精度,但用这种方法来提高测量精度是有限的,因为如要得到210-13的测量精度,就要把被测频率fx倍频到mfx=1/21011Hz=5000MHz,这无论是对倍频技术,还是对目前的计数器都是很难实现的。频差倍增多周期法是一种频差倍增法和差拍法相结合的测量方法。这种方法是将被测信号和参考信号经频差倍增使被测信号的相位起伏扩大,在通过混频器获得差拍信号,用电子计数器在低频下进行多周期测量,能在较少的倍增次数和同样的取样时间情况下,得到比测频法更高的系统分辨率和测量精度。但是仍然存在着时标不稳而引入的误差和一定的触发误差。以上只是对现存的几种主要的测频方法的概述,很显然从以上的分析中知道:不同的测频方法在不同的应用条件下是具有一定的优势的。本文设计的频率计主要应用于一般性的频率测量,对测量精度要求不是很高,通过比较各种测频方法优缺点,决定使用多周期同步测频法进行频率计的设计。1.3 课题研究的主要内容本课题主要研究如下内容: 1分析比较常用的几种测频方式的测量精度,选择一种合适的测频实现方式。 2根据确定的测频方式分模块设计频率计。 3用VHDL语言实现频率计的各个模块及频率计的总体设计。 4将设计程序下载到FPGA中,并设计频率计的附件电路,完成频率计总体硬件设计。1.4 论文各章主要内容本文旨在通过对于频率计数器理论,频率技术器这样一个完整系统的制作。来加深自己对于FPGA技术的认识,同时加深对于频率计数器的学习。具体主要包含以下内容:第一章是绪论,主要介绍了课题的研究背景、研究现状以及该课题的研究内容。第二章介绍了频率计量的原理、研究价值和几种常用的频率测量方法,重点介绍了直接测频法、周期测频法,对于本文的设计原理有了更加深入了解原理。第三章介绍了FPGA的工作原理,同时介绍了VHDL语言。并且进行了本电路FPGA的软件和硬件设计。提出了频率计的总体设计方案,并按照不同功能对频率计的总体设计进行了模块划分。第四章根据第三章的设计理论对各个模块进行了设计与实现,并对FPGA数字频率计进行了仿真。验证了设计的搭建硬件仿真平台、计数仲裁单元仿真、除法器单元仿真、计时过程仿真。第二章 频率计测量原理频率测量是电子测量领域的最基本测量之一。由于频率信号抗干扰性强、易传输,可以获得较高的测量精度,所以测频方法的研究越来越受到重视,在检测技术中,常将一些电量或其他电参量转换成频率进行测量,以提高测量的精度。2.1 常用频率测量方法目前,用于测量频率的方法很多,频率测量的准确度主要取决于所测量的频率范围以及被测对象的特点。而测量所能达到的精度,不仅取决于作为标准使用的时钟频率的精度,也取决于所使用的测量设备和测量方法。下面对几类常用的频率测量方法进行简单介绍。2.1.1 直读法测频直读法测频是利用电路的频率特性进行频率的判读。直读法测量频率有电桥测频法、谐振测频法、频率电压转换测频法等。 1. 电桥法 电桥法测频是利用交流电桥的平衡条件与电桥电源频率有关这一特性来测频的。在电桥面板上将调节电桥平衡的可变电阻(或电容)的调节旋钮(度盘)按频率刻度,则在电桥指示平衡时,测试者便可从刻度上直接读得被测信号频率fx。 电桥法测频的测量精度约为(0.51),一般用于低频段的测量。在高频时,由于寄生参数影响严重,会使测量精确度大大下降,电桥测频法仅适用于10KHz以下的音频范围。 2. 谐振法测频 谐振法测频是利用电感、电容组成的串联谐振回路或并联谐振回路的谐振特性来实现频率的测量。当被测频率加到变压器式的谐振电路中时,调节电容使谐振电路达到谐振。如果电容的调节度盘按谐振频率刻度,则可直接从该刻度读出被测频率值。谐振法测量频率的误差大约在(0.251)范围内,主要用于高频段的频率测量。谐振法优点是体积小、重量轻,不要求电源等,因而它目仍获得广泛的应用。 3. 频率电压转换测频法 频率电压转换(f-v)测频法的原理是利用相关电路把正弦频率fx转换为周期相等、宽度、幅度均为定值的矩形脉冲序列,用低通滤波器滤除其全部交流分量,则平均值即直流分量。如下式: (2-1)输出的直流电压Uo按频率刻度的电压表指示,则从电压表指针所指刻度便可直接读出被测频率fx。f-v转换式频率计最高测量频率可达几兆赫。可以连续监视频率的变化是这种测量法的突出优点。2.1.2 比较法测频比较法测频就是用标准频率fc与被测频率fx进行比较,当把标准频率调节到与被测频率相等时指零仪表(零示器)便指零,此时的标准频率值即被测频率值。比较法测频可分为拍频法测频与差频法测频两种。前者是将待测频率信号与标准频率信号在线性元件上叠加产生拍频。后者是将待测频率信号与标准频率信号在非线性元件上进行混频。目前拍频法测量频率的绝对误差约为零点几赫兹,差频法测量频率的误差可优于10-5量级,最低可测信号电平达0.1V1V。拍频法和差频法在常规场合很少采用。2.1.3 脉冲计数法测频计数法测频是数字频率计常用的、最基本的频率测量方法。计数法就是在单位时间内对信号的周期个数进行计数。计数法测频的精确度取决于基准时间的精确度和计数误差。本设计采用计数法进行频率测量,下面对计数法的测频原理和基于计数法的几种的测频方法进行详细分析。2.2 脉冲计数法测量原理计数法的原理就是在一定的时间内,对周期性脉冲的重复次数进行计数。可用图 2-1来说明。设时间间隔为T,若周期性脉冲的周期为TA,则计数结果为: (2-2)由于T和TA两个量是不相关的,T不一定正好是TA的整数N倍,即T与NTA之间有一定误差,如图2-1所示。图2-1 计数法测量原理图中t1是闸门开启时刻到第一个计数脉冲前沿的时间(假设计数脉冲前沿使计数器翻转计数),t2是闸门关闭时刻至下一个计数脉冲前沿的时间。处在T区间内计数脉冲个数(即计数器计数结果)为N,则有: (2-3)其中,N的产生是由于计数时闸门的开启时刻与计数脉冲之间的时间关系不相关造成的,即在相同的闸门开启时间内,计数器所得的数并不一定相同。当闸门开启时间T接近甚至等于被测信号周期Tx的整数倍时,N的绝对值最大,为N = 1。所以,脉冲计数的最大绝对误差(又称量化误差)为: (2-4)最大相对误差为: (2-5)以上是脉冲计数法的测量原理和误差分析。具体到应用脉冲计数法进行频率测量,通常根据频率值高低,又可分为直接测频法(M 法)和周期测频法(T 法)。2.3 基于脉冲计数的直接测频法2.3.1直接测频法原理直接测频法又称M法,是在脉冲计数法的基础上,选用一个频率相对较低的基准频率信号作为闸门信号(图2-1中信号b),而将被测信号转换为同频的周期性脉冲信号(图2-1中信号a),在固定闸门时间T内对其计数。若计数结果为N,则用该方法测得的信号的频率为: (2-6)这里,时间间隔T = MTc = M / fc,Tc、fc分别是基准频率信号的周期和频率值,M为T时间内包含的基准频率信号的周期数。很显然,直接测频法适合于测量频率较高的信号。2.3.2 直接测频法误差及测频范围分析直接测频法的误差分析:经过对直接测频法的分析,我们知道这种方法的主要误差来自阈门时间T以及计数器的结果正确与否,所以,我们可以得到总误差同可用分项误差这二者的绝对值进行相加,得到: (2-7)在上面这个公式中,最大量化误差的绝对值主要是由于阈门与被测计数脉冲这二者未在同一时刻打开的原因,然而,根据理论我们可以知道,即便这二者在同一时间开启,也未必能够得到一个相同的值。在上面的公式中fx为预测基本频率,fx为预测频率变化量,我们用f0/f0来表示直测法的阈门时间相对误差,这一误差值是由于电路标准频率的偏差而产生的。通常情况下,阈门时间的正确与否是根据不同的测频需求而先行制定的。在以往的测频率误差中,阈门时间都会对结果造成一定的影响,为了避免这种影响,我们选取的标准频率的准确度应该取值高于被测信号2个数量级或2个数量级以上。2.4 基于脉冲计数的周期测频法2.4.1 周期测频法原理周期测频法又称T法,是在脉冲计数法的基础上,将频率相对较高的基准信号作为周期性脉冲计数信号(图2-1中信号a),将被测信号转换为时间长度等同于被测信号周期的闸门信号(图2-1中信号b),在闸门时间T(被测信号周期)内对基准脉冲信号计数。若计数结果为N,则用该方法测得的信号的周期为: (2-8)被测信号的频率为: (2-9)很显然,周期测频法适合于测量频率较低的信号。2.4.2 周期测频法的误差分析经过对直接测周期法的分析,我们知道这种方法的主要误差在于标准频率数器的结果正确与否,所以,我们可以得到总误差同可用分项误差这二者的绝对值进行相加,得到: (2-10)在上面这个2-10式中,最大量化误差的绝对值主要是由于阈门与被测计数脉冲这二者未在同一时刻打开的原因。在上面的公式中,我们用f0/f0测法的阈门时间相对误差,这一误差值是由于电路标准频率的偏差而产生的。通常情况下,阈门时间的正确与否是根据不同的测频需求而先行制定的。在以往的测频率误差中,阈门时间都会对结果造成一定的影响,为了避免这种影响,我们选取的标准频率的准确度应该取值高于被测信号2个数量级或2个数量级以上。由上文可以得出,被测频率fx越高,闸门开启时间T越长(M的值越大),测频的相对误差fx/fx越小,即测频的精确度越高。2.5 本章小结本章主要介绍了常用的几种频率测量方法,并对各个测量方法的测量原理进行了说明,在原理说明的基础上对各个测量方法的最大相对误差进行了分析,给出了各个频率测量方法适用的测频场合。第三章 基于FPGA频率计的设计方案FPGA 是现场可编程逻辑阵列(Field Programmable Gate Array)的英文缩写。它和 CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)一样,是目前常用的一类大规模可编程逻辑器件。3.1 FPGA的结构与工作原理3.1.1 查找表的原理与结构对于组合逻辑电路来说,当前的输出总是当前输入的函数,并且当电路结构固定时,输入量不变,输出量也不会发生变化。如图3-1所示组合逻辑电路。图3-1 组合逻辑电路示例图3-1所示电路实现的组合逻辑为:P=AB+C;Q=A (B+C)。该组合逻辑电路的真值表如表3-1所示。表3-1 示例组合电路的真值表 表3-2 RAM中存储的数据A B C P Q0 0 0 0 00 0 1 1 00 1 0 0 00 1 1 1 01 0 0 0 01 0 1 1 11 1 0 1 11 1 1 1 1A2 A1 A0 D1 D00 0 0 0 00 0 1 1 00 1 0 0 00 1 1 1 01 0 0 0 01 0 1 1 11 1 0 1 11 1 1 1 1真值表决定了输入和输出之间的逻辑关系。将真值表和随机存储器联系起来,我们会看到,若输入量A、B、C 作为随机存储器的地址输入A2、A1、A0,则输出量P、Q可以看作是存储器中该地址对应的存储单元中存储的数据 D1、D0。如表3-2所示。存储器中各个单元存入不同的数据,地址(输入量)和存储单元中的数据(输出量)可构成不同的组合逻辑关系。这是用随机存储器(RAM)实现可编程组合逻辑的基本原理。 FPGA可编程逻辑的形成方法就是采用基于这种原理的可编程的查找表(Look Up Table,LUT)结构。LUT是可编程的最小逻辑构成单元。大部分的FPGA采用基于SRAM(静态随机存储器)的查找表逻辑形成结构,就是用SRAM来构成逻辑函数发生器。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的 161 的RAM。当用户在EDA 开发环境中通过原理图或HDL语言描述了一个逻辑电路以后,EDA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。FPGA查找表单元如图3-2所示。图3-2 FPGA查找表单元至于一般情况下FPGA采用4 输入的LUT,是因为,对于一个N输入的查找表,需要SRAM存储N个输入构成的真值表,需要2N个1位SRAM单元。显然N不可能很大,否则LUT 的利用率很低,所以一般FPGA的LUT多采用4输入的形式即N=4。当逻辑函数的输入多于4个的时候,必须用几个查找表分开实现。3.1.2 FPGA的数字逻辑实现原理我们以用FPGA来实现图3-3所示的数字电路来说明FPGA实现数字逻辑的原理。在FPGA中,A、B、C、D输入信号由FPGA芯片的管脚输入后进入可编程连线,然后作为地址线连到到LUT,LUT根据图3-3中虚线框内的逻辑关系通过编程已经事先写入了所有可能的逻辑结果,所以LUT通过地址查找到相应的数据,然后输出,这样组合逻辑就实现了。电路中D触发器是可利用LUT后面D触发器来实现。时钟信号 CLK由I/O脚输入后进入芯片内部的时钟专用通道,直接连接到触发器的时钟端。图3-3 数字逻辑电路示例触发器的输出与I/O脚相连,把结果输出到芯片管脚。这样FPGA 就完成了图3-3所示电路的功能。这个电路是一个很简单的例子,只需要一个LUT加上一个触发器就可以完成。对于一个LUT无法完成的电路,就需要通过进位逻辑将多个单元相连,这样FPGA就可以实现复杂的逻辑。3.2 EDA技术与VHDL3.2.1 VHDL语言本文的电路设计语言采用了传统的电路设计语言VHDL。这是一种高级的、被广泛应用于设计电路的硬件开发语言。此硬件语言最早在上世纪的八十年代浮现于人们眼前,在VHDL语言被设计之处,是美国的国防部为了国家军队提高硬件开发的可靠性与缩短开发时间而研发的一种硬件语言。在那个时候,VHDL的使用范围还是分有限。VHDL即“Very-High-Speed Integrated Circuit Hardware Description Language”。在汉文的意思中,是速度非常快的、集成的、用来秒速电路硬件的语言。经过多年的发展与使用,如今已经被广泛应用于各个领域,尤其是在数字电路的设计方面应用十分广泛。在我国大陆地区,VHDL硬件语言主要被应用于FPGA/CPLD/EPLD的开发设计之中,只有一些非常有才能的企业应用VHDL来设计开发ASIC。被主要使用在对系统结构行为、功能接口的VHDL语言,是一种硬件特征明显的语言,但它不仅仅包括了硬件特征的语句,它描述语句的描述方式、语句风格甚至到VHDL的语法都是特别接近计算机程序设计高级语言的,这在使用VHDL进行硬件程序设计之时,十分的方便。如此一来,通过使用VHDL所开发设计的程序就具备了这样一个特点:可以把一个工程项目中抑或者是某个设计实体(譬如一个系统或者一个元件)分成外部或者内部,不但涉及实体的功能,还实现了算法部分。这么做的好处是:对已经定义了外部界面的涉及实体,一旦这个实体的内部完成了,那么其他的设计就能够调用这个定义了外部界面的实体,这样大大的减少了开发时间,提高了开发效率。在VHDL程序设计中,这一部分的优势与概念是VHDL系统的最基本的一个点。3.2.2 EDA设计方法EDA技术的发展从理念上颠覆了传统的电子设计方法。传统的电子设计方法通常是自底向上的,即首先确定构成系统的最底层的电路模块或元件的结构和功能,然后根据主系统的功能要求,将它们组合成更大的功能块,使它们的结构和功能满足高层系统的要求,以此流程,逐步向上递推,直至完成整个目标系统的设计。自底向上的设计方法的特点是必须首先关注并致力于解决系统最底层硬件的可获得性,以及它们的功能特性方面的诸多细节问题;在整个逐级设计和测试过程中,始终必须顾及具体目标器件的技术细节。在这个设计过程中的任一时刻,最底层目标器件的更换,或某些技术参数不满足总体要求,或缺货,或由于市场竞争的变化,临时提出降低系统成本,提高运行速度等不可预测的外围因素,都可使前面的工作前功尽弃,工作又得重新开始。由此可见,在某些情况下,自底向上的设计方法是一种低效、低可靠性、费时费力、且成本高昂的设计方法。在电子设计领域,自顶向下的设计方法在EDA技术得到快速发展和成熟应用后才成为可能。自顶向下设计方法的有效应用必须基于功能强大的EDA工具,具备集系统描述、行为描述和结构描述功能为一体的VHDL语言,以及先进的ASIC制造工艺和 FPGA开发技术。当今,自顶向下的设计方法已经是EDA技术的首选设计方法,是ASIC或FPGA开发的主要设计手段。自顶向下的设计方法,就是在整个设计流程中各设计环节逐步求精的过程。一个项目的设计过程包括从自然语言说明到VHDL的系统行为描述,从系统的分解、RTL(Register Transport Level,寄存器传输级)模型的建立、门级模型产生到最终的可以物理布线实现的底层电路,就是从高抽象级别到低抽象级别的整个设计周期。后端设计还必须包括涉及硬件的物理结构实现方法和测试(仍然利用计算机完成)。应用VHDL进行自顶向下的设计,就是使用VHDL模型在所有综合级别上对硬件设计进行说明、建模和仿真测试。(这里的综合是指综合器将用VHDL语言描述的电子系统,通过VHDL 到RTL,从RTL到逻辑门,从逻辑门最终转换为可直接配置FPGA 的配置网表文件或进行ASIC设计所需的版图文件的过程。)主系统和子系统最初的功能要求在VHDL里体现为可以被VHDL仿真程序验证的可执行程序。由于综合器(计算机软件,EDA 工具之一)可以将高级别的模型转化生成门级模型,所以整个设计过程基本是由计算机自动完成的。人为介入的方式主要是根据仿真的结果和优化的指标,控制逻辑综合的方式和指向。因此,在设计周期中,要根据仿真的结果进行优化和升级,以及对模型进行及时修改,以改进系统或子系统的功能,更正设计错误,提高目标系统的工作速度,较少面积耗用,降低功耗和成本等。在这些过程中,由于设计的下一步是基于当前的设计,即使发现问题或做新的修改而需从头开始设计,也不妨碍整体的设计效率。此外,VHDL设计的可移植性、EDA平台的通用性以及与硬件结构的无关性,使得前期的设计可以很容易地应用于新的设计项目,而且设计的周期可以显著缩短。自顶向下的设计方法可以将系统分解为各个功能模块,不同的模块可以同时设计、仿真、测试,最后将不同的模块集成为最终的系统模型,并对其进行综合测试和评价。3.2.3 基于EDA工具的FPGA设计流程一个完整的EDA设计流程既是自顶向下设计方法的具体实施途径,也是EDA工具软件本身的组成结构。使用VHDL硬件描述语言对数字电路进行设计,一般的设计流程可用图3-4表示。具体的设计流程为:1设计要求的定义 在从事设计进行编写VHDL代码之前,必须先对设计目的和要求有一个明确的认识。例如,要设计的功能是什么?对所需的信号建立时间、时钟/输出时间、最大系统工作频率、关键的路径等这些要求,要有一个明确的定义,然后再选择适当的设计方式和相应的逻辑器件,进行总体方案的设计。2设计VHDL描述按照VHDL的程序格式要求,用VHDL程序语言将设计方案表述出来。VHDL语言的代码与其它计算机程序语言的代码有很大的不同,它是和硬件相关的,编写VHDL 程序时必须清醒地认识到是正在设计硬件,编写的VHDL代码必须能够综合到采用可编程逻辑器件来实现的数字逻辑之中。 图3-4 基于FPGA的EDA开发流程3VHDL文本编辑 使用编辑器将编写好的VHDL语言源程序输入到计算机当中。编辑器可以使用EDA开发环境自带的编辑器,也可以使用计算机上任一款文本编辑器如记事本等。但是不要使用office word,因为word中带有一些隐形字符,不适合作为任一程序语言的编辑器。 4源代码的功能仿真 功能仿真是直接对VHDL描述的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计要求。对于大型设计,采用VHDL仿真软件对其进行功能仿真可以节省时间,可以在设计的早期阶段检测到设计中的错误,从而进行修正,以便尽可能地减少对设计日程计划的影响。因为对于大型设计,其综合优化、配置往往要花费好几个小时,在综合之前对源代码仿真,就可以大大减少设计重复次数和修正错误的时间。但对于小型设计,往往不需要先对VHDL原代码进行功能仿真,即使做了,意义也不大。因为对于小型设计,其综合优化、配置花费的时间不多,而且在综合优化之后,往往会发现为了实现性能目标,将需要修改原设计。在这种情况下,用户事先在源代码仿真时所花费的时间是毫无意义的,因为一旦改变设计,还必须重新再做仿真。 5综合 进行综合前要选择最终使用的FPGA目标器件,在输入约束条件后,VHDL综合器将对VHDL源代码进行综合处理,最终产生FPGA的配置网表文件。整个的综合过程就是将设计者输入的VHDL语言源程序,依据给定的硬件结构组件和约束控制条件进行编译、优化、转换和综合,最终获得门级电路甚至更底层的电路描述网表文件。 6适配 将综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件,这一过程成为适配。完成适配的EDA工具称为适配器,根据其功能也称结构综合器。适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、逻辑布局布线操作。适配完成后可以利用适配所产生的仿真文件作精确的时序仿真,同时产生可用于编程的下载文件。 7时序仿真 时序仿真就是接近真实器件运行特性的仿真,仿真文件中已包含了器件硬件特性参数,因而,仿真精度高。但时序仿真文件必须来自针对具体器件的综合器与适配器。综合后所得的网表文件通常作为FPGA适配器的输入文件,产生的仿真网表文件中包含了精确的硬件延迟信息。 8编程下载 把适配后生成的下载或配置文件,通过编程器或编程电缆向FPGA下载,对目标 FPGA器件进行实际配置,以使其构成所需要的电路系统,便于进行硬件测试和验证。 9硬件测试 最后将含有载入了设计的FPGA的硬件系统进行统一测试,以便最终验证设计项目在目标系统上的实际工作情况,以排除错误,改进设计。由以上EDA设计流程可知,这些EDA工具可以由FPGA器件厂商单独提供,也可以统一包含在EDA的集成开发环境当中。本课题设计所用的QuartusII软件包就是Altera公司提供的FPGA/CPLD开发集成环境,Altera公司是世界上最大的可编程逻辑器件供应商之一。3.3 频率计的总体设计方案对输入源的信号进行信号整形,然后在FPGA的IO口处采集输入信号上升沿,若在一秒内采集到的数据个数大于一个,也即频率输入大于1Hz,则对该信号计数,在一秒内采集到的数据个数记为当前频率;若采集到的信号不到1Hz,也就是在1s内没有一个有效信号采集到则开始计数,一直到下一个上升沿到来,也就是一个信号周期时间T。然后用1s除以T得到当前频率值。最终值显示到数码管上。总体设计框图如下图3-5所示:图3-5 总体设计框图3.4 频率计各功能模块的设计原理本设计方案主要由计数单元设计、数码管拆分过程、LED显示除法器设计等几部分模块组成。下面将一一介绍其中的设计思路。3.4.1 计数单元设计 外部时钟我们采用50MHz有源晶振,该设计可以提供稳定且精准的时钟源。在此处我们设计方法上采用了同时计数法,就是在50M晶振的驱动下,同时对输入信号和时间计数,1s的计数周期就是在50M晶振驱动50000000次。该部分代码设计如下。计数单元外部时钟部分代码设计PROCESS (CLK_50M)BEGINIF (CLK_50MEVENT AND CLK_50M = 1) THENIF (NOT(RST_N) = 1) THENT_cnt = 0000000000000000000000000;TC_sel = 01;T_1s_done = to_stdlogicvector(ONE_SECOND_NUM, 25) THENT_cnt = 0000000000000000000000000;T_1s_done 0000000000000000000000001) THENTC_sel = 01;ELSETC_sel = 00;END IF;ELSET_1s_done = 00;T_cnt = T_cnt + 0000000000000000000000001;END IF;END IF;END IF;END PROCESS;该部分设计同时做了仲裁功能,就是对1s时间内的输入信号做判断,如果没有输入有效信号,则认定为低于1Hz,此时进入低频逻辑过程。否则进入高频相对于低于1Hz的逻辑过程。计数单元我们采用单独的计数控制,只对输入信号响应,可以实现精确的输入记录。该部分代码设计如下:为了不影响计数精度,该部分只是负责输入信号的计数。计数单元部分代码设计:PROCESS (SIG_I)BEGINIF (SIG_IEVENT AND SIG_I = 1) THENIF (NOT(RST_N) = 1) THENC_cnt = 0000000000000000000000000;ELSEC_cnt = C_cnt + 0000000000000000000000001;IF (T_1s_done /= 00) THENC_cnt temp_result = cur_fx;IF (T_ok = 1) THENdivide_num_state = to_stdlogicvector(divide_num_s1, 5);divide_start = 1;ELSEdivide_start = 0;divide_num_state DIV_FOCUS = 100110001001011010000000;DIV_NUM = temp_result(23 DOWNTO 0);LOAD = 1;IF (BSY = 1) THENdivide_num_state IF (NOT(BSY) = 1) THEND_msb0 = RES_QUOTIENT(3 DOWNTO 0);temp_result = (0 & RES_REMAIND);divide_num_state = to_stdlogicvector(divide_num_s2, 5);END IF;3.4.3 除法器设计由于FPGA并没有提供硬件除法器,在实际设计过程中,除法会耗费大量的逻辑资源,于是我们单独设计了除法器,并采用了循环相减法,具体的设计就是除数依次减去被除数,一直减少到除数小于被除数,此时记下此过程中的商数和余数就是所求的结果。实际测试显示,该方法有效实现了除法过程。该部分代码如下。除法器设计部分代码:PROCESS (CLK)BEGINIF (CLKEVENT AND CLK = 1) THENIF (NOT(RST_N) = 1) THENRES_QUOTIENT_xhdl0 = 0000;RES_REMAIND = 0000;BSY = 0;divide_state LOAD_r2 = LOAD_r1;IF (LOAD_pos_edge = 1) THENdivide_state = to_stdlogicvector(divide_s1, 4);DIV_NUM_r = DIV_NUM;DIV_FOUS_r = DIV_FOCUS;RES_QUOTIENT_xhdl0 = 0000;RES_REMAIND IF (DIV_NM_r = DIV_FOCUS_r) THENRES_QUOTIENT_xhdl0 = RES_QUOTIENT_xhdl0 + 0001;divide_state = to_stdlgicvector(dvide_s1, 4);ELSERES_REMAIND = DIV_NUM_r;BSY = 0;divide_state = to_stdlogicvector(divide_idle, 4);END IF;divide_state = to_stdlogicvector(divide_idle, 4);END CASE;END IF;END PROCESS;3.5 本章小结本章前半部分对FPGA的结构和工作原理进行了介绍,着重说明了FPGA的可编程性原理。后半部分主要提出了频率计的总体设计方案,并对方案中频率计各个模块的设计原理进行了说明。重点对频率计的核心模块测频显示模块中各子模块的功能和设计要求进行了解释说明。第四章 频率计各功能模块的设计实现本课题频率计采用第三章的设计方案,以Altera公司的Cyclone系列FPGA器件EP1C3T144C8为核心器件实现频率计的设计。该频率计的基本要求是:频率测量范围为1Hz1MHz。设计实现过程是首先用VHDL语言实现频率计核心模块测频显示模块的设计,然后再用硬件电路实现各辅助模块的设计。4.1 频率测量及显示控制模块频率测量及显示控制模块的设计采用自顶向下的设计方法。首先把模块按功划分为几个子模块,然后分别用VHDL实现,最后通过顶层设计文件将各个子模块组装在一起共同完成测频和显示控制的功能。按照第3章的设计方案中的原理分析,我们将频率测量及显示控制模块划分为测频闸门信号产生模块、计数器、除法器共3个子模块,下面对它们分别进行设计实现。4.1.1 测频闸门信号产生模块的设计该模块将预置闸门信号和D触发器合在一起进行设计。图4-1是模块实体的外部端口图。图4-1 闸门信号模块外部端口图4.1.2 测频闸门信号模块的端口信号测频闸门信号产生模块的实体名称为Gate_Signal,有三个输入信号T_ON、S_CLK、T_PULS,有一个输出信号GateOut。 T_ON作为闸门信号使能端由外置开关控制,当T_ON为1时,允许产生闸门信号,也即允许测频;当T_ON为0时,不允许产生闸门信号,GateOut一直为0,不允许测频。 S_CLK是基准频率信号输入端,或称为时钟信号输入端。该时钟信号由“基准频率信号(时钟)模块”硬件电路提供,根据设计要求,基准频率(时钟)信号为频率20MHz的脉冲信号。T_PULS是和被测信号同频的脉冲输入信号。该信号是被测信号经“信号整形模块”产生的,代替被测信号进行测频。 GateOut是测频闸门信号输出端,输出和T_PULS同步的实际的测频闸门信号,用以控制计数器1、2的计数时间。4.1.3 测频闸门信号模块的VHDL设计流程在T_ON为1时,通过对S_CLK的计数产生0.5s的预置闸门开启信号,然后关闭预置闸门0.5s,再次开启预置闸门0.5s,然后关闭预置闸门0.5s,依次循环,直到 T_ON为0时,停止输出闸门信号。使得预置闸门输出脉宽0.5s周期为1s的闸门信号。 D触发器负责完成预置闸门信号和被测脉冲信号T_PULS的同步,从而产生实际的测频闸门信号GateOut。 预置闸门信号发生器和D触发器在结构体中用两个并行的进程语句实现。它们之间通过定义的内部信号GS实现连接。 测频闸门信号GateOut在开启的时间间隔内允许计数器1、2进行计数。在测频闸门信号关闭后,下一个闸门信号开启前,计数器完成计数值的传送和清零。 预置闸门信号发生器和D触发器的设计流程图如图4-2、图 4-3 所示。图4-2 D触发器的VHDL实现流程图4-3 预置闸门信号发生器VHDL实现流程刚才提到,预置闸门信号发生器和D触发器在结构体中用两个并行的进程语句实现的,所谓“并行”,就是这两个进程是同时并发运行的,没有时间
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!