Chinaunix首页 | 论坛 | 博客
  • 博客访问: 378967
  • 博文数量: 94
  • 博客积分: 3421
  • 博客等级: 中校
  • 技术积分: 919
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-18 16:27
文章分类

全部博文(94)

文章存档

2015年(8)

2013年(6)

2012年(26)

2011年(8)

2010年(26)

2009年(20)

我的朋友

分类: LINUX

2013-06-07 17:05:50

我认为学习硬件最重要的是抓住4个关键点:引脚、时序、寄存器和协议。硬件的参考资料就是数据手册(datasheet),虽然大部分由英文写成,但是科 技英语并不象想象中那么难,而且数据手册的内容编排有规律可寻。一般,先介绍总体特点概述(卖点),顺便做一下公司广告(什么leadership一类 的),然后是结构/功能框图、引脚说明、时序分析、寄存器说明、硬件所实现的具体协议(USB、PCI、E1等)、应用范例demo、直流/交流特性、封 装、订购信息、联系方法等,手册里往往还会总结一些图、表、关键字目录索引,方便读者阅读。
    ------
    |引脚|
    ------
     引脚是对硬件工程师最重要的信息之一,务必将其背记下来。背下来的好处多多,基本上扫一眼图纸就能猜出芯片是干什么用的;对一些不常用的设计技巧能马上发 现,进而学习之;能立即指出明显的低级错误;能轻易区分不同型号相同种类的芯片;有利于不断积累硬件经验,熟能生巧。总之,背下引脚能大大提高工作效率, 不必频繁查书,不必中断思路,让精力集中在应用设计上。
    面对几百个引脚的芯片,看似无法记住,实则简单Easy。譬如:地址线32根、数据线32根,电源5根、地线20根,一会儿就记住了89根引脚线,然后按 功能记I2C、SPI、ST-BUS、USB、JTAG等固定用法的引脚线,不管用在哪个芯片上,这些引脚种类和功能都相同,有时,只要记住功能就能把相 关引脚一一背出,或者只须记住差异点即可。一旦背下一个芯片,那么与之类似的一系列芯片就都不在话下了。
    万事开头难,一旦习惯了,随时记住几百个引脚的芯片也不是难事,这是专业硬件工程师的基本功。
    ------
    |时序|
    ------
     时序是硬件工程师获得的另一个重要信息,务必反复咀嚼回味。时序图可以清楚全面地展示硬件的工作过程,从中我们可以得到想要的细节。硬件设计的一大任务是 抑制干扰噪声,通过分析时序可以找到最佳的处理方法。比如:在数据的中点采样,可以获得前后各50%的抖动裕量;通过满足建立/保持时间,使得数据采样正 确。
    一般来说,时序图展示的是理想情况下的位置关系,实际电路中还要受到生产工艺和现场情况的影响。比如:温度、湿度会影响介电常数,进而影响阻抗匹配。实际 波形有上冲、下冲、振铃等幅度变化;相位有超前、滞后变化;时钟有不同步问题等等。这些问题限制了时序图的适用范围,使用中切记满足前提条件。例 如:PCI的突发访问字节数在时序图上可以做得很大,这样传输效率高,但是因为生产工艺达不到要求,不能保证时钟低抖动,阻抗也不能完全匹配,如果突发访 问字节数过大,会造成误差累积,导致采样错误,因此实际中一般限制在4字节以下。我们只可以把时序图当作理论参考,切记不能过份相信,要看时序只能通过示 波器和逻辑分析仪。
    本来直流和交流特性不是时序内容,但因为对时序影响较大,所以就应该配合时序一起看。
