wye11083 发表于 2018-11-16 20:51:39

发个花了2天时间为了降低~200个LUT而做的16位专用处理器

RT,该处理器的作用是:
给定传感器图像的宽和高,以及裁剪参数,计算出合法的ROI。因为图像有一从一主,从紧接在主后面,因此主从图像要求相同宽度,其它不要求一样。要求输出的参数不能溢出,End不能小于Org,可以根据参数屏蔽一些输出(就这么简单!)

使用纯逻辑计算,最小模式下(只有主图像)也要占用~330个LUT,太大了。全模式下要占用~760个LUT,简直吓到了{:funk:}
各种研究下,最终发现要想解决资源占用问题,必须得用时间换面积(工程选型没选好,FPGA塞爆了),杯具。于是有了这个16位专用处理器——



根据分析,只要能实现比较、加、减、条件跳转,能输入一些东西,输出一些东西即可。因此最后确定了该方案。其中,寄存器和输出复用,外部接口直接把一些固定参数写到寄存器中,而保留一些不固定的参数到外部接口。微码简单测了一下,还没有详细测试。最后得到的CPU无比简单,就8个指令,32个寄存器,256条指令空间。用Maximum Compression Map之后占用约161个LUT,以及约41个Slices,芯片面积利用率几乎98%(DFF主要在IOB里面,所以没有体现),非常紧凑了。主频可以飙到200MHz的样子,绝对够用了。只是计算时间是硬伤,时间换面积的代价是原本2个周期可以做完的工作,现在得200个周期才能做完,外面需要加个调度器等待数据刷新。

想实现自己用途的可以改asm,附件还有个专用assembler,当然报错位置貌似不对,对着代码去找吧。初值直接改REG文件即可。明天开始整合,下周往工程移植{:funk:} 改汇编时切记bc/bnc后面的Token不能有标点,而且Token行后面必须有:符号。

从工程上讲,FPGA这东西优化真不容易,一不小心就负优化。面积,速度,RAM,流水线,延时,等等,各种限制。从芯片本身来看,FPGA说句不客气的,它就是个双面PCB,而且是预留好线的PCB,用户只能在固定的交叉线上给想要连通的两条交叉线中间打个孔(下载个1进去)。想象一下布通这玩意的难度。一个大点的工程动不动就100000条线以上,我的服务器动不动就是跑一夜。想省一点点资源真不容易,脑细胞都累赘一把。

wowangru 发表于 2018-11-16 21:28:36

牛逼了!下载学习下

ArthurBruin 发表于 2018-11-16 21:28:48

大牛,真厉害!还未用FPGA做个这么复杂的事情,学习了!

RAMILE 发表于 2018-11-16 21:48:41

全能               

gongxd 发表于 2018-11-16 21:48:50

厉害啦{:victory:}{:victory:}{:victory:}

wx85105157 发表于 2018-11-16 21:55:18

厉害了。

john78 发表于 2018-11-16 21:58:49

牛人真多啊

hxled123 发表于 2018-11-16 22:07:52

厉害了,学习一下

ronic 发表于 2018-11-16 22:18:23

仰慕一下

cne53102 发表于 2018-11-16 22:25:30

256条指令空间是可以存256行汇编程序的意思吗?

FPGA做的软核的程序都是存内部的吗?这个软核的程序是怎么烧写进去的呀

TIANYJ 发表于 2018-11-16 22:47:28

真是太厉害了。

wye11083 发表于 2018-11-16 22:57:58

cne53102 发表于 2018-11-16 22:25
256条指令空间是可以存256行汇编程序的意思吗?

FPGA做的软核的程序都是存内部的吗?这个软核的程序是怎么 ...

irom里面就是程序代码。写死的。

Nuker 发表于 2018-11-16 23:29:23

PicoBlaze了解过吗?

Nuker 发表于 2018-11-16 23:30:06

https://www.xilinx.com/products/intellectual-property/picoblaze.html#design

cne53102 发表于 2018-11-16 23:33:29

wye11083 发表于 2018-11-16 22:57
irom里面就是程序代码。写死的。

原来如此。。

wye11083 发表于 2018-11-16 23:54:47

Nuker 发表于 2018-11-16 23:29
PicoBlaze了解过吗?

这是8位的。我这是专用的16位的。而且picoblaze并不一定方便。

qiqirachel 发表于 2018-11-17 03:04:44

挺累的,虽然只有加减比较条件跳转, 但是还是挺累的

rifjft 发表于 2018-11-17 03:36:23

