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

    文章

    72

    浏览量

    8815
  • 低电平
    +关注

    关注

    1

    文章

    115

    浏览量

    13278
  • 高电平
    +关注

    关注

    6

    文章

    149

    浏览量

    21386

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

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

收藏 人收藏

    评论

    相关推荐

    如何设计参数化的数据选择器

    FPGA设计中,大部分情况下我们都得使用到数据选择器。并且为了设计参数化,可调,通常情况下我们需要参数可调的
    的头像 发表于 11-20 10:27 1148次阅读
    如何设计<b class='flag-5'>一</b><b class='flag-5'>个</b>参数化的<b class='flag-5'>数据</b><b class='flag-5'>选择器</b>

    至芯科技之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

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

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

    设计1位的多路选择器及其VHDL描述

    本文首先介绍了多路选择器真值表,其次介绍了1位
    的头像 发表于 04-27 09:52 3.1w次阅读
    设计<b class='flag-5'>一</b><b class='flag-5'>个</b>1位的<b class='flag-5'>二</b><b class='flag-5'>选</b><b class='flag-5'>一</b>多路<b class='flag-5'>选择器</b>及其VHDL描述

    eda四多路选择器的设计

    本文开始对多路选择器进行了详细介绍,其中包括了多路选择器功能、典型芯片及应用,另外还详细介绍了eda四多路选择器的设计思路与程序。
    发表于 04-27 10:13 3.4w次阅读
    eda四<b class='flag-5'>选</b><b class='flag-5'>一</b>多路<b class='flag-5'>选择器</b>的设计

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

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

    74LS153利用双四一数据选择器实现全加器的电路图资料免费下载

    本文档的主要内容详细介绍的是74LS153利用双四一数据选择器实现全加器的电路图资料免费下载。
    发表于 11-26 08:00 582次下载
    74LS153利用双四<b class='flag-5'>选</b><b class='flag-5'>一数据</b><b class='flag-5'>选择器</b>实现全加器的电路图资料免费下载

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

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