新闻  |   论坛  |   博客  |   在线研讨会
CMA136 内部寄存器的 SPI 端口
15359029662 | 2023-04-14 16:48:35    阅读:94   发布文章

CMA136 内部寄存器的 SPI 端口

CMA136 3DDE300416 (3).jpg

让我们回到上面提到的善良绅士Pi的故事。Pi 想为他购买的一些硬件构建一个ZipCPU设计。我没有他的硬件副本,但可以肯定的是,继续,复制我的一个设计并将其放置到您的硬件上。上帝保佑,并有一个冒险!

他的硬件需要一个 SDRAM 控制器。我提出了我自己的一个,但警告他:并非所有的 SDRAM 芯片和协议都是相同的。所需的时序可以从一个芯片改变到另一个。内存大小可以更改等。

我不确定他是怎么做到的,但他确实设法让它发挥作用。

后来,我对 ZipCPU做了一些更新。这些更改包括错误修复,因此值得为新的 ZipCPU升级他的设计。问题是,当他升级他的设计时,它停止工作了。他说,你的 CPU 是问题所在。

好吧,如果ZipCPU有错误,那么我想修复它。

也就是说,这让我有点进退两难:这是一位善良的退休绅士。他没钱雇工程师。我花在修复他的错误上的时间永远不会得到报酬,而且当时我的盘子里有要求很高的工作。另一方面, ZipCPU中的错误 会影响我的工作,我会努力让我的 github 存储库正常工作和调试。

所以,我花了一个星期六来调试他的问题。

果然,这不是 ZipCPU中的错误。是的, ZipCPU测试用例不再在他的硬件上运行,但问题不在 ZipCPU 他的问题是由于他复制的 SDRAM 控制器配置错误,然后更改以匹配他的芯片。那是在对 SDRAM 的工作原理了解甚少(如果有的话)的情况下进行的复制和更改。

这是最好的巫术工程:

Voodoo Engineering,Defn: 改变未损坏的,试图修复损坏的。

更糟糕的是,SDRAM RTL 被以一种方式修改,SDRAM 仿真模型 不再匹配。

因此,作为一位好心的老师,我试图指出,如果他的设计在仿真中不起作用,他就没有必要在硬件上运行或调试他的设计。

事实上,我走得更远:我指出他设计的 SDRAM 部分有一个错误。

然而,这不再是我觉得有责任的控制器。是的,它最初是我的控制器,但后来 Pi 对其进行了更改并进行了重大修改。当然,我可以为他调试,但谁会为我的时间买单?这不是我的 SDRAM 控制器中的错误,也不是我的 C++ SDRAM 模型中的错误,也不是ZipCPU中的错误。这是 Pi 更改中的错误。

不用说,Pi 非常沮丧。据我所知,他至今仍深陷 FPGA 地狱。更糟糕的是,他似乎已经放弃了 RTL 设计,而且他肯定已经停止尝试让 ZipCPU他的板上工作。

他的问题有那么难吗?不一定,但您确实必须了解基础知识,包括如何正确调试模拟和从错误(ZipCPU CPU测试不工作)到问题(SDRAM 配置错误)跟踪问题。需要跟踪大量设计才能找到错误。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客