MIPS流水线处理器设计

MIPS流水线处理器设计,mips,vhdl,pipelining,Mips,Vhdl,Pipelining,好的,这个问题更多的是讨论。我有一个项目,在VHDL中实现一个流水线MIPS处理器 我完全熟悉流水线的概念,但从未用VHDL实现过。在VHDL中学习流水线处理器的实现有哪些好的资源 我需要先走一步 有一本大卫·哈里斯和莎拉·哈里斯的书。参见第7章微体系结构。7.5讨论使用MIPS处理器模型的流水线。7.6显示了Verilog和VHDL代码的实现。这是一本教科书,还有第二版,其中来自配套网站的HDL示例是VHDL和SystemVerilog。纵观VHDL代码,似乎没有强调管道寄存器,而是强调构建块

好的,这个问题更多的是讨论。我有一个项目,在
VHDL
中实现一个
流水线
MIPS
处理器

我完全熟悉流水线的概念,但从未用
VHDL
实现过。在
VHDL
中学习
流水线处理器的实现有哪些好的资源

我需要先走一步

有一本大卫·哈里斯和莎拉·哈里斯的书。参见第7章微体系结构。7.5讨论使用MIPS处理器模型的流水线。7.6显示了Verilog和VHDL代码的实现。这是一本教科书,还有第二版,其中来自配套网站的HDL示例是VHDL和SystemVerilog。纵观VHDL代码,似乎没有强调管道寄存器,而是强调构建块。7.5中的数字应该是一个很大的帮助,也可以从配套网站下载

在opencores网站上有,您可以下载R3000兼容内核的VHDL模型(注册后)。管道阶段在mips_cpu.vhdl中很明显,名称前加管道阶段(例如p1_alu_标志)。有测试台用于测试模型及其部件。有关于工具的信息,所以您可以生成在其上运行的软件


乔治亚理工学院的ECE 3055a课程(见2000年,其中4周用于流水线。如果你看,练习是将流水线添加到VHDL中的RTL模型中。显示了第一个阶段。你可以从中得到的是,你可以将流水线添加到行为模型中,这在上面的书中也有暗示。你可以下载(试试看)。此处可以找到引用的指令模拟器:。还提供了对的说明。Google只是提供了有关这方面的全部线索,并且在中描述了MIPS模型。主页。有关与Altera tools一起使用的类中使用的一组文件,请参阅主页。包含VHDL源代码。指令模拟器将在中使用验证。

从绘制所需硬件的图片开始

如果您已经了解VHDL,并且知道一组有限的编码模板,例如逻辑门(and、or、not、xor)、加法器(+)、乘法器(*)、乘法器(think case语句)、状态机和触发器,那么您都已设置好了。请确保了解运算符结果大小调整的特性-请参阅VHDL Math Tricks of the Trade,以获取以下帮助:

接下来对图片进行编码。为硬件图片中的每个部分编写一个过程或任务,并用信号将它们连接在一起

一些人喜欢的一个过程的东西和使用变量只是一种细化。现在就完成你的项目。以后专注于细化和确定你最喜欢的编码风格。即使现在我的编码风格仍在发展。接受它永远不会完美。代码不是艺术。完成和暴力比优雅和仍然调试要好。P.S.变量是可以的。对一些人来说,虽然它们让人更难看到硬件的含义,所以我不建议他们开始使用。如果你觉得它们简单,那么就去做吧——但不要说我现在警告过你

了解合成工具对硬件创建的编码样式非常挑剔
模拟合成每个块,这样你就可以了解模拟和合成中的工作原理-这样,在合成过程中,你就不会有太多的修正。

Hmmm…..这听起来像是一个相当大的任务…首先,你应该确定你对Peter J.a.了解得最多申登书籍《VHDL设计指南》。此外,至少为代码的可合成部分定义一种编码样式,至少使用标识符命名,其中信号的阶段号是信号名称的一部分,例如stall_s3,因此很容易看出表达式是否使用了有效信号。然而,首先,您可能需要检查OpenCores…构建可靠的表达式需要时间CPU从头开始;-)实际上@MortenZdk我对VHDL并不陌生。我用VHDL做了很多简单的项目,但处理器作为一个整体有点令人难以置信。我不知道从哪里开始,有VHDL代码(开源)可用于流水线处理器。我在谷歌上搜索了很多,但找不到任何有用的东西。非常感谢您的帮助:)