FPGA仿真与上板实测不一致可能的一点问题

请看下面两段代码:

module PC(
    input PCwr,clk,rst,Z,
    input [31:0] NPC,
    output reg [31:0] PC
    );

    always @(posedge clk) begin
        if(!rst)
        begin
          PC <= 32'h0000_0000;
        end
        else begin
            if(PCwr&Z)
            begin
                PC <= NPC;
            end
            else begin
                PC <= PC;
            end
            //$display(PC);
        end
    end
endmodule

module PC(
    input PCwr,clk,rst,Z,
    input [31:0] NPC,
    output reg [31:0] PC
    );

    always @(posedge clk) begin
        if(!rst)
        begin
          PC <= 32'h0000_0000;
        end
        else begin
            if(PCwr*Z)
            begin
                PC <= NPC;
            end
            else begin
                PC <= PC;
            end
            //$display(PC);
        end
    end
endmodule

这两段代码在仿真时都可以通过,但上板后却出现不同的效果。

第一段是正确的,使用位运算在进行条件判断;第二段在仿真时可以正常运行,但在板上却没办法给PC赋成新的值,所以在写verilog的时候还是尽量使用位运算,上板子不容易出现这种错误,明明逻辑正确但无法得到预期结果。

可能的原因是*会调用乘法器,导致延迟的发生。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA 上板调试过程中,可能会遇到一些常见的问题。以下是一些可能出现的情况和解决方法: 1. 时钟问题:确保时钟信号正确连接并运行正常。检查时钟频率是否符合设计要求,以及时钟的相位和稳定性是否满足需求。 2. 电源问题:检查电源电压是否稳定,并确保各个电源引正确连接。如果有多个电源区域,确保它们之间的电源接地连接良好。 3. 引映射问题:验证 FPGA映射是否正确,确保每个信号都被正确连接到目标引。 4. 逻辑问题:排查设计中的逻辑错误或时序问题。可以通过仿真和波形分析来检查逻辑是否按预期工作。 5. 通信接口问题:如果设计中包含通信接口(如 UART、SPI、I2C 等),确保接口配置正确,并进行适当的通信协议验证。 6. 时序约束问题:检查时序约束是否正确设置,确保时序满足设计要求。可以使用时序分析工具来验证时序关系。 7. 电磁干扰问题:注意可能存在的电磁干扰源,例如时钟干扰、信号串扰等。合理布局和屏蔽可以帮助减少干扰问题。 8. 硬件连接问题:检查硬件连接是否正确,包括电源线、信号线、地线等。确保没有松动连接或短路等问题。 9. 资源利用问题:确保设计中使用的资源(如逻辑单元、存储器、DSP 等)没有超过 FPGA 的容量限制。 如果遇到问题,可以逐步排查并分析,使用调试工具和仪器进行验证。同时,参考官方文档、论坛和社区资源也是解决问题的好途径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值