一般芯片厂商会提供DEMO板供设计参考,但DEMO就是DEMO,不能用于量产,切记,切记!
    真实波形的边沿不能象时序图里画的那么陡峭。因为越是陡峭的边沿,频谱范围越大,旁瓣越多,而我们需要的往往只是某个频点。如果波形接近于正弦波,那么信号就比较“干净”。
    分析时序最好有例子,我推荐PCI和DDR(I、II)时序图。这些图够复杂,够先进,代表目前的趋势。PCI支持软件配置,有局部总线、接口总线、DMA、突发、总线仲裁等等,比较全面。DDR现在又降价了,迟早要取代SDRAM,估计也就1年左右时间。
    找到芯片数据手册就可以得到时序图。
    --------
    |寄存器|
    --------
     寄存器大致可以分为控制、数据、状态三种。其实就是硬件里的D触发器外接三态总线。硬件上关心的就是地址偏移,方向(只读、只写、读写),工作原理。这样 就可以分配地址空间,对应GPIO连接,实现硬件时序。其实,寄存器更重要的意义是提供硬件和软件的接口。软件通过寄存器操作硬件,硬件通过寄存器给软件 提供信息。一般地,一组寄存器对应一个协议,可以通过协议了解寄存器功能,通过寄存器了解协议细节,互相对照,学习效率高。
    ------
    |协议|
    ------
    目前协议非常多,PCI、USB、I2C、ST-BUS、E1、802.3等等,了解每一种协议都要花费大量时间,我建议每次了解一点,积少成多。
    通常协议代表了行业标准,设计时应尽量向标准靠拢。这样在套片选型时会拥有很大的成本优势。
    总之,协议是硬件的抽象,硬件是协议的具体实现。
    ------
    |现状|
    ------
     以前,人们常说做硬件要动手能力强,现在看来似乎已经不正确了。原来焊接DIP器件,手工操作就可以了,现在的BGA,谁还能用手焊,即使可以,谁能保证 质量,尤其在量产的时候。原来的板子要求3版成功,一版原型,一版修改,一版定型。现在要求一版成功,纸上作业,在制板前解决所有问题。想想也是,一块 16层2.5G背板,如何飞线?如何割线?如何手工焊接?飞线肯定不行,频率那么高,而且走线在内部,根本没有办法。即使可以飞,高频特性也会变化,无法 给以后的修改提供依据。割线也不成,找不到合适位置钻孔。手工焊接达不到质量要求。综上,一旦发现错误,最好就地销毁,眼不见心不烦。
    目前的现状是:原理图、PCB图均在计算机上完成,FPGA用HDL语言,仿真用软件,焊接用贴片机编程实现。几乎没有什么可以动手的地方了。另外CPU 正朝多核方向发展,RISC比CISC更有前途(CISC的发热量大的问题在没有技术突破前无法解决,光看频率没用,过热时CPU会偷偷降频。)。
   
    *************************
    * (6) UART串口硬件分析  *
    *************************
    引脚分析:
        9根标准的接口线dtr,dsr,rts,cts,dcd,gnd,rxd,txd,ri
        4根地址线a0,a1,a2,cs
        7根数据线d0-d7
        3根控制线rw,strobe,reset
        1根时钟线clk
        1根状态线int
   
    时序分析:
         将数据位16等分,在7,8,9三个等分点采样,三中取二。数据位的中点在第8等分点上,在中点附近采样可以保证左右各有50%时钟抖动裕量,这是抵御时 钟抖动误差最有效的措施。可以根据此裕量推算出经过若干位误差累积后,采样仍然正确时所允许的时钟精度。除了时钟抖动,在信号电平幅度上也会产生加性干 扰,导致采样错误。利用三中取二的投票方法,可以避免瞬间的冲击干扰。因此,串口波特率是输入时钟的十六分频。波特率越高,对时钟精度要求就越高,抗瞬态 干扰就越不容易。
        串并/并串电路使用移位寄存器实现,低位先处理。
   
    寄存器分析
        寄存器的设计符合16C550工业标准,地址分配完全一样,寄存器内容有微小差异。
        标准定义了16个寄存器,使用a0-a2和DLAB及rw进行区分。当a0接到16位单片机的A1脚时(16位机没有A0),需要将偏址乘2。
        FIFO 寄存器的引入提高了传输效率,先积攒一下数据再处理的方式减少了中断次数。为了避免处理器不能及时处理输入数据,FIFO一般提供1字节,1/4满,半 满,3/4满,满等触发点,使得CPU可以提前处理数据。为了避免输入数据达不到触发点而长时间等待,在4个字符时间内若没有RxFIFO操作将引发 CTI中断。这样CPU就能比较完美地使用FIFO处理数据了。
阅读(1819) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~