{:shocked:}差距太大了。偶等也就能根据芯片功能去应用,高手是根据需要来创造芯片没有的功能

xiaoyigechaos 发表于 2018-11-17 08:47:05

牛逼了                              

ackyee 发表于 2018-11-17 08:50:02

那么多逻辑 楼楼能稳定200MHZ不错不错

hutu 发表于 2018-11-17 08:57:52

看看神仙发帖

wye11083 发表于 2018-11-17 09:37:05

qiqirachel 发表于 2018-11-17 03:04
挺累的,虽然只有加减比较条件跳转, 但是还是挺累的

够用了。再多1条指令可能lut得多几十个(decode得4位了),而且这套指令集其实很好用,不是么?除了资源少,连寄存器都是带初值的,硬件保证不覆盖值寄存器,程序和微码保证跑飞了也不会覆盖值寄存器。

huangqi412 发表于 2018-11-17 10:16:52

厉害了啊

我是一个大白菜 发表于 2018-11-17 12:50:04

这个程序是c写的吗?用的什么编译器呀

zouzhichao 发表于 2018-11-17 17:06:07

我是一个大白菜 发表于 2018-11-17 12:50
这个程序是c写的吗?用的什么编译器呀

楼主不说了写了个汇编器么?几条指令用汇编很好用

qiqirachel 发表于 2018-11-17 18:16:52

wye11083 发表于 2018-11-17 09:37
够用了。再多1条指令可能lut得多几十个(decode得4位了),而且这套指令集其实很好用,不是么?除了资源 ...

不是,我的意思是说,做这个小功能的处理器应该花了不少时间,挺累的。功能看起来不多,但是考虑的细节还是挺多的

zkf0100007 发表于 2018-11-17 19:13:37

赞一个
PicoBlaze也挺好用,还有人改写了NanoBlaze 16位的

wye11083 发表于 2018-11-17 22:36:31

qiqirachel 发表于 2018-11-17 18:16
不是,我的意思是说,做这个小功能的处理器应该花了不少时间,挺累的。功能看起来不多,但是考虑的细节还 ...

哈哈,只看面积。像有人说用picoblaze,那个8位机做这些工作指令就得放bram了,为了这么点破功能还用个bram不值,没意义。这个模块irom大概占44个lut(s6),其它功能加一起占~120个lut。

我是一个大白菜 发表于 2018-11-17 23:10:33

zouzhichao 发表于 2018-11-17 17:06
楼主不说了写了个汇编器么?几条指令用汇编很好用

嗯,仔细看了,确实疏忽了,学习一下

armku 发表于 2018-11-18 14:01:06

不懂,但很厉害的样子

xycfwrj 发表于 2018-11-19 03:10:58

厉害。不过spi外挂一个low pony count的小单片机也很省事,反正现在的单片机外部晶振都可以省了

xycfwrj 发表于 2018-11-19 03:11:36

晕,输入法把pin 改为pony了。。。

ZDHCKJS 发表于 2018-11-19 07:56:31

厉害   

亲爱的混蛋 发表于 2018-11-19 08:06:05

大神果然不一样

gamep 发表于 2018-11-19 08:42:02

大神 现在得个精华帖很不容易啊

nibia 发表于 2018-11-19 08:56:58

看不太懂,话说楼主做图像 主要都处理哪些》算法之类的在部门一般怎么分配?

nibia 发表于 2018-11-19 09:00:15

感觉开窍不容易,有啥方法心得分享一下

luweiqi1995 发表于 2018-11-21 16:14:29

牛逼牛逼 膜拜一下

flyfox8 发表于 2018-11-21 21:27:22

虽然不懂,但还是要顶一下。

unnormal 发表于 2018-11-22 16:48:55

学习一下    谢谢分享

zya2008 发表于 2018-12-5 22:11:38

+++++++niui好牛

ye_song 发表于 2018-12-10 22:03:04

牛逼了!真厉害!

jackee 发表于 2018-12-10 22:20:46

太厉害了

standli 发表于 2019-1-14 18:53:19

点个赞,厉害了。

bbingdao 发表于 2020-12-23 16:06:53

厉害!设计mcu其实工作量还挺大。

老母鸡火箭筒 发表于 2020-12-25 08:38:56

厉害了,学习一下

zya2008 发表于 2021-1-30 15:06:22

TAI NIU B LA!
页: [1]
查看完整版本: 发个花了2天时间为了降低~200个LUT而做的16位专用处理器