0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA学习系列:34. 频率计的设计

FPGA学习交流 2018-08-28 16:16 次阅读

设计背景:

频率计又称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器。频率计主要由四个部分构成:时基(T)电路、输入电路、计数显示电路以及控制电路

频率,即使信号周期的倒数,也就是说,信号每单位时间完成周期的个数,一般去一秒为基本单位时间。

设计原理:

本次的设计主要是一个简单的二选一数据选择器,我们的设计主

频率=1s/T,T=高电平的时间+低电平的时间。时间=周期数*周期。占空比=(高电平的时间/周期)100%。我们的时间单位都是以ns来计算的,所以要把1s换成1_000_000_000ns,驱动时钟是50MHz的,周期为20ns。计算占空比的时候,我们把周期20ns全部省略了。所以计算公式如下:

freq = 1_000_000_000/(low_time * 20 + high_time * 20);

duty_cycle = (high_time * 100)/(high_time + low_time);

设计架构图:

image.png


设计代码:

设计模块

0modulefreq_meter (clk,rst_n,wave,freq,duty_cycle);//端口列表

1

2 inputclk;//时钟

3 inputrst_n;//复位

4 inputwave;//被测频率

5 output[25:0]freq;//输出频率

6 output[6:0]duty_cycle; //输出占空比

7

8 reg[25:0]low_cnt;

9 reg[25:0]high_cnt;

10 reg[25:0]low_time;

11 reg[25:0]high_time;

12 regstate;

13

14 localparamhigh_state =1'b0;

15 localparamlow_state =1'b1;

16

17 always@(posedgeclk ornegedgerst_n)

18 begin

19 if(!rst_n)

20 begin

21 low_cnt <=26'd0;

22 high_cnt <=26'd0;

23 low_time <=26'd0;

24 high_time <=26'd0;

25 state <=high_state;

26 end

27 else

28 begin

29 case(state)

30 high_state :begin

