频率计实验报告
信息工程
实验任务及要求:
1.设计一个可测量的数字式频率计,测量范围为1Hz-12MHz。
2.用层次化的设计方法设计该电路,编写各个功能模块的程序。
3.仿真各功能模块,通过观察有关波形确认电路设计是否正确
4.完成电路设计后,通过在实验系统上下载,验证设计的正确性
实验原理分析:
根据总的设计图可知:8位十进制数字频率计的设计有一个测频控制信号发生器TESTCTL,8个有时钟使能的十进制数字计数器CNT10,一个32位锁存器REG32B组成。
测频控制信号发生器的设计原理和要求:频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。
这就要求TESTCTL的计数使能信号TSTEN能产生1秒脉宽的周期信号,并对频率计的每一个计数器CNT10的ENA使能端进行不同控制。
当TSTEN高电平时允许计数,低电平时停止计数,并保持所计的数。
在停止计数的期间,首先需要一个锁存信号Load的上跳沿将计数器在前一秒的计数值锁存进32位锁存器REG32B中,且由外部的七段译码器译出并稳定显示。
设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
锁存信号之后,必须有一个清零信号CLR_CNT对计数器进行清零,为下一秒钟的计数操作做准备,测频控制信号发生器的工作时序为周期2秒,占空比为0.5的方波,为了产生的方波,需首先建立一个由D触发器构成的二分频器,在每秒时钟CLK 上升沿到来时使其翻转,其中控制信号时钟CLK的频率为1Hz,那么信号TSTEN的脉宽恰好为1秒,可以用作闸门信号,然后根据测频的时序要求,可得出信号Load和CLR_CNT 的逻辑描述,在一个计数完成后,即计数使能信号TSTEN在1秒的高电平后,利用其反向值的上升沿产生一个锁存信号Load,0.5秒后,CLR_CNT产生一个清零信号跳沿。
各个模块的源程序如下所示:
TESTCTL
仿真波形:
REG32B
仿真波形:
分析:设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
若已有32位BCD码存在于此模块的输入口,在信号LOAD的上升沿后即被锁存到寄存器REG32的内部,并由REG32的输出端输出,然后由实验板上的7段译码器译成能在数码管上显示输出的相对应的数值
CNT10
仿真波形:
功能分析:此十进制计数器的特殊之处是,有一时钟使能输入端ENA,用于锁定计数值,。
当高电平时计数允许,低电平时禁止计数。
采用元件例化方式生成的顶层电路源代码如下所示:
由上图生成的顶层电路图如下所示:
(说明,由代码生成的电路图元件布局不够直观,此处做了些调整)
引脚映射以及实验箱下载
本次设计我们采用GW48 EDA实验箱,选择芯片EP1K30TC144-1,选择模式0,引
在实验箱上选择CLOCK2输入为1Hz,模式选择模式0,引脚映射如上表所示。
实验现象:
实验总结:
本次实验中,10进制计数器和REG32B(类似于D触发器,只是输入和输出为一定长度的矢量)都比较容易编程和修改,较为复杂也较为核心的部分是测频控制信号发生器的构成,它是用来控制8个十进制计数器的使能工作和清零工作以及32位锁存器的存储工作,整个测量过程中,8个十进制计数器不是一直工作,一直在测量的,而是间隔一个周期(1秒)来测量频率的方波峰值,这是频率计工作的核心所在。
在上面的顶层电路图上,每一个网络标号所标示的输出都对应一个数码管。
通过频率计的设计仿真与实际操作,我逐渐学会并熟悉使用软件,逐渐了解VHDL硬件描述语言的设计方法和思想。
通过这次课程设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,将理论的知识验证后,才能真正学以致用,从而提高自己的实际动手能力和独立思考的能力。
在实验中也要注意一些细节问题,比如在实时仿真过程中注意可能产生的毛刺,本次实验过程中,最大的问题还是在于测频控制信号发生器的程序编写上,虽然找到了测频器的相关资料,但一直没有深入理解,仿真的时候出现很多错误,在不断的修改中慢慢理解了它的工作原理。
参考资料:
1.潘松,王国栋,VHDL实用教程. 成都:电子科技大学出版社,2001
2.李衍,EDA技术入门与提高.西安:西安电子科技大学出版社,2005。