"); //-->
HESG440355R3 内核发出写地址和写数据
我提出这一切来开始另一个故事。
让我们回到上面提到的善良绅士Pi的故事。Pi 想为他购买的一些硬件构建一个ZipCPU设计。我没有他的硬件副本,但可以肯定的是,继续,复制我的一个设计并将其放置到您的硬件上。上帝保佑,并有一个冒险!
他的硬件需要一个 SDRAM 控制器。我提出了我自己的一个,但警告他:并非所有的 SDRAM 芯片和协议都是相同的。所需的时序可以从一个芯片改变到另一个。内存大小可以更改等。
我不确定他是怎么做到的,但他确实设法让它发挥作用。
后来,我对 ZipCPU做了一些更新。这些更改包括错误修复,因此值得为新的 ZipCPU升级他的设计。问题是,当他升级他的设计时,它停止工作了。他说,你的 CPU 是问题所在。
好吧,如果ZipCPU有错误,那么我想修复它。
也就是说,这让我有点进退两难:这是一位善良的退休绅士。他没钱雇工程师。我花在修复他的错误上的时间永远不会得到报酬,而且当时我的盘子里有要求很高的工作。另一方面, ZipCPU中的错误 会影响我的工作,我会努力让我的 github 存储库正常工作和调试。
所以,我花了一个星期六来调试他的问题。
果然,这不是 ZipCPU中的错误。是的, ZipCPU测试用例不再在他的硬件上运行,但问题不在 ZipCPU 中。他的问题是由于他复制的 SDRAM 控制器配置错误,然后更改以匹配他的芯片。那是在对 SDRAM 的工作原理了解甚少(如果有的话)的情况下进行的复制和更改。
这是最好的巫术工程:
Voodoo Engineering,Defn: 改变未损坏的,试图修复损坏的。
更糟糕的是,SDRAM RTL 被以一种方式修改,SDRAM 仿真模型 不再匹配。
因此,作为一位好心的老师,我试图指出,如果他的设计在仿真中不起作用,他就没有必要在硬件上运行或调试他的设计。
事实上,我走得更远:我指出他设计的 SDRAM 部分有一个错误。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。