对于一个大学的中期项目,我必须设计一个可配置的处理器,用 VHDL 编写代码,然后在 Digilent 的 Spartan 3E FPGA 板上综合它。我是一个初学者,所以你能告诉我一些关于可配置处理器的信息,一些与这个概念相关的想法吗?
3 回答
您可以查看我对相关问题的回答。我们做了几乎相同的事情,用 VHDL 为 FPGA 板构建 CPU。
这只是一个模型,所以请注意我会清理它
fetch instruct1,
fetch instruct2,fetch datas1
fetch instruct3,fetch datas2,process datas1
fetch instruct4,fetch datas3,process datas2,store1 datas1
fetch instruct5,fetch datas4,process datas3, store2 datas1
获取指令 6,获取数据 5,处理数据 4,存储 3 数据 1
获取指令 7,获取数据 6,处理数据 5,存储 4 数据 1
获取指令 8,获取数据 7,处理数据 6,存储 5 数据 1
基本上这些是处理器第 1 部分 ALU 的主要组件: 算术逻辑单元(这是 draeing 派上用场的地方) ALU 有 2 个输入端口和一个输出端口。对 2 个输入端口进行操作并输出结果。要知道 ALU 必须完成哪条指令,有一个控制端口。基本上这是命令的名称。因此,如果控制端口有 4 位,则有 16 条可能的指令。
第 2 部分 寄存器单元:这是一组存储单元(高速缓存)。该存储器的内容通常被传送到 ALU 的输入端口。
Part3 控制单元:这有点像 CPU 的管弦乐队大师。它的工作是 1 将数据发送到 ALU 输入 2 读取指令寄存器中需要发生的指令,将这些代码发送到 ALU 控制端口
界面。这是 RAM 和其他外围设备与 cpu 通信的方式
每次指令输出结果时,都必须存储它。它可以存储在 RAM 中,因此一旦结果准备好,就必须准备好 RAM 写入。同时,可以对下一条指令的输入进行 RAM 读取。同时,可以从 RAM 中获取下一条下一条指令。
生成 1 条指令通常需要超过 1 个时钟周期。处理指令类似于工业生产。这样链式工作就完成了。
VLIW 我们编写的程序是线性的,这意味着指令一个接一个地发生。但是今天的 CPU(虽然不是 ARM)有多个 ALU,因此可以同时处理多个指令。
所以你有处理单元链同时处理多个指令(管道),你有很多这些单元(超标量)
然后它变成了一个可以/需要做什么来定制你的 cpu 架构的问题。
我做了一个类似的项目,用 VHDL 实现了一个带有 5 级管道的处理器。
首先,您必须了解处理器如何工作的架构。如果不了解每个 stange 正在做什么以及您需要什么样的控制信号,您就没有希望实际用 VHDL 编写一个。
其次,开始绘制指令和数据将如何流经处理器(即通过每个阶段)的图表。每个阶段如何相互连接?控制信号去哪儿了?我的输入来自哪里,我的输出去哪里?
一旦你有一个实体图,VHDL 中的实际实现应该相对简单。您可以使用 VHDL 的行为建模来准确解释您在图中看到的内容。