使用VHDL开发MIPS处理器 - 任何好的教程?

时间:2011-11-17 04:51:07

标签: mips vhdl

我对VHDL的最佳做法感到困惑 - 比如何时使用integerreal或信号或std_logic_vector。我是一个计算机组织类,我们使用Quartus中的大部分框图实现它,只需要一点VHDL。问题是,我们整个项目只是分散且容易出错,而且到目前为止一直很痛苦。

我认为它在VHDL中会更有意义,而且我已经编写了一些组件,但我们在课堂上没有学到很多VHDL,谷歌也没有提供很多好的教程。我也搜索了VHDL MIPS处理器实现/教程,但无济于事。

这是一个模糊的问题,但我只需要朝着正确的方向努力。我现在可以问三个问题:

  1. 如何在VHDL中连接所有组件(注册文件,apu,内存......)?
  2. 我何时使用integer / real / std_logic?
  3. 我看到一些VHDL代码在输出值之前指定了延迟。我应该在MIPS数据路径中何时执行此操作?
  4. 编辑:除了已经给出的答案外,我还想推荐http://www.fpga.com.cn/hdl/training/Vhdl_Golden_Reference_Guide.pdf,它可以很好地解释一切。如果没有该教程,我将不得不购买一本书,因为通过阅读一些代码将语言拼凑在一起是行不通的。

3 个答案:

答案 0 :(得分:3)

I also googled for VHDL MIPS processor implementations/tutorials, but to no avail

在公共领域用VHDL编写了不少MIPS内核。你可以看看它们来获得一些想法......

我在几个项目中成功使用了第一个。

答案 1 :(得分:2)

  

我对VHDL的最佳实践感到困惑 - 比如何时使用   integerrealsignalstd_logic_vector

你无法使用real进行综合(即,不能用于真正芯片中的任何内容)

当您需要对值进行算术运算时,请使用integersignedunsigned。仅在需要可以高阻抗的端口引脚时才使用std_logic[_vector]。在内部需要单个位或“包位”时使用std_ulogic[_vector]。 std_ulogic的优点是只有一件事可以根据定义驱动信号,所以如果你弄得一团糟并从两个地方驱动它,编译器就会告诉你。否则,您在波形查看器上有一个充满X s的模拟,并且不知道它们来自何处。

signal用于在不同功能块(entity块或process块)之间传递值。在进程中使用variable来跟踪事物。

  

如何在VHDL中连接所有组件(注册文件,apu,   记忆,...)?

有信号。 Sigasi's editor使这更容易(更少的样板类型)

不要创建component - 您已经拥有entity,请使用直接实例化:

ALU1 : entity work.alu port map (
   clk => clk,
   etc...
);
  

在输出值之前指定延迟的VHDL代码。什么时候   我应该在MIPS数据路径中执行此操作吗?

您不希望指定延迟 - 它们在综合中被忽略,如果您的设计是完全同步的(一切都是时钟进程,只有一个时钟到处),编译器将为您稍后解决实际延迟,你可以在这之上抽象自己。

答案 2 :(得分:1)

  1. 你用信号连接它们 - 也就是说,你声明一个信号,然后你将信号连接到一个组件的输出,另一个组件的输入 - 它就像一根电线(或许多电线) std_logic_vector或整数等的情况)。

  2. 如果您想要,您可以在std_logic中执行所有操作,就像您可以用汇编代码编写所有程序一样。对于非可合成的VHDL(即测试平台等),您可以根据需要使用实数和整数。对于可合成的VHDL,您可以使用整数,让VHDL编译器根据std_logic推断底层表示 - 如果您开始这样做,请确保检查编译器的输出以查看它如何表示整数(例如,可能已使用std_logic_vector(31 downto 0)表示整数而不是只有0到7的范围 - 在这种情况下,您需要帮助编译器推断出正确的底层std_logic_vector)。至于真实 - 那可能最好留给不可合成的VHDL,你可以使用VHDL 2008中的浮点类型来合成实数。

  3. 您可以设计MIPS数据路径而不指定任何延迟。如果您不知道为什么需要它们,请不要使用它们。当您进行综合时,设计可能具有非常糟糕的时序特性(即,仅以几百kHz运行) - 然后您可以返回并开始流水线设计。但正如我所说,最好从易开始,忘记现在的时间 - 只需让设计工作和合成,然后开始处理时间的东西。

  4. 如果您正在寻找一本关于这个主题的好书,我推荐David Harris和Sarah Harris的“数字设计和计算机架构”

    希望有所帮助