1

我正在考虑在 VHDL 中实现 16 位 CPU。一个简单的 CPU。ADD、MULS、NEG、BitShift、JUMP、Relitive Jump、BREQ、Relitive BREQ,我不知道这些方面的内容> 可能都只使用 16 位操作数。我什至可以减少它,只使用一个操作数和一个累加器。使用一些状态寄存器,进位,零,负(除非我使用累加器),

我知道如何设计逻辑门的所有部分,并计划从第一原则构建它们,所以对于我的 ALU,我需要“构建”一个 ADDer,可能是一个进位预测,组加法器,这个加法器它自己是由几个部分组成的,它们本身是由几个部分组成的。

无论如何,我的问题不在于 CPU 设计,也不是 VHDL(我或多或少懂语言)。这就是我应该让事情井井有条的方式。我应该如何使用包,我应该如何命名我的进程和端口映射?(我从未见过命名端口映射或进程的好处)

4

2 回答 2

2

无论您做什么,请务必阅读 Jiri Gaisler 关于结构化 VHDL 设计方法的主要著作。

http://www.gaisler.com/doc/vhdl2proc.pdf http://www.gaisler.com/doc/structdes.pdf

你会很高兴你做到了。

于 2010-12-14T18:31:14.220 回答
0

看看一些现有的例子不会有什么坏处。在您谈论的级别(命名约定等)上,我在硬件设计方面从未真正在软件设计方面做过很多不同的事情。

顺便说一句,我通常建议不要做你自己的加法器之类的事情,除非它是因为它是家庭作业而需要的东西,或者类似的东西。使用 FPGA 和(在较小程度上)ASIC,您在设备中有一个现有的硬件“库”,因此A <= B + c在 FPGA 或手的情况下,通常会使用已经内置在设备中的加法器电路- 在 ASIC 的情况下优化硬宏。

编写自己的代码需要相当多的额外工作,而且几乎总是会产生更糟糕的结果。在 ASIC 的情况下,情况会更糟一些;在 FPGA 的情况下,它通常会更糟。

编辑:我还应该注意,一个简单的 CPU 并不真正符合大规模设计的条件,至少 IMO 是这样。也许是因为我的软件背景,但我一直觉得 CPU 设计相当简单。仅举一个例子,有一次我做了一个 DRAM 控制器,这对我来说似乎需要做更多的工作。我不记得源代码行数之类的东西,但根据内存,我会说它更大(可能是 2x 之类的东西)。当然,这也取决于您决定的 CPU 的简单程度......

于 2010-05-23T05:47:55.967 回答