基于VHDL的8位十进制频率计设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于VHDL的8位十进制频率计设计

目录

目录 (1)

摘要 (2)

1.设计目的 (2)

2.设计要求 (2)

3.设计思路 (2)

4.频率计设计原理 (3)

4.1频率计的组成部分 (3)

4.2频率计工作原理 (3)

4.3频率计各模块介绍 (3)

5.频率计仿真 (7)

5.1FCTRL控制模块仿真 (7)

5.2REGESTER寄存器模块仿真 (7)

5.3SELTIME扫描模块仿真 (7)

5.4DELED显示模块仿真 (8)

5.5CNT10计数器模块仿真 (8)

5.6总电路仿真 (8)

6.频率计各模块程序 (9)

7.频率计下载到实验箱现象 (13)

8.设计体会 (14)

9.参考资料 (14)

[ 摘要]使用VHDL 语言来设计数字频率计, 给出了原理图和仿真图形, 所设计的电路通过硬件仿真, 下载到目标器件上运行, 能够满足测量频率的要求, 具有理论与实践意义, 实现了电子电路自动化(EDA)的过程。

[ 关键词] VHDL; EDA; 仿真; FPGA; 频率计

1.设计目的

1.1熟悉Max+plusII 10.2的软件的基本使用方法。

1.2理解频率计的测量原理。

1.3掌握VHDL语言的编写方法。

1.4掌握虚拟数字频率计的软件设计。

2.设计要求

在Max+plusII中设计一个数字频率计电路,设计要求为:测量范围:1Hz~100MHz,数码管动态扫描显示所测的频率。

3.设计思路

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

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

方案三:采用等精度频率测量法,测量精度保持恒定,不随所测信号的变化而变化。在快速测量的要求下,要保证较高精度的测频,必须采用较高的标准频率信号。采用高集成度、高速的现场可编程门阵列FPGA为实现高速、高精度的测频提供了保证。

本设计所采用的测频方法就是直接测频法。

3.频率计设计原理

3.1频率计的组成部分

频率计主要由5 个部分组成: 测频控制信号发生器fctrl、8 个有时钟使能的十进制计数器cnt10、1 个锁存器regester32、显示模块deled 和控制显示模块seltime。数字频率计的框图如下图所示。

3.2频率计工作原理

频率计是直接用十进制数字来显示被测信号频率的一种测量装置。所谓频率, 就是周期性信号在单位时间( 1s) 里变化的次数。若在一定时间间隔T 内测得的这个周期性信号的重复变化次数N , 则其频率可表示为f = N / T。

频率测量的基本原理是计算每秒钟内待测信号的脉冲个数,测频的基本原理要求fctrl的计数使能信号en 能产生一个1s 脉宽的周期信号, 并对频率计的每一个计数器cnt10的使能端进行同步控制。

当en为高电平时允许计数,为低电平时停止计数,并保持其所计脉冲个数。在停止计数期间,首先需要一个锁存信号load 的上跳沿将计数器在前1s 的计数值锁存进regester32中,并由外部的7 段译码器译出,并稳定显示。锁存信号之后,必须有一个清零信号对计数器进行清零,为下1s 的计数操作做准备。测频控制信号发生器的工作时序图如下图所示。

其中控制信号频率始终为1Hz,那么信号en的脉宽正好为1s,可以用作计数闸门信号。然后根据测频的时序要求,可得出信号load和清零信号clr_cnt的逻辑描述。计数完成后, 利用计数使能信号反向值的上跳沿产生一个锁存信号load。0.5s 后,clr_cnt产生一个清零信号上跳沿。计数器cnt10的特殊之处是, 有一时钟使能输入端ena,用于锁存计数值。当高电平时计数允许, 低电平时计数禁止。锁存器的设计要求:若已有24位BCD码存于此模块的输入口,在信号load的上跳沿后即被锁存到寄存器regester内部,并由regester的输出端输出, 然后有实验箱上7 段译码器译成能在数码管上显示输出的相应数值。

3.3频率计各模块介绍

①测频控制信号模块

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

测频控制产生器如下图所示,图中1HZDE CLK1接CNT,EN为计数允许信号,接计数器CNT10的ENA(此图未画出),CLR_CNT信号用于在每次测量开始时,对计数器进行复位,接计数器CNT10的CLR,LOAD接锁存器的LOAD(此图未画出)。

②锁存器模块

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

锁存器REGESTER的封装如下图所示,图中load接控制测频产生器FTRL 的load,而DIN[31..0]接计数器CNT10的CQ[3..0],DOUT[31..0]接显示器seltime 模块的DIN[31..0]端。

③扫描模块

首先扫描模块接一个clk时钟,频率为32768HZ,DIN[31…0]接REGESTER 的DOUT[31…0] ,SEL[2…0]锁存到74LS138译码器的三个引脚,以便于让数码管显示,daout[3…0]接deled的s[3…0]端。

sel为一个7进制计数器,当sel为000时,daout对应着输入din的0到3位,当sel为001时,daout对应着输入din的4到7位,以此类推,当sel为111时,daout对应din 的28到31位。

相关文档
最新文档