0

FPGA vivado实现后的功能不符合预期

我自己做了一个小模块,来实现检测输入信号的上升沿的功能。VCS和vivado synthesis post timing仿真运行都符合预期,但是生成的bit文件下载到fpga则不对。fpga平台是avnet的ultra96,使用的是zynq ultrascale芯片。verilog代码如下:

`timescale 1ns/10ps

module find_risedge(input data, output data_r);

reg data_r = 1'b0;

always @(posedge data or posedge data_r) begin

 if(data_r)

  data_r <= #32 0;

 else if (data) 

  data_r <= 1;

end

endmodule

//调用module的代码如下:

find_risedge uut_clk_risedge(clk_13p56m, clk_13p56m_re);
find_risedge uut_data_risedge(data_rx_change, data_rx_change_re);

11.png

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除
chummyhe 头像

评论

你这基础知识需要补补,写法上有问题

天竺 头像天竺 ( 2021-10-19 09:58:36 +0800 )编辑
0

你这个写法根本就是不对的,在FPGA中查找上升沿不能这么搞,要配合时序逻辑,而不是纯组合逻辑。

编辑 标为违禁 删除 链接 更多选项...
popomao 头像

评论

你好,依你之见,能够做到不使用高频时钟抓取信号的上升沿吗?有没有现成的代码或者电路能做到呢 我的理解类似的逻辑应该是没有问题的,好像fpga属于同步逻辑电路,或者ASIC芯片异步时钟电路能做得到?

chummyhe 头像chummyhe ( 2021-10-17 17:43:06 +0800 )编辑
0

这个我感觉属于比较基本的问题需求啊,大家工作当中应该都有可能会碰到,尤其是ASIC芯片设计的时候,高频时钟比较难得。有人知道能分享出来吗?

编辑 标为违禁 删除 链接 更多选项...
chummyhe 头像

评论

我平时是查找上升沿使用延时操作,将你要采上升沿的信号延时一拍,然后对延时前的信号取反,再将取反的信号与延时后的信号相与,如果为1,就认为取到上升沿了

天外的枫 头像天外的枫 ( 2021-11-05 11:43:01 +0800 )编辑
登录/注册后进行回答