最新日志

发表于:2008-1-12 14:43:14
标签:无标签

0

S3C2410开发板PCB

ARM的成功启示录

 

虽然是很老的文章,但写的很好
                       
                                  
作者:吴海菁   2003-9-6 14:12:43  
                                  
出处:博客中国(Blogchina.com)  
                                 首发ChinaByte     

  有人说,ARM的成功是钻了英特尔的空子,在芯片巨人忽视的领域长成茁壮的大树;  
也有人说,ARM是在一个合适的产业选择了一种聪明的发展模式,既避免了与对手正面碰  
撞,又联合了上百家有实力的厂家;还有人说,ARM靠提供芯片的知识产权发家,处于产  
业链的上游,宛如自然界食物链的最高一环。  
  知识产权的英文是Intellectual property,简称IP,在中国,IP还是一个尚未全面  
普及的概念,ARM的成功之道或能给中国产业界带来深刻的思考。  
  走近ARM  
  英国的辉煌伴随着大不列颠帝国的远逝而慢慢褪色,在很多人的记忆里只有曼联球  
队那团略显旺盛的火焰,因为英国已经彻底沉默在美国的声音之中。然而,一个叫做AR  
M
的公司宛如蓝色的小精灵,活跃在处理器芯片领域,成为整个英伦三岛的骄傲。  
  ARM公司成立于199011月,全称是“Advanced RISC Machines Ltd.”,它是由英  
Acorn公司提供技术和12名工程师、美国苹果电脑和VLSI Technology(目前已被飞利  
浦收购)出资合手组建的美英混血公司。ARM的第一个客户就是苹果电脑公司,为其新开  
发的Newton掌上电脑提供高速度、低功耗的RISC(精简指令集算法)处理器。由于ARM  
有技术,缺乏资金来购买昂贵的芯片制造、封装和测试设备,因此ARM授权伙伴公司VLS  
I Technology
生产,并提供必要的技术支持,这种合作方式的初步成功也为今后ARM的发  
展模式奠定了基础。  
  在以后的几年中,ARM凭借高超的技术和相对低廉的授权方式,赢得了不少客户的青  
睐,这其中包括大名鼎鼎的夏普、GEC Plessey、德州仪器和Cirrus Logic等厂商。由于  
ARM
的授权方式灵活多变,价格相对便宜,在技术上也独树一帜,因此加入ARM联盟的厂  
商越来越多,目前全球有112家厂商在使用ARM公司的技术授权,而以微软和SUN为首的一  
批知名公司也为ARM处理器开发软件。2000年,全球ARM处理器的发货量达到4亿;到200  
1
年,ARM处理器就拥有超过76.8%RISC处理器的市场份额;2002年则几乎垄断了全球嵌  
入式RISC处理器市场。据Dataquest的最新报告显示,2002ARM公司再次成为排名第一  
IP提供商,其市场份额高出排名第二Rambus公司约一倍左右。在ARM的客户名单中,全  
是业界耳熟能详的名字:英特尔、三星、德州仪器、摩托罗拉和美国国家半导体等,几  
乎涵盖了所有芯片厂商。在半导体消费普遍衰退的今天,ARM能够逆市上扬,给人们留下  
太多的启示。  
  ARM的成功之道  
  十几年前,ARM开创性地提出采用开放的、可授权许可的IP来支持以微处理器为核心  
的系统级芯片(SoC),这个革命型的概念开创了芯片产业的新局面,同时也将IP业创造  
为当前最热门和最令人觊觎的新经济产品。  
  而现在1秒钟全世界就有10块以上的ARM芯片被买走每卖出一部装有ARM  
片的手机,ARM公司能获利1元人民币“ARM不出售任何芯片,每年坐收2亿美金  
这样的业绩却是一家不到800员工的小公司完成的,这样的成功只能称为奇迹。  
  成功之道1:在合适的时间,选择了合适的领域,合适的定位  
  当ARM公司创始人之一Robin Saxby从摩托罗拉出来创业时,就一直在思考这样的问  
