序 我是99年天大电子信息技术系毕业的。在通信公司工作了两年。做的工作是大多数电子 系本科生干的活:硬件。本人于去年回天津参加研究生考试。目前在津等最后的结果, 每天也海阔天空地看些技术资料。最近突然想到总结一下两年来,我对硬件的感受。因 为,本人已经决定以后不搞硬件了,但最近有一些朋友要求我讲一下硬件,而我确实已 经忘了很多东西,假如再不回忆的话,以后更难想起来了。 我在公司带过弟子,也被评到过优秀导师,相信自己有一定的指导经验。我也很想为学 弟妹们干一定的实事。这是第一篇文档,假如以后大家需要,我可以继续为大家效劳。
在我的理想想法中,培养一个可以比较独立工作的硬件人员可能就是两个月的时间,我 希望你能付出一个月到两个月的代价。可能以后只有一半的电子系学生搞硬件,且由于 本人涉及的是数字部分的(我以前是数据通信硬件部的),所以肯定不全,这点敬请注 意。至于其他方面,希望有意者补全。 硬件开发的现状 目前大家工作过程中用到的硬件知识不是很多的。我曾经与很多的硬件工程师交流过, 深深知道硬件是极其难搞的,其中的根本原因是目前国际分工很细,芯片的集成度很高 。以前很多芯片,目前都集成到一起去了。也就是说,现在硬件越做越细,越来越巧。 于是硬件工程师的要求也越来越傻瓜了。其实,社会化大生产日益加剧的今天,干什么 活都是管中窥豹了。但正因为此,我觉得一个学生才可以很容易的准备一些。 请你记住一点,真正的硬件高手是在做复杂芯片的公司里。而你找的工作,一般是设备 开发商,对开发人员硬件的要求是很低的。而真正的硬件技术,全世界都垄断在少数的 几个公司里,如INTEL、MOTOROLA等等。而国内,除了少数的学校(例如北大,有一帮年 轻人在搞CPU。东北大学好象也有什么项目)和科研单位有一定的水平(实际也比国外的 大公司差不少)外,所有的以赢利为目的国内大公司,硬件水平是很一般的。我为什么 这么说。请看普通的硬件开发人员的工作过程。假如设计一块主板的话,核心的芯片是 三个:CPU、北桥和南桥。第一步,考虑选择INTEL的芯片还是MOTO的(其他的也没几家 )。因为是通信设备,而不是电脑,那么,就选择通信芯片的老大MOTO的产品吧。于是 ,到网上或找代理商找各种CPU(它是最核心的)的资料。考虑自己设计的要求,于是选 择了一款CPU(例如最通用的MPC8260吧)。看看MOTO给提供的资料,一般如下:CPU的用 户手册、CPU的概要介绍、CPU的技术总结、各种设计的参考电路图、涉及的逻辑图、软 件的编程参考等等(见附1:)。为什么MOTO给那么多的资料,原因很简单:希望大家用 他的芯片啊。作为一个芯片公司,他面对他的用户,也就是一般的硬件开发工程师,当 然当作上帝。 可能你有两个想法:第一,他的资料给得太全了。第二,硬件工程师将很轻松。可惜, 上面的两个观点都是不对的。对第一,我们既是那些垄断大公司的用户,也是潜在的竞 争对手,假如硬件水平足够,很多东西可以用大逻辑做的,所以也就不会使用他们一些 垄断的很贵的芯片,而改成自己设计,所以涉及机密的资料芯片供应商都不会给的,这 实际上给我们的硬件人员很大的难度。对第二,硬件实际是很难作好的,想想看,光硬 件的一些皮毛的资料就一大堆,许多东西就是读了人家的资料都是搞不懂的。而且,我 碰到好几起例子,芯片本身有BUG,且芯片公司还没有发觉,这样会折腾死人的。硬件在 设计之初的调试板子,主要是因为自己一些地方没有理解老外的参考设计,并且参考设 计在一些信号匹配方面做得不好。而,作为一个产品,光几块板子行肯定不行,一定要 考虑故障率,提高成品率的过程是很难的。而那时候,根本不是拿硬件的知识来搞定的 ,最大的方法和能耐叫耗时间和体力。在工作中,我曾以为在这方面是很天才的,以前 也总结过如何提高板子成品率的技术文档。但最后,我不得不承认,我还没有入门。 面试前的非技术的几点忠告 1, 实事求是,不要吹牛。相信上面的第一节对你有启示。面试的人很清楚大家的水平 ,吹牛是没有用的。 2, 乐观进取,塌实勤奋。表示很有上进心。尽量对前景表示乐观,当然也要表现塌实 一定。千万不要很”冲”的样子,不能大侃我将来咋样咋样。最好,暗示,我刚毕业,什 么活都会好好干的,努力向大家学习来的。 3, 三天教材,不慌不忙。”我刚进公司时,觉得就我是土人。到我呆了一年后,发觉大 家都是土人”。听过我说这话的学弟学妹,在我以前公司的已经有几位了。所以回答不出 人家的问题的话,一点不用紧张,在公司混了几年的人,理论水平肯定不如你。以前, 我部门领导一到面试时,就翻以前的大学教材看,并且让我们想法子出题。所以,面试 前花三天看专业课的书很有用。 4, 专用名词,作好整理。由于面试的时间是很有限的,实际上基本上问不出什么实质 的东西。许多公司的面试人员,由于本身做过一定的产品,所以很有可能问你了解什么 什么东西吗。所以,对一些常用的设备,作好每个设备的百来个字的名词解释,可能有 一定的用处。例如建议的通信设备:程控交换机、ATM交换机、LANSWICH、路由器、接入 服务器、ISDN、传输中的一些设备和无线的一些设备等等 5, 过程推断,思路清晰。假如你对一个基本的原理的结论掌握地不好或很好,而恰巧 人家问到你,你不妨首先说这是很久前的课上的(或其他托词),然后,假装回忆的样 子,通过一些相关的知识推出来(不用很严谨就可以)。因为,公司招人,很在乎你的 能力,而不是记忆的水平。就是记不住,讲一下相关的过程,做试图推出结论,我也认 为很好。 6, 诚恳为先,联想在后。很有可能人家问你一个你从来没有听说过的名称,而且是英 文的。那么,你的回答应该老老实实说不知道,但建议你请求允许你猜一下。根据名称 做一定的猜测,即使错了,也是不会太差的。我记得这样一个例子,公司人员问”WTD”是 什么意思?(应该是”看门狗”),但一位应试者说自己不知道,但请求猜测一下,他的 猜测是”我猜是宽带的什么的吧”,大家还是觉得那小孩不错,就要了。 7, 成功关键,重在一举。最重要的一点:请务必关心这个极其可能问到的问题,”你做 过什么?”假如该问题回答的很好的话,好工作已经到手一半了。 8, 高分高能,两者其一。我觉得,本科生找工作,学习成绩是占很重要的地位的。一 般情况下,由于面试大家都不怎么样,所以成绩是主要的参考了,所以只要成绩足够好 ,做一定的面试准备,好工作问题不大。但每次都有一定数量的学生,以能力取胜,至 少能以较好的面试,在面试中脱颖而出。 下面,我对一些硬件知识做一定的分析,我的目的是希望你给公司的面试者一个”高能” 的印象,并且能回答好”你搞过什么”这个问题。 工作手段 一、硬件人员应该掌握的工具 1, 画电路图的工具一个,最常见的是PROTEL。
2, 了解FPGA,会使用逻辑设计的集成环境一个,最常见的是FOUNDATION或MAXPLUSⅡ 3, 了解示波器和逻辑分析仪的知识。最好会使用。 4, 其他。我觉得不是很重要,但最好会用。例如C,汇编等等。 二、可能招生时要求,但一般本科生不知道的方面 1, 对嵌入式系统的了解。 2, 对信号完整性的了解。 注:以上两个方面实际上很难,内容很多,真正的专家极少,所以当然了解一点就很够 了。 硬件面试能手培养表 上面是一些投机取巧的部分,可能根本没有用。下面尽我的所能,把你作为一个硬件新 手进行培养,希望对你有利。但本人做的是无偿的工作,所以也没有向你承诺什么。不 过本人深信对你的知识上,特别方法上的进步是有用的。假如真得有用,希望你以后一 起来完善我们电子系的学生业余培训,以后,我可能向你讨教讨教一些问题的。另外, 对你有用一定要记住请客啊,呵呵,本人只喜欢红牛。
发信人: ground (阿土), 信区: S_EIE 标 题: 给大四电子系部分学生的建议二 发信站: 天大启明星BBS站 (2002年10月15日20:32:23 星期二), 站内信件
一、培养的目标 通过两个月的培养,了解目前常用的一些通信设备,掌握一定的工具的使用,介绍不同 的硬件接口卡,熟悉目前常用的单板的设计方法(接口板设计和主控板原理)。最后, 你会发觉,做硬件板子就像”天天饮食”里的做菜那样简单。 二、培养的方式 我觉得大家先自己看看吧。你不懂的东西,一般我也不懂,就跳过去吧。 三,培养的时间表 阶段 阶段目标 时间安排 第一阶段 硬件人员应该掌握的工具使用;通信设备的介绍 20天或少于 第二阶段 主控板的各部分模块的知识;主控板的设计 20天 第三的阶段 专题知识(该方面,由于手头资料关系,尽量应该请专家来讲,不过在网 上 找到资料,我可以讲一些);几类接口卡的硬件设计(设计原理和设计方法); 20天 附1: MPC8260 Documentation Title Format Last Change Product Briefs MPC8260 Fact Sheet PDF (65 Kb) 03-01-99 MPC8260 Technical Summary PDF (194 Kb) 03-01-99 MPC8260 Versions and Mask Sets PDF (32 Kb) 02-21-00 User’s Manuals MPC8260 PowerQUICC II User’s Manual, rev. 0 PDF (10.5 Mb) 04-14-99 MPC8260 PowerQUICC II User’s Manual Errata, rev 0 PDF (142Kb) 11-23-99 MPC8260 User’s Manual PQII core PDF (1 Mb) 03-01-99 Hardware Specifications MPC8260 Hardware Specification PDF (312 Kb) 01-26-00 Package Mechanical Specifications - Part I PDF (139 Kb) 06-28-99 Package Mechanical Specifications - Part II PDF (96 Kb) 06-28-99 Pinout TEXT (65 Kb) 03-01-99 Application Notes Instruction and Data Cache Locking on the G2 Processor Core PDF (129 Kb) 04-26-99 MPC8260 Design Checklist PDF (32 Kb) 02-03-00 Diffs between ENG and PILOT revisions of the MPC8260ADS PDF (144 kb) 11-30-99 MPC8260ADS-Revising code for ENG to run on PILOT rev of ADS PDF (49kb) 12-08-99 MPC8260 Design Tools and Data Title Format Last Change Design Assistant Benchmarking MPC826X Programs (include Dhrystone MIPS test) ZIP (52Kb) 11-16-99 I2C Software Example ZIP (135Kb) 11-16-99 MCC Trans./HDLC/Superchannel, for ENG and PILOT ADS boards ZIP (172Kb) 11-22-99 Parallel I/O Port Drivers (API written in “C”) ZIP (49Kb) 10-08-99 VBug0.8 - Motorola debugger,(PC version, works with HP probe) EXE (3.49Mb) 04-09-99 FCC ATM Example (Works with ENG and PILOT revs of 8260ADS) ZIP (1 MB) 11-22-99 MPC8260 Drivers ZIP (5 MB) 01-24-00 Example Schematics ZIP (1 MB) 03-19-99 FCC FEC Example (Works with ENG and PILOT revs of MPC8260ADS) ZIP (340 Kb) 11-22-99 INIT Example (Works with ENG and PILOT revs of MPC8260ADS) ZIP (1.1 MB) 01-25-00 Example Transparent Mode Software for FCC1 (Written in C) ZIP (167 Kb) 11-24-99 Example HDLC for FCC1 (for both ENG and PILOT Rev MPC8260ADS) ZIP (151 Kb) 11-24-99 Ethernet Example (Runs on both ENG and PILOT revs of ADS) ZIP (88 Kb) 11-22-99 Example HDLC for SCC1 (Runs on ENG and PILOT Revs MPC8260ADS) ZIP (183 Kb) 11-24-99 Example Transparent for SCC1 (Runs on ENG and PILOT MPC8260ADS) ZIP (319 Kb)
11-24-99 Software Example Inter-Operating Multiple TDMs and SCCs ZIP (131 Kb) 12-01-99 Models MPC8260 IBIS model TEXT (36 Kb) 04-08-99 MPC8260 BSDL Model TEXT (77 Kb) 10-14-99 Reference Designs MPC8260-MSVADS Reference Design (2 PQIIs, CAM, L2 Cache) PDF (1.2 Mb) 03-23-00 MPC8260ADS User’s Manual, for PILOT revision bd, 11/1999 PDF (3 Mb) 12-01-99 MPC8260 Minimal System Example PDF (107 Kb) 01-06-00 MPC8260-MPC106 PCI Reference Design V1.1 ZIP (149 Kb) 09-20-99 MPC8260-MPC107 PCI Reference Design Spec V0.9 PDF (82 Kb) 09-27-99 MPC8260-TCOM User’s Manual PDF (920 Kb) 04-05-99 MPC8260-ECOM User’s Manual and Support Package PDF (2.7 Mb) 02-10-00 Memory Controller Init. Script for 8260-TCOM DS3 Interfaces TEXT (2.5 Kb) 04-05-99 Memory Controller Init. Script for MPC8260-TCOM T1 Interfaces TEXT (1.8 Kb) 04-05-99 MPC8260-MPC750 Reference Design Spec Ver. 1.1 (The Scout) PDF (440 Kb) 11-30-99 MPC8260-MPC750 Ref. Des. Schematics Rev. 3.1 (The Scout) PDF (1.4 Mb) 03-03-00 MPC8260-MPC750 Ref. Des. BOM Rev. 3.1 (The Scout) PDF (9k) 11-30-99 Tools MPC8260 CPM Performance Evaluator ZIP (75 Kb) 07-23-99 MPC8260 Parallel Ports Configuration Tool ZIP (97 Kb) 10-16-99 Device Errata MPC8260 Device Errata Summary PDF (56Kb) 02-08-00 PPC8260 Errata for Rev A.0 PDF (63 Kb) 03-23-00 Microcode Patch for MPC8260 Device Errata ZIP (7 Kb) 10-05-99 XPC8260 Device Errata for Rev A.1 PDF (35 Kb) 04-05-00
第一阶段:基本知识和工具手段 一, 阶段培养目标:基本硬件工具手段的学习和基本知识的学习 二, 关于本阶段 我最近总结了一下软件和硬件的人员的开发工具,也思考了一下这方面的问题。我认为 所有的工具和工作手段都是应该自己学的,而不是老师教的。被我列成的工具和手段大 致有(好多我现在还不会):C语言、VHDL或Verilog、Protel或相关电子软件、微软的 Visual studio组件(VC等)、嵌入式操作系统、Linux编程等等。我觉得优秀的专业课 程中,应该尝试有一门以上的工具的使用(翻了翻些老外的经典教材发现的)。例如, 很多课,都可以搞成很多的课余制作,而实现的工具不用教,应该自学的。例如,低频 是一门课,但PSPICE是一门工具,在学习低频的过程中,在课件中使用PSPICE。再例如 ,微机原理和FPGA,前者是课,后者是工具。(实际上FPGA也能成为一门课,但只能在 讲原理,而不是使用)。我们应该努力学习课程(例如,低频、数字脉冲、信号与系统 等等),另一方面努力自学工具,并且尝试两方面结合。我觉得,现在好多学生对课程 轻视,在观念上是不对的,太盲目追求工具和手段的使用,并且把这当作真正的能力的 表现,我觉得不对的。因为工具的使用是低层次的,原理的研究才是更高层次。就象登 山运动一样,课程学习和理论研究的积累就象运动员的体力和精力的积蓄,而工具手段 就象运动员的装备,前者是根本,后者是实现一定目的的条件。 至于我讲的硬件设计,实际上我也只是把他当作了一个工作或谋生的手段和工具,所以 也不像学的课程有很多的原理和研究在里面。这个孰轻孰重,大家是首先要分清楚的。 我觉得我主要体现一些设计(或制作)的过程和必须掌握的知识,也谈不上什么设计。 因为本人深信:对硬件我根本算不上入门。很多原理,谁能讲得清楚呢?仅仅了解而已 。 三、资料 想成为一个硬件人员,应该自学我在”如何在技术上准备面试”中提到的工具。在这儿, 我所能做的是推荐几本书。 1, 对FPGA,东南大学出版社的那本VHDL的学习的书,是我见到最好的。不过一般书使 用都可以。软件环境随便。但目前做芯片实力最强的是ATLER和XILINX,他们的环境软件 分别是:MAXPLIS和FOUNDATION。我觉得几乎所有的涉及数字电路的课程,都可以拿VHD L(或Verilog)作为工具手段设计课件(例如,微机原理、数字脉冲、信号与系统、通信 原理等等甚至图象、通信网等等。最方便和简单实现的是前两门课) 2, Protel。书店找一本有较复杂电路的例子的即可。 3, 华为给用户介绍的通信设备技术(也是给华为新员工看的资料),共九本书,分别 是:《通信技术概论》、《ATM技术》、《SDH光传输技术》、《本地电话网的网络规划 》、《程控交换技术》、《电信支撑网》、《接入网技术》、《数据通信技术》、《无 线通信技术》。大家可以访问华为的主页找找,假如找不到的话,我可以提供给大家。
四、时间表和输出 本阶段是个自学的阶段,主要为下面的阶段准备一下。实际上工具尽量学会,对一些文 档,建议随便看看。 输出:FPGA应该根据例子做一定的尝试(一般例子是设计一个简易CPU或什么的控制器)
;画一个较复杂的电路图(一般书上有例子);对华为的技术介绍,建议一本书缩写一 个几千字的介绍。那些,就都不要发给我看了。 作为硬件的实际工具示波器和逻辑分析仪,建议看看相关的书,或到网上安捷仑公司找 一些文档或产品介绍。但对没有实物条件下,不学习也罢。
第二阶段:关于主控板的专题知识和设计学习(初稿版本一) 在工作的时候,我是比较喜欢记笔记和总结的。因为那时侯站在公司的肩膀上,所以写 东西是很轻松的事情。但目前,我一方面考虑给大家实际上的例子,另一方面我又绝对 不能损害以前公司的利益,所以不仅在资料的收集上和写出来的材料上,都有一定的难 度和顾忌。我先作一下初稿,之所以写成尝试稿,我是希望一些专家提出批评,同时给 出建议。 同时对于所有的专题知识,写出来是个极其痛苦的事情。(本人正在学习其他东西,最 重要的是,本人一直认为对所有的硬件知识都一知半解)。我的建议是我先列一些专用 课题,然后尽量在互连网上找现成的资料,大家补充专用课题,同时也一起找资料。然 后我们一起尽量在7月10号前给出一个LIST,同时也附有资料。”我们付出,我们索取; 我们索取,我们付出”,这就是互连网时代,呵呵。 本来我是把接口卡放在第二阶段的,后来发觉有些接口卡太难了,资料也很难找,所以 把芯片更复杂的主板放在第二阶段了。 设计流程 这个我在”硬件开发的现状”中讲了一点。 在这儿先补充一个真实的故事。 还在公司的时候,一天中午正在午睡,突然一个新员工向我来问问题。原来她正在做一 个部门培训的考试题,下午要交的。我一看题目,几乎都是类似这样的题目”设计一个功 能什么什么的板子,要求性能如何如何,请画出设计框图”,一共近十道这样的题,于是 我也帮他们设计。大家一个中午就作好了题。我不知道我们回答的究竟怎么样。但我却 感慨万千:真得,对硬件人员,硬件越来越傻瓜型了。 上面那件事告诉我们,硬件设计的第一步是选择核心芯片。(我讲的不是产品的设计流 程,所以板子的性能和规格都是已经作好了的)。 对主控制板的设计者,第一步是了解足够多的CPU的资料,看芯片资料中的简要说明便可 以了。 确定了处理器的芯片,那么主板的大方向已经定了,在板子投出来之前,所有的工作都 是出力气的活了。几乎都是搬移的过程。但我还是觉得一些流程上的文档还是很有用的 。也建议你输出一定的学习文档。 一, 阶段培养目标 熟悉各类通用处理器、通信处理器、网络处理器等的基本知识;熟悉一般通用主板的各 部分的知识;熟悉一般主板的体系结构; 二、资料 1, 通用处理器、通信处理器、网络处理器和总线处理器的资料有两个出处:第一是供 应商的网站上(建议MOTO、INTEL和IBM);第二,向芯片供应商要,也可以网上免费订 到用户手册等(方法忘了)。 我有MOTO的一年前的比较全的资料,假如需要,我可以搞到网上去。(比较大,我在前 面附过其中一个芯片的资料目录。) 2, 建议看看如下的书:奔腾的硬件体系结构、PC技术内幕等介绍计算机硬件的一两本 书。这样,可以对系统结构有一定的了解,对各部分也有一定的知道。 3, PCI设计规范。出处两个:第一,网上能找到英文版的(建议首先要英文的)。第二 ,中文版,我见过两本,一本是PCI2.2规范的翻译和英文对照(对一般了解的用处不大 ),另一本比较老,小本的,叫PCI开发者指南之类的,比较合适。天大202。113。13。 98上有的。 4, 一些标准设计规范的文档。目前知道的有:SDRAM系列规范、USB规范、PCI规范及? ???都可以在互连网上找到英文原版资料的。 三、专题的学习和整理 1, SDRAM及控制器 2, FLASH的知识 3, FIFO及其他一些存储设备 4, 北桥 5, 南桥 6, DMA 7, 中断网络 8, PCI桥片的知识 9, 若干类主控芯片的性能的比较 10, Cache 11, ??? 注意一点的是:专题很多,但每个专题只能达到能讲出一定的东西就可以了。上面的好 多课题,研究几个月都是搞不太懂的。本科生注意一下我写的要求达到的程度。 四、时间表和输出 专题学习: 课题 时间 资料出处 要求达到的程度 SDRAM 7-11到7-12 1,建议上韩国现代公司(或其他)的网站上找一个SDRAM的芯片 的手 册。 2,建议看看SDRAM控制器设计的VHDL代码。在一些FPGA的书中有,或则在XILINX的网站 上有源码 3,SDRAM的设计规范。互连网上有一系列的资料 了解SDRAM的构成,了解一些概念:PRECHANGE、FLASH、BANK等等;了解一些操作过 程 (充电、配置、读、写等等) FLASH 7-13 芯片资料(型号:???)。出处:互连网 对FLASH的各个操作的逻 辑过程 链有一定的了解。对芯片物理分配有一定的了解。 FIFO及其他一些存储设备 ??? 北桥 建议的三大霸王公司的网站; 或我提供的MOTO的资料
主板设计: 系统平台 时间 资料出处 达到的程度 750+107系统 7-25到7-27 MOTO的公司资料; 应该做一个主板的体系设计介绍的讲座,主要针对逻辑设计部分中的一些模块的设计。 相当于板子的概要设计,分析设计达到的性能,并且修改建议的电路图和逻辑设计 ,成 为可行一点的板子
附一:示例资料 本附录从过程上讲如何组织自己学习主板设计示例资料。实际设计可能需要增加一些东 西,在一些细节上也要做改进。但大的方面变化很少的。作为学习示例,已经足够了。
一个CPU芯片的资料分类:(1)通用芯片资料(芯片的用户手册、硬件手册、技术说明 )(2)相关设计资料(体系结构、白皮书等)(3)设计示例资料(sandpoint全套资料 ,相当于设计的概要资料、详细资料、电路图和逻辑设计等等)(4)设计工具资料。 下面列出设计示例资料(每款CPU都差不多): 资料名 相当于设计文档 Sandpoint PMC Motherboard Technical Summary 硬件的概要设计 Sandpoint User’s Manual 硬件的详细设计文档 Sandpoint PMC Motherboard Schematics 原理图 Sandpoint PAL equations 逻辑设计 Processor PCI Mezzanine Card Technical Summary PCI转接卡设计文档 Sandpoint Bill of Material BOM清单(元器件清单) 我觉得以”设计示例资料”,特别以”原理图”和”逻辑设计”作为主线,猛看”通用芯片设计
资料”和”相关设计资料”试图搞明白为什么要这样设计,比较好。建议先系统看的CPU为 MPC750。