【博文连载】超小型CPU设计(Tiny CPU)完成

承接《超小型CPU设计(Tiny CPU)刍思》,大概一个月前我已经完成TPU设计,并用于实际工程,比我预计的时间要快很多。按套路最终的设计和原版的想法有一般的出入。

--------------------------------------------------------------------------------------------------------

我最后设计出什么样的特性

1、超小型,指令集小于32,最终资源在500-1500lut之间,取决于cpu功能裁剪,一般1-2kRAM,取决于设计需求,当然最大支持很大的ram,可以上G,不过这么大的ram不是本设计所需

2、动态可裁剪,我新引入的很棒的特性,CPU结构根据当前的运行需求自动裁剪增加,比如CPU的位宽,RAM的大小,是否使用加法器,乘法器,除法器等,会根据具体的编译代码,实行自动控制。

3、DSL,定制编程语言,我用Ruby实现了对TPU的DSL,可以不用去写汇编,完全可以把汇编封装成函数调用。并且内置了一些通用函数。

4、拓展性,迁移能力,可以把具体功能封装成api,直接include就可以拥有,而且很容易自己封装,我已经实现SPI,IIC,axi4,axi stream,axilite,udp,对原装支持axi4,而且是长burst支持,即使现在的MicroBlaze都不支持长burst。

5、动态更新,可以在运行时更新程序。

6、内建性,TPU可以直接控制和读取FPGA内部信号

缺陷:

1、还没有单步调试功能,因为实现起来有点困难,你要在电脑上实现一个完全的TPU模型,而且我也不需要。

2、没办法用纯代码,RAM必须用IP,这个锅xilinx来背,xilinx dpram 初始文件加载有BUG。

未来方向

1、多核,TPU有天生多核优势,我目前还没往这方便的项目使用。

2、功能强化,是不是可以加一个TCP,Flash等的API

3、算法,是否可以加一些复杂算法?

 

(0)

相关推荐