【问题标题】:Project on MIPS pipelined processorMIPS流水线处理器项目
【发布时间】:2013-07-10 02:43:24
【问题描述】:

好吧,这个问题更像是一个讨论。我有这个在 VHDL 中实现 pipelined MIPS 处理器的项目。

我完全熟悉流水线的概念,但我从未使用 VHDL 实现它。在VHDL 中学习pipelined processors 的实现有哪些好的资源。

我需要抢先一步?

【问题讨论】:

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

标签: mips vhdl pipelining


【解决方案1】:

David Harris 和 Sarah Harris 有一本书Digital Design and Computer Architecture。请参阅第 7 章微架构。 7.5 讨论了使用 MIPS 处理器模型的流水线。 7.6 显示了 Verilog 和 VHDL 代码的实现。这是一本教科书,还有第二版,其中来自配套网站的 HDL 示例显然是 VHDL 和 SystemVerilog。纵观 VHDL 代码,似乎并没有强调流水线寄存器,而是强调构建块。 7.5中的图应该有很大帮助,也可以从配套站点下载。

在 opencores 网站上有 Ion - MIPS(tm) compatible CPU :: Overview,您可以在其中下载 R3000 兼容内核的 VHDL 模型(注册后)。管道阶段在 mips_cpu.vhdl 中很明显,名称前面是它们的管道阶段(例如 p1_alu_flags)。有用于练习模型及其部件的测试台。有关于工具的信息,因此您可以生成在其上运行的软件。

GeorgiaTech 的 ECE 3055a 课程(请参阅 2000 年的 EE 3055 Outline,其中 4 周专门用于流水线处理。如果您查看 Lab-2 Help,练习是在 VHDL 中将流水线添加到 RTL 模型中。显示了第一阶段. 你可以从中得到的是,你可以在行为模型中添加流水线,也可以在上面的书中提到。你可以下载 VHDL Synthesis Models(试试 MIPSSYN.TAR)。可以找到参考的指令模拟器这里:Index of ftp://ftp.cs.wisc.edu/pub/spim/Laboratory Assignment 2 的描述也是可用的。谷歌只是充满了这方面的线索,MIPS 模型在A VHDL Synthesis Model of the MIPS Processor for use in Computer Architecture Laboratories 中描述。主页ECE 3055 Computer Architecture and Operating Systems J. Hamblen。见主页@ 987654332@ 用于与 Altera 工具一起使用的类中的一组文件。包含 VHDL 源代码。指令模拟器将用于验证。

【讨论】:

  • 非常感谢您的帮助:)
【解决方案2】:

首先绘制您想要的硬件的图片。

如果您已经了解 VHDL 并且知道一组有限的编码模板,例如逻辑门(与、或、非、异或)、加法器 (+)、乘法器 (*)、多路复用器(想想 case 语句)、状态机和触发器你都准备好了。确保了解运算符结果大小的特殊性 - 请参阅 VHDL Math Tricks of the Trade 以获取帮助:http://www.synthworks.com/papers

接下来为您的图片编码。为硬件图中的每个部分编写一个过程或分配,并将它们与信号连接在一起。

一个过程的东西和使用一些人喜欢的变量只是一种改进。立即完成您的项目。稍后专注于细化和确定您最喜欢的编码风格。即使是现在,我的编码风格仍在不断发展。接受它永远不会完美。代码不是艺术。完成和蛮力比优雅和仍在调试要好。附言变量很好。对于某些人来说,尽管它们使了解硬件影响变得更加困难,所以我不建议您开始使用它们。如果你觉得它们很容易,那就去做吧——但不要说我现在警告过你。

了解合成工具对硬件创建的编码风格很挑剔。所以 simulatesynthesize 每个块,以便您了解模拟和 synthesis 中的工作原理 - 这样最终您就没有很多东西了合成过程中的修正。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-19
    • 2011-08-17
    • 2013-09-08
    • 2014-12-17
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多