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

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

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

A:

一、原理

 

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

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

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

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

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

二、代码实现 


 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部