我是靠谱客的博主 平淡手链,最近开发中收集的这篇文章主要介绍Verilog HDL 笔试 & 面试常考代码精选(一),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Q:用Verilog HDL实现1bit信号边沿检测功能,输出一个周期宽度的脉冲信号。

这里是微信公众号的链接:Verilog笔面试常考代码精选10题

A:

一、原理

 

脉冲边沿的特性:两侧电平发生了变化,如上图所示一个脉冲,既有上升沿还有下降沿。

如果检测的是下降沿,也就是按键检测,应该是从高电平变低电平。

思路:设计两个或多个一位的寄存器,用来接收被检测的信号,系统时钟来一次记一次输入信号,如果用了两个寄存器直接异或就可以了。

如果不为0,则发生了边沿,再拼接,拼接顺序假定是{先进reg,后进reg},则若先进reg=1,后进位0,则是下降沿,即{先进reg,后进reg}=2’b10。

同理相反{先进reg,后进reg}=2’b01,则为上升沿。如果用了多个寄存器则可以更好地检测,防止干扰脉冲

二、代码实现 


 

module Edge_Detect(
   input       clk,
   input       rst_n,
   input       data,
   output      pos_edge,    // 上升沿
   output      neg_edge,    // 下降沿
   output      data_edge    // 上升沿或下降沿
   );

reg     [1:0]   data_r;
always @(posedge clk or negedge rst_n)begin
   if(rst_n == 1'b0)begin
       data_r <= 2'b00;
   end
   else begin
       data_r <= {data_r[0], data};
   end
end

assign  pos_edge = ~data_r[1] & data_r[0];
assign  neg_edge = data_r[1] & ~data_r[0];
assign  data_edge = pos_edge | neg_edge;

endmodule

 

最后

以上就是平淡手链为你收集整理的Verilog HDL 笔试 & 面试常考代码精选(一)的全部内容,希望文章能够帮你解决Verilog HDL 笔试 & 面试常考代码精选(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部