题:如何让弱小ARM公司生存下来? ARM公司当时唯一有竞争力的是全世界首款商用RIS  
C
微处理器,并得到了苹果公司的认同。然而,与那时的芯片巨人相比,无论在财力和人  
力上,ARM都象一只小舢板,在疾风骤雨中,随时都可能会翻船。于是,ARM公司巧妙地  
选择了一个被人忽视的切入点——32位嵌入式处理器的内核设计。由于那时4位和8位的  
嵌入式处理器大行其道,而英特尔又专注于PC处理器,以至于ARM得到了可乘之机,而互  
联网的崛起和移动通信的发展又刺激了嵌入式处理器的需求,ARM提供的芯片技术既能满  
足日益增长的多媒体需求,又有省电节能的特殊功效,一时之间,形成了新的消费热点  
,也带动了半导体产业的扩张。可以说,ARM最初切入32位嵌入式处理器具有一定的前瞻  
性,这也为ARM的成功奠定了坚实的基础。  
  成功之道2:采用灵活而又廉价的商业模式,广开财源之门  
  经过多年的运作和磨合,ARM公司终于找到了适合自己的商业模式:不生产任何商用  
的半导体产品,只依靠收取知识产权使用费来获取收益。ARM公司不生产芯片带来直接的  
好处就是,芯片巨头不再认为ARM是竞争对手,相反还是可以相互合作的朋友。ARM能与  
芯片厂商化敌为友,避免了硬碰硬,这一招可谓高明至极,以至于其高层在面对新闻媒  
体时,也要反复强调ARM与英特尔、高通等公司的区别。言下之意,表露出ARM抢占产业  
链最高层的得意与狷狂。  
  目前ARM的收入来源已经实现了多元化:首先是专利授权费用,这是客户采用ARM  
利时一次性付给ARM的费用;其次是按照一定比例收取客户产品的专利使用费,即客户每  
卖出一片芯片,就收取同等比例的费用。这两项专利技术收入分别占公司总收入的40%  
30%
。另外,该公司在设计工具销售方面的收入有15%左右,剩下的来自设计顾问服务和  
培训支持服务等。值得注意的是,在2003年第一季度,ARM专利使用费用比上一季度大幅  
上涨了33%,而其合作伙伴卖出的芯片数量也1.27 亿片上升到1.78 亿片。这表明,ARM  
不仅仅自己发家致富,也为合作伙伴带来了财运。正是采用共生共存的合作方式,ARM  
客户创造利润的同时,也为自己觅得了商机。  
  成功之道3:在技术上有独到之处,注重灵活的配置和良好的软件兼容性  
  在IT领域,技术也许不是企业成功所需的决定性因素,但绝对是每家公司都非常重  
视因素。ARM公司能在短短十年的时间内脱颖而出,绝不仅仅靠成熟的商业模式和合适的  
市场定位。正因为ARM处理器在设计上有不少独到之处,才使得它得到了广泛的应用。在  
ARM
公司提供的技术授权中,生产商可以根据不同的需要对ARM处理器进行配置,这也就  
是说,ARM公司能够按需定做处理器芯片,即便是两家厂商采用了同样的ARM技术授权,  
其生产的芯片在技术细节上也是不同的。比如英特尔的Xscale和德州仪器的OMAP处理器  
均是出自ARM 9系列,其核心完全相同,但是使用的DSP内核会略有差异,这样既能保证  
操作系统运行程序的一致性,又能满足不同芯片的个性化需求。  
  目前主流的32位处理器能够以模拟的方式来执行16位的程序代码,这种被称为“Th  
umb”
的工作方式使ARM处理器具有良好的兼容性,正是这样的特性使为16位的Palm OS   
4.X
操作系统设计的软件能够在Palm OS 5.0的机型上运行,使生产商不用过多的考虑向  
下兼容的问题。另外,ARM的指令很短,通用性好,耗电量特别的低,尤其适合于掌上电  
脑,手机等对能耗有苛刻要求的设备。  
  成功之道4:对研发持续不断地投入,联手有实力的厂商进行技术攻关  
  ARM公司在技术上的活力来源于对研发源源不断的投入上,ARM运营的成本主要是人  
