PCB设计
PCB(Printed Circuit Board)印刷电路板的缩写
具体方法如下
1. 目的和作用
1.1 规范设计作业,提高生产效率和改善产品的质量 。
2. 适用范围
1.1 XXX 公司开发部的VCD超级VCDDVD音响等产品 。
3. 责 任
3.1 XXX 开发部的所有电子工程师、技术员及电脑绘图员等 。
4. 资历和培 训
4.1 有电子技术基础;
4.2 有电脑基本操作常识;
4.3 熟悉利用电脑PCB 绘图软件.
5. 工作指导(有长度单位为MM)
5.1 铜箔最小线宽:面板0.3MM,面板0.2MM 边缘铜箔最小要1.0MM
5.2 铜箔最小间隙:面板:0.3MM,面板:0.2MM.
5.3 铜箔与板边最小距离为0.55MM,元件与板边最小距离为5.0MM,盘与板边最小距离为4.0MM
5.4 一般通孔安装元件的焊盘的大小(径)孔径的两倍,双面板最小1..5MM,单面板最小为2.0MM,议(2.5MM)如果不能用圆形焊盘,用腰圆形焊盘,小如下图所示(如有标准元件库,
则以标准元件库为准)
焊盘长边、短边与孔的关系为 :
5.5 电解电容不可触及发热元件,大功率电阻,敏电阻,压器, 热器等.解电容与散热器的间隔最小为10.0MM,它元件到散热器的间隔最小为2.0MM.
5.6 大型元器件(如:变压器、直径15.0MM 以上的电解电容、大电流的插座等)加大铜箔及上锡面积如下图;阴影部分面积肥最小要与焊盘面积相等 。
5.7 螺丝孔半径5.0MM 内不能有铜箔(要求接地外)元件.(按结构图要求).
5.8 上锡位不能有丝印油.
5.9 焊盘中心距小于2.5MM 的,相邻的焊盘周边要有丝印油包裹,印油宽度为0.2MM(议0.5MM).
5.10 跳线不要放在IC 下面或马达、电位器以及其它大体积金属外壳的元件下.
5.11 在大面积PCB设计中(约超过500CM2 以上),防止过锡炉时PCB 板弯曲,在PCB 板中间留一条5 至10MM 宽的空隙不放元器件(走线),用来在过锡炉时加上防止PCB 板弯曲的压条,下图的阴影区::
5.12 每一粒三极管必须在丝印上标出e,c,b 脚.
5.13 需要过锡炉后才焊的元件,盘要开走锡位,向与过锡方向相反,度视孔的大小为0.5MM 到1.0MM如下图 :
5.14 设计双面板时要注意,金属外壳的元件,插件时外壳与印制板接触的,顶层的焊盘不可开,一定要用绿油或丝印油盖住(例如两脚的晶振)。
5.15 为减少焊点短路,所有的双面印制板,过孔都不开绿油窗。
5.16 每一块PCB 上都必须用实心箭头标出过锡炉的方向:
5.17 孔洞间距离最小为1.25MM(双面板无效)
5.18 布局时,DIP 封装的IC 摆放的方向必须与过锡炉的方向成垂直,不可平行,如下图;如果布局上有困难,可允许水平放置IC (OP 封装的IC 摆放方向与DIP 相反)。
5.19 布线方向为水平或垂直,由垂直转入水平要走45 度进入。
5.20 元件的安放为水平或垂直。
5.21 丝印字符为水平或右转90 度摆放。
5.22 若铜箔入圆焊盘的宽度较圆焊盘的直径小时,则需加泪滴。如图 :
5.23 物料编码和设计编号要放在板的空位上。
5.24 把没有接线的地方合理地作接地或电源用 。
5.25 布线尽可能短,特别注意时钟线、低电平信号线及所有高频回路布线要更短。
5.26 模拟电路及数字电路的地线及供电系统要完全分开 。
5.27 如果印制板上有大面积地线和电源线区(面积超过500 平方毫米),应局部开窗口。如图 :
5.28 电插印制板的定位孔规定如下,阴影部分不可放元件,手插元件除外,L 的范围是50 330mm,H的范围是50 250mm,果小于50X50 则要拼板开模方可电插,如果超过330X250 则改为手插板。定位孔需在长边上。
PCB设计基本概念
1)尽量少用过
孔,一旦选用了过孔,务必处理好它与周边各实体的间隙,特别是容易被忽视的中间各层与过孔不相连的线与过孔的间隙,如果是自动布线,可在“过孔数量最小化” ( Via Minimiz8tion)子菜单里选择“on”项来自动解决。(2)需要的载流量越大,所需的过孔尺寸越大,如电源层和地层与其它层联接所用的过孔就要大一些。
3、丝印层(Overlay)
为方便电路的安装和维修等,在印刷板的上下两表面印刷上所需要的标志图案和文字代号等,例如元件标号和标称值、元件外廓形状和厂家标志、生产日期等等。不少初学者设计丝印层的有关内容时,只注意文字符号放置得整齐美观,忽略了实际制出的PCB效果。他们设计的印板上,字符不是被元件挡住就是侵入了助焊区域被抹赊,还有的把元件标号打在相邻元件上,如此种种的设计都将会给装配和维修带来很大不便。正确的丝印层字符布置原则是:”不出歧义,见缝插针,美观大方”。
4、SMD的特殊性
Protel封装库内有大量SMD封装,即表面焊装器件。这类器件除体积小巧之外的最大特点是单面分布元引脚孔。因此,选用这类器件要定义好器件所在面,以免“丢失引脚(Missing Plns)”。另外,这类元件的有关文字标注只能随元件所在面放置。
5、网格状填充区(External Plane )和填充区(Fill)
正如两者的名字那样,网络状填充区是把大面积的铜箔处理成网状的,填充区仅是完整保留铜箔。初学者设计过程中在计算机上往往看不到二者的区别,实质上,只要你把图面放大后就一目了然了。正是由于平常不容易看出二者的区别,所以使用时更不注意对二者的区分,要强调的是,前者在电路特性上有较强的抑制高频干扰的作用,适用于需做大面积填充的地方,特别是把某些区域当做屏蔽区、分割区或大电流的电源线时尤为合适。后者多用于一般的线端部或转折区等需要小面积填充的地方。
6、焊盘( Pad)
焊盘是PCB设计中最常接触也是最重要的概念,但初学者却容易忽视它的选择和修正,在设计中千篇一律地使用圆形焊盘。选择元件的焊盘类型要综合考虑该元件的形状、大小、布置形式、振动和受热情况、受力方向等因素。Protel在封装库中给出了一系列不同大小和形状的焊盘,如圆、方、八角、圆方和定位用焊盘等,但有时这还不够用,需要自己编辑。例如,对发热且受力较大、电流较大的焊盘,可自行设计成“泪滴状”,在大家熟悉的彩电PCB的行输出变压器引脚焊盘的设计中,不少厂家正是采用的这种形式。一般而言,自行编辑焊盘时除了以上所讲的以外,还要考虑以下原则:
(1)形状上长短不一致时要考虑连线宽度与焊盘特定边长的大小差异不能过大;
(2)需要在元件引角之间走线时选用长短不对称的焊盘往往事半功倍;
(3)各元件焊盘孔的大小要按元件引脚粗细分别编辑确定,原则是孔的尺寸比引脚直径大0.2- 0.4毫米。
7、各类膜(Mask)
这些膜不仅是PcB制作工艺过程中必不可少的,而且更是元件焊装的必要条件。按“膜”所处的位置及其作用,“膜”可分为元件面(或焊接面)助焊膜(TOp or Bottom 和元件面(或焊接面)阻焊膜(TOp or BottomPaste Mask)两类。 顾名思义,助焊膜是涂于焊盘上,提高可焊性能的一层膜,也就是在绿色板子上比焊盘略大的各浅色圆斑。阻焊膜的情况正好相反,为了使制成的板子适应波峰焊等焊接形式,要求板子上非焊盘处的铜箔不能粘锡,因此在焊盘以外的各部位都要涂覆一层涂料,用于阻止这些部位上锡。可见,这两种膜是一种互补关系。由此讨论,就不难确定菜单中
类似“solder Mask En1argement”等项目的设置了。
8、飞线,飞线有两重含义:
(1)自动布线时供观察用的类似橡皮筋的网络连线,在通过网络表调入元件并做了初步布局后,用“Show 命令就可以看到该布局下的网络连线的交叉状况,不断调整元件的位置使这种交叉最少,以获得最大的自动布线的布通率。这一步很重要,可以说是磨刀不误砍柴功,多花些时间,值!另外,自动布线结束,还有哪些网络尚未布通,也可通过该功能来查找。找出未布通网络之后,可用手工补偿,实在补偿不了就要用到“飞线”的第二层含义,就是在将来的印板上用导线连通这些网络。要交待的是,如果该电路板是大批量自动线生产,可将这种飞线视为0欧阻值、具有统一焊盘间距的电阻元
件来进行设计.
【IC版图设计】和【PCB版图设计】的区别~~~~
ic指的是集成电路,版图设计是ic设计步骤里的除去验证的最后步骤。
pcb电路板设计的对象是宏观电路,即使用做好的芯片去搭建电路系统。
而ic设计做的是芯片本身,所以这里的版图设计(layout)就是芯片内部的电路物理实现,即使是裸片,肉眼也是看不清线路的,因为实在是太小了。一般layout设计工具用的比较多的是cadence的virtuoso。
如果是pcb的话,工具那就多了去了。
再给你个ic的版图在设计的时候的样子吧~
当然这只是一个芯片的一小部分
画PCB板软件有那些,哪一种好用
前一直用protel很多年,也没觉得那里不好。但因工作原因,接触越来越多画图软件,自然就有了对比。下面是些心得,希望对象我一样的“懒人”有用,以下属个人观点。
protel
优点:人性化,界面简单,操作简单,什么都能改,你想怎么样画就怎么样画。 画封装,拼版,生产gerber等都还挺方便。
缺点:除以上优点都是缺点,呵呵。 覆铜功能极差,文件很大,画大些的板子机子基本拖不动,关键一点画电源板很别扭。
PADS
呼声比较高,不少人评价不错,外观比较丑,属于扮猪吃虎型。 抱着尝鲜的心理学习了一段时间,感觉还行。
很多功能不错,特别是自定义管脚,管脚互换,编辑网络等。 感觉画大些的板子比protel方便些。
EasyEDA(https://easyeda.com/)
推荐这款!
国产软件,国内人用的不多,功能也不算很强,但确认很好用。 工作效率保守可以提高1倍。
优点: Windows、Linux、MAC全支持,只要有浏览器就可以用,而且云端存储,甚至平板和手机上都可以用,不必下载安装大型的软件包,软件升级也是在云端自动进行的。
缺点:
1.设计原理图时,无法按照顺序放置网络或者Text;
2.设计PCB时,无法批量修改丝印;
3.导入四层eagle文档有问题;
【IC版图设计】和【PCB版图设计】的区别~~~~
ic指的是集成电路,版图设计是ic设计步骤里的除去验证的最后步骤。
pcb电路板设计的对象是宏观电路,即使用做好的芯片去搭建电路系统。
而ic设计做的是芯片本身,所以这里的版图设计(layout)就是芯片内部的电路物理实现,即使是裸片,肉眼也是看不清线路的,因为实在是太小了。一般layout设计工具用的比较多的是cadence的virtuoso。
如果是pcb的话,工具那就多了去了。
再给你个ic的版图在设计的时候的样子吧~
当然这只是一个芯片的一小部分
请问下各位大侠,电路板与PCB板有什么区别,我想日后能学会修理电路板我应该进什么样的公司和从事什么岗位
电路板就是你在生活中任意一个电器里取出的一小块板子上有电容电阻的元器件的板是电路板也是有规则达到一定功能的实物。而pcb是有了电路图在电脑上通过软件将图画在规定的板上(为形成电路板做基础)这也是电路板的前期。你以后找个维修工程师就可以了。公司就随便选了。看自己能力。
转贴:硬件工程师和软件工程师,哪个更有前途
我个人对美国这方面了解更多,就先从美国说一说。我相信硬件工程师和软件工程师的就业前景应该是提这个问题的人最想知道的方面。
就我所了解的,在现在以及可预见的未来,这个行业对软件工程师的需求绝对是碾压硬件工程师的。也就是说,招软件工程师的职位比硬件工程师的职位要多的多,而且软件工程师找工作上来说会比硬件工程师更容易。
先从企业的角度来讲讲。我个人认为造成这个差异的原因,第一个是基本上所有的公司,从初创公司到全球百强,都有对软件工程师的需求。现在哪个公司不需要几个码农来开发app,或者做个web。但是做硬件这种工作并不是所有公司会去做的。举个简单的例子,摩根大通银行在我们学校的招聘会上有明确招软件工程师,expedia在我们学校招聘会上也明确招聘软件工程师,如果这个两个公司突然说要招电子工程师,这不是逗我吗。。而且哪怕是硬件公司,也需要大量的软件工程师来支持硬件前端工作。
第二点我觉得要归功于现在的创业潮。不管在美国在中国互联网创业都是趋势,但是可以说绝大部分的初创互联网公司做的都是软件方向。有个点子,有点技术,找几个合伙人抱着电脑就能开干了。但是初创公司要专注做硬件开发就比较难了,因为成立设计硬件公司的门槛和起步开销比较大。所以这也导致大部分初创公司以互联网为主,能做的了硬件设计的公司基本上都是处于垄断地位的大企业。
第三个很重要的原因就是硬件设计在现在来看已经是相对成熟的技术,我甚至有ee的同学跟我说大部分硬件的东西已经步入夕阳产业的范畴,因为很多东西已经成了规范,也因为很多东西被自动化所取代。前一阵子全球大牌的硬件公司才裁了不少人,intel更是裁掉了接近20%的硬件工程师。但是互联网热从90年代开始到现在热头还没过,而且未来诸多产业如人工智能,机器学习,图像识别,大数据都才刚起步,所以还有一定的上升空间。
还记得当初我们学校的初创公司招聘会上几十家公司只有一家招硬件工程师,而且还是偏软件的硬件工程师,剩下的公司里98%都在找会码代码的人;大企业的招聘会上才能见到nvidia, arm, intel, TI 的身影,但是哪怕是这样基本上所有的公司招牌上都会有大写加粗的招computer science的字样。。
再从个人的角度来讲。想成为一名软件工程师找到工作的门槛远比成为一名合格的硬件工程师低很多。要想以软件工程师的身份混到个饭碗,能学两门语言学好常用的数据结构刷点题就基本上能找到薪水小几千的岗位。我甚至知道国内有专门的软件工程师培训机构,那种专门教java和算法,两个月速成班,而且所声称的学生就业率还挺高的。但是要想成为一名合格的硬件工程师,不是科班出身的不好好学几门模电数电信号逻辑设计的课,没有在学校实验室里自己焊点电路做实践,连简历都发不出去。而且现在要想学个什么语言框架,网上搜一搜“”xxx语言入门教程“”就有非常丰富的资源,但是要是在网上搜“如何学好超大规模集成电路设计”,要想找到可以受用的资源几乎是不可能的。而且就我所参加的招聘会来说,如果有招硬件工程师基本都要求有研究生的学位,但是对软件工程师的要求基本上就是熟悉算法数据结构,会web编程有相关经历就够了。软件工程师很多时候吃的是体力,硬件工程师大部分时候是吃经验,所以硬件工程师一般得有一定的经历积淀才能脱颖而出。尤其像模电这种上手程度很高的方向,没个十年八年的相关经验根本不算学成出师。所以说本身对从业者的资质要求更高,也是硬件工程师不好找工作的原因之一。
上面是我所认为的短时间内软件工程师就找工作方面来说会比硬件工程师更容易的原因。但是这并不意味着会编程就肯定找得到工作,也不意味着硬件产业就会低迷下去。软件工程师的职位多,但是每年从事这个职业的人也更多,虽然我认为现在软件工程师短期内还没有出现饱和的趋势(毕竟那么高的工资还摆在那),但是总有一天这个行业也会像金融产业一样降温(人才供过于求)。硬件产业虽然大部分已经有步入夕阳产业的趋势,但是曾经一度被宣称没啥好搞的供电网络最近也被smart grid搞得神乎其神,美国top5的高校都还设立了相关实验室。此外,现在物联网,车联网,智能家居的概念被炒得火热,我相信等相关成熟的支持技术(能量采集,低功耗通信)以及统一的开发平台一旦出现,硬件工程师的需求只会更多,虽然这些产品依旧只有那些有背景的大公司才做得动(不过因为欧美国家电子产业上的封锁,国家也在硬件设计上砸了很多银子,初创企业也会慢慢增加,相信国内的相关机遇也会更多)。而且毕竟软件产业毕竟还是依靠硬件,如何设计低功耗,高稳定性,能够承载大吞吐量计算量的硬件也是这个产业的挑战,毕竟人工智能,机器学习,视觉处理等领域是很吃硬件计算量的。没有强大的硬件支持,阿狗要想打败李世乭还是痴心妄想吧。
2. 工作常态 现在在一家设计为设计硬件的公司所设计软件的百强软件公司实习,做的工作大部分还是偏软件,所以本身对工作常态也并没有非常深入的自己的感受。但是就我观察身边的同事以及跟别人的交流来看,不管是做软件硬件,都是要:对。着。电。脑。。。
软件工程师平时就是上班啊调试程序,比较低级的码农只能给高级软件工程师大大下手,帮他们做测试,实现他们设计好的东西。当然了做到高级工程师了才有能力开发设计自己公司的产品。如果在初创公司工作节奏更紧张,如果赶上产品要上线可能需要加班调试。遇到程序爆炸了可能还需要on call(就是你负责的东西突然出问题了,你的manager直接打个电话给你你得马上去公司修bug),至少我知道amazon是有这个机制。 我现在还没有在纯做硬件的公司实习过,但是从我知道的事实来看,硬件工程师不会比软件工程师轻松。硬件工程师也需要调试电路啊调试脚本啊反正也有跟软件工程师交叉的工作。工作环境的话取决于细分的工作类别。开发fpga的估计跟码农一样坐办公室,搞mems的嵌入式的就长期入驻实验室了。因为大部分硬件公司都是相对成熟的大企业,所以工作节奏普遍不会像在初创公司那么紧张,不过像在华为这样的企业就另说了。。。 当然了不管是在软件工程师还是硬件工程师,工作强度应该都是高于其他industry的职业的。毕竟这个行业竞争会越来越激烈,这也是聪明人聚集的地方。 至于工资的话,就平均来讲,美国这里的软件工程师年薪会略高于硬件工程师(从glassdoor以及其他门户的数据来看),但是软件工程师一样也有收入低的,硬件工程师的收入也有碾压软件工程师的。只要你技术过硬,薪水都不是事儿。
3. 个人感受 看题主的问题描述,说软件工程师前景更开阔一些。我个人的感觉是不管怎样,这两个行业在未来都会有非常非常多的机遇与挑战(详细原因见第一点)。不管是软件设计还是硬件设计底下都有更多细小的分支(比如说你硬件设计是想做vlsi,dsp,处理器设计,通信,fpga开发还是嵌入式,软件设计你想做web开发,app开发,软件开发,嵌入式软件工程师,操作系统还是distributed system)。 我个人是对两个大方向都很有兴趣,但是我决定自己最终的方向还是嵌入式设计和处理器设计,这两个行业都应该算是夹在了纯硬件设计和纯软件设计的中间。尤其是产业对嵌入式工程师的要求更高,能够自己设计mixed signal pcb,自己调试应用代码写kernel code,能调试无线通信,基本意味着一个合格的嵌入式工程师要对硬件和软件相关方面有足够的知识。我自己是比较讨厌做web开发app纯开发软件的工作,因为这些工作的门槛太低,不是科班出身的人可能都能混的比你好得多,体现不出来自己的价值。而且我比较喜欢把电路板和各种元件握在手里的感觉,而且我发现自己能够设计一个可以用的硬件的时候那种成就感会高于debug之后的成就感。当你发现自己在经受了大学的磨练真正拥有了学习知识的能力以后,丰富的网上资源以及自身的积累都会让你学习这些网页app知识非常轻松,所以我个人更喜欢硬件底层,以及和硬件底层打交道的软件领域。软件硬件的课程都不会简单,而且两个学科的工作量不是其他学科能比的(学工科的天天做project呆lab,学统计的上完课就回家看电影。。)所以要想学好,还是需要花一定精力,尤其美国的大学工科院系workload相对国内高校来说有增无减。确定这是你想要的,再给予考虑。
从底层硬件到上层应用,嵌入式软件的开发可以分为哪几类?
一、嵌入式系统的概念
着重理解“嵌入”的概念
主要从三个方面上来理解。
1、从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控制器芯片实现,而目前的这种串口控制器芯片早已集成到CPU内部,还有PC机有显卡,而多数嵌入式处理器都带有LCD控制器,但其种意义上就相当于显卡。比较高端的ARM类Intel Xscale架构下的IXP网络处理器CPU内部集成PCI控制器(可配成支持4个PCI从设备或配成自身为CPI从设备);还集成3个NPE网络处理器引擎,其中两个对应于两个MAC地址,可用于网关交换用,而另外一个NPE网络处理器引擎支持DSL,只要外面再加个PHY芯片即可以实现DSL上网功能。IXP系列最高主频可以达到1.8G,支持2G内存,1G×10或10G×1的以太网口或Febre channel的光通道。IXP系列应该是目标基于ARM体系统结构下由intel进行整合后成Xscale内核的最高的处理器了。
2、从软件上前,就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM中。而在定制操作系统内核时所选择的应用程序组件就是完成了软件的“嵌入”,比如WinCE在内核定制时,会有相应选择,其中就是wordpad,PDF,MediaPlay等等选择,如果我们选择了,在CE启动后,就可以在界面中找到这些东西,如果是以前PC上将的windows操作系统,多半的东西都需要我们得新再装。
3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的ROM中就实现了一个真正的“嵌入”。
以上的定义是我在6、7年前给嵌入式系统下自话侧重于理解型的定义,书上的定义也有很多,但在这个领域范围内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,历为毕竟嵌入式系统是计算机范畴下的一门综合性学科
二、嵌入式系统的分层与专业的分类。
嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。
1、硬件层,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件平台是基础,增值还要靠软件。
硬件层比较适合于,电子、通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有,单片机原理及接口技术、微机原理及接口技术、C语言。
2、驱动层,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导至其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的驱动工程师的水平都达不到,这样所写的驱动在应用调用时就如同windows下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运行后来打开的程序。想做个好的驱动人员没有三、四年功底,操作系统内核不研究上几编,不是太容易成功的,但其工资在嵌入式系统四层中可是最高的。
驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞,除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通了解。
3、操作系统层,对于操作系统层目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。据说,XP操作系统是微软投入300人用两年时间才搞定的,总时工时是600人年,中科院软件所自己的女娲Hopen操作系统估计也得花遇几百人年才能搞定。因此这部分工作相对来讲没有太大意义。
4、应用层,相对来讲较为容易的,如果会在windows下如何进行编程接口函数调用,到操作系统下只是编译和开发环境有相应的变化而已。如果涉及Jave方面的编程也是如此的。嵌入式系统中涉及算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内。但如果涉及嵌入式系统下面嵌入式数据库、基于嵌入式系统的网络编程和基于某此应用层面的协议应用开发(比如基于SIP、H.323、Astrisk)方面又较为复杂,并且有难度了。
三、目标与定位。
先有目标,再去定位。
学ARM,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C语言的板级编程。如果从软件上讲,就是要学习基于ARM处理器的操作系统层面的驱动、移植了。这些对于初学都来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级以上基于API的应用层的编程,硬件的寄存器类的东西还是要能看懂的,基于板级的汇编和C编程还是要会的。因此针对于嵌入式系统的硬件层和驱动程的人,ARM的接口电路设计、ARM的C语言和汇编语言编程及调试开发环境还是需要掌握的。
因此对于初学者必然要把握住方向,自己的目标是什么,自己要在那一层面上走。然后再着手学习较好,与ARM相关的嵌入式系统的较为实际的两个层面硬件层和驱动层,不管学好了那一层都会很有前途的。
如果想从嵌入式系统的应用层面的走的话,可能与ARM及其它体系相去较远,要着重研究基嵌入式操作系统的环境应用与相应开发工具链,比如WinCe操作系统下的EVC应用开发(与windows下的VC相类似),如果想再有突破就往某些音视频类的协议上靠,比如VOIP领域的基于SIP或H.323协议的应用层开发,或是基于嵌入式网络数据库的开发等等。
对于初学者来讲,要量力而行,不要认为驱动层工资高就把它当成方向了,要结合自身特点,嵌入式系统四个层面上那个层面上来讲都是有高人存在,当然高人也对应的高工资,我是做硬件层的,以前每月工资中个人所得税要被扣上近3千大元,当然我一方面充当工程师的角色,一方面充当主管及人物的角色,两个职位我一个人干,但上班时间就那些。硬件这方面上可能与我PK的人很少了,才让我拿到那么多的工资。
四、开发系统选择。
很多ARM初学者都希望有一套自己能用的系统,但他们住住会产生一种错误认识就是认为处理器版本越高、性能越高越好,就象很多人认为ARM9与ARM7好,我想对于初学者在此方面以此入门还应该理智,开发系统的选择最终要看自己往嵌入式系统的那个方向上走,是做驱动开发还是应用,还是做嵌入式系统硬件层设计与板级测试。如果想从操作系统层面或应用层面上走,不管是驱动还是应用,那当然处理器性能越高越好了,但这个东西自学,有十分大的困难,不是几个月或半年或是一年二年能搞定的事。
在某种意义上请,ARM7与9的差别就是在某些功能指令集上丰富了些,主频提高一些而已,就比如286和386。对于用户来讲可能觉查不到什么,只能是感觉速度有些快而已。
ARM7比较适合于那些想从硬件层面上走的人,因为ARM7系列处理器内部带MMU的很少,而且比较好控制,就比如S3C44B0来讲,可以很容易将Cache关了,而且内部接口寄存器很容易看明白,各种接口对于用硬件程序控制或AXD单步命令行指令都可以控制起来,基于51单片机的思想很容易能把他搞懂,就当成个32位的单片机,从而消除很多51工程师想转为嵌入式系统硬件ARM开发工程师的困惑,从而不会被业界某此不是真正懂嵌入式烂公司带到操作系统层面上去,让他们望而失畏,让业界更加缺少这方面的人才。
而嵌入式系统不管硬件设计还是软件驱动方面都是十分注重接口这部分的,选择平台还要考察一个处理器的外部资源,你接触外部资源越多,越熟悉他们那你以后就业成功的机率就越高,这就是招聘时所说的有无“相关技能”,因为一个人不可能在短短几年内把所有的处理器都接触一遍,而招聘单位所用的处理器就可能是我们完全没有见过的,就拿台湾数十家小公司(市价几千万)的公司生产的ARM类处理器,也很好用,但这些东西通用性太差,用这些处理器的公司就只能招有相关工作经验的人了,那什么是相关工作经验,在硬件上讲的是外围接口设计,在软件上讲是操作系统方面相关接口驱动及应用开发经验。我从业近十年,2000年ARM出现,我一天始做ARM7,然后直接跑到了Xscale(这个板本在ARM10-11之间),一做就是五年,招人面试都不下数百人,在这些方面还是深有体会的。
我个人认为三星的S3C44b0对初学者来说比较合适,为什么这么说哪?因为接口资源比较丰富,技术成熟,资料较多,应该十分适合于初学者,有问题可能很容易找人帮且解决,因为大多数人都很熟悉,就如同51类的单片机,有N多位专家级的人物可以给你帮忙,相关问题得以很快解答,所然业界认为这款ARM都做用得烂了,但对于初学者来,就却是件好事。
因此开发系统的选择,要看自己的未来从来目标方向、要看开发板接口资源、还要看业界的通用性。
五、如何看待培训。
首先说说我自己,我目前从业近十年,与国内嵌入式系统行业共同起步,一直站在嵌入式系统行业前沿,设计过多款高端嵌入式系统平台产品并为众多公司提供过解决方案,离职前为从事VOIP的美资公司设计IP-PBX,历任项目经理、项目主管、技术总监、部门经理,积累众多人脉,并集多年经验所得,考虑到学生就业与公司招人的不相匹配,公司想招人招不到,而学生和刚毕业的工程师想找份工作也不太容易,于此力创知天行科技有限公司,开展嵌入式系统教育培训。
因一线的科研人员和一线的教师不相接触,导至国内嵌入式人才缺乏,国外高校的技术超前于业界公司,而国内情况是业界公司方面的嵌入式系统技术要远远领先于高校。为架构业界与高校沟通的桥梁,把先进技能带给高校学子,为学生在就业竞争中打造一张王牌,并为业界工程师快速提升实现自我创造机遇,我就这样辞去了外企年薪20多万的职位,做嵌入式系统方面的培训了。
对于培训来讲,是花钱来买时间,很多工程师都喜欢自己学,认为培训不值,这也是有可能的,纯为赚钱的培训当然不会太有价值,但对于实力型的培训他们可能就亏大了,有这样一笔帐不知他们算过没有,如果一个一周的培训,能带给他们自学两年后才能掌握的知识,在培训完后他们用三个月到半年时间消化培训内容,这样他会省约至少一年半的时间来学其它的或重新站在另一个高度上工作,那么他将最迟一年后会拿到他两年后水平所对应的工资,就是在工资与水平对应的关系上比同批人缩短一年,每月按最少1千计,再减去培训费用至少多1.0万,同时也省了一年时间,不管是休闲也好,再继续提高也好,总之是跑到了队伍的前面了。
另一层面上讲,对于新人的培训相当于他们为自己提前买了份失业保险,有师傅会带领他们入道,我今年暑假时班里最年轻的一个学生是大二的,今年才上大三,这学期才刚学单片机,但现在ARM方面的编程工作已经搞得有声有色了,再过一年多毕业,他还会失业吗?
再者通过培训,你可以知道很多业界不为常人所知的事,同时也为自己找了个师傅,就比如说,两个工程师分别用S3C2410和PXA255来做手持设备,同样两人都工作四年,再出去找工作,两人工资可能最多可相差一倍,为什么?这就是业界不为常人所知的规则,2410属于民品,被业界用烂了,做产品时成本特敏感,当然也对人才成本敏感了,PXA255是intel的东西,一个255 CPU能买三个2410,一直被业界定义为贵族产品,用的公司都是大公司或为军方服务的公司,不会在乎成本,只要把东西做好,一切都好说,但这方面做的人也少啊,因为开发系统贵啊。
对于说为自已找了个好师傅,我想是这样的,因为同级工程师间存在着某此潜在的竞争关系,有很多人不愿意把自己知道的东西教给别人,这意味着他将要失业,就是所说的教会徒弟,饿死师傅,但对于我们这些人就不存在这样的关系了,我是在嵌入式系统平台设计上走到了一定程序,目前在国内这块的技术上已经是自己很难再突破自己,因此很多东西我对大家都是OPEN的,就比如说下面那部分关于接口设计中所提到的时序接口东西,我要是不讲,却使是高级硬件工程师我想也几乎只有10%的人能知道吧。
六、成为高级嵌入式系统硬件工程师要具备的技能。
首先我声明,我是基于嵌入式系统平台级设计的,硬件这个方向我相对来讲比较有发言权,如果是其它方面所要具备的基本技能还要和我们培训中心其它专业级讲师沟通,或去网站看看www.zt-training.com。他们的方面上我只能说是知道些,但不是太多,初级的问题也可以问我。
对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的Modem射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15K以上。
另一类就是数字部分了,在大方向上又可分为51/ARM的单片机类,dsp类,FPGA类,国内FPGA的工程师大多是在IC设计公司从事IP核的前端验证,这部分不搞到门级,前途不太明朗,即使做个IC前端验证工程师,也要搞上几年才能胜任。dsp硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。而ARM单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极大,而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互PK,判定水平高低的依据。而接口设计这块最关键的是看时序,而不是简单的连接,比如PXA255处理器I2C要求速度在100Kbps,如果把一个I2C外围器件,最高还达不到100kbps的与它相接,必然要导致设计的失败。这样的情况有很多,比如51单片机可以在总线接LCD,但为什么这种LCD就不能挂在ARM的总线上,还有ARM7总线上可以外接个Winband的SD卡控制器,但为什么这种控制器接不到ARM9或是Xscale处理器上,这些都是问题。因此接口并不是一种简单的连接,要看时序,要看参数。 一个优秀的硬件工程师应该能够在没有参考方案的前提下设计出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师把方案中的5V变1.8V的DC芯片,直接更换成LDO,有时就会把CPU烧上几个。前几天还有人希望我帮忙把他们以前基于PXA255平台的手持GPS设备做下程序优化,我问了一下情况,地图是存在SD卡中的,而SD卡与PXA255的MMC控制器间采用的SPI接口,因此导致地图读取速度十分的慢,这种情况是设计中严重的缺陷,而不是程序的问题,因此我提了几条建议,让他们更新试下再说。因此想成为一个优秀的工程师,需要对系统整体性的把握和对已有电路的理解,换句话说,给你一套电路图你终究能看明白多少,看不明白80%以上的话,说明你离优秀的工程师还差得远哪。其次是电路的调试能力和审图能力,但最最基本的能力还是原理图设计PCB绘制,逻辑设计这块。这是指的硬件设计工程师,从上面的硬件设计工程师中还可以分出ECAD工程师,就是专业的画PCB板的工程师,和EMC设计工程师,帮人家解决EMC的问题。硬件工程师再往上就是板级测试工程师,就是C语功底很好的硬件工程师,在电路板调试过程中能通过自已编写的测试程序对硬件功能进行验证。然后再交给基于操作系统级的驱动开发人员。
总之,硬件的内容很多很杂,硬件那方面练成了都会成为一个高手,我时常会给人家做下方案评估,很多高级硬件工程师设计的东西,经常被我一句话否定,因此工程师做到我这种地步,也会得罪些人,但硬件的确会有很多不为人知的东西,让很多高级硬件工程师也摸不到头脑。
那么高级硬件件工程师技术技能都要具备那些东西哪,首先要掌握EDA设计的辅助工具类如Protel\ORCAD\PowperPCB\Maplux2\ISE、VDHL语言,要能用到这些工具画图画板做逻辑设计,再有就是接口设计审图能力,再者就是调试能力,如果能走到总体方案设计这块,那就基本上快成为资深工程师了。
硬件是要靠经验,也要靠积累的,十年磨一剑,百年磨一针。
请问plc控制原理和pcb板控制的主要区别在哪里?
从硬件来讲,PLC和PCB(俗称单板机)的控制方法是一样的,二者的区别在于软件方面:
1、单板机的软件需要做底层开发,控制程序一般用汇编或者是C代码写,程序需要使用专用的代码级编程软件和下载线刷入,一般而言除了编程人员外不可以在现场和远程进行修改。其优点是成本相对低廉,缺点是对开发人员要求高,需要PCB电路级和嵌入式代码级的开发人员,开发周期也长。
2、PLC你可以看作是运行一套程序执行系统的单板机,其系统可以看作是一种简化的、针对工控行业优化的操作系统。其底层按照各功能模块已经写好了驱动程序,并固化在PLC内。对于PLC的编程,是通过遵循IEC61131规范的编程软件,通过梯形图、指令码等图形化的编程语言编辑,学习和开发难度低,有现场经验的电气工程师经过一定培训都可以上手编程,开发周期短,成功率高。对于开发过程中功能的增删等也非常方便。
所以行业内,对于需要快速开发的非标设备,一般用PLC实现控制。对于长期批量生产的设备,前期快速开发阶段采用PLC,功能和动作稳定后,一半会根据产量等因素,更换为单板机控制。
我想问的是,pcb的开关信号也是0-24v吗?类似plc的DI和DO吗?
根据需要设计。工控设备上使用的单板机,为了更好的兼容传感器,一般都采用与PLC类似的IO设计。
转载请注明出处51数据库 » pcb板硬件和软件的慨念 PCB板是什么怎样检验