由一个小小错误导致FPGA上各种奇怪问题

博客讲述了在FPGA设计中,经过iverilog验证没有问题,但在下载到开发板后出现赋值不等和内存数据变化的奇怪现象。作者深入排查,最终发现是由于创建时钟命令的语法错误——`create_clock`命令中`sysclk`和`period20`之间缺少空格导致。修复这个简单的警告后,所有问题迎刃而解,程序运行恢复正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

经过iverilog验证过设计,生成bitstream下载到FPGA开发板上后出现了各种各样奇怪的问题:

  1. assign 的值并不完全相等。

在这里插入图片描述
2. 存入dmem的值,在取出来的时候就不相等了。将0x4000e9c(函数返回地址)存入地址0x3f3c,在几个时钟周期后取出时,则变成了0x4000e90,这错误的返回地址就导致了程序会跑飞。
在这里插入图片描述

原因

最初以为这些问题是由于设计上的缺陷,或者由于使用了错误的变量类型和verilog语法,经过排查问题依旧。

最后无意发现了如下这条warning信息:
在这里插入图片描述在这里插入图片描述
create_clock -name sysclk-period 20 [get_ports clk]

此时真相大白,原来是因为在定义clock时sysclk和-period 20中间少了一个空格…,修改后则一切表现正常。

create_clock -name sysclk -period 20 [get_ports clk]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值