力投入,60%的员工是研发人员,研发费用大约占营收的30%以上,2003年一季度的研发  
投入更是高达38%。最近,ARM公司牵手美国国家半导体公司,共同开发可大幅延长便携  
设备电池寿命的高效率电源管理系统,为解决目前困扰终端设备已久的耗电问题带来了  
一丝曙光。据称,2003年年底,ARM公司还将推出三项新技术:TrustZoneThumb2AM  
BA
新版,将把ARM处理器带进一个新的革命时期,这或许是ARM历久弥新的根本原因  
  
  ARM在中国  
  从中芯的32位嵌入式CPU“方舟1,到中科院的通用高性能的CPU‘龙芯’1号,  
再到上海复旦微电子的嵌入式32位微处理器神威号,中国人在芯片上投入太多的努力  
,这也许是所谓的中国芯情结。尚不清楚ARM在这三款中国芯背后扮演的角色,但是  
如果得到ARM这样的技术授权之后,中国的芯片业是否能从中国制造顺利演变为  
国设计呢?  
  20027月,ARM在上海设立了中国地区的全资分公司。由于国内的注册惯例无法为  
ARM
准确定位,因而取名为安谋咨询(上海)有限公司,搞笑的是,ARM提供的咨询服务  
只占其业务总量的极小部分。通过积极的中国策略,ARM用了短短一年的时间,在中国发  
展了九家合作伙伴:其中两家为工具代理商(科汇亚太、旋极);三家为集成电路设计  
合作伙伴,他们都已购买了ARM技术授权(上海集成电路设计研究中心、上海华虹集成电  
路有限公司、深圳市中兴集成电路设计有限责任公司);科银京城、中科红旗、上海汉  
峰为实时操作系统合作商;位于南京的东南大学是ARM大学计划成员。  
  在进军中国市场的道路上,ARM从不掩饰对中国市场的渴望和期待。因为在新一轮的  
技术革命中,中国将扮演着越来越重要的角色,任何有抱负的国际大公司都不会忽略这  
一点。ARM公司力图通过向中国集成电路设计中心、晶圆代工厂、OEM公司以及其他第三  
方企业提供技术授权,来帮助他们设计、生产基于ARM架构的产品,同时使自己在产业链  
  
的顶端位置更加牢固。  
  为适应中国国情,ARM 公司对中国客户的技术授权采取特殊的策略:针对不同的用  
户,如高校、政府孵化器部门、设计实验性的小公司、OEM厂商,按照他们的不同使用目  
的,采取不同的技术授权费用门槛,这样就可以使更多的中国用户能够得到ARM的技术授  
权。目前这一策略已经取得良好的效果,上海集成电路设计研究中心能以较低价格获得  
ARM
核心授权就是这一优惠策略的集中体现,同时受益的还有东南大学。  
  ARM的启示  
  从规模和产值来看,ARM远远小于英特尔、高通、德州仪器和摩托罗拉四大巨头,但  
是其影响力并不弱于他们。相反,ARM凭借ARM处理器,已经建立起一个庞大的联盟,并  
通过下游厂商将产品打入电子产品的方方面面。从这个层面说,ARM帝国并不逊色于任何  
一个芯片巨头。  
  能站在产业链最顶端的公司数量是很少的,同时又是最优秀的公司,因为他们是站  
在金字塔的尖端,宛如皇冠上最耀眼的明珠。细细想来,任何公司要想抢到最顶端的位  
置,都需要良好的前瞻性、充分的技术储备、足够的耐心和一点点的运气,ARM恰巧都具  
备了这些条件。  
  在西方不亮东方亮的特殊背景下,中国IT产业是全球产业低潮中唯一的亮点,这也  
为国内产业英雄创造辉煌业绩,做好了充分的准备。或许再过十年,会有国内公司能达  
ARM的高度,中国芯也许不再会是情结,而是中国人的骄傲。

点击此处查看原文 >>

