数字频率计
摘要
以FPGA(EP2C8Q208C8N)为控制核心设计数字频率计,设计采用硬件描述语言Verilog 该作品主要包括FPGA控制、数码管模块、信号发生器、直流电源模块、独立按键、指示灯模块。
主要由直流电源供电、数字信号发生器输出信号,FPGA 控制信号的采集、处理、输出,数码管显示数据,按键切换档位,指示灯显示档位。
作品实现了测频、测周、测占空比,能准确的测量频率在10Hz 到100kHz之间的信号。
关键字: 频率计等精度 FPGA (EP2C8Q208C8N)信号发生器Verilog语言
一、系统方案论证与比较
根据题目要求,系统分为以下几个模块,各模块的实现方案比较选择与确定如下:
1.主控器件比较与选择
方案一:采用FPGA(EP2C8Q208C8N)作为核心控制,FPGA具有丰富的I/O 口、内部逻辑和连线资源,采集信号速度快,运行速度快,能够显示大量的信息,分频方便。
方案二:采用SST89C51作为主控器件,虽然该款单片机较便宜,但运行速度较慢,不适合对速度有太大要求的场合,并且不带AD,增加了外围电路。
综上所述,主控器件我选择方案一。
2.测量方法的比较与选择
方案一:采用测频法测量。
在闸门时间内对时钟信号和被测信号同时计数,由于在闸门闭合的时候闸门时间不能是被测信号的整数倍,导致计数相差为一个被测信号时间,所以测频法只适合频率较高的测量。
方案二:采用测周法测量。
用被测信号做闸门,在闸门信号内对时钟信号计数,由于在闸门闭合的时候闸门时间不能是时钟信号的整数倍,导致计数相差为一个时钟信号时间,所以测周法只适合较低频率的测量。
方案三:采用等精度法和测周法结合的方法。
用等精度发测量1KHZ以上的频率,测周法测量1KHZ一下的频率。
这种方法取长补短,既能准确的测高频又能测低频。
综上所述,测量方法我选用方案三。
3. 界面显示方案的选择
方案一:采用数码管显示,控制程序简单,价格便宜,显示直观。
方案二:液晶5110,虽然体积小,可以显示各种文字,字符和图案。
考虑到数码管完全可以满足数据显示要求,所以显示部分我选用方案一。
二、理论分析与计算
1、键盘设计
系统中我们采用独立键盘,用2个I/O控制2个键。
原理是将2个I/O口直接接键盘的2个引脚,低电平有效,这种键盘的优点反应的速率快。
2、计算公式
(1)测频: 1khz以上:被测频率=时钟频率*(被测频率计数/时钟频率计数) 1khz以下:被测频率=时钟频率/(时钟频率在被测信号高电平计数+时钟频率在被测信号低电平计数)
(2)测周: 被测周期=(时钟频率计数/被测频率计数)*时钟周期 (3)测占空比:占空比=高电平计数/(高电平计数+低电平计数)
三 电路与程序设计
根据题目要求,经过仔细考虑制订了一个比较可行的方案,系统方框图
如下:
图1系统方框图
(一)电路设计
(1)换挡指示灯电路设计
模块共使用了7个LED 灯,分别指示测频、测周、测占空比、HZ 挡、KHZ 挡、ms 挡、um 挡。
独立键盘
FPGA (EP2C8Q208C
数码管
信号发生器
直流电源供电
图2指示灯模块电路设计
(2)直流电源电路设计
图3直流电源电路设计
(二)程序设计
FPGA 控制器采用Verilog 语言进行程序设计,软件总体设计流程图如图4所示。
四、测试方案与测试结果
1.测试仪器 数字信号发生器 2. 数据测量
1.测频
输出频率 测量频率 误差范围
1.01hz 1.01hz 0 10hz 10.00hz 0 100hz 100.00hz 0 1khz 1.00khz 0 10khz 10.00khz 0 100khz 100.00khz 0 999khz 999.00khz
2.测周期
输出周期
测量周期
误差范围
数据采集
测频计数 测周计数
测占空比计数
档位选择、指示灯选择
按键
数码管显示
指示灯显示
开始
结束
1.01hz(990.099ms) 990.099ms 0
10hz(100ms) 100ms 0
100hz(10ms) 10ms 0
1khz(1ms) 1ms 0
10khz(100us) 100us 0
100khz(10us) 10us 0
1mhz(1us) 0.960us 4%
3.测占空比
输出占空比测量占空比误差范围
1% 1.07% 7%
10% 10.05% 0.5%
20% 20.21% 1%
30% 29.98% 0.01%
40% 40.13% 0.27%
50% 49.80% 0.04%
60% 59.96% 0.01%
70% 69.72% 0.4%
80% 79.69% 0.4%
90% 89.69% 0.33%
99% 98.63% 0.37%
五、结论
基本功能是否实现扩展功能是否实现测频实现自做电源实现测周期实现自做信号发生器未实现测占空比实现
附件
(如果想要源程序请单独留言,太多就不传了。
)。