MHz等精度频率计设计 基于Verilog HDL
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
姓名:郑中权
班级:电子1班 数电课设报告
江苏科技大学
2017/10/12
100MHz等精度频率计设计(基于Verilog HDL)一、设计要求:
提供一个幅值为10mV ~ 1 V,频率为 1 ~ 100MHz的正弦信号,需测试以下指标:
1.频率:测频范围 1Hz ~ 100MHz,测频精度为测频全域内相对误差恒
为百万分之一。
2.占空比:测试精度 1% ~ 99%
3.相位差:测试两个同频率的信号之间的相位差,测试范围 0 ~ 360
二、设计分析
使用FPGA数字信号处理方法,首先需要将正弦信号转换成可读取的数字方波信号,再经过FPGA设计计算得出所需测量值。
三、模电部分
首先选择比较器,对于 100 MHz 信号,比较器灵敏度需要达到5ns内,TI 公司的LTV3501灵敏度为4.5ns,符合要求
由TLV3501数据手册得知:当频率低于 50MHz 的时候,正弦波的峰峰值需大于20mV,频率高于50MHz时,峰峰值需大于 1V。
然后需要选择放大器,当正弦波幅值为 10mV时,放大倍数需大于35。方法通过二级放大,一级用OPA847放大20倍,二级用OPA675放大8倍,得到总放大倍数160的正弦波。
经转换后的输出电压符合TTL电平要求,可以被识别出0和1。
四、数电部分
开发板:Cyclone IV E: EP4CE6E22C8
板载时钟为 50MHz,带4个按键和一个复位键(按键按下为0,抬起
为1),四个七段数码管(共阳),FPGA的引脚可由杜邦线引出。
设计思路:
测量频率:
输入一个100MHz的基准频率,由计数器CNT1来计算基准频率的上升沿个数,即
周期数。
输入一个被测信号,它由计数器CNT2来测量周期数。
两个信号在同一个使能信号EN(使能信号时间为1~2s)下开始计数,计数完后,存储计数结果,由(CNT1 * 10)可以算出具体的计数时间(单位ns),再由((CNT1 * 10ns)/CNT2 )*10^9可算得被测信号频率,单位Hz。
测量占空比:
同样由CNT1测量基准信号100MHz的周期数,使能信号还是EN。
CNT3测量的也是100MHz,但是它的使能信号是在EN使能时,有被测信号时且被
测信号为高电平时计数,测得的是被测信号高电平中100MHz周期数的个数,即
在一段时间内,高电平的计数个数占总计数个数的比例。
所以占空比计算公式为 CNT3/CNT1 *100。
测量相位差:
CNT3同前。
CNT4测量的也是100MHz,但它的使能信号为当被测信号1为高电平,被测信号2为低电平。即被测信号1超前被测信号2的部分计数。用CNT4/CNT3 *180即被
测信号1和被测信号2的相位差,但有一个限制,就是被测信号1和被测信号2
的占空比都为50%。
原理图:
原理图仿真:
频率:
占空比:
相位差:
mySZQLJ :下载用的顶层文件
test :仿真用的顶层文件
KEY :按键模块,用于按键消抖
DFF1 :D触发器,用于等待被测信号上升沿
PL :用于产生测试信号
LPM_PLL :用LPM生成的锁相环,用于倍频
couter32 :32位计数器
process :用于选择数据输出及数据计算
MUX :4选1选择器,选择输出计数器的值
SMG :驱动4个7段数码管
mySZPLJ 顶层文件
KEY模块
加入按键模块是为了防止按键抖动,同时实现TOGGLE,即按一下开始计数,再按一下计数结束。
DFF1模块
DFF1模块可以让使能信号和基准信号,被测信号等同上升沿,提高精准度。
PL模块
PL模块输入100MHz信号,通过程序转换,输出用于测试用的各个信号。
LPM_PLL模块
由于板载晶振50M,达不到100MHz要求,加入LPM_PLL模块为了倍频,得到所需要的100MHz基准信号。
couter32模块
计数器,采用32位,因为2^32>100M.
process模块
软件转换,由于计算结果会溢出,这里下载到板子的程序并不包含这个,process模块仅用于仿真使用。
MUX模块
4选1模块,选择要输出的结果
SMG模块
驱动4个7段数码管。
五、下载测试与误差分析
下载测试
绑定引脚:
被测1输入: PIN_30
被测2输入: PIM_28
生成的测试信号1Hz: PIN_105
生成的测试信号1KHz: PIN_103
生成的测试信号1MHz: PIN_100
生成的测试信号1KHz: PIN_98
下载与读数:
误差分析
可能出现的误差就是,当基准信号还在高电平和低电平时,EN使能,这会导致CNT1多计数或少计数一个周期,导致计算结果出现误差。
六、总结
为期两周的课设结束了,虽然我如愿完成了设计要求,但是由于身边没有可
用MCU和自身知识的不足,我未能设计出一款由单片机控制,完全“傻瓜式”的
频率计,这是个小小的遗憾。我相信通过日后不断学习,我会设计出来的。在这
两周的设计过程中,我遇到了不少问题。首先是对于Quartus的使用和Verilog
知识的掌握,上一次使用它们已经是一年前,难免生疏了。代价就是花费了我将
近两三天的查阅书籍和翻看以前的程序才捡回来。其次是对模电知识的理解不到位,可能课上学的都是理论知识,现实情况便手忙脚乱。在设计过程中,遇到了
大大小小的问题,有时候出现一个小小的错误,就需要半天才能发现和改正过来。为了避免这种情况,我应该更严谨,把工程分为多个模块去完成,这样才可以快
速定位问题。
通过这两周的学习,我知道知识不用会忘,学习不严谨会出错。所以以后我
要更加严谨,并且要多用自己学到的技能。