打印

FPGA硬件设计经验杂谈

[复制链接]
1740|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xlhtracy|  楼主 | 2012-3-26 11:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
转自特权同学博客。    特权同学业余时间里会接一些小活,做一些FPGA的小项目。这些小项目虽小,生产周期也短,但是这些小项目仍然从某种意义上遵循着硬件开发设计的一些既定的流程。可谓麻雀虽小五脏俱全。特权同学感觉从中学到了很多在分工明确的工作体系环境中学不到的东西,对于硬件设计的方方面面,有着太多的细节和需要时间去领悟的东西需要我们学习。这里分享一些个人的领悟,只是一篇杂感,内容可能会有些乱,但是不要紧,你懂就行。不对的地方也欢迎指正。
    从客户的需求开始,需要综合考虑硬件和软件(姑且这里认为是FPGA开发),评估FPGA资源使用情况,确定使用器件以及存储器、外设接口等。在这期间产品的结构也需要考虑(不过在这一步,特权同学所面对的客户会提要求,画好CAD结构图作为PCB的尺寸要求),如果是直接做成品的设计更是需要考虑到产品的外形包装方面,不过特权同学一直做的是半成品——一块完成特定功能、有输入有输出的模块而已。有时对于一些硬件上不是很确定的电路,尤其是一些之前没使用过的硬件电路,仅仅靠官方提供的参考电路有时并不让人放心。于是,搭个测试电路势在必行,只不过现在的芯片集成度越来越高,找个SOP的芯片搭面包板也太不容易了,TQFP的更别说。一般而言,解决办法有三个:
1. 硬着头皮搭面包板,这个比较累人;
2. 买个官方提供的评估板或者DEMO板什么的,或者有朋友或同事设计过类似电路,如果有可能借过来改造改造;
3.把测试融入到PCB制板中,对不确定的电路连接多做一些留有更改余地的考虑。最简单的,就比如不确定某个接口是要上拉还是下拉,那么就在制板时画两个电阻,一个上拉一下拉,测试时焊接需要的电阻。
    在确定了以上的一些因素后,开始硬件原理图的绘制,如果有可能,FPGA的设计也可以同步进行。FPGA的设计那也有太多讲究,本文希望侧重谈PCB设计与生产的一些问题,下面就步入正题吧。
    原理图设计过程中,由于FPGA的管脚分配比较灵活,但是也不能够随意分配,FPGA设计者和原理图设计者甚至PCB设计者在这一点上需要统一看法。很不幸的是,很多时候特权同学同时扮演了这三个角色。FPGA管脚分配的考虑因素也很多,从特权同学个人的经验来看(也许并不科学,欢迎拍砖),确定FPGA和外部器件的接口后,从FPGA的数据流入手,在围绕FPGA(这里假设FPGA是板子的核心)的PCB板上确定外部器件的大体位置。这个位置确定了,估计FPGA的接口分配也就固定了。当然了,也许这个设计者自以为很优化的管脚分配方式也会有遭到FPGA布局布线**的可能,特权同学就遇到过一款很早的老器件(军品,没办法)的**,那只能一步一步调整了。话说回来,如今的FPGA器件工艺、内部结构都上了恩个档次了,按数据流的分布来分配管脚,一般是没有什么问题的。
   确定了大体的管脚分布后,原理图绘制也不必太算计和FPGA接口的某个器件怎么分配不会让PCB布线的时候绞线(交叉布线)。这个步骤放到PCB绘制阶段再更改要直观高效的多,这种便利恐怕只有原理图和PCB一条龙设计的人才能体会得到吧,现在的分工达到会分离原理图绘制和PCB绘制人员,只能说有利也有弊吧。
PCB设计中,有很多值得注意的细节。
    1. 在整体布局上,以FPGA为主的板子,FPGA居中,其他器件依照前面提到的数据流关系分布在四周。有可调整的绞线,回到原理图调整,在不影响系统的情况下,尽量理顺信号线。
    2. 器件的方向尽可能一致,这样做的好处既可以保持板子的美观,也方便今后批量焊接,减少工人的焊接失误。电容电阻等元件的放置也尽可能的保持一致,据说这样有益于机器焊接。
    3. 电容或者电阻附近的过孔尽量和他们的焊盘保持一定的距离。个人认为,这个距离以焊接时不容易将焊盘上的锡连带的扫到过孔为准。
    4. 在PCB板的四个角上画上激光定位孔,便于机器焊机(如果有可能)需要。不过特权同学最近一次,也是第一次将小组里的FPGA开发板交给工厂开钢网机器焊接时,板子上并没有激光定位孔,也一样是能够焊的。
    5. 在PCB板上预留一些可能的测试点,便于后续的调试。
    6. 在PCB的某个空白或方便的地方,将板子所有相关的电源引到该处,并做丝印标注,便于生产时对板子的供电测试。
   7. 对于一些管脚多的芯片,最好在做器件库时,每隔5个脚做一个标记,便于调试时必要的管脚定位。
   8. 那天在《感悟设计》上看到的,自己在生产助学小组里的板子时也有体会,尽量减少板子上的电阻或者电容的类别,这样能够简化后续的配料和生产。
   9. 元器件的位号丝印,特权同学喜欢直接用Altium的自动编号,但是记住,无论如何,最后的位号对于每一个元器件一定是唯一的,特权同学也吃过版本变更,位号错乱带来的麻烦。
这是特权同学目前所能够想到和感悟到的,以前在一些诸如“XXXPCB生产流程”或是“XXXPCB生产注意事项”中好像看过很多类似的说明和提醒。但是,真得是很多东西自己没有亲身去经历去体验过,甚至吃过亏,未必能够放在心上。也许经验的东西,就是这么一点一滴的汇聚而成。没有所谓的天才,所谓的牛人,都不过是这么一步一步走过来的,硬件设计尤其如此。

相关帖子

沙发
coco11| | 2012-3-26 13:00 | 只看该作者
看过。帮顶。

使用特权

评论回复
板凳
lifenganhui| | 2012-3-26 14:51 | 只看该作者
好资料,                        
感谢分享            ,
顶一个

使用特权

评论回复
地板
Yurnero_72| | 2012-3-26 16:01 | 只看该作者
顶起

使用特权

评论回复
5
supreme42| | 2012-7-27 11:54 | 只看该作者
mark,说得很好,受教了

使用特权

评论回复
6
hawksabre| | 2012-8-25 19:20 | 只看该作者
经验之谈   做了一段时间设计后   对楼主“尽量减少板子上的电阻或者电容的类别,这样能够简化后续的配料和生产”这句话深有感触       在架构电路时   把每个模块电路的电流以及功耗算出后   选择封装时尽量做到封装统一   尽量减少电容,电阻不同参数的选择   能用同种阻值或容值的地方尽量使用统一参数   这样在以后的装配及测试时   工作量大减   

刚设计用于测试的板子,   在每个模块电源供电处尽量用0欧姆电阻连接  或者加装插排  需要供电时用跳线帽连接

定位孔尽量做成椭圆形   这样有助于放冗余量   
一点心得   哈哈

使用特权

评论回复
7
GoldSunMonkey| | 2012-8-25 23:30 | 只看该作者
:)

使用特权

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

本版积分规则

个人签名:菜地里的西兰花

52

主题

1449

帖子

24

粉丝