系统分类: PCB   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(650)
发表于:2007-11-15 10:26:25
标签:无标签

1

51单片机 Keil C 延时程序的简单研究

2007-01-11 22:56发信站: BBS 水木清华站 (Fri Apr 15 10:54:23 2005),

站内ft2 (to2too) 于  (Mon Apr  4 23:20:41 2005) 

提到:by: InfiniteSpace Studio/isjfk,1.21.2004

任何人都可以在注明原作者和出处的前提下随意转载这篇文章,但不得用于商业目的。


    应用单片机的时候,经常会遇到需要短时间延时的情况。需要的延时时间很短,一般都
是几十到几百微妙(us)。有时候还需要很高的精度,比如用单片机驱动DS18B20的时候,误
差容许的范围在十几us以内,不然很容易出错。这种情况下,用计时器往往有点小题大做。
而在极端的情况下,计时器甚至已经全部派上了别的用途。这时就需要我们另想别的办法了

    以前用汇编语言写单片机程序的时候,这个问题还是相对容易解决的。比如用的是12MH
z晶振的51,打算延时20us,只要用下面的代码,就可以满足一般的需要:
        mov     r0, #09h
loop:   djnz    r0, loop
51单片机的指令周期是晶振频率的1/12,也就是1us一个周期。mov r0, #09h需要2个机器周
期,djnz也需要2个极其周期。那么存在r0里的数就是(20-2)/2。用这种方法,可以非常方
便的实现256us以下时间的延时。如果需要更长时间,可以使用两层嵌套。而且精度可以达
到2us,一般来说,这已经足够了。
    现在,应用更广泛的毫无疑问是Keil的C编译器。相对汇编来说,C固然有很多优点,比
如程序易维护,便于理解,适合大的项目。但缺点(我觉得这是C的唯一一个缺点了)就是
实时性没有保证,无法预测代码执行的指令周期。因而在实时性要求高的场合,还需要汇编
和C的联合应用。但是是不是这样一个延时程序,也需要用汇编来实现呢?为了找到这个答
案,我做了一个实验。
    用C语言实现延时程序,首先想到的就是C常用的循环语句。下面这段代码是我经常在网
上看到的:
void delay2(unsigned char i)
{
    for(; i != 0; i--);
}
到底这段代码能达到多高的精度呢?为了直接衡量这段代码的效果,我把 Keil C 根据这段
代码产生的汇编代码找了出来:
             ; FUNCTION _delay2 (BEGIN)
                                           ; SOURCE LINE # 18
;---- Variable 'i' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 19
                                           ; SOURCE LINE # 20
0000         ?C0007:
0000 EF                MOV     A,R7        ;1个机器周期
0001 6003              JZ      ?C0010      ;2个机器周期
0003 1F                DEC     R7          ;1个机器周期
0004 80FA              SJMP    ?C0007      ;2个机器周期
                                           ; SOURCE LINE # 21
0006         ?C0010:
0006 22                RET
             ; FUNCTION _delay2 (END)
真是不看不知道~~~一看才知道这个延时程序是多么的不准点~~~光看主要的那四条语句,就
需要6个机器周期。也就是说,它的精度顶多也就是6us而已,这还没算上一条 lcall 和一
条 ret。如果我们把调用函数时赋的i值根延时长度列一个表的话,就是:
i    delay time/us
0    6
1    12
2    18
...
因为函数的调用需要2个时钟周期的lcall,所以delay time比从函数代码的执行时间多2。
顺便提一下,有的朋友写的是这样的代码:
void delay2(unsigned char i)
{
    unsigned char a;
    for(a = i; a != 0; a--);
}
可能有人认为这会生成更长的汇编代码来,但是事实证明:
             ; FUNCTION _delay2 (BEGIN)
                                           ; SOURCE LINE # 18
;---- Variable 'i' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 19
                                           ; SOURCE LINE # 21
;---- Variable 'a' assigned to Register 'R7' ----
0000         ?C0007:
0000 EF                MOV     A,R7
0001 6003              JZ      ?C0010
0003 1F                DEC     R7
0004 80FA              SJMP    ?C0007
                                           ; SOURCE LINE # 22
