MHz等精度频率计设计 基于Verilog HDL

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

知识的掌握,上一次使用它们已经是一年前,难免生疏了。代价就是花费了我将

近两三天的查阅书籍和翻看以前的程序才捡回来。其次是对模电知识的理解不到位,可能课上学的都是理论知识,现实情况便手忙脚乱。在设计过程中,遇到了

大大小小的问题,有时候出现一个小小的错误,就需要半天才能发现和改正过来。为了避免这种情况,我应该更严谨,把工程分为多个模块去完成,这样才可以快

速定位问题。

通过这两周的学习,我知道知识不用会忘,学习不严谨会出错。所以以后我

要更加严谨,并且要多用自己学到的技能。

相关文档
最新文档