FPGA设计第一步

从初识FPGA到现在,产品上用FPGA设计已经量产大半年了,期间也出过两次问题。中间犯了一些错误,还好都顺利的搞定了。现在基本已经稳定的生产出货了。

因为之间做产品设计很多的技术积累都是以文档的形式存入公司的服务器或者我自己的OneNote里面,很长一段时间都没有写博客了。

初次设计这个FPGA的方案的时候是2015.08下旬,我刚毕业一个多月,之前几乎没接触过FPGA这方面。我参与的上一个项目是用Qt开发一个上位机的GUI,我大学自学的是嵌入式linux底层驱动开发,只有一定的C/C++基础,跟FPGA设计一点关系都没有。项目上突然说要用FPGA在产品完成部分图像接口处理,而且公司从未接触过FPGA这个领域,公司没有经验,没有FPGA大牛指导,我个人没有基础。当时是连项目经理自己都开始那一本FPGA设计的课本书开始学习,课本啊,就是大学里面上课的那种课本。悲催的是我的专业是电子信息工程,大学都没学过FPGA相关的基本课程。好吧!这个项目任务分配下来了,由我主要负责逻辑设计部分,配合项目经理(硬件工程师,原理图layout so easy那种)。项目周期两个月。两个月啊,要命啊。什么都不懂,要做FPGA的选型,FPGA逻辑功能的验证,负责出设计说明文档,两个月后交付两套样机到一个外国客户。我甚至都不他们有没有评估过项目失败的风险。

项目需求:

1.两路视频并行数据通过FPGA做切选择输出一路;

2.针对SDI输入的某种视频格式的行场同步信号HVF转HVDE信号,其实当时我也不懂这个转换是个什么性质的转换,后来知道了,是SMPTE标准的视频信号转CEA-861标准,因为后端芯片只支持CEA-861的时序标准,这个后面申请专利了哦;

3.I2S音频总线的数据信号线里面插入数据。(因为当时的音频数据是24bit,其实有用的音频数据只需要20bit,所以后4bit用来干别的事情了)

4.三路I2S音频数据输入,根据MCU的配置信号选择一路输出


需求下来了,下一步就是出设计说明,FPGA的选型是由项目经理初步建议了一个lattice 的CPLD ispMACH4128,理由是CPLD功能简单,开发起来应该容易一点,而且功耗相对FPGA小。当时真的不懂选型对于FPGA设计的重要性,我们当时做的可是最高到1080P60的视频啊,时钟都有148.5MHz啊,根本没有时序收敛的概念。于是就傻乎乎的在某宝上买了两个ispMACH4128开发板(使用的过程中烧掉了一个),开始做设计功能验证。

当然最先开始的是花了一周时间熟悉了Verilog语音和modelsim仿真软件,仿真软件基本没有怎么用。开发板回来之后就开始各种飞线,一个模块功能一个模块功能验证,当时最开始是验证二选一,然后是三选一等选择器开始,基本没用过仿真,直接上示波器量波形。然后是做I2S数据插入的逻辑部分,在十一之前基本搞定了这部分,进入最难视频行场同步信号转换,这个时候已经九月末了,项目经理还出差去欧洲了,更加没人指导了,飞线都成了困难的事了。由于之前对视频的标准有过一个初步的研究,对视频的行场信号还比较熟悉,所以这部分功能验证过程应该花了不到两周时间就基本结束了。验证的过程突然发现CPLD的逻辑资源不够用了,赶紧通知到项目经理那里,那个时候他还在欧洲一边出差一边画板。那边的板子layout都差不多了,资源不够,没办法只能换器件重新layout。这次还是选择了lattice的MXO2系列的器件,是个FPGA有1200个LUT,看起来靠谱一点。找FAE初步评估了一下,应该够用了。

换完器件很快layout就完成了,已经是十月了,基本是赶不上项目交期的了。当时拿到板子就稀里糊涂的一阵调试,那个过程真的是无比的艰辛。当时视频是能输出,但是同步信号有偏移,而且是不稳定的偏移。说明逻辑有设计里面有大问题,调试了一周后优化逻辑设计,渐渐的视频输出基本稳定了,可是在做温度可靠性测试的时候又不行了,温度上升到一定值后视频的行场还是会偏移。这下又调试了一周,中间过程几度陷入绝望中,感觉自己做不到,还好当时项目经理也不再给我施压,而是更多的鼓励了。我从迷茫中一点一点去检查逻辑各方面去查找问题。中间还请教了FAE,再次优化逻辑最后在测试降低了温度标准 勉强过关了,终于在10.30号把样机交付出去了。

接下来的日子里面经历了试产过程顺利通过了。

本以为到这里就应该了结了,谁知道2016春节刚回来上班一个月,我们的新生产的一批货视频输出有问题,并且已经发货一部分到客户那里了。

经过查证这批新生产的器件在某种触发条件下更加容易出现问题,试产的器件出现的概率极低。基本确定是两个批次的器件有一定差异,但是找到问题,问题还是没有解决。好吧继续优化逻辑,这次面对这样的问题我的心态方面好多了,也比较从容了。OK,一周发布新的软件版本测试通过了,解决了。


过了一个月又有问题了,居然还是行场同步的问题,这可以样机阶段的噩梦啊!!!这个时候我已经有FPGA设计的基础了,对时序逻辑有了一定的认识了,一周搞定了问题。

三个月后又出问题了,这不科学嘛。怎么还有问题呢。原来是我在最后一次的设计进入了一个禁区,大家早就知道的一个误区,没有避开。测试过程却遗漏掉了。完蛋了,研发总监都怒了,赶紧灰溜溜的避开那个陷阱。这次对我影响非常大,之前的错误可以说是我的经验欠缺,设计有缺陷,但是这次明显是犯了一个低级错误,不能原谅的。


后面我才意识到原来FPGA也没那么简单,后面的路还有很长。


当然在解决产品的问题的同时我也没闲着,一直在学习FPGA。在公司的需求下做了一块FPGA的开发板,用的altera cyclone V有两个主要的组成。带有两颗2G的DDR3,和一组3G SDI的transceiver。成本是在我看来是相当高啊,用的器件都比较贵(在我这种没用过高档货的屌丝看来)。FPGA芯片 就是800RMB一颗啊,几个晶振都花了4000RMB啊,炫富一把,反正不是花我的钱。这就是我今年的主要任务。现在已近是十月了。这个板子的DDR和SDI transceiver还没有跑起来,实在是有些偷懒。板子是5月份就贴好了。这个地方我感觉我自己真的是大脑不够用,太笨了。当然这几个月公司肯定不会让我专职搞这个FPGA,老板们可没有闲钱来养你,我都是在下班后加班搞了。上班主要参与两个项目,一个是MAC 平台的GUI完成了一个,一个新产品的MCU的软件部分(这个项目也是很复杂),都快搞死我了,还没有结束。感觉还是路漫漫其修远兮..........啊!!!!!


后面我的主要发展方向就是FPGA的系统应用方向了,一般的FPGA大牛不来,所以我现在就必须去担当所有的逻辑设计部分。还好今年刚刚招了个研究生来跟着我一起搞,但是我不需要新人啊,我需要大牛,大牛,大牛..........带我装逼带我飞啊。


我的FPGA设计的第一个年头就过去了..............................................................................................................................................................

路漫漫其修远兮....................................................................................................................................................

加油吧!少年.........................................................................................





猜你喜欢

转载自blog.csdn.net/u012442565/article/details/52723669