0006         ?C0010:
0006 22                RET
             ; FUNCTION _delay2 (END)
其生成的代码是一样的。不过这的确不是什么好的习惯。因为这里实在没有必要再引入多余
的变量。我们继续讨论正题。有的朋友为了得当更长的延时,甚至用了这样的代码:
void delay2(unsigned long i)
{
    for(; i != 0; i--);
}
这段代码产生的汇编代码是什么样子的?其实不用想也知道它是如何恐怖的$#^%&%$......
让我们看一看:
             ; FUNCTION _delay2 (BEGIN)
                                           ; SOURCE LINE # 18
0000 8F00        R     MOV     i+03H,R7
0002 8E00        R     MOV     i+02H,R6
0004 8D00        R     MOV     i+01H,R5
0006 8C00        R     MOV     i,R4
                                           ; SOURCE LINE # 19
                                           ; SOURCE LINE # 20
0008         ?C0007:
0008 E4                CLR     A
0009 FF                MOV     R7,A
000A FE                MOV     R6,A
000B FD                MOV     R5,A
000C FC                MOV     R4,A
000D AB00        R     MOV     R3,i+03H
000F AA00        R     MOV     R2,i+02H
0011 A900        R     MOV     R1,i+01H
0013 A800        R     MOV     R0,i
0015 C3                CLR     C
0016 120000      E     LCALL   ?C?ULCMP
0019 601A              JZ      ?C0010
001B E500        R     MOV     A,i+03H
001D 24FF              ADD     A,#0FFH
001F F500        R     MOV     i+03H,A
0021 E500        R     MOV     A,i+02H
0023 34FF              ADDC    A,#0FFH
0025 F500        R     MOV     i+02H,A
0027 E500        R     MOV     A,i+01H
0029 34FF              ADDC    A,#0FFH
002B F500        R     MOV     i+01H,A
002D E500        R     MOV     A,i
002F 34FF              ADDC    A,#0FFH
0031 F500        R     MOV     i,A
0033 80D3              SJMP    ?C0007
                                           ; SOURCE LINE # 21
0035         ?C0010:
0035 22                RET
             ; FUNCTION _delay2 (END)
呵呵,这倒是的确可以延迟很长时间~~~但是毫无精度可言了。
    那么,用C到底能不能实现精确的延时呢?我把代码稍微改了一下:
void delay1(unsigned char i)
{
    while(i--);
}
因为根据经验,越简洁的C代码往往也能得出越简洁的机器代码。那这样结果如何呢?把它
生成的汇编代码拿出来看一看就知道了。满怀希望的我按下了“Build target”键,结果打
击是巨大的:
             ; FUNCTION _delay1 (BEGIN)
                                           ; SOURCE LINE # 13
;---- Variable 'i' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 14
0000         ?C0004:
                                           ; SOURCE LINE # 15
0000 AE07              MOV     R6,AR7
0002 1F                DEC     R7
0003 EE                MOV     A,R6
0004 70FA              JNZ     ?C0004
                                           ; SOURCE LINE # 16
0006         ?C0006:
0006 22                RET
             ; FUNCTION _delay1 (END)
虽说生成的代码跟用for语句是不大一样,不过我可以毫无疑问的说,这两种方法的效率是
一样的。似乎到此为止了,因为我实在想不出来源程序还有什么简化的余地。看来我就要得
出来这个结论了:“如果需要us级的延时精度,需要时用汇编语言。”但是真的是这样吗?
我还是不甘心。因为我不相信大名鼎鼎的 Keil C 编译器居然连 djnz 都不会用???因为
实际上程序体里只需要一句 loop: djnz r7, loop。近乎绝望之际(往往人在这种情况下确
可以爆发出来,哦呵呵呵~~~),我随手改了一下:
void delay1(unsigned char i)
{
    while(--i);
}
心不在焉的编译,看源码:
             ; FUNCTION _delay1 (BEGIN)
                                           ; SOURCE LINE # 13
