设为首页 加入收藏

TOP

FGPA异步信号问题
2019-08-24 00:03:15 】 浏览:53
Tags:FGPA 异步 信号 问题

FPGA在处理异步信号时,尽量打1~2拍寄存器,否则在线调试会发现各种奇怪问题。


下面是verilog代码

在线调试发现,计数器在跳变

原因是cmd_start由ARM输出,与FPGA时钟异步,需要打1~2拍寄存器

reg [5:0] cmdcnt;
reg fl_cmd_start;
reg cmd_start_0,cmd_start_1;
//-----------------------cmd_start滤波------------------//(ARM输出持续580ns的脉冲)
//cmd_start为异步信号,这里打两拍寄存器(ARM与FPGA时钟异步)
always @(posedge clk_50m) begin
        cmd_start_0 <= cmd_start;
        cmd_start_1 <= cmd_start_0;
end

always@(posedge clk_50m or negedge rst_n)
begin
    if(!rst_n) begin
        cmdcnt <= 6'd0;
        fl_cmd_start <= 0;
    end else begin
        if(cmd_start_1) begin
            if(cmdcnt==6'd24) fl_cmd_start <= 1'b1;
            cmdcnt <= cmdcnt + 1'b1;
        end else begin
            cmdcnt <= 6'd0;
            fl_cmd_start <= 0;
        end
    end
end

这样修改后不会出现计数异常跳变

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【实战经验】--Xilinx--IPCore--F.. 下一篇cache verilog实现

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目