我自己做了一个小模块,来实现检测输入信号的上升沿的功能。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);
这个我感觉属于比较基本的问题需求啊,大家工作当中应该都有可能会碰到,尤其是ASIC芯片设计的时候,高频时钟比较难得。有人知道能分享出来吗?
我平时是查找上升沿使用延时操作,将你要采上升沿的信号延时一拍,然后对延时前的信号取反,再将取反的信号与延时后的信号相与,如果为1,就认为取到上升沿了
你这个写法根本就是不对的,在FPGA中查找上升沿不能这么搞,要配合时序逻辑,而不是纯组合逻辑。
你好,依你之见,能够做到不使用高频时钟抓取信号的上升沿吗?有没有现成的代码或者电路能做到呢 我的理解类似的逻辑应该是没有问题的,好像fpga属于同步逻辑电路,或者ASIC芯片异步时钟电路能做得到?