当前位置: 首页 > news >正文

卫浴网站设计网站设计精美案例

卫浴网站设计,网站设计精美案例,个人网站建设域名,王烨烨短脉冲计数 现有如下要求:时钟clk为20MHz,但是有一个pulse脉冲信号(脉宽最小为5ns),如何设计Verilog代码,可以计算脉冲的个数。当脉冲信号(pulse)的最小脉宽(5ns&#xf…

短脉冲计数

现有如下要求:时钟clk为20MHz,但是有一个pulse脉冲信号(脉宽最小为5ns),如何设计Verilog代码,可以计算脉冲的个数。


当脉冲信号(pulse)的最小脉宽(5ns)小于时钟周期时,直接使用时钟采样可能会导致脉冲被遗漏,因为脉冲可能出现在时钟边沿之间,无法被采样到。为了解决这个问题,需要设计一个可靠的脉冲计数电路,使用异步捕捉和同步处理机制。

设计思路:

设计思路

  1. 异步捕捉:通过一个异步置位的寄存器(captured)实现。当脉冲的上升沿发生时,立即设置该寄存器为高电平,无论时钟状态如何。
  2. 同步处理:捕捉到的异步信号需要同步到时钟域,以避免亚稳态问题。使用两级触发器同步器(双触发器同步)来处理异步信号。
  3. 边沿检测与计数:同步后的信号通过边沿检测(检测上升沿)来生成一个时钟周期的使能信号,用于增加计数器。这确保每个脉冲只被计数一次。
  4. 清除机制:计数后,需要清除异步捕捉标志,以便捕捉新的脉冲。这通过生成一个同步清除信号(clear)实现,该信号异步清除捕捉标志。

代码:

`timescale 1ns/1nsmodule test (input       clk         ,       input       rst_n       ,     input       pulse       ,   // 脉冲信号,最小脉宽5nsoutput reg [7:0] count      // 脉冲计数器
);//当脉冲上升沿时异步置位,当清除信号或复位时异步清除
reg captured;
wire clear; // 清除信号,用于清除captured//捕捉逻辑:敏感于pulse的上升沿、clear的上升沿
always @(posedge pulse or posedge clear or negedge rst_n) beginif (!rst_n) begincaptured <= 1'b0; // 复位时清除end else if (clear) begincaptured <= 1'b0; // 清除信号有效时清除end else begincaptured <= 1'b1; // 脉冲上升沿时置位end
end//同步
reg captured_sync1, captured_sync2,captured_sync3;always @(posedge clk or negedge rst_n) beginif (!rst_n) begincaptured_sync1 <= 1'b0;captured_sync2 <= 1'b0;captured_sync3 <= 1'b0;end else begincaptured_sync1 <= captured;   // 第一级同步captured_sync2 <= captured_sync1; // 第二级同步captured_sync3 <= captured_sync2;end
end//边沿检测与计数逻辑
wire capture_pos; 
assign capture_pos = captured_sync2 & !captured_sync3;always @(posedge clk or negedge rst_n) beginif(!rst_n) count <= 8'b0;else if(capture_pos)count <= count + 1'b1;else  count <= count;
end// 生成清除信号
assign clear = capture_pos;endmodule

TB:

`timescale 1ns / 1psmodule sim();reg clk    ;
reg rst_n       ;
reg pulse     ;wire [7:0] count    ;initial clk = 1;
always #25 clk <= ~clk; //20MHZtest u_test(.clk        (clk        ), .rst_n      (rst_n      ),.pulse      (pulse      ),.count      (count   ));initial beginrst_n = 0;pulse = 0;#200;rst_n = 1;#100;pulse = 1;#10;pulse = 0;#200;pulse = 1;#100;pulse = 0;#400;pulse = 1;#5;pulse = 0;#321;pulse = 1;#30;pulse = 0;end
endmodule

仿真结果:
在这里插入图片描述

http://www.dtcms.com/a/416384.html

相关文章:

  • 第十六届蓝桥杯软件赛B组省赛C++题解(京津冀)
  • 网站关键词分析工具攻略类型网站如何做产品营销
  • 建设大型视频网站需要的资金量安防公司网站模板
  • 住房城乡建设部招投标网站网站被人做跳转
  • 无忧网站建设哪家好建立英语
  • Visio2021绘图基本操作步骤及方法
  • 基于多站点的网站内容管理平台的管理与应用应用商场安全下载安装
  • SpaceX的Raptor发动机详细介绍
  • 厦门做网站多少软件开发项目预算表
  • 陕西建设网网站集群装修公司加盟哪家最好
  • 网站排名的重要性网站对联广告代码
  • 上海网站建设开发制作wordpress仿导航大全
  • wordpress电影站开发php与网站建设
  • 外贸网站开发公司wordpress输入密码无法登陆
  • 上海网站建设 中华企业录wordpress 原创主题
  • 论坛网站方案wordpress即阅文教程
  • 常用压力单位kPa、MPa、psi、bar和公斤之间的换算关系
  • 青海省住房城乡建设厅网站首页服务器创建网站
  • Matplotlib三层结构全解析
  • 国外的电商网站有哪些方面wordpress 首页文件
  • sadasddasads
  • 温州公司做网站公司网页制作设计
  • 昆山做网站的jofuns门户网站开发难点
  • Python 数学公式构建海洋不明生物(好像是水母)动画 - 波浪起伏效果
  • 做毕业设计个人网站任务书购物网站名字
  • 青岛网站建设公司正uc酷站中的美图网站
  • 基于netty建立webSocket连接
  • 网站生成app客户端wordpress版权代码
  • 深圳住房和建设局网站故障做一个电商网站需要多少钱
  • 佛山网站建设策划一个网站怎么做镜像站