发个花了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条线以上,我的服务器动不动就是跑一夜。想省一点点资源真不容易,脑细胞都累赘一把。 牛逼了!下载学习下 大牛,真厉害!还未用FPGA做个这么复杂的事情,学习了! 全能 厉害啦{:victory:}{:victory:}{:victory:} 厉害了。 牛人真多啊 厉害了,学习一下 仰慕一下 256条指令空间是可以存256行汇编程序的意思吗?
FPGA做的软核的程序都是存内部的吗?这个软核的程序是怎么烧写进去的呀 真是太厉害了。 cne53102 发表于 2018-11-16 22:25
256条指令空间是可以存256行汇编程序的意思吗?
FPGA做的软核的程序都是存内部的吗?这个软核的程序是怎么 ...
irom里面就是程序代码。写死的。 PicoBlaze了解过吗? https://www.xilinx.com/products/intellectual-property/picoblaze.html#design wye11083 发表于 2018-11-16 22:57
irom里面就是程序代码。写死的。
原来如此。。 Nuker 发表于 2018-11-16 23:29
PicoBlaze了解过吗?
这是8位的。我这是专用的16位的。而且picoblaze并不一定方便。 挺累的,虽然只有加减比较条件跳转, 但是还是挺累的 {:shocked:}差距太大了。偶等也就能根据芯片功能去应用,高手是根据需要来创造芯片没有的功能 牛逼了 那么多逻辑 楼楼能稳定200MHZ不错不错 看看神仙发帖 qiqirachel 发表于 2018-11-17 03:04
挺累的,虽然只有加减比较条件跳转, 但是还是挺累的
够用了。再多1条指令可能lut得多几十个(decode得4位了),而且这套指令集其实很好用,不是么?除了资源少,连寄存器都是带初值的,硬件保证不覆盖值寄存器,程序和微码保证跑飞了也不会覆盖值寄存器。 厉害了啊 这个程序是c写的吗?用的什么编译器呀 我是一个大白菜 发表于 2018-11-17 12:50
这个程序是c写的吗?用的什么编译器呀
楼主不说了写了个汇编器么?几条指令用汇编很好用 wye11083 发表于 2018-11-17 09:37
够用了。再多1条指令可能lut得多几十个(decode得4位了),而且这套指令集其实很好用,不是么?除了资源 ...
不是,我的意思是说,做这个小功能的处理器应该花了不少时间,挺累的。功能看起来不多,但是考虑的细节还是挺多的 赞一个
PicoBlaze也挺好用,还有人改写了NanoBlaze 16位的 qiqirachel 发表于 2018-11-17 18:16
不是,我的意思是说,做这个小功能的处理器应该花了不少时间,挺累的。功能看起来不多,但是考虑的细节还 ...
哈哈,只看面积。像有人说用picoblaze,那个8位机做这些工作指令就得放bram了,为了这么点破功能还用个bram不值,没意义。这个模块irom大概占44个lut(s6),其它功能加一起占~120个lut。 zouzhichao 发表于 2018-11-17 17:06
楼主不说了写了个汇编器么?几条指令用汇编很好用
嗯,仔细看了,确实疏忽了,学习一下 不懂,但很厉害的样子 厉害。不过spi外挂一个low pony count的小单片机也很省事,反正现在的单片机外部晶振都可以省了 晕,输入法把pin 改为pony了。。。 厉害 大神果然不一样 大神 现在得个精华帖很不容易啊 看不太懂,话说楼主做图像 主要都处理哪些》算法之类的在部门一般怎么分配? 感觉开窍不容易,有啥方法心得分享一下 牛逼牛逼 膜拜一下 虽然不懂,但还是要顶一下。 学习一下 谢谢分享 +++++++niui好牛 牛逼了!真厉害! 太厉害了 点个赞,厉害了。 厉害!设计mcu其实工作量还挺大。 厉害了,学习一下 TAI NIU B LA!
页:
[1]