我正在考虑用VHDL实现一个16位的CPU。一个简单的CPU。ADD,MULS,NEG,BitShift,JUMP,相对跳转,BREQ,lines>,我不知道这些lines>可能都只处理16位操作数。我甚至可能会减少它,只使用一个操作数和一个累加器。使用一些状态寄存器,进位,零,负(除非我使用累加器),
我知道如何设计逻辑门的所有部分,并计划从第一原则开始构建它们,所以对于我的算术逻辑单元,我需要‘构建’一个ADDer,可以证明是一个进位前视,群加法器,这个加法器本身是由几个部分组成的,而这些部分本身是由几个部分组成的。
无论如何,我的问题不是CPU设计,也不是VHDL (我或多或少懂这种语言)。这就是我应该如何组织事情。我应该如何使用包,我应该如何命名我的进程和端口映射?(我从未见过命名端口映射或进程的好处)
发布于 2010-05-23 13:47:56
看看现有的一些examples不会有什么坏处。在你所说的层次上(命名约定等等),我在硬件设计和软件设计上从来没有做过太多不同的事情。
顺便说一句,我通常建议不要做像你自己的加法器之类的事情,除非这是因为它是家庭作业或类似的东西而必须做的事情。有了现场可编程门阵列和(程度较小的)专用集成电路,你在设备中就有了一个现有的硬件“库”,所以像A <= B + c这样的东西通常会使用已经内置在设备中的加法器电路,或者在专用集成电路的情况下使用手工优化的硬宏。
编写自己的代码将需要大量的额外工作,而且几乎总是会产生更糟糕的结果。在ASIC的情况下,情况会更糟;在FPGA的情况下,情况通常会更糟。
编辑:我还应该注意到,一个简单的CPU并不能真正成为一个大规模的设计,至少是IMO。也许这是由于我的软件背景,但我总是发现CPU设计相当简单。举个例子,有一次我做了一个DRAM控制器,这对我来说似乎是更多的工作。我不记得源代码行数之类的东西了,但基于内存,我会说它更大(可能是2倍)。当然,这取决于你决定的CPU到底有多简单……
发布于 2010-12-15 02:31:14
无论你做什么,一定要读一读Jiri Gaisler关于结构化VHDL设计方法的杰作。
http://www.gaisler.com/doc/vhdl2proc.pdf http://www.gaisler.com/doc/structdes.pdf
你会很高兴你这么做了。
https://stackoverflow.com/questions/2890690
复制相似问题