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

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

3天内不再提示

FPGA学习系列:12. 边沿检测设计

FPGA学习交流 来源:互联网 作者:佚名 2018-06-13 11:20 次阅读

设计背景:

在我们工程设计中,有时会需要到上升沿和下降沿这么一个说法,通过上升沿和下降沿来驱动一个电路,那么学习边沿检测就非常的重要了。

设计原理:

在学习边沿检测前我们先学习一下下面的电路,这样方便我们学习,边沿检测。







image.png

这个电路的意思就是,输入一个信号后我们经过一个寄存器,然后把这个寄存器的输出,和下次输出的值取反后相与,那么我们就可以这么想,如果一个高平的值经过这个寄存器后延迟一个上升沿后输出也为高电平,那么当输出的时候会有一个新的电平值,也就是一个电平的到来,然后通过低电平的值取反后和寄存器输出的高电平值得与得到一个高电平的脉冲值,然后对低电平转化为高电平也是一样的道理,这样我们就可以得到时钟上升沿和下降沿的高脉冲,这样就得到了我们设计的目的。

设计架构图:

image.png

设计代码:

设计模块

0moduleedge_jiance(clk,rst_n,signle,nege_dge,pose_dge);

1

2 inputclk;

3 inputrst_n;

4 inputsignle;//输入信号

5

6 outputnege_dge;//输出下降沿的脉冲

7 outputpose_dge;//输出上升沿的脉冲

8

9 reg[1:0]signle_s;

10 always@(posedgeclk ornegedgerst_n)

11 if(!rst_n)

12 begin

13 signle_s <=2'b11;

14 end

15 else

16 begin

17 signle_s[0]<=signle;//把输入信号给一个寄存器

18 signle_s[1]<=signle_s[0];

19 end

20

21 assignpose_dge =signle_s[0]&&~signle_s[1];//取反相与得到上 升沿的高脉冲

22 assignnege_dge =~signle_s[0]&&signle_s[1];//取反相与得到下 降沿的高脉冲

23endmodule

测试模块

0`timescale1ns/1ps

1

2moduleedge_tb();

3

4 regclk;

5 regrst_n;

6 regsignle;

7

8 wirenege_dge;

9 wirepose_dge;

10

11 initialbegin

12 clk =1'b1;

13 rst_n =1'b0;

14 signle <=1'b1;//复位赋值

15

16 #100.1rst_n =1'b1;

17

18 #36signle <=1'b1;//模拟下降沿

19 #36signle <=1'b0;

20

21 #100

22 #36signle <=1'b0;//模拟上升沿

23 #36signle <=1'b1;

24

25 #100

26 $stop;

27 end

28

29 always#10clk =~clk;//产生晶振时钟

30

31 edge_jiance edge_dut(//模块例化

32 .clk(clk),

33 .rst_n(rst_n),

34 .signle(signle),

35 .nege_dge(nege_dge),

36 .pose_dge(pose_dge)

37 );

38endmodule

仿真:

我们模拟的上升沿和下降沿在仿真中可以清楚的看到,然后我们通过边沿检测电路,可以得出我们一个高电平的上升沿,和一个低电平的下降沿。

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

    关注

    1629

    文章

    21729

    浏览量

    603007
收藏 人收藏

    评论

    相关推荐

    FPGA设计经验之边沿检测

    在同步电路设计中,边沿检测是必不可少的!
    发表于 03-01 09:59 5106次阅读

    FPGA设计中的边沿检测问题

    在同步电路设计中,边沿检测是必不可少的!后一种方法所耗的资源要比前一种方法多(一个触发器),但是就可以大大提高可靠性,这绝对是物有所值!!
    发表于 02-01 10:53 978次阅读
    <b class='flag-5'>FPGA</b>设计中的<b class='flag-5'>边沿</b><b class='flag-5'>检测</b>问题

    FPGA设计经验:边沿检测

    在同步电路设计中,边沿检测是必不可少的!
    发表于 08-16 15:19 1910次阅读
    <b class='flag-5'>FPGA</b>设计经验:<b class='flag-5'>边沿</b><b class='flag-5'>检测</b>

    fpga应用篇(二):边沿检测

    `fpga应用篇(二):边沿检测上一篇介绍了阻塞赋值与非阻塞赋值,这次我们利用非阻塞赋值产生一个简单的应用即边沿检测
    发表于 04-06 21:28

    至芯昭哥带你学FPGAFPGA_100天之旅_边沿检测

    至芯昭哥带你学FPGAFPGA_100天之旅_边沿检测
    发表于 08-17 09:46

    FPGA_100天之旅_边沿检测

    FPGA_100天之旅_边沿检测
    发表于 09-28 13:37

    关于FPGA进行外部边沿检测检测不准确问题?

    程序边沿检测下降沿并统计数量(数量到达2后重新计数,并发送动作信号),但是最终发现检测结果不准确,有时候能检测到,有时候检测不到。万分感谢您
    发表于 08-21 12:58

    基于FPGA边沿检测的理解问题?

    我看到网上关于边沿检测的讲解,有个地方不理解,t0时刻和t1时刻分别是怎样的时刻,trigger在时钟上升沿经过触发器输出的信号和经过非门的信号是什么样的关系?我的理解是trigger分别输出后是两个电平相反的信号,为什么相与之后就可以
    发表于 05-10 14:52

    F2产品技术培训_12.模数转换(ADC)

    F2产品技术培训_12.模数转换(ADC)
    发表于 03-15 14:47 2次下载

    边沿检测与提取-轮廓跟踪知识详解

    边沿检测与提取程序
    发表于 01-29 14:56 0次下载

    边沿检测的目的及电路原理分析

    边沿检测电路(edge detection circuit)是个常用的基本电路。所谓边沿检测就是对前一个clock状态和目前clock状态的比较,如果是由0变为1,能够
    的头像 发表于 11-19 07:09 1.1w次阅读

    FPGA学习-边沿检测技术

    边沿采样技术实现上升沿捕获进而实现外部信号的上升沿触发。 边沿检测电路的实现方法; 1、always @ (posedge signal) FPGA不便于处理此类触发信号,除非外部输入
    的头像 发表于 11-26 10:20 1768次阅读

    Verilog边沿检测的基本原理和代码实现

    本文将从Verilog和边沿检测的基本概念入手,介绍Verilog边沿检测的原理和应用代码示例。
    的头像 发表于 05-12 17:05 3946次阅读
    Verilog<b class='flag-5'>边沿</b><b class='flag-5'>检测</b>的基本原理和代码实现

    什么是边沿检测

    1、什么是边沿检测 边沿检测用于检测信号的上升沿或下降沿,通常用于使能信号的捕捉等场景。 2、采用1级触发器的
    的头像 发表于 06-17 14:26 2545次阅读
    什么是<b class='flag-5'>边沿</b><b class='flag-5'>检测</b>

    Verilog实现边沿检测的原理

    边沿检测大致分为:上升沿检测,下降沿检测和,双沿检测。原理都是通过比输入信号快很多的时钟去采集信号,当出现两个连续的采集值不等的时候就是
    的头像 发表于 06-28 15:19 3138次阅读
    Verilog实现<b class='flag-5'>边沿</b><b class='flag-5'>检测</b>的原理