TTA处理器。第1部分

前言


创建我自己的简单处理器的想法(如果可以这样称呼的话)我花了很长时间。架构的选择是一个模棱两可的问题,但由于部分是极简主义的,我想实现一些简单的功能,同时又功能强大且可扩展,TTA非常适合此。
第1
部分。第2 部分。
简而言之,想法是控制单元将只有一个数据移动命令,而计算将是这些移动的副产品。

我将在一个用于编译和仿真逻辑电路的简单程序中实现-Logisim,选择它是因为它的简单性和可访问性,如果成功实现,则计划将其重写为Verilog

阅读时最好立即触摸该项目,可以在本文结尾处找到它。

控制块


控制单元是主要部件。为简单起见,决定选择16个输入和16个输出,因此,控制单元中接收的命令为8位,前半部分指向一个输入,另一半指向一个输出。为了使接收块了解到了数据,向该块的每个输入添加1位,通常将这些块称为功能块。

所以:



记忆


为了使控制单元执行程序,必须将其存储在某个位置,存储器将是一个功能单元,其输出之一将连接到控制单元总线。

所以:


最低的输入是时钟信号,最左边的是输入数据,最右边的是输出数据,它们也是BU命令,最后一个是用作标志的时钟,报告数据到达。接收到数据后,每个时钟脉冲将其写入指示当前命令的计数器,计数器增加,控制单元将数据从一个FU传输到另一个FU。

其他简单的福


创建简单的FU,以执行普通的加法和减法动作。
FU模板如下所示:根据输入的数量,在输入处有一个8位寄存器,接收到数据后便进行写操作。输出可能还包含将存储答案的寄存器,但这对加法器而言不是必需的。

因此,加法器和减法器将如下所示:



成品设备


让我们连接内存和控制单元,然后,我们将尝试创建一个新的控制单元并编写一个程序。
该按钮将充当时钟信号。

因此,连接:


现在连接加法器和减法器,以及两个输入常量:


一切准备就绪,可以编写一个程序,它将执行一系列常规的操作:在加法器的前一个值上加一个,然后通过相对转换转到开头(为此,做了一个减法器:3)。

让我们来编写一个程序。

最初,所有寄存器都被重置,所以这样做没有任何意义,第一个命令是将一个单元发送到加法器的一个输入(In3-> O2),将加法器的输出发送到其第二个输入(In1-> O1),将当前内存地址发送到减法器输入(In0-> O3),将地址更改发送到减法器的另一个输入,在减法器转到地址指针的输入后,将其减去(In4-> O4),从而完成转换(In2-> O0)。

该程序如下所示:

1. In3-> O2
2. In1-> O1
3. In0-> O3
4. In4-> O4
5. In2-> O0

在内存中:


就这样。该程序运行正常。我计划制造更多的FU,并使它们与控制单元的连接更方便,因为FU实际上是ControlFlow设备。您也可以将多个控制单元连接在一起,即创建此类设备的网络。

感谢您的关注!

GitHub

All Articles