刚学习FPGA电平边沿检测遇到一个问题,希望高手指点迷津。

先举一个边沿检测例子:regdly0;regdly1;wiredc_clk;always@(posedgeclkornegedgerst)beginif(!rst)beg... 先举一个边沿检测例子:
reg dly0;
reg dly1;
wire dc_clk;
always @(posedge clk or negedge rst)
begin
if(!rst)begin
dly0 <= 1'b0;
dly1 <= 1'b0;
end
else begin
dly0 <= fpga_io;\\fpga_io为待测脉冲
dly1 <= dly0;
end
end
assigndc_clk= dly1 ^ dly0;//fpga_io边沿检测信号

注意dly0为始终为后进信号!!!
我的问题:
else begin
dly0 <= fpga_io;\\fpga_io为待测脉冲
dly1 <= dly0;
end
这几句是顺序执行,那么dly1不就和dly0一直相等了吗?不太明白!!!

————————————————————————
再举一个例子:
有的人这样写,
module posedge_detection (
2 input clk,
3 input rst_n,
4 input i_data_in,
5 output o_rising_edge
6 );
7
8 reg r_data_in0;
9 reg r_data_in1;
10
11 assign o_rising_edge = ~r_data_in0 & r_data_in1;
12
13 always@(posedge clk, negedge rst_n) begin
14 if (!rst_n) begin
15 r_data_in0 <= 0;
16 r_data_in1 <= 0;
17 end
18 else begin
19 r_data_in0 <= r_data_in1;
20 r_data_in1 <= i_data_in;
21 end
22 end
23
24 endmodule

这时候,第18行
18 else begin
19 r_data_in0 <= r_data_in1;
20 r_data_in1 <= i_data_in;
21 end
这时候,顺序执行下来, r_data_in0,与 r_data_in1 可能会不一样,会实现边沿检测。

我个人接受第二个例子,不太理解第一个例子,请高手解释一下,谢谢!!
第二个例子中
18 else begin
19 r_data_in0 <= r_data_in1;
20 r_data_in1 <= i_data_in;
21 end

r_data_in0先进信号
r_data_in1后进信号
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
429433607
2016-08-11 · TA获得超过821个赞
知道小有建树答主
回答量:1402
采纳率:100%
帮助的人:730万
展开全部
这两个例子是一样的,你对代码的理解不正确,那两个条语缺世句是并行执行,不是你理仔亩解的顺序执念扮森行,加我q好友,具体交流,四 二九 四三 三六零七
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式