31 if(wave ==1'b1)//判断输入为高电平

32 begin

33 high_cnt <=high_cnt +1'b1;

34 state <=high_state;

35 end

36 else

37 begin

38 high_cnt <=26'd0;

39 high_time <=high_cnt;

40 state <=low_state;

41 end

42 end

43

44 low_state :begin

45 if(wave ==1'b0)//判断输入为低电平

46 begin

47 low_cnt <=low_cnt +1'b1;

48 state <=low_state;

49 end

50 else

51 begin

52 low_cnt <=26'd0;

53 low_time <=low_cnt;

54 state <=high_state;

55 end

56 end

57 default:state <=low_state;

58 endcase

59 end

60 end

61

62 assignfreq =1_000_000_000/(low_time *20+high_time *20);//求频率

63 assignduty_cycle =(high_time *100)/(high_time +low_time);//求占空比

64

65endmodule

测试模块

0`timescale1ns/1ps

1modulefreq_meter_tb;

2 regclk;

3 regrst_n;

4 regwave;

5 wire[25:0]freq;

6 wire[6:0]duty_cycle;

7

8 initialbegin

9 clk =1'b1;

10 rst_n =1'b0;

11

12 #200.1

13 rst_n =1'b1;

14 #1_000_000_0//仿真10ms

15 $stop;

16 end

17

18 always#10clk =~clk;

19

20 initialbegin

21 wave =1'b1;

22 foreverbegin//产生占空比为60%,频率为1KHz的方波

23 #600_000

24 wave =1'b0;

25 #400_000

26 wave =1'b1;

27 end

28 end

29

30 freq_meter freq_meter_dut(

31 .clk(clk),

32 .rst_n(rst_n),

33 .wave(wave),

34 .freq(freq),

35 .duty_cycle(duty_cycle)

36 );

37

38endmodule

仿真图:


由于在前面没有测完一个周期出现了不稳定的因素,就出现了不准确的数值,当测试完一个周期以后,测到的数值就比较的准确,基本的没有什么误差。

相对的,如果测试的频率越大,测到的数值就越准确。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21307

    浏览量

    593113
  • 频率计
    +关注

    关注

    8

    文章

    166

    浏览量

    43892
收藏 人收藏

    评论

    相关推荐

    基于FPGA设计频率计方案介绍分享

    off。 2频率计介绍 频率计又称为[频率计数器],是一种专门对被测信号频率进行测量的电子测量仪器。频率计主要由四个部分构成:时基(T)电
    发表于 03-31 16:22

    基于51单片机的智能频率计毕设,C代码,仿真,原理图,论文

    设计要求 (1)以MCS-51系列单片机为控制器件,用C语言进行程序开发,结合外围电子电路,设计一款数字频率计; (2)能够对1HZ~20MHZ正弦波、三角波、方波信号等周期信号的频率进行测量
    发表于 03-18 12:57

    频率计的工作原理

    频率计是电子硬件工程师常常会用到的一个电子仪器。它被用来测量信号周期,频率特征等功能的独立器件,是一种专门对被测信号频率进行测量的测量仪器。 不过很多人应该也知道,示波器也是可以测量频率
    的头像 发表于 11-07 11:30 684次阅读
    <b class='flag-5'>频率计</b>的工作原理

    NE555+单片机频率计测量不到数据是为什么?

    为什么用IAP15F2K61S2在进行NE555频率计测量时,用计数器0计数,定时器1计时时可以正常运行,而当采用定时器0计时,计数器1计数就测量不到数据呢?
    发表于 10-07 06:42

    基于单片机制作数字频率计

    跟我做AVR单片机实验 用单片机做数字频率计
    发表于 09-20 08:11

    53132A频率计数器12位/秒

    安捷伦53132A频率计数器 通用频率计数器,12 位/秒 两个 225 MHz 输入通道,以及高达 12.4 GHz 的可选第三个通道 每秒 12 位,150 ps 时间间隔分辨率 GPIB 标准
    的头像 发表于 07-19 16:15 384次阅读
    53132A<b class='flag-5'>频率计</b>数器12位/秒

    Agilent53220A频率计数器350MHz

    安捷伦Agilent53220A频率计数器 53220A 是 Agilent 的 350 MHz 频率计数器 两个 350 MHz 输入通道,以及可选的第三个通道(6 GHz 或 15 GHz
    的头像 发表于 07-19 15:31 267次阅读
    Agilent53220A<b class='flag-5'>频率计</b>数器350MHz

    53132A频率计数器12位/秒

    安捷伦53132A频率计数器 通用频率计数器,12 位/秒 两个 225 MHz 输入通道,以及高达 12.4 GHz 的可选第三个通道 每秒 12 位,150 ps 时间间隔分辨率 GPIB 标准
    的头像 发表于 07-14 14:28 356次阅读
    53132A<b class='flag-5'>频率计</b>数器12位/秒

    Keysight 53230A频率计数器

    位/秒分辨率,20 皮秒时间间隔分辨率 内置数学分析和颜色、图形显示(趋势和直方图) 用于基本调制域分析的连续、无间隙测量和时间戳 LXI-C/LAN、USB、GPIB 53200 系列射频和通用频率计
    的头像 发表于 07-14 13:44 527次阅读
    Keysight 53230A<b class='flag-5'>频率计</b>数器

    Agilent53220A频率计数器

    安捷伦Agilent53220A频率计数器 53220A 是 Agilent 的 350 MHz 频率计数器 两个 350 MHz 输入通道,以及可选的第三个通道(6 GHz 或 15 GHz
    的头像 发表于 07-14 11:32 360次阅读
    Agilent53220A<b class='flag-5'>频率计</b>数器

    是德安捷伦Agilent53220A频率计数器

    安捷伦Agilent53220A频率计数器 53220A 是 Agilent 的 350 MHz 频率计数器 两个 350 MHz 输入通道,以及可选的第三个通道(6 GHz 或 15 GHz
    发表于 05-30 09:43 160次阅读
    是德安捷伦Agilent53220A<b class='flag-5'>频率计</b>数器

    基于单片机的频率计Proteus仿真程序

    基于单片机的频率计Proteus仿真设计资料
    发表于 05-22 15:31 2次下载

    分享一个简单的模拟频率计电路

     以下简单的模拟频率计电路可用于测量频率,可以是正弦波或方波。要测量的输入频率必须至少为25 mV RMS,以实现最佳检测和测量。
    的头像 发表于 05-18 18:17 1702次阅读
    分享一个简单的模拟<b class='flag-5'>频率计</b>电路

    Multisim中虚拟频率计的使用

    频率计可以测量周期信号的频率、周期和脉冲宽度等参数。本节介绍Multisim的虚拟频率计使用。
    的头像 发表于 05-18 11:21 9047次阅读
    Multisim中虚拟<b class='flag-5'>频率计</b>的使用

    5位频率计数器电路分享

    该数字频率计数器将通过 5 位共阴极显示模块直接读取施加在其输入端的频率
    的头像 发表于 04-29 17:36 1886次阅读
    5位<b class='flag-5'>频率计</b>数器电路分享