四位十进制频率计(EDA)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四位十进制频率计设计报告
目录
一、题目分析 (3)
1、设计原理 (3)
二、设计方案 (3)
1、顶层实体描述 (3)
2、模块划分 (4)
3、模块描述 (4)
4、顶层电路图 (5)
三、方案实现 (5)
1、各模块仿真及描述 (5)
2、顶层电路仿真及描述 (6)
四、硬件测试及说明 (7)
五、结论 (7)
六、课程总结 (7)
七、附录(源程序,加中文注释) (8)
1、频率计顶层文件 (8)
2、测频控制电路 (9)
3、16位锁存器 (9)
4、16位计数器 (10)
5、十进制加法计数器 (10)
一、题目分析
1、设计原理
根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1S的输入信号脉冲计数允许的信号;1S计数结束后,计数值被锁入锁存器,计数器清零,为下一测评计数周期做好准备。测频控制信号可以由一个独立的发生器来产生。
2、设计要求:
FTCTRL的计数使能信号CNT_EN能产生一个1S脉宽的周期信号,并对频率计中的16位计数器couter16D的ENABL使能端进行同步控制。当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上升沿将计数器在前一秒钟的计数值锁进锁存器REG16D中,并由外部的十进制7段译码器译出,显示计数值。设置锁存器的好处是数据显示稳定,不会由于周期性的清零信号而不断闪烁。锁存信号后,必须有一清零信号RST_CNT对计数器进行清零,为下一秒的技术操作做准备。
3、实现功能
当输入一个待测频率时,在测频信号的控制下,可以通过外部的7段译码器显示出其频率值。
二、设计方案
1、顶层实体描述
图1:四位十进制频率计顶层实体
图2:测频控制电路实体图3: 16位计数器实体图4: 16位锁存器实体
图5:十进制加法计数器实体
2、模块划分
设计一个四位十进制频率计,
1S的输入信号脉冲计数允许的信号;然后需要一个16位计数器进行计数,由于我们设计的是四位的十进制的频率计,所以还需要用4个十进制的加法计数器来构成所需要的计数器;在技计数完成之后还需要一个锁存器将计数值进行锁存,从而使显示的数值稳定。
3、模块描述
(1)四位十进制频率计顶层
该模块即为我们最终所要实现的模块,即给定一个频率后,我们可以在外部显示上看到待测频率的频率值。
(2)测频控制电路
该模块用于产生产生一个脉宽为1S的输入信号脉冲计数允许的信号,以便于后面模块的使用。
(3)16位计数器
该模块用于在1S脉宽的周期信号对待测频率的周期进行计数,从而得到待测频率的频率值。
(4)16位锁存器
该模块用于将计数器产生的最终的计数值进行锁存,从而使显示的数值稳定。
(5)十进制加法计数器
该模块用于产生设计所要求的十进制的计数器,从而构造成我们所需要的计数器。
4、顶层电路图
16位计数器由四个十进制的加法计数器组成
三、方案实现
1、各模块仿真及描述
(1)测频控制电路的仿真
在CLKK时钟的控制下,计数使能信号CNT_EN能产生一个一定脉宽的周期信号(后面用于产生1S脉宽的周期信号),在停止计数期间,一个锁存信号LOAD 的上升沿将计数器在前一秒钟的计数值锁进锁存器REG16D中。清零信号RST_CNT 对计数器进行清零,为下一秒的技术操作做准备。
(2)16位计数器的仿真
从波形图中可以看出,当清零信号CLR置0,计数使能信号置1时,计数器以十进制的方式对所给的周期信号的周期进行计数。
(3)16位锁存器的仿真
从波形图中可以看出,当LK置1时,锁存器对所给的数值进行锁存,并且使输出的锁存的数值保持不变,这将在后面的外部显示时使数值保持稳定。
(4)十进制加法计数器的仿真
从波形图中可以看出,当使能端ENA置1,清零端置0时,计数器对给定的时钟的周期进行计数,计数值从0000---1001进行循环,这就满足了我们所需要的十进制的计数器。
2、顶层电路仿真及描述
在进行仿真时,我设置的CLK1HZ的时钟周期是1s(频率为1HZ),FSIN的时钟周期为10ms(频率为100HZ),从波形图中可以看出,输出的计数值确实是100,验证是正确的。
四、硬件测试及说明
我选择了实验电路模式0,测频控制信号CLK1HZ由clock2输入,待测频率FSIN由clock0输入(可用电路帽选择所需要的频率),4个数码管(数码4-1:PIO31--PIO16)显示测频的输出。
测试结果如下:
(1)我所设计的四位十进制频率计对于四位的待测频率可以准确的显示出来;
(2)但对于超过四位的待测频率只能将前面超出的溢出,只保留最后四位;
(3)待测频率的位数越多,越往后数码管显示结果的误差就越大。
五、结论
本实验设计的是四位十进制频率计,利用测频控制电路、16位锁存器、16位计数器和十进制的计数加法器几个模块完成了我所要的设计。实现的功能是:在测频控制电路给的1HZ的测频信号下,计数器对待测频率的周期进行计数,再由锁存器锁存,最终通过外部的数码管将待测频率的频率数值显示出来。
通过本次设计实验我也学到了很多东西,刚开始时选定题目后不知道如何下手,通过翻书、上网查资料找到了一些相关知识才开始做实验。在实验的进行中也出现了很多问题,比如说编译出现了很多错误,经过我仔细的排查和修改后,最终使得编译完全正确了,这让我有一点成就感,同时也使我对此充满了兴趣,做得就更加认真了,努力把很多没弄懂的问题都想清楚了,做完本次设计实验后真的收获颇丰!
六、课程总结
通过《在系统编程技术》这门课的学习,我真的学到了很多东西。理论知识主要是学习了FPGA/CPLD、EDA的设计平台、VHDL语言等。在理论学习之后,我们通过实验锻炼了自己的实践能力,同时在实验的过程中也加深了我们对课本上理论知识的理解。
记得刚开始学习这门课时,觉得还是比较有压力的,老师说我们要多了解EDA方面一些比较前沿的知识,第一节课听着老师提到的各个设计公司,比如说:Lattice、Xilinx、Altera公司等相关方面的专业名词,其实那时心里是有点激动的,觉得自己正在接触着前沿的知识。在后面的理论知识的学习中觉得是痛并快乐着,痛的是各方面的知识比较多,比如说在学习VHDL语言的变量、常量、信号时,要注意很多的细节知识,当然快乐的就是自己学到了知识,丰富了自己所知道的知识围。
在实验课上,我们学会了如何用电路原理图或者VHDL语言实现一个设计,通过在实验过程中遇到的各种问题来提高自己对Quartus ii 6.0软件的应用能力。以及在最后的设计实验中更是让我知道一个设计人员的专业素养的要求也很