概述
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 笔试 & 面试常考代码精选(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复