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

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

3天内不再提示

FPGA学习系列:33. 设计一个简单的二选一数据选择器

电子工程师 来源:未知 作者:王淳 2018-09-21 10:24 次阅读

设计背景:

频率计又称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器。频率计主要由四个部分构成:时基(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);

设计架构图:

设计代码:

设计模块

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

仿真图:

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

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


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

    关注

    2

    文章

    70

    浏览量

    8733
  • 低电平
    +关注

    关注

    1

    文章

    76

    浏览量

    13086
  • 高电平
    +关注

    关注

    6

    文章

    101

    浏览量

    20951

原文标题:FPGA学习系列:33. 频率计的设计

文章出处:【微信号:FPGAer_Club,微信公众号:FPGAer俱乐部】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    数据选择器(MUX,Multiplexer)

    数据选择器(MUX,Multiplexer)1.  数据选择器的构成2.  数据选择
    发表于 10-20 09:42

    数据选择器

    ,往往要求将并行输出的数据转换成串行输出,用数据选择器很容易完成这种转换。例如将四位的并行数据送到四
    发表于 05-30 17:38

    关于数据选择器的问题。

    我给41数据选择器的输入端C3 C2 C1 C0分别输入 4V 3V 2V 1V的电压,选择端给1V和0.1V的电压,按理说根据数据
    发表于 12-10 10:52

    至芯科技之altera 系列FPGA教程 第九篇 多路选择器的设计

    至芯科技之altera 系列FPGA教程 第九篇 多路选择器的设计
    发表于 08-11 03:25

    至芯科技之altera 系列FPGA教程 第十篇 多路选择器激励的设计

    至芯科技之altera 系列FPGA教程 第十篇 多路选择器激励的设计
    发表于 08-11 03:27

    FPGA_100天之旅_第三天,一数据选择器

    FPGA_100天之旅_第三天,一数据选择器
    发表于 08-04 09:44

    种八一数据选择器贴片式芯片

    请问有没有种八一数据选择器(或者 多路复用器多路分离 多路分配器)要求 1、数据流方向可以
    发表于 12-01 17:39

    请问有单个一数据选择器的芯片吗?

    请问有单个一数据选择器的芯片吗?我现在找到的都是四二的,用起来比较浪费
    发表于 06-20 23:20

    【梦翼师兄今日分享】 一数据选择器的设计

    :mlajsw96)写在前面的话数据选择器在数字电路设计中的应用尤为广泛。同时,作为基础的电路功能单元,也比较适合作为初学者的入门实验。现在梦翼师兄陪大家起来设计
    发表于 12-13 16:43

    EDA四多路选择器的设计

    解给定函数为3变量函数,由于4路选择器具有2选择控制变量,所以用来实现3变量函数功能时,应该首先从函数的3
    发表于 04-12 09:17

    41多路选择器是什么?

    Verilog数字系统设计三简单组合逻辑实验2文章目录Verilog数字系统设计三前言、41多路选择器是什么?、编程1.要求:2.al
    发表于 02-09 06:00

    使用case语句设计实现自定义数据位宽的41数据选择器

    1、数据选择器的基础实验设计与实现数据选择器又称多路转换或称多路开关,其功能是根据地址码的不同,从多个输入
    发表于 07-04 16:09

    基于FPGA的多路选择器设计(附代码)

    开关。 · 多路选择器 多路
    发表于 03-01 17:10

    FPGA学习系列:二选一数据选择器的设计

    常重要,在 FPGA内部的逻辑实现中都是通过数据选择器实现的, 数据选择器的应用使我们的代码和设计更加人性化,多元化。 设计原理 : 本次的
    的头像 发表于 05-31 11:40 3w次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>学习</b><b class='flag-5'>系列</b>:二选<b class='flag-5'>一数据</b><b class='flag-5'>选择器</b>的设计

    二选一数据选择器的系统设计框架图分析

    数据选择器是指经过选择,把多个通道的数据传送到唯一的公共数据通道上去,实现数据
    的头像 发表于 11-20 07:10 1.2w次阅读