打印

总结我用FPGA的8点教训

[复制链接]
2027|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小鱼尼莫|  楼主 | 2011-8-4 15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
因为使用hdlcpld时间很长了,所以拿到这个新任务的时候并没有去特别比较fpgacpld的区别,吃了大亏,代码3次推翻重写,项目推迟了半年。
教训如下:
1、最致命的是我使用了80多兆的与外部通信的总线,走lvcmos电平.后来朋友告述我说使用这种信号不要超过50M,否则延时很难控制.高速总线信号应该选用带serdes(就是lvds电平+串并转换)fpga,否则布线和内部延时都很难控制.
好彩我在内部凑延时,总算解决了这个问题;

2、仔细阅读一下data sheet,芯片各个方向的PIO口其实关联的内部资源是有很大区别的,应该根据内部资源来设计外部管腿分布;
3、必须熟习fpga内部结构和资源(LUT/SLICE/PLL/RAM)的特性,使代码能够尽量match上这些特性.比如LUT一般都是4各输入的查找表来完成组合逻辑,这样不少于4个输入的组合逻辑导致的延时都是一样的,超过4个输入后就导致LUT间的走线,延时暴增,解决多输入(>4)组合逻辑的办法是用流水线(实际上是用时序逻辑""组合逻辑)提前产生部分控制信号,使最终的""组合逻辑部分的输入尽量少;
4CPLD设计可以假定延时很小,FPGA设计延时是一定要考虑的;
5,跨时钟域(哪怕是同一个PLL产生的不同时钟)时,一定要用高速时钟把低速信号打一下,可以大大提高系统延时特性;
6、改善系统延时特性的的常用办法有(我用到的)
使用PLL;
流水线;
跨时钟域时强制同步;
使用尽量少的时钟(这样时钟信号就可以走传输特性较好的"PRIMARY"连接);
使用门控时钟而尽量不要使用派生时钟(会导致时钟过多,各时钟域间的延时关系变得很复杂,因为派生时钟相对原时钟也有一个不小的无法预知的延时);使用配置工具解除低速电路的约束(其实就是告述综合工具哪些电路要求不高,可以把资源优先分给高速部分);
7、软件下面带的入门教程初学者一定要看,掌握常用的一些工具,比如配置/约束/定为延时/查看电路实现.对常用的一些语句会产生什么样的电路心里要有数;
8,CPLD的代码一般比较简单,结果也容易预估,一般都是边想编写,
很多时候连仿真都不要;FPGA的设计方法跟CPLD相反,是先在划分好模块后,写好仿真代码,功能仿真后后一个模块一个模块实现,然后在根据实现后的结果(物理仿真结果)调整各模块间的关系,再次仿真再次实现,如此循环.仿真在fpga设计中占了80%以上的工作量.事先的布局,模块划分,时钟产生和分配,这些工作对结果有决定性的影响.

相关帖子

沙发
dan_xb| | 2011-8-5 09:38 | 只看该作者
80多兆,你可以用SSTL/HSTL

使用特权

评论回复
板凳
jakfens| | 2011-8-5 11:09 | 只看该作者
受教了

使用特权

评论回复
地板
AutoESL| | 2011-8-6 20:58 | 只看该作者
学习了

使用特权

评论回复
5
zhenglixin| | 2011-8-7 10:42 | 只看该作者
基本来说是由于楼主的基础比较差吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

20

帖子

0

粉丝