;---- Variable 'i' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 14
0000         ?C0004:
                                           ; SOURCE LINE # 15
0000 DFFE              DJNZ    R7,?C0004
                                           ; SOURCE LINE # 16
0002         ?C0006:
0002 22                RET
             ; FUNCTION _delay1 (END)
天~~~奇迹出现了......我想这个程序应该已经可以满足一般情况下的需要了。如果列个表
格的话:
i    delay time/us
1    5
2    7
3    9
...
计算延时时间时,已经算上了调用函数的lcall语句所花的2个时钟周期的时间。
    终于,结果已经明了了。只要合理的运用,C还是可以达到意想不到的效果。很多朋友
抱怨C效率比汇编差了很多,其实如果对Keil C的编译原理有一个较深入的理解,是可以通
过恰当的语法运用,让生成的C代码达到最优化。即使这看起来不大可能,但还是有一些简
单的原则可循的:1.尽量使用unsigned型的数据结构。2.尽量使用char型,实在不够用再用
int,然后才是long。3.如果有可能,不要用浮点型。4.使用简洁的代码,因为按照经验,
简洁的C代码往往可以生成简洁的目标代码(虽说不是在所有的情况下都成立)。5...想不
起来了,哦呵呵呵~~~

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(536)
发表于:2007-11-14 15:52:06
标签:无标签

0

硬件工程师必杀技

1 、充分了解各方的设计需求,确定合适的解决方案
     启动一个硬件开发项目,原始的推动力会来自于很多方面,比如市场的需要,基于整个系统架构的

需要,应用软件部门的功能实现需要,提高系统某方面能力的需要等等,所以作为一个硬件系统的设计

者,要主动的去了解各个方面的需求,并且综合起来,提出最合适的硬件解决方案。比如A项目的原始推

动力来自于公司内部的一个高层软件小组,他们在实际当中发现原有的处理器板IP转发能力不能满足要

求,从而对于系统的配置和使用都会造成很大的不便,所以他们提出了对新硬件的需求。根据这个目标

,硬件方案中就针对性的选用了两个高性能网络处理器,然后还需要深入的和软件设计者交流,以确定

内存大小,内部结构,对外接口和调试接口的数量及类型等等细节,比如软件人员喜欢将控制信令通路

和数据通路完全分开来,这样在确定内部数据走向的时候要慎重考虑。项目开始之初是需要召开很多的

讨论会议的,应该尽量邀请所有相关部门来参与,好处有三个,第一可以充分了解大家的需要,以免在

系统设计上遗漏重要的功能,第二是可以让各个部门了解这个项目的情况,提早做好时间和人员上协作

的准备,第三是从感情方面讲,在设计之初各个部门就参与了进来,这个项目就变成了大家共同的一个

心血结晶,会得到大家的呵护和良好合作,对完成工作是很有帮助的。

2 原理图设计中要注意的问题

     原理图设计中要有“拿来主义”,现在的芯片厂家一般都可以提供参考设计的原理图,所以要尽量

的借助这些资源,在充分理解参考设计的基础上,做一些自己的发挥。当主要的芯片选定以后,最关键

的外围设计包括了电源,时钟和芯片间的互连。

    电源是保证硬件系统正常工作的基础,设计中要详细的分析:系统能够提供的电源输入;单板需要

产生的电源输出;各个电源需要提供的电流大小;电源电路效率;各个电源能够允许的波动范围;整个

电源系统需要的上电顺序等等。比如A项目中的网络处理器需要1.25V作为核心电压,要求精度在+5%-

-3%之间,电流需要12A左右,根据这些要求,设计中采用5V的电源输入,利用Linear的开关电源控制器

和IR的MOSFET搭建了合适的电源供应电路,精度要求决定了输出电容的ESR选择,并且为防止电流过大造

成的电压跌落,加入了远端反馈的功能。

    时钟电路的实现要考虑到目标电路的抖动等要求,A项目中用到了GE的PHY器件,刚开始的时候使用

