实验报告_频率计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字逻辑与处理器基础实验
频率计
实验报告
姓名:
学号:2012011250
班级:
组号:S2
目录
实验八:频率计 (3)
一、实验目的 (3)
二、实验内容 (3)
(一) 设计方案 (3)
1. 待测信号产生模块 (3)
2. 分频模块 (4)
3. 计数器模块 (4)
4. 16位锁存器模块 (5)
5. 控制信号产生模块 (6)
6. 译码模块 (7)
7. 扫描模块 (8)
(二) 仿真结果 (9)
(三) 实验硬件调试 (10)
1. 面积与速度的关系清单 (10)
2. 综合电路图 (12)
3. 实验调试结果 (12)
三、实验总结 (13)
实验八:频率计
一、实验目的
掌握频率计的原理和设计方法
二、实验内容
(一)设计方案
频率计用于对一个未知频率的周期信号进行频率测量,在1s内对信号周期进行计数,即为此周期信号的频率。
频率计内部实现框图如下所示,其内部包括频率量程处理模块(10 分频)、时钟频率产生模块、控制信号产生模块、十进制计数器模块、锁存器模块、译码显示模块等。
下面对几个模块分别作出阐释。
1.待测信号产生模块
系统时钟信号为100MHz,利用不同的分频比将系统时钟分成四组不同的待测信号:3125Hz,6250Hz,50Hz,12500Hz。将以上四组信号作频率计的输入。
具体代码如下,代码文件为siginput.v
2.分频模块
产生三个不同的分频比,其中两个将系统时钟分为1Hz信号和1KHz信号,分别作为计数时钟和扫描时钟;另一个分频比为10,用于高量程下的测量。
具体代码如下,代码文件为divider.v
3.计数器模块
这是一个四位十进制的计数器,当待测信号的上升沿来临,在使能信号enable有效,复位信号reset无效时开始计数。
具体代码如下,代码文件为counter.v
4.16位锁存器模块
输入为计数器产生的16位输出,lock信号(高电平)有效时输出锁定,否则,输出透明显示计数器值。
具体代码如下,代码文件为latch_16bits
5.控制信号产生模块
产生计数器的使能信号enable(高电平有效)、复位清零信号reset(低电平有效)以及锁存器的锁存信号lock(高电平锁存,低电平透明输出)。此模块的输入时钟信号,考虑到计数时间问题,没有采用1Hz的counter_clk信号,采用了1KHz的scanning_clk 信号,在时钟的上升沿触发。故而,计数时要计1000个scanning_clk周期。每个计数周期(1000个scanning_clk周期),此模块中产生的三个控制信号是一个循环,流程如下:
第一个时钟上升沿到来时
第二个时钟上升沿到来时
复位清零。
第三个时钟上升沿到来时
开始计数。
第1003个时钟上升沿到来时
计数满1000次,停止计数。
第1004个时钟上升沿到来时
锁存器透明输出。
循环上述过程,不断检测待测信号频率
具体代码如下,代码文件为control.v
6.译码模块
搭建七段译码器(本实验要求是八位输出,将小数点位置1即可),对于输入的4bit 数据,该译码器能即时地翻译为相应的数字显示出来。真值表如下:
具体代码如下,代码文件为segment_4to7.v
7.扫描模块
接下来需要利用上述译码器,结合扫描功能,能让四个数码管显示出给定的四个(不一定相同的)数字。其中,扫描电路驱动每一位的阳极信号和相应的阴极模式,以高于人眼能察觉的速率不断扫描更新(本实验中为1KHz)。每一位数字被点亮的时间只有四分之一,但由于眼睛在数字变亮之前感觉不到数字变暗过程,因此感觉数字一直都是亮的。
借助此方法,可以仅用一套数据的输入端口而显示出看起来不同的四个数字。扫描电路时序关系如下:
具体代码如下,代码文件为scanning_clk
(二)仿真结果
低量程,显示的结果为3125Hz.
低量程,显示的结果为6250Hz
(三)实验硬件调试
1.面积与速度的关系清单
2.综合电路图
3.实验调试结果
经助教验收,实验调试结果正常。
三、实验总结
这是本课程的第一个综合实验,总的来说,难度有点大,耗费时间较多。
该实验的特点是,涉及多个模块,所用到的知识比较综合,比较全面。我一开始写代码时,先把整个实验分成几个相应的小模块,然后一个一个写,最后综合调试。但是,我并没有在写完每个模块后分别进行调试,这也导致我最终耗费了大量的时间在debug.开始用modelism仿真时,发现波形不对,于是开始查找代码错误,由于模块太多,根本不知道哪里错了。就这样一边检查,一边修改,一边调试,可是最后仿真出来的波形还是不对。再后来,由于仿真太耗时间了,我直接用开发板进行综合调试,综合的结果正确。但,开发板上的数码管全为0,而且根本就不知道哪里出错了。没办法,又开始用modelism仿真,这次的仿真一直从下午持续到晚上,我几乎对所有的信号进行了监测,分析,修改,最终,在巨大的努力下,终于调试成功。
最后,只想说,这次实验做得真是不容易……