Verilog实现上升、下降沿检测 FPGA

这篇具有很好参考价值的文章主要介绍了Verilog实现上升、下降沿检测 FPGA。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Verilog实现上升、下降沿检测

源文件

`timescale 1ns / 1ps

module top(
        input clk,      //时钟信号
        input rst_n,    //复位信号,低电平有效
        input signal    //待检测信号
    );

    wire posedge_get;       //检测到上升沿标志
    wire negedge_get;       //检测到下降沿标志
    reg signal_buff_1;      //输入数据缓冲1
    reg signal_buff_2;      //输入数据缓冲2

    //对输入数据进行两次缓存(打两拍)
    always @(posedge clk or negedge rst_n) begin
        if (rst_n == 0) begin
            signal_buff_1 <= 0;
            signal_buff_2 <= 0;
        end
        else begin
            signal_buff_1 <= signal;
            signal_buff_2 <= signal_buff_1;
        end
    end

    //前一个时钟为低电平,下一个时钟为高电平,说明上升沿到来。
    assign posedge_get = (signal_buff_2 == 0)&&(signal_buff_1 == 1);

    //前一个时钟为高电平,下一个时钟为低电平,说明下降沿到来。
    assign negedge_get = (signal_buff_2 == 1)&&(signal_buff_1 == 0);

endmodule

激励文件

`timescale  1ns / 1ps

module tb_top;

    // 时钟参数
    parameter PERIOD  = 10;

    // 输入参数
    reg   clk                                  = 0 ;
    reg   rst_n                                = 0 ;
    reg   signal                               = 0 ;

    initial begin
        forever
            #(PERIOD/2)  clk=~clk;  //系统时钟
    end

    initial begin
        #(PERIOD*2) rst_n  =  1;    //复位信号
    end

    //例化边沿检测模块
    top  u_top (
             .clk                     ( clk      ),
             .rst_n                   ( rst_n    ),
             .signal                  ( signal   )
         );

    initial begin

        #(PERIOD*2.5) signal=1;     //信号拉高,上升沿到来
        #(PERIOD*4) signal=0;       //信号拉低,下降沿到来
    end

endmodule

仿真波形

Verilog实现上升、下降沿检测 FPGA

释义

代码的含义,已经通过注释讲明,如有不清楚存在疑问的,可以评论留言。

这里解释下,为什么要拍2拍,为什么不只是拍1拍,也就是为什么存在两个signal_buff。

试想一下,当上升沿到来的时候,signal_buff_1为低电平,signal为高电平,可以直接判断出上升沿的到来,没有必要再设置signal_buff_2。可是如果这样判断上升沿,因为signal是不受时间控制的,posedge_get会在时钟高电平或者低电平期间变化。
Verilog实现上升、下降沿检测 FPGA

假如要是signal有噪声,那么posedge_get也将会有噪声。
虽然大部分时候,后续的操作会避免这个异步因素,但是这个异步代码终究是个隐患
这位前辈就是采用打一拍的方式检测上升下降沿。【数字IC手撕代码】Verilog边沿检测电路(上升沿,下降沿,双边沿)|题目|原理|设计|仿真_myhhhhhhhh的博客-CSDN博客_verilog上升沿检测文章来源地址https://www.toymoban.com/news/detail-504950.html

到了这里,关于Verilog实现上升、下降沿检测 FPGA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习过程中测试准确率先上升后下降是为什么?

    很典型的过拟合问题。 在训练过程中的验证准确率前上升,后下降,即在验证集上的表现先好后差。 数据相对模型来说比较简单,即模型的表达能力过剩。在初始训练阶段,模型逐渐开始学习到一些信息,因而在验证集上的表现是提升的,在到达某一点后,模型接着训练则

    2024年02月11日
    浏览(29)
  • ChatGPT帮助提升工作效率和质量:完成时间下降40%,质量评分上升 18%

      自ChatGPT去年11月发布以来,人们就开始使用它来协助工作,热心的用户利用它帮助撰写各种内容,从宣传材料到沟通话术再到调研报告。    两名MIT经济学研究生近日在《科学》杂志上发表的一项新研究表明,ChatGPT可能有助于减少员工之间的写作能力差距。研究发现,它可

    2024年02月11日
    浏览(35)
  • STM32CUBEMX配置 定时器中断 和 上升沿中断(实现检测1s以内的脉冲个数)

    ———————————————————————————————————— ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生。 ⏩最近在开发一个STM32H723ZGT6的板子,使用STM32CUBEMX做了很多驱动,包括ADC、UART、RS485、EEPROM(IIC)、FLASH(SPI)等等。

    2024年02月16日
    浏览(28)
  • 【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位

    前言: 本章内容主要是演示Vivado下利用Verilog语言进行电路设计、仿真、综合和下载 示例:触发器电路    ​ 功能特性: 采用 Xilinx Artix-7 XC7A35T芯片  配置方式:USB-JTAG/SPI Flash 高达100MHz 的内部时钟速度  存储器:2Mbit SRAM   N25Q064A SPI Flash(样图旧款为N25Q032A) 通用IO:Sw

    2024年02月11日
    浏览(28)
  • 北邮22级信通院数电:Verilog-FPGA(9)第九周实验(2)实现下降沿触发的JK触发器(带异步复位和置位功能)

    北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客   目录 ​编辑 一.代码部分 1.1 JK.v 1.2 JK_tb.v 二.仿真结果

    2024年02月05日
    浏览(37)
  • verilog实现1101序列检测

    学习状态机,这是数电部分非常重要的基础知识,现在利用Verilog来实现,并用modelsim进行仿真。 序列检测并非完全等价于状态机,而是状态机重要应用之一。本次实验进行序列检测1101,当这个序列出现时,输出高电位,其他状态都为0。 常见的序列检测有循环检测和非循环检

    2024年02月05日
    浏览(26)
  • 序列检测器的verilog实现

    设计一个序列检测同步时序逻辑电路,要实现的功能如下: 当已有输入码流出现序列 111000或101110时输出检测信号为1 ,否则输出为0。在时序上检测到完整序列的 下一个时钟周期 输出检测结果。输入信号有效为1时表示当前输入有效,否则表示无效。之前输入依旧计入序列中

    2024年02月06日
    浏览(40)
  • 利用Verilog HDL实现序列检测器,附上仿真程序。

    序列检测器的逻辑功能就是将一个指定的比特序列从一串较长的比特流中识别出来。 例如:针对一个较长的比特流010010010011110101010…,我们希望能将比特序列为“10010”的序列检测出来,并且每次检测到10010就将输出置“1”. 注意:如序列”100100100…\\\",根据以上的介绍,会在

    2024年02月06日
    浏览(49)
  • 基于FPGA的信号处理算法,FFT法相差检测verilog实现

    基于FPGA的信号处理算法,FFT法相差检测verilog实现 。 1.硬件平台:altera芯片 2.软件平台:Quartusii 13.1 Verilog 3.实现功能:检测两路正弦波的相位差 基于FPGA的信号处理算法,FFT法相差检测verilog实现 引言 在现代通信系统中,信号处理算法在实时性和精度方面面临着巨大的挑战。

    2024年04月16日
    浏览(45)
  • 15.1_使用Verilog设计:一个简单的状态机设计——序列检测器(可实现重复性检测)

    序列检测器的逻辑功能: 序列检测是将一个指定的序列从数字码流中识别出来。本项目要检测的序列是:10010。 设X是“数字码流的输入”,Z是“检出标记输出”;高电平是“实现指定序列”;低电平是“没有发现指定序列”。码流如下表所示。 由上述码流可知:该序列检测

    2024年01月23日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包