一个内部带锁相环的零延时时钟分配芯片提供100MHz时钟,结果GE链路上出现了丢包,后来换成简单的

时钟Buffer器件就解决了丢包问题,分析起来就是内部的锁相环引入了抖动。

    芯片之间的互连要保证数据的无误传输,在这方面,高速的差分信号线具有速率高,好布线,信号

完整性好等特点,A项目中的多芯片间互连均采用了高速差分信号线,在调试和测试中没有出现问题。

3 PCB设计中要注意的问题
     PCB设计中要做到目的明确,对于重要的信号线要非常严格的要求布线的长度和处理地环路,而对

于低速和不重要的信号线就可以放在稍低的布线优先级上。重要的部分包括:电源的分割;内存的时钟

线,控制线和数据线的长度要求;高速差分线的布线等等。

     A项目中使用内存芯片实现了1G大小的DDR memory,针对这个部分的布线是非常关键的,要考虑到

控制线和地址线的拓扑分布,数据线和时钟线的长度差别控制等方面,在实现的过程中,根据芯片的数

据手册和实际的工作频率可以得出具体的布线规则要求,比如同一组内的数据线长度相差不能超过多少

个mil,每个通路之间的长度相差不能超过多少个mil等等。当这些要求确定后就可以明确要求PCB设计人

员来实现了,如果设计中所有的重要布线要求都明确了,可以转换成整体的布线约束,利用CAD中的自动

布线工具软件来实现PCB设计,这也是在高速PCB设计中的一个发展趋势。

4 检查和调试
     当准备调试一块板的时候,一定要先认真的做好目视检查,检查在焊接的过程中是否有可见的短路

和管脚搭锡等故障,检查是否有元器件型号放置错误,第一脚放置错误,漏装配等问题,然后用万用表

测量各个电源到地的电阻,以检查是否有短路,这个好习惯可以避免贸然上电后损坏单板。调试的过程

中要有平和的心态,遇见问题是非常正常的,要做的就是多做比较和分析,逐步的排除可能的原因,要

坚信“凡事都是有办法解决的”和“问题出现一定有它的原因”,这样最后一定能调试成功。

5 一些总结的话
      现在从技术的角度来说,每个设计最终都可以做出来,但是一个项目的成功与否,不仅仅取决于

技术上的实现,还与完成的时间,产品的质量,团队的配合密切相关,所以良好的团队协作,透明坦诚

的项目沟通,精细周密的研发安排,充裕的物料和人员安排,这样才能保证一个项目的成功。

      一个好的硬件工程师实际上就是一个项目经理,他/她需要从外界交流获取对自己设计的需求,然

后汇总,分析成具体的硬件实现。还要跟众多的芯片和方案供应商联系,从中挑选出合适的方案,当原

理图完成后,他/她要组织同事来进行配合评审和检查,还要和CAD工程师一起工作来完成PCB的设计。与

此同时,还要准备好BOM清单,开始采购和准备物料,联系加工厂家完成板的贴装。在调试的过程中他/

她要组织好软件工程师来一起攻关调试,配合测试工程师一起解决测试中发现的问题,等到产品推出到

现场,如果出现问题,还需要做到及时的支持。所以做一个硬件设计人员要锻炼出良好的沟通能力,面

对压力的调节能力,同一时间处理多个事务的协调和决断能力和良好平和的心态等等。

      还有细心和认真,因为硬件设计上的一个小疏忽往往就会造成非常大的经济损失,比如以前碰到

一块板在PCB设计完备出制造文件的时候误操作造成了电源层和地层连在了一起,PCB板制造完毕后又没

有检查直接上生产线贴装,到测试的时候才发现短路问题,但是元器件已经都焊接到板上了,结果造成

了几十万的损失。所以细心和认真的检查,负责任的测试,不懈的学习和积累,才能使得一个硬件设计

人员持续不断的进步,而后术业有所小成。
 

点击此处查看原文 >>

系统分类: 嵌入式   |    用户分类:    |    来源: 转贴

评论(1) | 阅读(347)
总共 , 当前 /