1、IV毕业设计(论文)题 目: 基于单片机的智能 电子计数器的设计 学 校 : 专 业 : 电 子 信 息 工 程 学 生 姓 名 : 指 导 教 师 : 毕 业 设 计 ( 论 文 ) 时 间 : 二 0 一 一 年 3 月 日 5 月 日 共 周I摘 要数字频率计是电子测量领域中最常见的测量仪器之一。它可以测量方波和正弦波的频率、周期和脉冲宽度等时间参数。本设计是由单片机控制的数字频率计设计。本文在讨论频率测量的常用方法与原理的基础上,阐述了等精度测频系统的设计。系统包括稳压电源电路、信号放大整形电路、测频电路、单片机电路模块、标准频率信号源、键盘模块、数码显示模块等。采用软硬件结合的方法,
2、频率、周期、脉宽和占空比的计算由单片机 89C51 完成,外围电路其数字电路部分使用了 CPLD,并采用 VHDL 语言进行设计描述,其输入通道由模拟电路来实现。系统将单片机 AT89C51 的控制灵活性及 CPLD 芯片的现场可编程性相结合,不但大大缩短了开发研制周期,而且使本系统具有结构紧凑、体积小、可靠性高、测频范围宽、精度高等优点。关键词: 频率计 单片机 CPLD 等精度IIAbstractDigital cymometer is one of the most common instruments of electronic measurement. It can measure
3、time parameters such as the square wave and the sine wave frequency, cycle and pulse width, and so on.The design is the digital cymometer based on the signal chip computer control. Based on the discussion of the commonly used method of measuring frequency and on the basis of principle, it describes
4、the design of frequency measurement system with the same accuracy including the power supply system circuit, signal amplification plastic circuit, measuring frequency circuits, MCU circuit module, the standard frequency signal source, keyboard module, the digital display module, and so on. It takes
5、the method of combination of hardware and software: frequency, period, pulse width and room-occupying ratio of calculation completed by the MCU 89C51, the external circuit part of its digital circuits used with the CPLD, input channels from analog circuits to achieve, and use of VHDL design Descript
6、ion. The system combines the control flexibility of 89C51 with programmable performance of CPLD, so not only can it shorten the period of the development and research but also has the advantages of compact structure little volume, high reliability, wide scope and high precision. Key Words: cymometer
7、; signal chip computer; CPLD; equal precision目录第一章 引言 .II1.1 课题研究的现状与发展趋势 1.2 课题研究的意义与作用 1.3 数字频率计的基本原理 1.4 系统设计技术指标 1.4.1 基本指标 1.4.2 发挥部分 第二章 系统硬件设计 .2.1 频率测量的方法的研究 2.1.1 数字化直接测量频率的原理 2.1.2 数字化直接测量周期的原理 2.1.3 多周期同步等精度测量的原理 2.2 实验方案的确定 2.2.1 测量方法的确定 2.2.2 频率测量模块的方法 2.2.3 周期测量模块的方法 2.2.4 脉冲宽度测量模块的方法
8、2.3 系统硬件设计 2.3.1 稳压电源电路 2.3.2 信号放大整形电路 2.3.3 单片机控制电路 2.3.4 标准频率信号源 2.3.5 数码管显示模块 第三章 系统软件设计 .3.1 CPLD 测频专用模块的设计 3.1.1 频率计 CPLD 部分的 VHDL 程序 3.1.2 频率计 CPLD 部分的仿真 .3.2 单片机控制与运算程序的设计 3.2.1 单片机主程序的设计 3.2.2 频率、周期计数子程序的设计 IV3.2.3 脉宽、占空比子程序的设计 3.2.4 键盘扫描及数码管显示子程序的设计 总结 参考文献 致谢 .1第一章 引言1.1 课题研究的现状与发展趋势随着大规模集
9、成电路技术的发展及电子产品市场运作节奏的进一步加快,涉及诸如计算机应用、通信、智能仪表、医用设备、军事、民用电器等领域的现代电子设计技术已迈入一个全新的阶段。在电子测量中,频率的测量精确度是非常高的。利用计数法测量频率具有精度高、使用方便、容易实现测量过程自动化等一系列突出优点,已成为目前频率测量的重要方法。人们将许多参数的测量转换为频率量来测量和处理。传统的频率计通常采用组合电路和时序电路等大量的硬件电路构成,在使用过程中存在电路结构复杂,测量精度低、故障率高、维护不易等问题,其产品不但体积较大,运行速度慢,而且测量低频信号时不宜直接使用。频率测量在科技研究和实际应用中的作用日益重要。测量的
10、数字化、智能化是当前测量技术发展的趋势。1.2 课题研究的意义与作用数字频率计数器又称通用计数器,是电子测量领域中最常见的测量仪器之一。它可以测量正弦波的频率(周期) ,脉冲波的频率(周期) ,脉冲宽度等时间参数。随着单片机技术的不断发展,用单片机通过软件设计,采用适当的算法取代这部分电路不仅能弥补上述不足,而且性能也将大有提高。针对普通频率计存在读数难、测量精度不高等问题, 目前采用单片机控制的数字频率计, 用于测量方波、正弦波或其它脉冲信号的频率, 并用数字显示, 具有精度高、测量迅速、读数方便等优点, 已经在电子测量领域里得到了广泛应用。MCS51 系列单片机具有体积小,功能强,性能价格
11、比较高等特点,因此被广泛应用于工业控制和智能化仪器,仪表等领域。本次设计的数字频率计以 AT89C51 单片机为核心,具有性能优良,精度高,可靠性好等特点。1.3 数字频率计的基本原理频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为 1秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。2数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。
12、1.4 系统设计技术指标基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个测频区域内保持恒定的测试精度。课题要求运用单片机或者 CPLD 技术,结合传统直接测量频率方法和等精度测量频率的方法,实现高频和低频的测量,本系统设计的基本指标如下。1.4.1 基本指标(1) 频率:10Hz30MHz(2) 闸门时间为 0.1 秒、1 秒(3)实现对频率、周期和时间间隔的测量功能1.4.2 发挥部分(1) 信号:方波、正弦波(2) 幅度:0.02V0.5V(3) 周期脉冲宽度幅度(0.5V5V、频率 1Hz1KHz)的
13、占空比,占空比变化范围为 10%90%,测试误差1%。4第二章 系统硬件设计2.1 频率测量的方法的研究2.1.1 数字化直接测量频率的原理无论频率、周期还是时间间隔的数字化测量,均是基于主门(闸门)加计数器的结构而实现的,图 2.1(a)示出了这种计数式直接测频的原理框图。其中主门(闸门)具有“与门”的逻辑功能。主门(闸门)的一个输入端送入的是频率为 xf的窄脉冲,它是由被测信号经 A 通道放大整形后得到的。主门(闸门)的另一个输入端送来的是来自门控双稳的闸门时间信号 Ts。因为门控双稳是受时基(标准频率)信号控制的,所以 Ts 即准确又稳定。设计时通过晶体震荡器和分频器的配合,可以获得10
14、S、1S、0.1S 等闸门时间。由于主门(闸门)的“与”功能,它的输出端只有在闸门信号 Ts 有效时间才有频率 xf的窄脉冲输出,并送到计数器去计数。设计数器的值为N,由频率定义式可以计算得到被测信号频率为 xf=N/Ts (2-1)其原理框图和时序图如图 2.1 所示。(a) 直接测频法原理框图(b) 直接测频法时序图时基脉冲被测信号实际检出信号Ts2图 2.1 (a)直接测频法原理框图; (b)直接测频法时序图由式(2-1)可知,当闸门时间 T 为 1S 时,N 值即为被测量信号的频率。该测量方法由于主门的开启时间与被测信号之间不同步,而使计数值 N 带有1 量化误差;且当被测信号频率越低
15、时,该量化误差的影响越大。若再考虑由晶体振荡器引起的闸门时间误差,对式(2-1)进行误差的累积与合成运算后,可以得到直接测量测频率误差的计算公式如下:1()CCXf fNT (2-2)上式右边第一项为量化误差的相对值,其中 N=1;第二项为闸门时间的相对误差,数值上等于晶体振荡器基准频率的相对不确定度 Cf。在 xf一定时,闸门时间 T 越长,测量准确度越高。而当 T 选定后, xf越高,由于1 误差对测量结果的影响减小,测量准确度越高。但是随着1 误差的影响的减小,闸门时间(也即基准频率)自身的准确度对测量结果的影响不可忽略,这时可以认为 Cf是计数式直接测频率准确度的极限。2.1.2 数字
16、化直接测量周期的原理虽然直接测频法可以测出单位时间内脉冲的个数即频率,但是对于较低频率的信号其检测误差会大大增大,解决办法就是改直接测频法为直接测周期法。图 2.2(a)为计数式直接测周期的原理框图。与测频原理框图相比,其中门控双稳改由输入信号放大、整形和分频后的脉冲控制,所以闸门时间的宽度就等于 k 倍被测信号的周期 kTx;而主门的另一个输入端,送入由晶体震荡器和分频器产生的周期为 T0 的时标脉冲信号。由于主门的“与”功能,它的输出端只有在闸门信号 kTx期间有时标脉冲输出,并送到计数器去计数,计数器的值为 N。不难看出,被测信号的周期为:0/xNk(2-3) 其原理框图和时序图如图 2
17、.2 所示:2(a) 测周期法原理框图(b)测周期法时序图图 2.2 (a)测周期法原理框图; (b)测周期法时序图与计数式测频率相似,由于 Tx和 T0 之间也不是同步的,所以计数值 N 也带有1量化误差;此外由于晶振的不确定度,时标的周期 T0 也存在误差;最后,由于被测输入信号噪声的影响,使经 B 通道放大整形后的脉冲周期 Tx中还引入了一种触发误差。对式(2-3)进行误差的积累和合成运算,可以得到测周期误差的计算公式如下: /200.3(1)RTxNNxTFckFck(2-4) 上式右边第一项为量化误差的相对值,其中计数误差 XN=1;第二项为时标的相对误差;第三项为触发误差 ,其中
18、R 为被测信号 U与噪声 比,可由公式R=20 XNU计算(单位为 dB) 。要降低触发误差就必须增大信噪比 R,并采用多周期被测闸门信号高频基准信号实际检出已知信号Tx2测量,还可以在整形电路中采用具有滞回特性电路来减小噪声的影响。 在倍率 k 和时标 T0 固定时,与测频率相反,测量周期的误差随被测信号的频率升高而增大,此外由于有限的信噪比,使触发误差成为影响测量周期准确度的主要因素。采用多周期测量可以有效的降低触发误差的影响。 2.1.3 多周期同步等精度测量的原理无论是直接测频法还是测周期法,都无法保证闸门信号和另一信号的首尾实现同步,这就难以保证获得较高的测量精度,其误差在一个脉冲之
19、内。由此,当引入多周期同步等精度测量法时,可以较好的解决这个问题。多周期同步等精度测量法的原理是:电路需引入一个比被测信号频率高若干倍的内部时基信号,测量结果的误差范围便在这一个时基信号范围内。首先由相应的控制电路给出闸门开启信号,此时计数器并不开始计数,而是等到被测信号的上升沿到来时才真正开始计数。然后,两组计数器分别对被测信号和时基信号脉冲计数,当控制电路给出闸门关闭信号,此时计数器并不停止计数,而是等到被测信号的上升沿到来时才真正停止计数。图 2.3 中 xf为输入信号频率, cf为时钟脉冲的频率。A、B 两个计数器在同一闸门时间 T 内分别对 和 cf进行计数,计数器 A 的计数值 A
20、xNfT,计数器 B 的计数值为 BCNf。由于 NAf x=Nf c=T,则被测频率 Xf和周期 分别为:AXCffXCB (2-7)式(2-6)中 T=1/ Cf,为时钟的周期。图 2.3 中同步电路(D 触发器)的作用在于使计数闸门信号与被测信号同步,实现同步开门,并且开门时间 T 准确地等于被测信号周期的整数倍,故式(2-6)、(2-7)中的计数 AN没有1 量化误差。计数器 BN虽然有量化误差,但由于 Cf很高, BN远大于 1,所以 B的1 量化误差的相对值(1/ BN)很小,且该误差与被测频率 Xf无关,因此在整个测频范围内,多周期同步等精度测量法能够实现等精度的测量。该测试方法
21、需要的除法功能运算,对于使用微处理器的仪器来说,是不难实现的。考虑计数值 B的1 量化误差、时钟 Cf的不确定度和同步门的触发误差时,根据式(2-6)和式(2-7)可以推导出倒数计数器的测频、测周期误差的计算公式: /20.3(1)RCXTffk(2-8)上式中 R=20 XNU,为被测信号 XU与噪声 N比,k 为多周期倍率。与式(2-2) 、(2-4)相比较,式(2-8)中没有对被测信号计数引起的1 量化误差,只有 BN计数器在同步门 T 周期的1 计数误差 CT/ ,而且与被测量信号的频率无关,即在整个测量2频段上是等精度的。这时多周期同步等精度测量法的测频、测周期的精度在整个测量频段上
22、均可达到 710量级。其原理框图和时序图如图 2.3 所示。(a)多周期同步等精度测量法原理框(b)多周期同步等精度测量法时序图图 2.3 ( a)多周期同步等精度测量法原理框图; (b) 多周期同步等精度测量法时序图2.2 实验方案的确定22.2.1 测量方法的确定 经过 2.1 节对频率测量和周期测量方法的分析,得知直接测量法不可能满足该任务所要求的测量精度,只要采用多周期同步等精度测量法就可以直接读出被测信号的周期值或者频率值,在中界频率附近能达到较高的测量精度。基于以上讨论,决定选用多周期同步测量法来实现该数字频率计。2.2.2 频率测量模块的方法频率测量模块我们选择等精度测频法,其实
23、现方式可用图 2.4 来说明。 图 2.4 等精度测频原理图当方波预置门控信号由底变为高电平时,经整形后的别测信号上升沿启动 D 触发器,由 D 触发器的 R 段同时启动可控计数器 CNTI 和 CNT2 同时计数,当预置门为低电平时,随后而至的被测信号使可控计数器同时关闭。设 Fx为整形后的被测信号,F s为基准频率信号,若在一次预置门高电平脉宽时间内被测信号计数值为 NX,基准频率计数值 NS,则有:F x=(FsN S)NX2.2.3 周期测量模块的方法周期测量与频率测量完全相同,只是在进行计算时公式不同,用周期 T 代换等精度频率测量公式中的频率因数即可。计算公式为 SXXTN (2-
24、15)式中, 为被测信号周期的测量值, S、 XN分别与(12)式中的 Ns、 XN含义相同。2.2.4 脉冲宽度测量模块的方法2在进行脉冲宽度测量时,首先经信号处理电路进行处理,限制只有信号的 50%幅度及其以上部分才能输入数字测量部分。脉冲边沿被处理得非常陡峭,然后送入测量计数器进行测量。测量电路在检测到脉冲信号的上升沿时打开计数器,在下降沿是关闭计数器,设脉冲宽度为 Twx,计算公式为:Twx=Nx/fs。2.2.5 周期脉冲信号占空比测量模块测一个脉冲信号的脉宽,记其值为 Twx1;信号反相后,再测一次脉宽并记录其值Twx2,通过以下公式汁算:占 空 比 T wx1/(Twx1+Twx
25、2)100% (2-17)2.3 系统硬件设计根据频率计的设计要求,我们可将整个电路系统划分为几个基本模块,组成模块框图如图 2.5 所示。图 2.5 频率计组成模块框图其主要由以下几个部分构成:(1) 信号整形电路。用于对待测信号进行放大和整形,以便作为 CPLD 的输入信号。(2) 测频电路。是测频的核心电路模块,由 CPLD 器件担任。(3) 单片机电路模块。用于控制 CPLD 的测频操作和读取测频数据,并作出相应数据处理。2(4) 50MHz 的标准频率信号源。本模块采用高频率稳定度和高精度的晶振作为标准频率发生器,产生 50MHz 的标准频率信号直接进入 CPLD。(5) 键盘模块。
26、可以用 5 个键执行测试控制,一个是复位键,其余是命令键。(6) 数码显示模块。可以用 7 个数码管显示测试结果,最高可表示百万分之一的精度。2.3.1 稳压电源电路本项设计要求的电源均为5V 的直流稳压电源。7905 空载时测量输出在 6V 左右加上负载,输出正常。7805 驱动电流可达 1A,运行时电流 200300mA,7805 温度有 50 度左右。频率计稳压电源电路图如图 2.6 所示。图 2.6 频率计稳压电源电路2.3.2 信号放大整形电路信号放大整形电路包括放大级和整形级两部分。放大级的设计主要考虑增益和带宽的指标。因为后面的整形级采用了电压比较器,所以放大级的增益应根据频率计
27、指标提出的最小输入信号幅度(0.02V)和电压比较器所要求的输入电压的最小压摆率来决定。在本通道中,电压比较器整形级是设计过零触发方式的,因此必须对输入信号过零处的压摆率予以审查。 ,从输入级到第二放大级其带宽大于 10MHz 的指标要求完全可以达到的。因为模拟通道部分所用的器件都是带宽高速器件,为了防止寄生振荡,在每个器件的电源引脚附近到地之间均需要加上去耦电容,每组去耦电容由两种电容并联起来,以取得良好的宽频带宽去耦效果。其中容量小的(0.1F)用陶瓷电容,对高频分量2有良好的去耦作用;容量大的(6.8F)用钽电解电容,对低频分量有良好的去耦作用。整形级选用输出为 TTL 电平的高速集成双
28、压比较器 MAX902 来构成,它比 TTL 电路有触发灵敏度高、因而可降低放大级增益的优点;上面已讨论过,根据手册提示,使用高速电压比较器时必须保证输入信号的压摆率大于手册上所给的最小容许值,以免在比较器输出信号的前后沿部位产生振荡。此外电源引脚附近也需要加接良好的去耦电容,布线短,数字电源和模拟电源的接地要分开,以免比较器输出端的数字信号干扰模拟电路部分的工作。为了防止输入信号过大而损坏后面的元器件,在输入端加上由一个 470电阻和两个二极管组成的限幅保护电路。限幅二极管应选用结电容小,开关时间短,容许的正向电流大且正向压降小的管子,2DK17A 开关二极管是符合上述要求的一种。有时被测信
29、号中含有较高的直流分量,为了保证通道放大器正常工作,输入信号应通过隔直流电容耦合到输入级的输入端,为此还要加上交、直流耦合切换开关 S1。图 2.7 信号放大整形电路2.3.3 单片机控制电路对单片机这部分的主要指标考虑如下:由+5V 电源供电,I/O 口与 TTL 电平兼容,并有足够数目的 I/O 口;要有丰富的四则算术运算和逻辑运算指令,指令执行速度要快;片内除 RAM 外还要有 EPROM;至少有两个 16 位的定时器/计数器;有外部中断输入引脚;具有串行通信口;价格要低廉。根据以上条件,查阅相关资料,发现 8 位单片机 AT89C51 的指标已经能够满足要求。2而对于实验环境的限制,能
30、选择的 CPLD 有限,所以根据实验室的情况选用了XILINX 公司的 XC9572。由于等精度数字频率计涉及到的计算包括加、减、乘、除,耗用的资源比较大。因此,我们选择单片机和 CPLD 的结合来实现。单片机控制电路如图 2.8 所示,其中单片机完成整个测量电路的测试控制、数据处理和显示输出;CPLD 完成各种测试功能;键盘信号由 89C51 单片机进行处理,它从 CPLD 读回计数器数据并进行运算,然后向显示电路输出测量结果。等精度数字频率计电路系统原理框图如图 2.8 所示。系统的基本工作方式如下:(1) P2 口是单片机与 CPLD 的数据传送通信口,P0 口为双向控制口。P3 口利用
31、键盘显示管理芯片 ZLG7289 作为数码管显示,实现数据显示。系统的 P1 口设置 5 个功能键:占空比、脉宽、周期、频率、自检,进行各测试功能的转换。(2) 7 个 LED 数码管组成测量数据显示器,另一个独立的数码管用于状态显示。(3) Fs 为测频标准频率 50MHz 信号输入端,由晶体振荡源电路提供。(4) Fx 为被测信号输入,此待测信号是经放大整形后输入 CPLD 的。13图 2.8 等精度数字频率计电路系统原理框图2.3.4 标准频率信号源本设计采用 50MHZ 的晶体振荡器产生标准频率方波信号(频标)供数字测量电路使用。由公式(2-8)及其讨论可知,多周期同步等精度测量法所达
32、到的测量精度和系统时钟源的精度量级相近。晶体振荡器采用恒温晶振,稳定度可以达到为:2.010 724小时。2.3.5 数码管显示模块从实验条件等实际出发考虑,数码管显示模块采用了 ZLG7289。ZLG7289 是一片具有串行接口的,可同时驱动 8 位共阴式数码管的显示驱动芯片,同时还可连接多达 64 键的键盘矩阵,单片即可完成 LED 显示的全部功能。ZLG7289 具有的特点和丰富的指令系统,使得由其组成的 LED 显示和键盘电路具有外围电路简单,功能强大,使用方便,可靠性高,与 MCU 接口简单等特点,是 LED 显示和键盘电路的2首选器件。ZLG7289 与单片机的连接如下图 2.9
33、所示。 图 2.9 ZLG7289 与单片机的连接因为本设计用等精度测频的方法,预置门时间为 1s,在标准频率信号为 50MHz 的情况下,可以算出测量精度为电路中采用了 8 位 LED 显示器.其中 7 个 LED 数码管组成测量数据显示器,另一个独立的数码管用于状态显示。当测频率时,有显示指示,为了保证频率计有足够的显示时间,并且在打开门控信号之前,要先清零,以使测量数字计数器每次从零开始计数。2第三章 系统软件设计设计包括频率计的测频模块和利用对单片机的编程。单片机的编程又由三部分构成:对 CPLD 的数据读取及控制信号输出,键盘电路的扫描以及数码管显示输出。3.1 CPLD 测频专用模
34、块的设计利用 VHDL 设计的测频模块主逻辑结构如图 3.1 所示,8图 3.1 等精度频率计主逻辑结构图图 3.1 中,预置门控信号 CL 可由单片机发出,可以证明,在 1 秒至 0.1 秒间选择的范围内,CL 的时间宽度对测频精度几乎没有影响,在此设其宽度为 Tpr。BZH 和 TF模块是两个可控的 32 位高速计数器,BENA 和 ENA 分别是他们的允许信号端,高电平有效。标准频率信号从 BZH 的时钟输入端 BLCK 输入,设其频率为 Fs;经整形后的被测信号从与 BZH 相似的 32 位计数器 TF 的时钟输入端 TCLK 输入,设其真实频率值为 XEF,被测量频率为 XF。测频原
35、理说明如下:测频开始前,首先发出一个清零信号 CLR,使两个计数器和 D 的触发器置零,同时通过信号 ENA,禁止两个计数器计数。这是一个初始化的操作。然后由单片机发出允许测频命令,即令预置门控信号 CL 为高电平,这时 D 触发器要一直等到被测信号的上升沿通过时 Q 端才被置 1(即令 START 为高电平) ,与此同时,将同时启动计数器 BZH 和TF,进入计数允许周期。在此期间,BZH 和 TF 分别对被测信号(频率为 XF)和标准频率信号(频率为 Fs)同时计数。当 Tpr 秒后,预置门信号被单片机置为低电平,但此时16两个计数器并没有停止计数,一直等到被测信号的上升沿到来时,才通过
36、D 触发器将这两个计数器同时关闭。 被测频率值为 XF,标准频率值为 Fs,设在一次预置门时间 Tpr 中对被测信号计数值为 Nx,对标准频率信号的计数值为 Ns,则下式成立:SXN(3-1)不难得到测得的频率为: F X=FSNXN S (3-2)最后通过控制 SEL 选择信号和 64 位至 8 位的多路选择器 MUX,将计数器 BHZ 和 TF中的两个 32 位数据按照 SEL20的编码次序,分 8 次依次读入单片机,并按照各个模块的计算公式进行计算和显示。3.1.1 频率计 CPLD 部分的 VHDL 程序根据图 3.1 的主逻辑结构图和图 3.2 的测控时序,以及测频原理,可以写出相应
37、的 VHDL 功能描述。相应的 RTL 电路图如图 3.3。频率计 CPLD 部分的 VHDL 程序设计如下:LIBRARY IEEE; -等精度频率计 CPLD 设计部分USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY etester IS PORT(BCLK:IN STD_LOGIC; -标准频率时钟信号clock2,50MHZTCLK:IN STD_LOGIC; -待测频率时钟信号CLR:IN STD_LOGIC; -清零和初始化信号CL:IN STD_LOGIC; -当 SPUL 为高电平时,CL
38、为预置门控信号,用于测频计数-时间控制当 SPUL 为低电平时,CL 为测脉宽控制信号 -CL 高电平时测高电平脉宽而当 CL 为低电平时,测低电平脉宽17SPUL:IN STD_LOGIC; -测频或测脉宽控制START:OUT STD_LOGIC; -起始计数标志信号EEND:OUT STD_LOGIC; -由低电平变到高电平时指示脉宽计数结束SEL:IN STD_LOGIC_VECTOR(2 DOWNTO 0); -数据读出选同控制DATA:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -8 位数据读出END etester; ARCHITECTURE behav
39、OF etester IS SIGNAL BZQ : STD_LOGIC_VECTOR(31 DOWNTO 0); -标准计数器SIGNAL TSQ : STD_LOGIC_VECTOR(31 DOWNTO 0); -测频计数器SIGNAL ENA : STD_LOGIC; -计数使能SIGNAL MA, CLK1, CLK2, CLK3: STD_LOGIC; SIGNAL Q1, Q2, Q3, BENA, PUL: STD_LOGIC;SIGNAL SS: STD_LOGIC_VECTOR (1 DOWNTO 0); BEGIN START 0);ELSIF BCLKEVENT AND
40、BCLK = 1 THENIF BENA = 1 THEN BZQ 0); ELSIF TCLKEVENT AND TCLK = 1 THEN IF ENA = 1 THEN TSQ = TSQ + 1; END IF; END IF; END PROCESS; PROCESS (TCLK, CLR) BEGIN IF CLR = 1 THEN ENA = 0; ELSIF TCLKEVENT AND TCLK=1 THEN ENA = CL; END IF; END PROCESS; MA=(TCLK AND CL) OR NOT(TCLK OR CL) ; -测脉宽逻辑CLK1=NOT M
41、A ; CLK2=MA AND Q1 ; CLK3=NOT CLK2; SS=Q2 ELSIF CLK1EVENT AND CLK1 = 1 THEN Q1 = 1; END IF; 2END PROCESS; DD2: PROCESS (CLK2, CLR) BEGIN IF CLR = 1 THEN Q2 = 0; ELSIF CLK2EVENT AND CLK2 = 1 THEN Q2 = 1; END IF; END PROCESS; DD3: PROCESS (CLK3, CLR) BEGIN IF CLR = 1 THEN Q3 = 0; ELSIF CLK3EVENT AND C
42、LK3 = 1 THEN Q3 = 1; END IF; END PROCESS; PUL=1 WHEN SS=“10“ ELSE-当 SS=“10”时,PUL 高电平,允许标准计数器计数0 ; -禁止计数EEND=1 WHEN SS=“11“ ELSE-EEND 为低电平时,表示正在计数,由低电平变到高电平0; -时,表示计数结束,可以从标准计数器中读数据了BENA=ENA WHEN SPUL=1 ELSE -标准计数器时钟使能控制信号,当 SPUL 为 1 时,测频率PUL WHEN SPUL=0 ELSE -当 SPUL 为 0 时,测脉宽和占空比PUL; END behav;利用 VH
43、DL 设计的测频模块其中有关的接口信号规定如下:1、BCLK:标准频率输入信号,50MHz。 2、TCLK:待测频率输入信号,0.1Hz10MHz。最高可以为 50MHZ。 3、CLR:全局清 0 和初始化输入,高电平有效,由单片机向 CPLD 发出。 24、CL:预置门控制输入,时间为 1s,高电平有效,由单片机向 CPLD 发出。 5、SPUL:高电平测频率,低电平测脉宽,由单片机向 CPLD 发出。 6、START:此信号由单片机读取。在测频时,高电平时表示进入计数周期,低电平时表示计数结束,单片计可以读取 CPLD 中的计数。 7、EEND:在测脉宽期间(SPUL=0 ) ,由低电平变
44、为高电平,表示脉宽计数结束,EEND 信号由单片机读取。 8、DATA:计数数据输出,8 位,由单片机根据 SEL 选择信号分别读取。 9、SEL:计数数据读出控制,3 位,由单片机输出控制。 当 SEL 分别等于:“000” 、 “001”、 “010”、 “011”;可由 DATA 分别读出:BZQ70、158、2316、3124共 32 位。 当 SEL 分别等于:“100” 、 “101”、 “110”、 “111”;可由 DATA 分别读出:TSQ70、158、2316、3124共 32 位。3.1.2 频率计 CPLD 部分的仿真图 3.4 和图 3.5 分别是频率测试仿真波形和脉
45、宽测试仿真波形。从图 3.4 可以看出,SPUL=1时,系统进行等精度测频。这时,CLR 一个正脉冲后,系统被初始化。然后 CL 被置为高电平,但这时两个计数器并未开始计数(START=0),直到此后被测信号 TCLK 出现一个上升沿,START=1时 2 个计数器同时启动分别对被测信号和标准信号开始计数,其中 BZQ 和 TSQ 分别为标准频率计数器和被测频率计数器的计数值。由图可见,在 CL 变为低电平后,计数仍未停止,直到 TCLK 出现一个上升沿为止,这时 START=0,可作为单片机了解计数结束的标志信号。仿真波形中 TCLK 和 BCLK 的周期分别设置为 10s 和 500ns。
46、由图可见,计数结果是,对 TCLK 的计数值是 5,对 BCLK 的计数值是 64(十六进制)。通过控制 SEL 就能按照 8 个 8 位将两个计数器中的 32 位数读入单片机中进行计算。从图中的波形可以看出,VHDL 部分描述的测频的功能完全正确。21图 3.4 频率/周期测量仿真图图 3.5 脉宽/占空比测量仿真图图 3.5 中,取 SPUL=0时,则系统进行脉宽测试。为了便于观察,图中仿真波形中的 TCLK 和 BCLK 的周期分别设置为 75s 和 500ns。由 VHDL 程序和 RTL 电路图可以分析,CL 和 CLR 的功能都发生了变化,前者为1时测信号高电平的脉宽,为0时测低电平的脉宽;而后者 CLR 变为1时作系统初始化,由1变为0后启动电路系统的标准信号计数器 BZQ 准备对标准频率进行计数。而允许计数的条件是此后出现的第一个脉宽的宽度。由图 3.5 可见,当 CL=1,TCLK 的高电平脉冲到来时,即启动了 BZQ 进行计数,而在 TCLK 的低电平到来时停止计数,状态信号 EEND 则由低电平变为高电平,告诉单片机计数结束。计数值可以通过 SEL 读出,这里是 4BH。由此不难算出,TCLK 的高电平脉宽应该等于 4BH 乘以 BCLK 的周期。改变 CL 为0,又能测出 TCLK 的低电平脉宽,从而可以获得 TCLK 的周期和占空比。