首页 电路硬件设计基础

电路硬件设计基础

举报
开通vip

电路硬件设计基础电路硬件设计基础 1.1 电路硬件设计基础 1.1.1 电路设计 硬件电路设计原理 嵌入式系统的硬件设计主要分3个步骤:设计电路原理图、生成网络表、设计印制电路板,如下图所示。 原理图网络表印制板 (SCH)(NET)(PCB) 图1-1 硬件设计的3个步骤 进行硬件设计开发,首先要进行原理图设计,需要将一个个元器件按一定的逻辑关系连接起来。设计一个原理图的元件来源是“原理图库”,除了元件库外还可以由用户自己增加建立新的元件,用户可以用这些元件来实现所要设计产品的逻辑功能。例如利用Protel中的画线、...

电路硬件设计基础
电路硬件设计基础 1.1 电路硬件设计基础 1.1.1 电路设计 硬件电路设计原理 嵌入式系统的硬件设计主要分3个步骤:设计电路原理图、生成网络表、设计印制电路板,如下图所示。 原理图网络表印制板 (SCH)(NET)(PCB) 图1-1 硬件设计的3个步骤 进行硬件设计开发,首先要进行原理图设计,需要将一个个元器件按一定的逻辑关系连接起来。设计一个原理图的元件来源是“原理图库”,除了元件库外还可以由用户自己增加建立新的元件,用户可以用这些元件来实现所要设计产品的逻辑功能。例如利用Protel中的画线、总线等工具,将电路中具有电气意义的导线、符号和标识根据设计要求连接起来,构成一个完整的原理图。 原理图设计完成后要进行网络表输出。网络表是电路原理设计和印制电路板设计中的一个桥梁,它是设计工具软件自动布线的灵魂,可以从原理图中生成,也可以从印制电路板图中提取。常见的原理图输入工具都具有Verilog/VHDL网络表生成功能,这些网络表包含所有的元件及元件之间的网络连接关系。 原理图设计完成后就可进行印制电路板设计。进行印制电路板设计时,可以利用Protel提供的包括自动布线、各种设计规则的确定、叠层的设计、布线方式的设计、信号完整性设计等强大的布线功能,完成复杂的印制电路板设计,达到系统的准确性、功能性、可靠性设计。 电路设计 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 (有效步骤) 电路原理图设计不仅是整个电路设计的第一步,也是电路设计的基础。由于以后的设计工作都是以此为基础,因此电路原理图的好坏直接影响到以后的设计工作。电路原理图的具体设计步骤,如图所示。 第二章 嵌入式处理器与SoC设计技术 2 建立库中没有检查与校对的库元件 有错修改设置图纸属性电路与分析 放置元器件生成网络图 原理图保存与原理图布线输出 图1-2 原理图设计流程图 (1)建立元件库中没有的库元件 元件库中保存的元件只有常用元件。设计者在设计时首先碰到的问题往往就是库中没有原理图中的部分元件。这时设计者只有利用设计软件提供的元件编辑功能建立新的库元件,然后才能进行原理图设计。 当采用片上系统的设计方法时,系统电路是针对封装的引脚关系图,与传统的设计方法中采用逻辑关系的库元件不同。 (2)设置图纸属性 设计者根据实际电路的复杂程度设置图纸大小和类型。图纸属性的设置过程实际上是建立设计平台的过程。设计者只有设置好这个工作平台,才能够在上面设计符合要求的电路图。 (3)放置元件 在这个阶段,设计者根据原理图的需要,将元件从元件库中取出放置到图纸上,并根据原理图的需要进行调整,修改位置,对元件的编号、封装进行设置等,为下一步的工作打下基础。 (4)原理图布线 在这个阶段,设计者根据原理图的需要,利用设计软件提供的各种工具和指令进行布线,将工作平面上的元件用具有电气意义的导线、符号连接起来,构成一个完整的原理图。 (5)检查与校对 在该阶段,设计者利用设计软件提供的各种检测功能对所绘制的原理图进行检查与校对,以保证原理图符合电气规则,同时还应力求做到布局美观。这个过程包括校对元件、导线位置调整以及更改元件的属性等。 (6)电路分析与仿真 这一步,设计者利用原理图仿真软件或设计软件提供的强大的电路仿真功能,对原理图的性能指标进行仿真,使设计者在原理图中就能对自己设计的电路性能指标进行观察、测试,从而避免前期问题后移,造成不必要的返工。 第二章 嵌入式处理器与SoC设计技术 3 (7)生成网络表 这一步,设计者利用设计软件提供的网络表生成工具,建立起该原理图的网络表。其实每个电路就是一个网络表,它是由节点、元件和连线组成的。电路原理图的网络表是电路板自动布线的灵魂,也是原理图设计软件与印刷电路设计软件之间的接口。 (8)保存与输出 这一步是设计者对设计好的原理图进行存盘,输出打印,以供存档。这个过程实际是一个对设计的图形文件输出的管理过程,是一个设置打印参数的过程。 1.1.2 PCB电路设计 PCB设计原理 原理图设计完成后就可以进行印制电路板(Printed Circuit Board,PCB)设计了。PCB是电子产品的基石。任何电子产品都是由形形色色的电子元件组成,而这些电子元件的载体和相互连接所依靠的正是印制电路板。不断发展的(PCB技术使电子产品设计和装配走向标准化、规模化、自动化,并使得电子产品体积减小,成本降低,可靠性和稳定性提高,装配、维修简单。可以这样说,没有PCB,就没有现代电子信息产业的高速发展,就没有今天的电子信息技术。 PCB是由印制电路加上基板构成的。对于PCB的材料,以及PCB的制作工艺,不是本书关心的部分,读者可以通过工艺方面的参考书获得。下面了解一下PCB相关的概念。 印制:采用某种方法,在一个表面上再现图形和符号的工艺,它包括通常意义的印刷。 印制线路:采用印制法在基板上制成的导电图形,包括印制导线、焊盘等。 印制元件:采用印制法在基板上制成的电路元件符号。 印制电路:采用印制法得到的电路。 印制电路板:完成了印制电路和印制线路加工的板子。 印制电路板组件:安装了元器件或其他部件的印制电路板。 对于PCB的分类,有很多种方法。按照PCB的层数来分,一般分为单面板、双面板和多层板;按照机械性能区分,一般分为刚性板、柔性板;按基材材料区分,可分为纸基板、玻璃布基板、复合材料基板和特种材料基板等。一般电子电器、通信雷达和大型通信产品的PCB多是刚性、多层玻璃基材板。一些手机终端或小型电子设备采用柔性板。 PCB设计方法(有效步骤) PCB的设计是电子产品物理结构设计的一部分,它的主要任务是根据电路的原理和所需元件的封装形式进行物理结构的布局和布线。具体步骤如下图所示。 第二章 嵌入式处理器与SoC设计技术 4 建立封装 设计规则检查 是否正确 载入网络表 PCB板仿真 是否正确 布置元件封装 存档输出 布线 图1-3 PCB设计流程图 (1)建立封装库中没有的封装 封装库里保存的只有一些常用元件的封装,设计者在设计PCB时,通常首先遇到的问题就是在封装库中找不到合适的封装,这时只能先利用设计工具(如Protel 99 SE)提供的元件封装编辑器新建该元器件的封装。总之,在设计相应的PCB图之前,先要保证所用的元件的封装在封装库中是齐全的。 (2)规划电路板 在封装库准备好以后,设计PCB的第一步是规划电路板。规划包括以下 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 :设置习惯性的环境参数和文档参数,如选择层面、外形标尺大小等。 (3)载入网络表和元件封装 在规划好电路板以后,就要以载入前面所准备的网络表,将元件封装自动放入电路规划的外形范围内。但这些元件封装是叠放在一起的,设计者必须将它们分开,并放置在适当的位置。 (4)布置元件封装 元件封装的布置可采用自动布置和手工布置结合的方法,将元件封装放置在适当的位置。这里的“适当”包含两个意思:一是使元件放置在让人满意的位置,将元件布置得整齐美观;二是使元件放置在有利于布线的位置。 (5)布线 在元件布置完成后,可设置设计规划,开始自动或手工布线了。在采用自动布线时,如果布线没有完全成功,或者有不满意和出现违规错误的地方,就要进行手工调整。 (6)设计规则检查 设计的PCB板图是由许多图件构成的,如元件、铜箔线、过孔等,在旋转多个图件时,需要顾及到它周围的图件,例如元件不能重叠,网络不可短路,电源网络与其他信号线的间距应足够大等。这些要求称为PCB设计规划。大多数设计软件都提供一种功能,可以对设计完的PCB自动地进行设计规划检查,并给出详细的违规 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 。设计者可根据违规报告进行修改。 (7)PCB仿真分析 PCB仿真分析可使用所用软件自带功能,也可使用其他专用仿真软件。它能保证在物 第二章 嵌入式处理器与SoC设计技术 5 理制作之前,对PCB的信号处理进行仿真分析,以便进一步完善、修改。它同设计规划检查的内容是不同的。它主要分析布局布线对各参数的影响。 (8)存档输出 将设计好的印制板图保存为PCB图或其他类型的文档,以便今后使用、加工。如需要,可利用各种图形输出设备输出,如打印机、绘图仪等。 多层PCB设计的注意事项(布线的原则) 在多层PCB布线时应注意以下事项: 高频信号线一定要短,不可以有尖角(90直角),两根线之间的距离不宜平行、过近,否则可能会产生寄生电容。 如果是两面板,一面的线布成横线,一面的线布成竖线。尽量不要布成斜线。 如果使用自动布线无法完成所有布线,建议设计者首先手工将比较复杂的线布好,将布好的线锁定后,再使用自动布线功能,一般就可以完成全部布线。 一般来说,线宽一般为0.3mm,间隔也为0.3mm,这个长度约为8,10mil。但是电源线、或者大电流线应该有足够宽度,一般需要60,80mil。焊盘一般应为64mil。如果是单面板,必须考虑焊盘,否则一般来说生产单面板的工艺都很差,所以单面板的焊盘尽量做得大一些,线要尽量粗一些。 做好屏蔽。铜膜线的地线应该在电路板的周边,同时将电路上可以利用的空间全部使用铜箔做地线,增强屏蔽能力,并且防止寄生电容。多层板因为内层做为电源层和地线层,一般不会有屏蔽的问题。大面积敷铜应改用网格状,以防止焊接时板子产生气泡和因为热应力作用而弯曲。 焊盘的内孔尺寸如下表所示,必须从元件引线直径、公差尺寸、镀层厚度、孔径公差及孔金属化电镀层厚度等方面考虑,通常情况下以金属引脚直径加上0.2mm作为焊盘的内孔直径。例如,电阻的金属引脚直径为0.5mm,则焊盘孔直径为0.7mm,而焊盘外径应该为焊盘孔径加1.2mm,最小应该为焊盘孔径加1.0mm。当焊盘直径为1.5mm时,为了增加焊盘的抗剥离强度,可采用方形焊盘。对于孔直径小于0.4mm的焊盘,焊盘外径/焊盘孔直径为0.5,3mm。对于孔直径2mm的焊盘,焊盘外径/焊盘孔直径为1.5,2mm。焊盘一般应该补成泪滴状,这样线与焊盘的连接强度会大大增强。 表1-1 常用的焊盘尺寸 焊盘孔直径/mm 焊盘外径/mm 焊盘孔直径/mm 焊盘外径/mm 0.4 1.5 1.0 2.5 0.5 1.5 1.2 3.0 0.6 2.0 1.6 3.5 0.8 2.0 2.0 4 地线的共阻抗干扰。电路图上的地线表示电路中的零电位,并用作电路中其他各点的公共参考点,在实际电路中由于地线(铜膜线)阻抗的存在,必然会带来共阻抗干扰,因此在布线时,不能将具有地线符号的点随便连接在一起,这可能引起有害的耦合而影响电路的正常工作。 第二章 嵌入式处理器与SoC设计技术 6 PCB设计中的可靠性知识 目前电子器材用于各类电子设备和系统仍然以PCB为主要装配方式。实践证明,即使电路原理图设计正确,PCB设计不当,也会对电子设备的可靠性产生不利影响。例如,如果PCB两条细平行线靠得很近,则会形成信号波形的延迟,在传输线的终端形成反射噪声。 因此,在设计PCB的时候,应注意采用正确的方法。 (1)地线设计 在电子设备中,接地是控制干扰的重要方法。如能将接地和屏蔽正确结合起来使用,可解决大部分干扰问题。电子设备中地线结构大致有系统地、机壳地(屏蔽地)、数字地(逻辑地)和模拟地等。在地线设计中应注意以下几点: 1.正确选择单点接地与多点接地 在低频电路中,信号的工作频率小于1MHz,它的布线和元件间的电感影响较小,而接地电路形成的环流对干扰影响较大,因而应采用一点接地。当信号工作频率大于10MHz时,地线阻抗变得很大,此时应尽量降低地线阻抗,应采用就近多点接地。当工作频率在1,10MHz时,如果采用一点接地,其地线长度不应超过波长的1/20,否则应采用多点接地法。 2.将数字电路与模拟电路分开 电路板上既有高速逻辑电路,又有线性电路,应使它们尽量分开,而两者的地线不要相混,分别与电源端地线相连。要尽量加大线性电路的接地面积。 3.尽量加粗接地线 若接地线很细,接地电位则随电流的变化而变化,致使电子设备的定时信号电平不稳,抗噪声性能变坏。因此应将接地线尽量加粗,使它能通过三倍于PCB的允许电流。如有可能,接地线的宽度应大于3mm。 4.将接地线构成闭环路 设计只由数字电路组成的PCB的地线系统时,将接地线做成闭环路可以明显提高抗噪声能力。其原因在于:PCB上有很多集成电路元件,尤其遇有耗电多的元件时,因受接地线粗细的限制,会在接地结构上产生较大的电位差,引起抗噪声能力下降,若将接地结构成环路,则会缩小电位差值,提高电子设备的抗噪声能力。 (2)电磁兼容性设计 电磁兼容性是指电子设备在各种电磁环境中仍能够协调、有效地进行工作的能力。电磁兼容性设计的目的是使电子设备既能抑制各种外来的干扰,使电子设备在特定的电磁环境中能够正常工作,又能减少电子设备本身对其他电子设备的电磁干扰。 1.选择合理的导线宽度 由于瞬变电流在印制线条上所产生的冲击干扰主要是由印制导线的电感成分造成的,因此应尽量减小印制导线的电感量。印制导线的电感量与其长度成正比,与其宽度成反比,因而短而精的导线对抑制干扰是有利的。时钟引线、行驱动器或总线驱动器的信号线常常载有大的瞬变电流,印制导线要尽可能地短。对于分立元件电路,印制导线宽度在1.5mm左右时,即可完全满足要求;对于集成电路,印制导线宽度可在0.2,1.0mm之问选择。 2.采用正确的布线策略 第二章 嵌入式处理器与SoC设计技术 7 采用平行走线可以减少导线电感,但导线之间的互感和分布电容增加,如果布局允许,最好采用井字形网状布线结构,具体做法是PCB的一面横向布线,另一面纵向布线,然后在交叉孔处用金属化孔相连。 为了抑制PCB导线之间的串扰,在设计布线时应尽量避免长距离的平行走线,尽可能拉开线与线之间的距离,信号线与地线及电源线尽可能不交叉。在一些对干扰十分敏感的信号线之间设置一根接地的印制线,可以有效地抑制串扰。 为了避免高频信号通过印制导线时产生的电磁辐射,在PCB布线时,还应注意以下几点: 尽量减少印制导线的不连续性,例如导线宽度不要突变,导线的拐角应大于90度,禁止环状走线等。 时钟信号引线最容易产生电磁辐射干扰,走线时应与地线回路相靠近,驱动器应紧挨着连接器。 总线驱动器应紧挨其欲驱动的总线。对于那些离开PCB的引线,驱动器应紧紧挨着连接器。 数据总线的布线应每两根信号线之间夹一根信号地线。最好是紧紧挨着最不重要的地址引线放置地回路,因为后者常载有高频电流。 在PCB布置高速、中速和低速逻辑电路时,应按照下图的方式排列元件。 高速电路 中速电路 低速电路 图1-4 元件的排列方式 3.抑制反射干扰 为了抑制出现在印制线条终端的反射干扰,除了特殊需要之外,应尽可能缩短印制线的长度和采用慢速电路。必要时可加终端匹配,即在传输线的末端对地和电源端各加接一个相同阻值的匹配电阻。根据经验,对一般速度较快的TTL电路,其印制线条长于10cm以上时就应采用终端匹配措施。匹配电阻的阻值应根据集成电路的输出驱动电流及吸收电流的最大值来决定。 (3)去耦电容配置 在直流电源回路中,负载的变化会引起电源噪声。例如在数字电路中,当电路从一个状态转换为另一种状态时,就会在电源线上产生一个很大的尖峰电流,形成瞬变的噪声电压。配置去耦电容可以抑制因负载变化而产生的噪声,是印制电路板的可靠性设计的一种常规做法,配置原则如下: 电源输入端跨接一个10,l00uF的电解电容器,如果PCB的位置允许,采用100uF以上的电解电容器的抗干扰效果会更好。 为每个集成电路芯片配置一个0.01uF的陶瓷电容器。如遇到PCB空间小而装不下时,可每4,10个芯片配置一个1,10uF钽电解电容器,这种元件的高频阻抗特别小,在500kHz,20MHz范围内阻抗小于lΩ,而且漏电流很小(0.5uA以下)。 对于噪声能力弱、关断时电流变化大的器件和ROM、RAM等存储型器件,应在芯片 第二章 嵌入式处理器与SoC设计技术 8 的电源线(V)和地线(GND)问直接接入去耦电容。 CC 去耦电容的引线不能过长,特别是高频旁路电容不能带引线。 (4)PCB的尺寸与器件的布置 PCB大小要适中,过大时印制线条长,阻抗增加,不仅抗噪声能力下降,成本也高;过小则散热不好,同时易受临近线条干扰。 在元件布置方面与其他逻辑电路一样,应把相互有关的元件尽量放得靠近些,这样可以获得较好的抗噪声效果,如下图所示。时钟发生器、晶振和CPU的时钟输入端都易产生噪声,要相互靠近些。易产生噪声的元件、小电流电路、大电流电路等应尽量远离逻辑电路,如有可能,应另做PCB,这一点十分重要。 输出板中断控制器 CPUROM RAM 总线控制器 时钟发生器系统控制器 输出板输入板输入板 图1-5 元件的布置 (5)散热设计 从有利于散热的角度出发,PCB最好是直立安装,板与板之问的距离一般不应小于2cm,而且器件在PCB上的排列方式应遵循一定的规则: 对于采用自由对流空气冷却的设备,最好是将集成电路(或其他元件)按纵长方式排列;而对于采用强制空气冷却的设备,最好是将集成电路(或其他元件)按横长方式排列。 同一块PCB上的元件应尽可能按其发热量大小及散热程度分区排列,发热量小或耐热性差的元件(如小信号晶体管、小规模集成电路、电解电容等)放在冷却气流的最上游(入口处),发热量大或耐热性好的元件(如功率晶体管、大规模集成电路等)放在冷却气流最下游。 在水平方向上,大功率元件尽量靠近PCB边沿布置,以便缩短传热路径;在垂直方向上,大功率元件尽量靠近PCB上方布置,以便减少这些元件工作时对其他元件温度的影响。 对温度比较敏感的元件最好安置在温度最低的区域(如设备的底部),不要将它放在发热器件的正上方,多个元件最好是在水平面上交错布局。 设备内PCB的散热主要依靠空气流动,所以在设计时要研究空气流动路径,合理配置器件或PCB。空气流动时总是趋向于阻力小的地方流动,所以在PCB上配置元件时,要避免在某个区域留有较大的空域。整机中多块PCB的配置也应注意同样的问题。 大量实践经验表明,采用合理的器件排列方式,可以有效地降低印制电路的温升,从而使元件及设备的故障率明显下降。 以上所述只是PCB可靠性设计的一些通用原则,PCB可靠性与具体电路有着密切的关系,在设计中还需根据具体电路进行相应处理,才能最大限度地保证PCB的可靠性。 第二章 嵌入式处理器与SoC设计技术 9 1.2 嵌入式系统电源设计技术 1.2.1 电源接口技术 所有嵌入式系统设计都必须包含电源,可以选择AC电源插座或电池供电。下面对这两种方式及电源的稳压进行介绍。 (1)AC电源 如果嵌入式系统对便携性没有太高的要求,那么使用来自插座的电源是最佳的供电方式。但因为交流电电压很高,不能直接用于嵌入式系统,还需要转化为电压低得多的直流电。可以使用实验室直流电、标准PC电源或交流电适配器。其中,交流电适配器对于大多数应用来说可能是最好的选择。 交流电适配器的外形就是一个小的黑盒子,它可以对嵌入式系统进行供电。这种解决办法价格便宜、使用方便,且可靠性较高,从电子设备商那里可以购买到交流电适配器,它通常提供+5V DC,+12V DC不等的输出电压,提供的电流可以高达500mA,具体的电压和电流取决于系统的需求,从中挑选满足电压和电流要求的交流电适配器即可。另外,注意连接器的极性,有些交流适配器的正极电压位于连接器插座的中央,而接地在外面;而有些正好相反。因此,在对嵌入式系统供电前,需要弄清楚适配器的极性,否则可能造成灾难性的后果。 (2)电池 电池使用方便,容易携带,但需要选择合适的电压和足够的电流。只有电池选择恰当、系统设计合理,才能保证嵌入式系统的正常工作。例如,一个很小的基于PIC或AVR的微处理器系统能够运转两年之久而仅仅耗费一节AA电池,而当设计不合理时,系统则会在几分钟内用完一节AA电池。电池选择不当不仅不能为系统提供足够的电流,而且会导致系统操作不稳定,甚至使系统根本就无法启动。选择电池时,不仅要考虑其平均电流量, 还要考虑到其峰值电流。因为一个嵌入式系统平时可能只需要20mA的恒定电流,但它在峰值负载时需要100mA的电流。对于使用Flash Memory的嵌入式系统更是如此,因为Flash Memory在写操作过程中需要较高的电流。这种系统的电池不仅要能够在负载恒定时给系统供电,也必须能够在峰值负载时给系统供电。 (3)稳压器 稳压器是一个把输入的DC电压(通常为一个输入电压的范围)转换为固定输出DC电压的半导体设备,它主要用来为系统提供恒定的电压。虽然嵌入式系统里的很多元件在一个很宽的电源范围内都可以运转,但一个固定的工作电压对系统的正常工作还是很重要的,如A/D转换器。因为很多设备使用这一内部电压作为参考电压。 另外,稳压器有助于去除电源的噪声,给从外部电源供电的嵌入式系统提供了一定程度的保护和隔离。如果系统靠电池供电运行,那么系统变化着的电流,结合电池内部阻抗的作用,将产生一个变化的电压,使嵌入式系统不能正常工作;稳压器就可以防止这种问题的发生。下面介绍DC-DC转换器的稳压器类型,它可以接收不稳定的DC电压,而输出一个恒定电压值的稳定DC电压。DC-DC转换器有3种类型: 线性稳压器,产生较输入电压低的电压。 第二章 嵌入式处理器与SoC设计技术 10 开关稳压器,能升高电压、降低电压或翻转输入电压。 充电泵,可以升压、降压或翻转输入电压,但电流驱动能力有限。 任何变压器的转换过程都不具有100%的效率,稳压器本身也使用电流(称为静态电流),这个电流来自输入电流。静态电流越大,稳压器的功耗越大。在选择稳压器时,应尽量选择既能满足嵌入式系统电压和电流的要求,又保证静态电流低的变压器。 线性稳压器体积小,价格便宜、噪声小且使用方便,其输入输出使用退耦电容来过滤,电容除了有助于平稳电压以外,还有利于去除电源中的瞬间短时脉冲波形干扰。电源的这种瞬间变弱很少发生,但一旦发生就会严重影响到系统的运行。许多嵌入式微处理器包含电压不足检电器,一旦电源输入给处理器的电压过低,检电器就会重启处理器。 开关稳压器由于其输出端开关功率管(Metal-Oxide Semiconductor Field Effect Transistor MOSFET)是一种高输入阻抗、低开关速度及低功耗得半导体器件而得名。在变换输入电压为输出电压时,开关稳压器得功耗更低、效率更高。其缺点为需要较多的外部器件,如电感和二极管等,因而占用的空间较大。开关稳压器比线性稳压器要贵,而且产生的噪声也大,但它可以升压、降压和翻转电压,它的功能比线性稳压器强大。 与开关稳压器相似,充电泵能够升压、降压和翻转输入电压;不同之处在于它不需要外部电感。但由于其电流供应能力有限,因此很少使用。 1.2.2 电源管理技术 对于绝大多数的便携式设备而言,低功耗和节能设计都是最重要的设计指标。例如,笔记本电脑依靠电池供电时,就会进入低功耗工作模式;PDA停止使用一段时间后显示屏将变暗,设备甚至进入睡眠状态。便携式设备的低功耗设计是通过电源管理技术实现的。 电源管理技术 首先,操作系统除了能简单地为嵌入式处理器内核启用空闲模式之外,还需要担任更多的电源管理支持。在实践中,大量功率被周边设备所消耗,可能是片上器件,也可能是外部设备,此外存储器也会消耗大量功率。任何电源管理方法都应当具备管理外设功耗自支持,这是至关重要的。此外,电压与功耗之间的平方关系意味着理想高效的方法是在要求较低电压的较低时钟速率上执行代码,而不是先以最高的时钟速率执行然后再转为空闲这里介绍一下在嵌入式系统中常用的电源管理技术。 (1)系统上电行为 微处理器及其片上外设一般均以最高时钟速率上电启动。但是,有些资源的供电启动还尚不需要,或者根本就不会在应用过程中用到。例如,MP3播放器就很少使用其USB端口与PC进行通信。在启动时,系统必须为应用提供一种调节系统的机制,从而关闭不必要的电源消耗器件或使之处于空闲状态。 (2)空闲模式 CMOS电路中的有效功耗只有在电路进行时钟计时的情况下才发生。通过关闭不需里的时钟,可以消除不必要的有效功耗。在等待外部事件时,大多数微处理器都融入了暂且终止CPU有效功耗的机制。CPU时钟的“闲置”通常由“停止”或“闲置”指令触发, 第二章 嵌入式处理器与SoC设计技术 11 其在应用或操作系统闲置时进行调用。一些DSP进行多个时钟域分区,可以使这些域分别处于空闲状态,以中止未使用模块中的有效功耗。例如,TI的TMS320C5510 DSP中,可以有选择性地使6个时钟域闲置,其中包括CPU、Cache、DMA、外设时钟、时钟生成器及外部存储器接口。 除了支持闲置DSP及其片上外设之外,嵌入式系统还必须提供用于闲置外部周边设备的机制。例如,一些编码译码器具备可以被激活的内置低功率模式。设计人员所面临的一个挑占是类似看门狗定时器这样的外设。通常情况下,看门狗定时器应根据预定义的时间间隔提供服务,以避免其激活。这样,减缓或中止处理的电源管理技术就可能无意中导致应用故障。因此,该嵌入式系统应当使应用在睡眠模式期间禁用此类外设。 (3)断电 尽管空闲模式消除了有效功耗,但静态功耗即便在电路不进行切换的情况下也会出现,这主要是由于逆向偏压泄漏(Reverse-Bias Leakage)造成的。如果系统包括的某个模块不必随时供电,那么就可以让系统仅在需要时才为子系统上电,从而减少功耗。到目前为止,嵌入式系统开发商对最小化静态功耗投入的工作极少,因为CMOS电路的静态功耗非常低。但是,新型、具有更高性能的晶体管使电流泄漏显著增加,这就要求用户对可降低静态功耗及更复杂的睡眠模式给予新的关注。 (4)电压与频率缩放(Frequency Scaling) 有效功耗与切换频率成线性比例,但与电源电压平方成正比。经较低的频率运行应用与在全时钟频率上运行该应用并转入闲置相比,并不能节约多少功率。但是,如果频率与平台上可用的更低操作电压兼容,那么就可以通过降低电压来大大节约功耗,这正是因为存在上述平方关系的缘故。 在嵌入式系统中的低功耗设计主要注意如下问题: 系统中CPU以外的其他电路器件尽可能选用静态功耗低的器件,如选用CMOS电路芯片。 外部设备的选择也要尽可能支持低功耗设计。 设计外部中断唤醒电路,使CPU在等待时可进入休眠模式或待机模式,需要时由外部中断信号唤醒。 设计外部器件的电源控制电路,当外部器件或设备在不工作时关断供电,减少无效功耗。 使用充分降低系统功耗的软件。 因此,电源通常被认为是整个系统的“心脏”,绝大多数电子设备50%,80%的节能潜力在于电源系统。研制开发新型开关电源是节能的主要举措之一。近年来许多公司相继推出一系列功能齐全、种类繁多的低功耗器件,具有种类更多、功耗更低、体积更小、使用方便等特点。 降低功耗的设计技术 电路的设计与元件的选取是同时或交叉进行的。在功能要求相同的情况下,不同的人可以设计出不同的电路,虽然功能可以相同,但电路功耗却往往相距甚大。电路设计和元件选取考虑的因素很多,对其中需要注意的地方进行介绍。 第二章 嵌入式处理器与SoC设计技术 12 (1)采用低功耗器件 几乎所有的TTL工艺的逻辑电路、单片机、存储器以及外围电路都有相应CMOS工艺的低功耗器件,采用这些器件是降低系统功耗最直接的方法。 (2)采用高集成度专用器件 例如用单片机设计一个电子体温计,就没有必要采用80C51单片机,而应该采用Epson、Holtek等生产的专用于测量体温的单片机,其内部集成了测量体温所需要的ADC、振荡器、电压基准、LED显示驱动等部件,电路只需几个电阻电容元件整个电路可在1.2,1.5V电压下工作,功耗极低,而且可靠性、体积等都比用分离器件设计更好。DC/DC变换器在市场上有各种各样的模块供选择,而且效率高、功耗低、体积小、可靠性高,完全没必要采用分离电路搭接。 (3)动态调整处理器的时钟频率和电压 在系统指标允许的情况下,尽量使用低频率器件有助于降低系统功耗。处理器根据当前的工作负载,运行在不同的性能等级上。例如,一个MPEG视频播放器需要的处理器性能比MP3音频播放器高一个数量级。因此,当播放MP3时,处理器可以运行在较低频率上,而仍然能保证播放的高质量。当时钟频率降低时,可以同时降低处理器的供电电压,以达到节能的目的。 动态电压调整技术(DVS)就利用了CMOS工艺处理器的峰值频率与供电电压成正比这一特点。减少供电电压并同时降低处理器的时钟速度,功耗将会呈二次方的速度下降,代价是增加了运行时间。 (4)利用“节电”工作方式 许多器件都有低功耗的“节电”方式,如微处理器的闲置、掉电工作方式,存储器的维持工作、ADC和DAC的节能工作方式等,因此设计时充分利用其“节电”方式为达到节电的效果。 另外,合理处理器件的空余引脚也是非常重要的。大多数数字电路的输出端在输出低电平时,其功耗远大于输出高电平时的功耗,设计时应注意控制低电平的输出时间,闲置时使其处于高电平输出状态。因此,多余的非门、与非门的输入端应接低电平,多余的与门、或门的输入端应接高电平。对ROM或RAM及其他有片选信号的器件,不要将“片选”引脚直接接地,避免器件长期被接通,而应与“读/写”信号结合,只对其进行读或写操作时才选通器件。 (5)实行电源管理 目前大部分的传感器、接口器件、显示器件等本身还没有低功耗工作模式,而有些便携式仪器又不可避免地要使用它们,这些器件往往成了电路中的“耗电大户”。这种情况下,可对电路进行模块设计,工作时对大功耗模块实施间断供电,即设置电源形状电路,并通过软件或定时电路控制开关,使大功耗模块电路仅在需要工作的短时间内加电,其余时间则处于断电状态。 现在便携式电子产品对供电电路的要求越来越复杂,不仅要求电源本身稳定,而且还要求有电压监测、电源管理功能,还要满足小型化、延长电池寿命等要求。便携式产品设备由于受尺寸、成本的限制,往往在着手设计供电电路之前就已经确定了电池的数量和种类。电池数量限制了电源的电压范围,直接影响电源管理电路的成本和复杂程度。对于电池节数多的系统可选用线性稳压器,电路设计简单、成本低,但转换效率相对较低;对于电池节数少的系统则须选用成本较高的开关电源,电路设计复杂,但由于减少了电池数量, 第二章 嵌入式处理器与SoC设计技术 13 电源成本可降低。 由于便携式嵌入式系统的设计需要考虑尺寸、重量、成本、电池种类、转换效率(电池工作时)等诸多因素,不同产品对以上指标的要求会有不同的侧重。例如,只是偶尔处于工作状态的产品较注重电源在空载时的静态电流,并不十分注重满荷下电源的工作效率;蜂窝电话则注重电源所能提供的峰值电流和转换效率。因此,很难研制出一种电源芯片适应所有产品的需求,嵌入式系统的多样化导致了电源芯片的多样化。 一般系统中常含有数字处理系统、模拟处理系统及其他系统通信的各种数字通信接口、模拟通信接口、人机交换接口、与传感器及执行机构连接的模拟接口等。这些单元常用的电源种类归纳如下表所示。 表1-2 常用电源及用途 电源种类 主要用途 +5V 数字电路系统主电源 -5V 运放、ADC、DAC、LCD偏压电路 +3.3V、+2.0V、+1.8V 低电压逻辑、CPU、DSP、FPGA等内核电路 +12V、+15V、-12V、-15V 传感器、模拟处理系统、运放、ADC、DAC、通信接口 +24V 传感器、通信接口、光耦 小功率电源管理芯片有AD/DC和DC/DC两大类。单片AC/DC电源变换器属于无源变压器的小功率一体化线性稳压电源,使用极其方便。DC/DC电源变换器可分为压式变换器、降压式变换器、极性反转/倍压式变换器、低压差集成线性稳压器等。 1.3 嵌入式系统中的存储系统设计 计算机系统的存储器被组织成一个金字塔形的层次结构,如下图所示。在这个层次结构中,自上而下,依次为CPU内部寄存器、芯片内部的高速缓存(Cache)、芯片外的高速缓存(SRAM、DRAM、DDRAM)、主存储器(Flash、PROM、EPROM、EEPROM)、外部存储器(磁盘、光盘、CF、SD卡)和远程二级存储(分布式文件系统、Web服务器)这6个层次的结构。这些设备从上而下,依次变得速度更慢、访问频率更小、容量更大,并且每字节的造价也更加便宜。 更S0:寄存器小CPU寄存器保存更来自Cache的字快S1:芯片内高速缓存更芯片内Cache保存来贵自芯片外Cache的字S2:芯片外高速缓存芯片外Cache保存 来自主存储器的字更S3:主存储器大主存储器保存来自更外部存储器的字S4:外部存储器慢外部存储器保存来自更远程二级存储的字便S5:远程二级存储宜 第二章 嵌入式处理器与SoC设计技术 14 图1-6 存储器系统层次结构 CPU内部寄存器位于整个层次结构的最顶部(S0层),高速缓存(S1层)保存了CPU经常用到的数据,要求在速度上能跟得上CPU运算器和控制器的要求,其容量较小,成本较高。下面依次为内存(S2层),主存储器(S3层),外部存储器(S4层)和远程存储(S5层)。 在这种存储器分层结构中,上面一层的存储器作为下一层存储器的高速缓存。CPU寄存器就是Cache的高速缓存,寄存器保存来自Cache的字;Cache又是内存层的高速缓存,从内存中提取数据送给CPU进行处理,并将CPU的处理结果返回到内存中;内存又是主存储器的高速缓存,它将经常用到的数据从Flash等主存储器中提取出来,放到内存中,从而加快了CPU的运行效率。嵌入式系统的主存储器的容量是有限的,当遇到大信息量的数据时,就需要将其保存到磁盘、光盘或CF、SD卡等外部存储器中,并在需要时从外部存储器中提取调用数据。在某些带有分布式文件系统的嵌入式网络系统中,外部存储器就作为其他系统中被存储数据的高速缓存。 在设计嵌入式系统的存储器时需要考虑许多因素:有的嵌入式处理器集成了存储器,一般不需要扩展;有的没有集成存储器,就必须扩展;而有的处理器虽然集成了一定数量的存储器,可以满足一定的需要,但是由于应用软件比较大,需要扩展处理器。整个嵌入式系统的存储器由片内和片外两部分组成。 高速缓冲存储器Cache 为了提高存储器系统的性能,在主存储器和CPU之间采用高速缓冲存储器(Cache)。Cache被广泛用来提高内存系统性能,许多微处理器体系结构都把它作为其定义的一部分。如果正确使用,Cache能够减少内存平均访问时间。Cache提高了内存访问的可变性,即Cache中的访问速度最快,而访问不在缓存中的单元会慢一些。高速缓存可以按照不同的用途与操作方式分为: (1)统一Cache和独立的数据/程序Cache 如果一个存储系统中指令预取时使用的Cache和数据读写时使用的Cache是用同一个Cache,这时称系统使用统一的Cache。 如果一个存储系统中指令预取时使用的Cache和数据读写时使用的Cache是各自独立的,这时称系统使用了独立的Cache。其中,用于指令预取的Cache称为指令Cache,用于数据读写的Cache称为数据Cache。使用独立的数据Cache和指令Cache,可以在同一个时钟周期中读取指令和数据,而不需要双端口的Cache。但此时要注意保证指令和数据的一致性。 (2)写通Cache和写回Cache 当CPU更新了Cache的内容时,要将结果写回到主存中,通常有两种方法:写通法(Write-Throught)和写回法(Write-Back)。 写通法是指CPU在执行写操作时,必须把数据同时写入Cache和主存。采用写通法进行数据更新的Cache称为写通Cache。 写回法是指CPU在执行写操作时,被写的数据只写入Cache,不写入主存。仅当需要替换时,才把已经修改的Cache块写回到主存中。采用写回法进行数据更新的Cache称为写回Cache。 第二章 嵌入式处理器与SoC设计技术 15 (3)读操作分配Cache和写操作分配Cache 当进行数据写操作时,可能Cache未命中,这时根据Cache执行的操作不同,将Cache分为两类:读操作分配Cache和写操作分配Cache。 对于读操作分配Cache,当进行数据写操作时,如果Cache未命中,只是简单地将数据写入主存中。主要在数据读取时,才进行Cache内容预取。 对于写操作分配Cache,当进行数据写操作时,如果Cache未命中,Cache系统将会进行Cache内容预取,从主存中将相应的块读取到Cache中相应的位置,并执行写操作,把数据写入到Cache中。对于写通类型的Cache,数据将会同时被写入到主存中,对于写回类型的Cache数据将在合适的时候写回到主存中。 在Cache存储系统当中,把主存储器和Cache都划分成相同大小的块。主存地址可以由块号M和块内地址N两部分组成。同样,Cache的地址也由块号m和块内地址n组成。 工作原理图如下图所示。 快号M快内地址N 虚拟地址(来自CPU) 未命中主存->Cache已满未满地址变换 Cache主存储器替换策略 快号m快号n 替换块 装入块 图1-7 Cache工作原理图 当CPU要访问Cache时,CPU送来主存地址,放到主存地址寄存器中。然后通过地址变换部件把主存地址中的块号M变成Cache的块号m,并放到Cache地址寄存器当中。同时将主存地址中的块内地址N直接作为Cache的块内地址n装入到Cache地址寄存器中。如果地址变换成功(通常称为Cache命中),就用得到的Cache地址去访问Cache,从Cache中取出数据送到CPU中。如果地址变换不成功,则产生Cache失效信息,并且接着使用主存地址直接去访问主存储器。从主存储器中读出一个字送到CPU,同时,将从主存储器中读出来的数据装入到Cache中去。此时,如果Cache已经满了,则需要采用某种Cache替换策略(如FIFO策略、LRU策略等)把不常用的块先调出到主存储器中相应的块中,以便腾出空间来存放新调入的块。由于程序具有局部性特点,每次发生失效时都把新的块调入到Cache中,能够提高Cache的命中率。 在Cache当中,地址映像是指把主存地址空间映像到Cache地址空间。也就是说,把存放在主存中的程序或数据按照某种规则装入到Cache中,并建立主存地址到Cache地址之间的对应关系。地址变换是指当程序或数据已经装入到Cache后,在实际运行过程当中, 第二章 嵌入式处理器与SoC设计技术 16 把主存地址如何变成Cache地址。 地址映像和地址变换是密切相关的。采用什么样的地址映像就必然会有相应的地址变换与之对应。但是无论采用什么样的地址映像和地址变换方式,都需要把主存和Cache划分为同样大小的存储单元,通常称存储单元为“块”。在进行地址映像和变换时,都是以块为单位进行调度的。 常用的地址映像和变换方式有:全相联地址映像和变换、组相联地址映像和变换、直接映像和变换。 (1)直接映像和变换 直接映像不仅快,而且造价相对低。但是由于它将Cache映射到主存的策略简单,所以有一定的局限性。例如,考虑一个具有3个块的直接映射Cache,其中单元0,1,2分别映射到不同的块。但单元3,6,9都映射到单元0所处的同一块;地址1,4,7都映射到单独一块,以此类推。如果访问频繁的块正好被映射到同一个块,就不能充分利用Cache的好处。 (2)组相联地址映像和变换 组相联地址映像和变换由它用到的组的个数来标识,给出n路组相联Cache。每个组被实现为一个直接映射Cache。Cache请求同时广播到所有的组。如果某组中有这个单元,该Cache便报告命中。虽然内存单元还是以相同的方法映射,但每个单元组都有n个分离的块。因此,可以将几个恰好映射到相同Cache块的几个单元同时放入Cache中。组相联Cache结构需要一点额外的内部开销并且比直接映射Cache慢一些,但是它的命中率较高,弥补了其他的不足。 (3)全相联地址映像和变换 在这种方式当中,主存中任意一个块都可以映射到Cache中的任意一个块的位置上。 在Cache的替换中,常用的替换算法有两种:轮转法(Round-Robin)和随机替换算法。轮转法(Round-Robin)维护一个逻辑计数器,利用该计数器依次选择将要被替换出去的Cache块。这种算法容易预测最坏情况下Cache的性能。当它有一个明显的缺点,在程序发生很小的变化时,可能造成Cache平均性能急剧的变化。随机替换算法通过一个伪随机数发生器产生一个伪随机数,用新块将编号为该伪随机数的Cache块替换掉。这种算法很简单,易于实现。但是它没有考虑程序的局部性特点,也没有利用以前块地址分布情况,因而效果较差。同时这种算法不易预测最坏情况下Cache的性能。 存储器部件的分类 嵌入式系统中的存储器部件根据存储器在微机系统中的不同地位,可分为主存储器(Main Memory,简称内存或主存)和辅助存储器(Auxiliary Memory,Secondary Memory,简称辅存或外存)。内存是计算机主机的一个组成部分,用来容纳当前正在使用的或要经常使用的程序和数据,对于内存,CPU可以直接对它进行访问。外存也是用来存储各种信息的,但是CPU要使用这些信息时,必须通过专门的设备将信息先传送到内存中。因此,外存存放的是相对来说不经常使用的程序和数据,另外,外存总是和某个外部设备相关的。 因为内存可由CPU直接存取,再加上一般都用快速存储器件来构成内存,这就使内存的存取速度很快。但是,内存空间的大小受到地址总线位数的限制。例如,在8086/8088 第二章 嵌入式处理器与SoC设计技术 17 20微型计算机系统中,地址总线是20位,所以最大的内存空间为2B=1MB。正是内存的快速存取和容量受限制的特点,使它主要用来存放系统软件、参数及当前要运行的应用软件和数据。系统软件中有一部分软件如引导程序、监控程序或者操作系统中的基本输入/输出部分BIOS,都是无时无刻不用的,它们必须常驻内存;更多的系统软件和全部应用软件则在用到时由外存传送到内存。 作为一个嵌入式计算机系统,在长期使用中,必须有许多程序和数据要存储起来,因此,只有内存就不够了,另外,在实际应用中,希望既能方便地对程序进行修改,又能对它作长期保存,而这也是当前大多数构成内存的器件所不能实现的功能。于是,人们又设计出各种外部存储器。当前,在微型计算机中常见的外存有软盘、硬盘、U盘等,近年来,光盘也逐渐进入使用阶段。外部存储器的容量不受限制。不过,外存都要配置专门的驱动设备才能完成访问功能。比如,软盘要配置软盘驱动器,硬盘要配置硬盘驱动器。所以,外存的特点是大容量,所存信息既可修改又可保存,但速度比较慢,要配置专用设备。 根据存储介质的材料及器件的不同,可分为磁存储器(Magnetic Memory),半导体集成电路存储器(通常称为半导体存储器)、光存储器(Optical Memory)及激光光盘存储器(Laser Optical Disk)。其中磁存储器中又分为磁芯(Magnetic Core)、磁泡(Magnetic Bubble)、磁鼓(Magnetic Drum)、磁带(Magnetic Tape)和磁盘(Magnetic Disk)等。 存储器按存储信息的功能,分为随机存取存储器(Random Access Memory,RAM)和只读存储器(Read Only Memory,ROM)。随机存取存储器又称读写存储器,一般是指机器运行期间可读、可写的存储器。而只读存储器一般是指机器运行期间只能读出信息,不能随时写入信息的存储器。然而实际上所谓随机存取即指随意存取,是相对于顺序存取而言的。对随机存取的存储器来说,当要取出某一单元的信息时,无需经过中间单元而耗费不必要的时间,即随机存取能做到信息的存取时间与其所在的位置无关。 只读存储器按功能可分为掩模式(简称ROM)、可编程只读存储器(Programmable ROM,PROM)和可改写的只读存储器(Erasable Programmable ROM,EPROM)3种。随机存储器按信息存储的方式,可分为静态RAM(Static RAM,简称SRAM),动态RAM(Dynamic RAM,简称DRAM)及准静态RAM(Pseudostatic RAM,简称PSRAM)3种。 存储器的组织和结构 描述存储器的最基本的参数是存储器的容量,如4MB。通常,存储器的表示并不唯一,有一些不同表示方法,每种有不同的数据宽度。例如,一个4MB的存储器可能有下列两种表示: 一个1M×4位的阵列,每次存储器访问可获得4位数据项,最大共有220个不同地址。 一个4M×1位的阵列,每次存储器访问可获得1位数据项,最大共有222个不同地址。 在存储器内部,数据是存放在二维阵列存储单元中。因为阵列以二维的形式存储,所 是列地址数。行列选定以给出的n位地址被分成行地址和列地址(n=r+c)。r是行地址数,c 一个特定存储单元。如果存储器外部宽度为1位,那么列地址仅一位;对更宽的数据,列地址可选择所有列的一个子集。 嵌入式系统属于专用的系统,受到体积、功耗和成本等各方面因素的影响,因此,它的存储器与通用系统的存储器有所不同。嵌入式存储器一般采用存储密度较大的存储器芯 第二章 嵌入式处理器与SoC设计技术 18 片,存储容量与应用的软件大小相匹配,有时为了设计的需要还要求能够扩展存储器系统。典型的嵌入式存储器系统由ROM、RAM、EPROM等组成的。 常见的嵌入式系统存储设备 (1)RAM(随机存储器) RAM可以被读和写。它与磁盘不同,地址可以以任意次序被读。RAM可以分为SRAM(静态随机存储器)和DRAM(动态随机存储器)。这两类存储器具有不同的特征: ? SRAM比DRAM运行速度快。 ? SRAM比DRAM耗电多。 ? 在一个芯片上可以置放更多的DRAM。 ? DRAM需要周期性刷新。 (2)ROM(只读存储器) ROM用固定数据预编程。它在嵌入式系统中非常有用,因为许多代码或数据不随时间改变。只读存储器对辐射感应的错误也相对不敏感。 可用的只读存储器通常有工厂编程的只读存储器(有时被称为掩模编程只读存储器(Mask-Programmed ROM))和现场可编程只读存储器。前者从工厂定购时己写入特定程序。它们一般被成千上万地大量订购,但很明显,只有当ROM以一定数量安装时工厂编程才有用。后者可在实验室内被编程。编程单元有时被称为ROM编程器。为给ROM编程,用户以标准格式生成一编程文件,将ROM插进ROM编程器,发送文件到编程器给ROM编程。ROM的特点为在烧入数据后,无需外加电源来保存数据。断电数据不丢失,但速度较慢,因此适合存储需长期保留的不变数据。常见ROM的分类如下: Mask ROM(掩模ROM):一次性由厂家写入数据的ROM,用户无法修改。 PROM(Programmable ROM可编程ROM):和掩模ROM不同的是出厂时厂家并没有写入数据,而是保留里面的内容为全0或全1,由用户来编程一次性写入数据,也就是改变部分数据为1或0。 EPROM(Erasable Programmable ROM电可擦写ROM):EPROM是通过紫外光的照射,擦掉原先的程序。芯片可重复擦除和写入,解决了PROM芯片只能写入一次的弊端。 EEPROM(E2PROM)电可擦除可编程ROM:EEPR()M是通过加电擦除原数据,通过高压脉冲可以写入数据。使用方便但价格较高,而且写入时间较长,写入较慢。 Flash ROM(闪速存储器):Flash ROM具有结构简单、控制灵活、编程可靠、加电擦写快捷的优点,而且集成度可以做得很高,它综合了前面的所有优点:不会断电丢失数据(NVRAM),快速读取,电可擦写可编程(EEPROM),因此在手机,PC,PPC等电器中成功地获得了广泛的应用。 PROM(Programmable Read-Only Memory,可编程只读存储器)因为只允许用户利用专门的设备(编程器)将自己的程序写入一次,一旦写入后,其内容将无法改变,所以也称一次可编程只读存储器(One Time Programming ROM)。PROM产品出厂时,所有记忆单元均制成“0”(或制成“1”),用户可以根据需要将其中的某些单元写入数据0或1,以实现对其“编程”的目的。PROM根据写入原理可分为两类:结破坏型和熔丝型。由于它们的写入都是不可逆的,所以只能进行一次性写入。结破坏型在每个行、列线的交点处,制造一 第二章 嵌入式处理器与SoC设计技术 19 对彼此反向的二极管,它们因为彼此反向而不能导通,故全部为“0”。若某位需要写入“1”,则在相应的行、列之间加上较高电压,将反偏的一只二极管永久性击穿,只留下正向导通的一只二极管,故该位被写入“1”。显然这种写入是一次性的,不可逆转的。 EPROM(Erasable Programmable Read-Only Memory,可擦除可编程只读存储器)不仅可以由用户利用编程器写入信息,而且可以对其内容进行多次改写。 EPROM出厂时,存储内容为全“1”,用户可以根据需要将其中某些记忆单元改为“0”。当需要更新存储内容时可以将原存储内容擦除(恢复全“1”),以便再写入新的内容。EPROM又可分为两种:UVEPROM(紫外线擦除)和EEPROM(电擦除)。 UVEPROM需用紫外线灯制作的擦抹器照射存储器芯片上的透明窗口,使芯片中原存内容被擦除。由于是用紫外线灯进行擦除,所以只能对整个芯片擦除,而不能对芯片中个别需要改的存储单元单独擦除。另外,为了防止存储的信息受日光紫外线成分的作用而缓慢丢失,在UVEPROM芯片写入完成后,必须用不透明的黑纸将芯片上的透明窗口封住。EEPROM。是采用电气方法来进行擦除的,在联机条件下既可以用字擦除,也可以用数据块擦除方式擦除。以字擦除方式操作时,能够只擦除被选中存储单元的内容;以数据块擦除方式操作时,可擦除数据块内所有单元的内容。EPROM虽然既可读,又可“写”,但它却不能取代RAM。因为EPROM的编程次数(寿命)是有限的;而且它的写入时间过长,即使对于EEPROM,擦除一个字节需要约10ms,写入一个字节大约需要10us,比SRAM或DRAM的时问长100,1000倍。 为了省却消除EPROM上数据需照射紫外线的麻烦程序,在20世纪80年代所开发的电擦除式PROM(Electrically Erasable Programmable Read-Only Memory,EEPROM)就很受开发人员的欢迎,EEPROM不但可以利用电压的高低来写入数据,还可以直接利用电压的高低清除EEROM所存储的数据。EEPROM的工作原理:EEPROM要写入数据“0”的时候,栅极也接上高电压(通常为17V),P型基底接上0V的电压,源极接上高电压,漏极也接上高电压,浮动栅极则被注入电子。EEPROM要写入数据“1”的时候,栅极接上高电压(通常17V),P型基底接上0V的电压,源极接上0V,漏极接上高电压,浮动栅极保持原本清除状态。EEPROM数据写入后,源极的电压接上高电压,表示EEPROM在内存的保持状态,要读取数据的时候,源极电压接到0V,源-漏极间会根据浮动栅极是否有足够电子在来接通,如果浮动栅极有足够的电子,则源-漏极为开路,表示数据为“1”,若浮动栅极没有足够的电子,则源-漏极为短路,表示数据为“0”。当要清除EEPROM上的数据,就将栅极电压接到0V,P基底接上高电压,源极与漏极接上高电压,浮动栅极的电子会穿越绝缘体往P基底放电,完成EEPROM的数据清除工作。EEPROM在数据清除的时候可以针对个别的存储单元进行清除操作,比起EPROM需整个清除数据方便许多。EEPROM的数据存储保持能力可以长达10年,而数据清除再被规划的次数可以达到一万次以上,因此EEPROM的使用比EPROM更为普遍。 (3)Flash Memory Flash Memory是嵌入式系统中重要的组成部分,它在嵌入式系统中的功能可以和硬盘在PC中的功能相比,它们都是用来存储程序和数据的,而且可以在掉电情况下继续保存数据使其不会丢失。 Flash Memory(闪速存储器)作为一种安全、快速的存储体,具有体积小、容量大、成本低、掉电数据不丢失等一系列优点,己成为嵌入式系统中数据和程序最主要的载体。由于Flash Memory在结构和操作方式上与硬盘、E2ROM等其他存储介质有较大区别,使用Flash Memory时必须根据其自身特性,对存储系统进行特殊设计,以保证系统的性能达到 第二章 嵌入式处理器与SoC设计技术 20 最优。 Flash Memory是一种非易失性存储器NVM(Non-Volatile Memory),根据结构的不同可以将其分成。NOR Flash和NAND Flash两种。Flash Memory具有如下特点: 区块结构:Flash Memory在物理结构上分成若干个区块,区块之间相互独立。比如NOR Flash把整个存储区分成若干个扇区(Sector),而NAND Flash把整个存储区分成若干个块(Block)。 先擦后写:由于Flash Memory的写操作只能将数据位从1写成0,不能从0写成1,所以在对存储器进行写入之前必须先执行擦除操作,将预写入的数据位初始化为1。擦操作的最小单位是一个区块,而不是单个字节。 操作指令:除了NOR Flash的读,Flash Memory的其他操作不能像RAM那样,直接对目标地址进行总线操作。比如执行一次写操作,它必须输入一串特殊的指令(NOR Flash),或者完成一段时序(NAND Flash)才能将数据写入到Flash Memory中。 位反转:由于Flash Memory固有的电器特性,在读写数据过程中,偶然会产生一位或几位数据错误。这就是位反转。位反转无法避免,只能通过其他手段对结果进行事后处理。 坏块:Flash Memory在使用过程中,可能导致某些区块的损坏。区块一旦损坏,将无法进行修复。如果对己损坏的区块进行操作,可能会带来不可预测的错误。尤其是NAND Flash在出厂时就可能存在这样的坏块(已经被标识出)。 NOR Flash的特点是应用程序可以直接在闪存内运行,不需要再把代码读到系统RAM中运行。NOR Flash的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。 NAND Flash结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快,这也是为何所有的U盘都使用NAND Flash作为存储介质的原因。应用NAND Flash的困难在于闪存和需要特殊的系统接口。 NOR和NAND型Flash Memory各自的典型特征和不同点。 1.性能比较:Flash Memory是非易失内存,可以对以块或扇区为单位的内存单元进行擦写和再编程。任何闪存器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写操作之前必须先执行擦除。NAND Flash执行擦除操作是十分简单的,而NOR型内存则要求在进行擦除前先要将目标块内所有的位都写为0。由于擦除NOR型内存时是以64,128KB为单位的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND Flash是以8~32KB的块进行的,执行相同的操作最多只需要4ms。执行擦除时块尺寸的不同进一步拉大了NOR和NAND Flash之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于NOR Flash的单元中进行。这样,当选择存储解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 时,设计人员必须权衡以下的各项因素: NOR Flash的读速度比NAND Flash稍快一些。 NAND Flash的写入速度比NOR Flash快很多。 NAND Flash的4ms擦除速度远比NOR Flash的5s快。大多数写入操作需要先进行擦除操作。 NAND Flash的随机读取能力差,适合大量数据的连续读取。 2.接口差别: NOR Flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。NAND Flash地址、数据和命令共用8位总线(Samsung公司某些新的NAND Flash有16位总线),每次读写都要使用复杂的I/O接口串行地存取数据,8 第二章 嵌入式处理器与SoC设计技术 21 个引脚用来传送控制、地址和资料信息。NAND Flash读和写操作采用512B的块,有点像硬盘管理操作。因此,基于NAND的闪存可以取代硬盘或其他块设备。 3.容量和成本: NAND Flash的单元尺寸几乎是NOR Flash的一半,由于生产过程更为简单,NAND Flash结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。NOR Flash容量一般较小,通常在1MB,8MB之间。而NAND Flash只是用在8MB以上的产品当中,这也说明NOR Flash主要应用在代码存储介质中,NAND Flash适用于资料存储。NAND Flash在CompactFlash、Secure Digital、PC Cards和MMC存储卡市场上所占份额最大。 4.可靠性和耐用性:采用Flash Memory介质时一个需要重点考虑的问题是可靠性。对于需要扩展MTBF的系统来说,Flash Memory是非常合适的存储方案。可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR Flash和NAND Flash的可靠性。 寿命(耐用性):在NAND Flash中每个块的最大擦写次数是一百万次,而NOR Flash的擦写次数是十万次。NAND Flash除了具有10:l的块擦除周期优势,典型的NAND Flash块尺寸要比NOR型闪存小8倍,每个NAND Flash的内存块在给定的时间内删除次数要少一些。 位交换:所有Flash Memory器件都受位交换现象的困扰。在某些情况下(很少见,NAND Flash发生的次数要比NOR Flash多),一个比特位会发生反转或被报告反转了。一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。当然,如果这个位真的改变了,就必须采用错误探测/错误纠正(EDC/ECC)算法。位反转的问题更多见于NAND Flash,NAND Flash的供货商建议使用NAND Flash的时候,同时使用。EDC/ECC算法。这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可靠性。 坏块处理:NAND Flash中的坏块是随机分布的。以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。NAND Flash需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。 5.易用性:可以非常直接地使用基于NOR Flash,可以像其他内存那样连接,并可以在上面直接运行代码。由于需要I/O接口,NAND Flash要复杂得多。各种NAND Flash的存取方法因厂家而异。在使用NAND Flash时,必须先写入驱动程序,才能继续执行其他操作。向NAND Flash写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND Flash上自始至终都必须进行虚拟映像。 6.软件支持:当讨论软件支持的时候,应该区别基本的读/写/擦操作和高一级的用于磁盘仿真和Flash Memory管理算法的软件,包括性能优化。在NOR Flash上运行代码不需要任何的软件支持。在NAND Flash上进行同样操作时,通常需要驱动程序。 7.市场定位:根据前面所介绍的NAND Flash和NOR Flash的特点,两者各自拥有相应不同的应用。一般说来,NOR Flash用于对数据可靠性要求较高的代码存储、通信产品、网络处理等领域;而NAND Flash则用于对存储容量要求较高的MP3、存储卡、U盘等领域。正是如此,NOR Flash也被称为代码闪存(Code Flash),而NAND Flash也被称为数据闪存(Data Flash)。 第二章 嵌入式处理器与SoC设计技术 22 RAM的种类与选型 常见RAM的种类有SRAM(Static RAM,静态随机存储器)、DRAM(Dynamic RAM,动态随机存储器)、DDRAM(Double Data Rate SDRAM,双倍速率随机存储器)。 SRAM采用了与制作CPU相同的半导体工艺,因此与DRAM比较,SRAM的存取速度快,但制造成本高。DRAM的应用较广,经常用做嵌入式计算机系统中的内存使用。DDRAM是基于SDRAM的一种新技术,是SDRAM的下一代产品,它在本质上和SDRAM完全相同。两者的最大区别在于:DDRAM采用的新内存模块的时钟频率与普通SDRAM的速度一样时,它可以通过在同一时钟周期的上升和下降沿中都传送数据,使得DDRAM内存比普通SDRAM的带宽提升了一倍,也即是说在同样的时间内传送的数据量增加了一倍。SRAM、DRAM、DDRAM型RAM的各自典型特征和不同点为: (1)SRAM SRAM是静态的,因此只要供电它就会保持一个值。SRAM没有刷新周期,由触发器构成基本单元,集成度低,每个SRAM存储单元由6个晶体管组成,因此其成本较高。SRAM具有较高的速率,常常用于高速缓冲存储器。 SRAM的结构示意图和操作时序图如下图所示,通常SRAM有4种引脚。 CS#R/W# AddressR/W# SRAM DataAddress DataCS# 时间 图1-8 SRAM结构示意与操作时序 CS#是芯片启用输入信号,CS#在低电平工作。即当CS#=1时,SRAM的Data引脚被禁用;CS#=0时,SRAM的Data引脚被启用。 R/W#是读写控制信号(W#表示低电平有效),用于控制当前操作是读(R/W#=1)还是写(R/W#=0)。读写通常是相对于CPU而言的,所以读意味着从RAM中读出,写意味着写入到RAM当中。有些SRAM的读写信号是分开的,分为两个控制引脚RD和WR。 Address是一组地址线,用于给出读或写的地址。 Data是用于数据传输一组双向信号线。当R/W#=1时,该引脚为输出;当R/W#=0时,该引脚为输入。 SRAM上的读操作周期如下: 1.当R/W#=l时,让CS#=0启用该芯片。 2.将地址送到地址线上。 3.经过一段时间的延迟之后,数据出现在数据线上。 SRAM上的写操作周期如下: 第二章 嵌入式处理器与SoC设计技术 23 1.让CS#=0,启用该芯片。 2.让R/W#=0。 3.地址出现在地址线上,数据出现在数据线上。 DRAM表示动态随机存取存储器。这是一种以电荷形式进行存储的半导体存储器。DRAM中的每个存储单元由一个晶体管和一个电容器组成,数据存储在电容器中。电容器会由于漏电而导致电荷丢失,因而DRAM器件是不稳定的。为了将数据保存在存储器中,DRAM器件必须有规律地定时进行刷新。DRAM的接口更加复杂,因为DRAM被设计成所需的引脚数最少。基本DRAM接口如下图所示。除了在SRAM中的信号线以外,DRAM还有行地址选择(RAS)和列地址选择(CAS)。需要这些地址信号是因为地址线只提供地址的一半。即当RAS#=0时,地址的行部分(地址的高位部分)置于地址线;当CAS#=0时,地址的列部分(地址的低位部分)置于地址线。 OE R/W#R/W#RAS#Address CAS#RAS# DRAMCAS# Address行地址列地址 Data Data数据CS# 时间 图1-9 DRAM DRAM通常有以下引脚: CS#片选信号,低电平有效。即CS#=0,选中DRAM。 R/W#读写控制信号,当R/W#=1,执行读操作;当R/W#=0,执行写操作。 RAS#行地址选通信号,通常接地址的高位部分。 CAS#列地址选通信号,通常接地址的地位部分。 Address是一组地址线,用于给出读或写的地址。 Data是用于数据传输一组双向信号线。 注意,DRAM必须被刷新。这是因为它用内部电路系统来存储数据。与SRAM不同,因为芯片上有寄生电阻,存储在电容上的电荷会泄露。DRAM上数据的生命期一般为1ms。可通过执行一次内部读操作来刷新数据。在这个过程中,原来的值被丢弃。DRAM一次刷新请求可刷新DRAM的一整行。它提供了一种快速刷新模式,即先CAS后RAS(CAS-before-RAS)刷新。顾名思义,这种模式通过设置RAS=0之前让CAS=0来启动。DRAM为当前要刷新的行设一计数器。在RAS前声明CAS导致DRAM刷新那一行并更新计数器的值。 DRAM的外部逻辑(即存储控制器)周期性执行先CAS后RAS刷新,让整个存储器在 第二章 嵌入式处理器与SoC设计技术 24 刷新间隔内完成一次刷新。DRAM和CPU之间接口必须考虑刷新,读写请求直到刷新完成才被满足。存储控制器在DRAM和CPU之间,在刷新存储器的间隔期间插入等待状态。 由于程序经常访问同一存储区的不同地址,因此早期为提高DRAM性能开发的一种方法就是页模式。页模式访问一次仅提供一个行地址而提供许多列地址。当CAS被探测到列地址到来时,RAS=0。页模式一般支持读、写。 页模式的一个改进版本是EDO(扩展的数据输出)。EDO访问与页模式类似,它们都允许一个行地址后有多个列地址。EDO的含义是:数据被保持有效直到CAS的下降沿,而不是页模式中的上升沿。 改进DRAM性能的另一个方法是引入时钟。同步DRAM要求对一个时钟沿引用事件;DRAM内部电路系统可以工作得更快,因为它不必从异步输入中获得定时信息。同步DRAM拥有一般DRAM的输入和时钟,如下图所示。输入(RAS,CAS等)的改变发生在时钟沿,与DRAM输出一样。 Clock R/W# Address 同步DRAMRAS# CAS# Data OE 图1-10 同步DRAM的结构示意图 此外,已经为特定的应用开发了带有更复杂接口的其他RAM类型: 设计视频RAM,以加速视频操作。它包括标准并行接口和由移位寄存器馈送值的串行接口。移位寄存器将以和并行接口上其他操作并行执行的方式提供对数据一位一位的访问。串行接口一般连到显示器,而并行接口连到微处理器上。 RAM总线被设计成性能较高而价格相对较低的RAM系统。它包括多个存储区,它们可被并行寻址。许多特性,如控制总线和数据总线的分离,有助于使持续数据传输率大大超过1GB/s。 DDRAM:随着嵌入式处理器主频的提高,SDRAM的速度逐渐成了限制系统性能的瓶颈。SDRAM通常只能工作在133MHz主频,而现在很多32位处理器的主频已经达到了200MHz以上。因此采用新一代内存是嵌入式系统必然的趋势。DDRAM就是这种需求下出现的,目前己占据了内存技术的主流,且价格便宜,下面对DDRAM进行简要介绍。 DDRAM是基于SDRAM技术的,很多指令也是相互兼容的。但DDRAM在SDRAM的基础上做了较大的改进,在性能上有了很大的提高。现在很多嵌入式处理器已经支持DDR内存接口,比如AMD公司的AUl200处理器,PowerPC处理器和Intel公司用于网络处理的IXP系列处理器。 DDRAM依靠一种叫做双倍预取(2n-prefetch)的技术,即在内存芯片内部的数据宽度是外部接口数据宽度的2倍,使峰值的读写速度达到输入时钟速率的2倍,并且DDRAM允许在时钟脉冲的上升沿和下降沿传输数据,这样不需要提高时钟的频率就能加倍提高 第二章 嵌入式处理器与SoC设计技术 25 SDRAM的速度,并具有比SDRAM多一倍的传输速率和内存带宽。同时为了保证在高速运行时的信号完整性,DDRAM技术还采用了差分输入的方式。总的来说,DDRAM采用了更低的电压、差分输入和双倍数据速率输出等技术。 在133MHz下,DDR内存带宽可以达到133x64b/8×2=2.1GB/s,200MHz外频标准出台后,其带宽更是达到了200x64b/8x2=3.2GB/s的海量。 标准存储卡(Compact Flash,CF卡) CF卡是1994年由SanDisk最先推出的。它在接口上具有PCMCIA-ATA功能,并与之兼容。就是说,CF卡不但可以工作在IDE接口的模式下,它还可以工作在PCCard模式。最初,CF卡只是利用Flash技术的存储卡。接着CF+卡的标准也被制定出来,它是Compact Flash的衍生技术规格,CF+的物理规格和CF完全相同,但CF+卡并不是CF卡那样的闪存存储器,而主要是相同规格的I/O设备,如CF串口卡、CF Modem、CF蓝牙、CF USB卡、CF网卡、CF GPS卡、CF GPRS卡等,这一类设备在手持设备上用得最多,使用很方便,其兼容性也和CF卡一样好。但是,按照CF+卡标准,它不一定要支持ATA接口。也就是说,对于CF+卡,建议让它工作在PCMCIA模式下。CF卡可以看作是PCMCIA卡的一个子集,可以通过物理上的转换器,直接转换成PCMCIA卡使用。 按照机构尺寸,CF卡可分为两类:I型(Type I)和II型(Type II),二者的规格和特性基本相同。只是后者比前者略厚一些(5.0mm、3.3mm)。CF卡的II型插座,可以同时兼容这两种类型的卡。 CF卡可以工作在PC卡ATA I/O模式、PC卡ATA存储模式和实IDE模式3种模式下,实IDE模式与IDE接口完全兼容。CF卡遵循ATA 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ,属于块存储设备,存储单元是通过磁头(head)、柱面(cylinder,也称磁道)和扇区(sector)组织起来的;在物理寻址(CHS)方式下,每一组H/C/S参数唯一确定存储卡中的一个扇区,通常一个扇区拥有512B的数据空间。一个驱动数格式化后的容量为磁头数×柱面数×扇区数×512字节。在物理寻址模式下,扇区(S)是最低的地址单位,其次是磁头(H),最后的柱面(C)为最高寻址单位。此外,还有逻辑寻址方式(LBA)。在这种寻址方式下,CF卡按照以连续序列的逻辑扇区编号进行寻址,主机不必知道CF卡的物理几何结构。使用28个数据位来表示逻辑扇区的地址,可以寻址228个扇区,理论上可以寻址136GB的容量。下面给出物理寻址方式与逻辑寻址方式的对应关系。设NS为每磁道扇区数,NH为磁头数,C、H、S分别表示磁盘的柱面、磁头和扇区编号,LBA表示逻辑扇区号,div为整除计算,mod为求余计算,则: LBA=NH×NS×C+NC×H+S-1 C=(LBA div NS)div NH H=(LBA div NS)mod NH S=(LBA mod NS)+1 CF卡为50引脚接口。其中重要的信号线16根数据线、11根地址线(在TureIDE模式下仅用3根地址线)、2根寄存器组选择信号线(CS0、CSl)、数据的读写线(IORD、IOWR)、1根中断信号请求线(INTRQ)和1根复位线(RESET)。 第二章 嵌入式处理器与SoC设计技术 26 1.4 嵌入式系统中的总线技术 总线的基本概念 总线是计算机各个部件之间进行信息传输的公共通道。嵌入式系统中广泛采用总线结构,其优点是系统成本低、组态灵活、维护方便。采用总线标准设计、生产的硬件模块兼容性强,而且通过系统总线可以方便地组合在一起,以构成不同需要的嵌入式应用系统。 总线技术包括通道控制功能、使用方法、传输方式和非常重要的仲裁机制等。任何系统的研制和外围模块的开发都必须服从一定的总线规范。不同结构的总线性能差别很大。计算机总线的主要只能是负责计算机各模块间的信息传输,因此,对总线性能的衡量,也是围绕着这样一个只能而定义、测试和比较的。总线的传输率是评价其性能的主要技术指标。另外,总线的可操作性、兼容性和性能价格比,也是很重要的技术特征。 随着计算机硬件设计技术的不断发展,微型计算机的体系结构发生了显著的变化。如CPU运行速度的提高、多处理器对称结构的出现、高速缓冲(Cache)的广泛采用等,都要求有高速的总线来传输数据,从而出现了多总线结构。多总线结构是指CPU与存储器、输入/输出系统等设备之间有两种以上的总线,这样可以将慢速的设备和快速的设备挂载于不同的总线上,以减少总线竞争现象,使系统的效率大大提高。 在多总线结构中,局部总线(Local Bus)的发展是最令人瞩目的。局部总线是指来自CPU处理器的延伸线路,与处理器同步操作。外部设备如果直接挂载于局部总线上,就能以CPU的速度运行。由于局部总线具有极高的数据传输率,因此,其在CPU于高速缓冲(Cache)、CPU与高速设备等需要高速传输信息的场合得到了广泛的应用。 按照总线的应用场合与适应能力分,可以分为器件级互连总线与板级互连总线。按照信息传输的形式来分,可以分为并行总线与串行总线。按照苛刻环境的应用标准来分,又可以分为军用类、工业现场与民用几类。 总线的性能指标 要评价一个总线性能的好坏,只有通过相应的指标才能做出。一般采用以下指标来进行评价: (1)总线宽度:数据总线的数量,用位(bit)表示,如8位、16位、32位、64位。 (2)传输率:每秒钟在总线上传输的最大字节数,用MB/s表示,即每秒多少兆字节。若总线工作频率为8MHz,总线宽度为8位,则最大传输率为8MB/s。若工作频率为33MHz,总线宽度为32位,则最大传输率为132MB/s。 (3)同步方式:总线上的数据与时钟同步工作的总线,成为同步总线,反之成为异步总线。 (4)信号线数:表明总线上所需信号线数的多少,是地址线AB、数据线DB和控制线CB的总和。信号线数与性能不成正比,但与硬件的复杂程度成正比。 (5)数据总线/地址总线的多路复用和非多路复用:在早期的总线设计中,采用了地址线传输地址码,数据线传输数据。为了提高总线性能,优化设计,目前的总线设计普遍 第二章 嵌入式处理器与SoC设计技术 27 采用了地址线和数据线公用一条物理线路,即某一时刻该线路上的传输的是地址信号,而另一时刻传输的是数据信号或者总线命令。这种一条总线上多种用途的技术,称为多路复用。 (6)负载能力:通常指“可连接的扩增电路板的数量”或“可连接的扩充电路板的数量”,尽管大家都沿用了这样一种表示方法,其实它并不严密,但它基本上能反映出总线的负载能力。 (7)总线控制方式:主要指突发传输、并发工作、自动配置、中断方式、仲裁方式等。 (8)扩充电路板尺寸:表示某一总线扩展电路板的尺寸大小。 (9)其他指标:如电源电压等级,能否扩展为64位宽度等,也是很重要的参数。 下面几节将介绍几类典型的局部总线技术。 1.4.1 UART与RS-232C 串行I/O的基本概念 在开发的嵌入式系统中利用串口进行通信,必须对串口通信的数据格式、建立通信的过程、通信协议有清晰的了解。下面将对这些内容进行介绍。 在串行通信中,发送端或接收端每次都只发送或接收一位数据,即在某个时间,数据线上只有一位数据。串行通信可以分为同步通信和异步通信两种方式。不管是哪种通信方式都需要时钟信号,或者说计时参考,用于控制数据的流动。发送端需要一个时钟信号来决定什么时候发送一位数据到数据线上,接收端也需要时钟信号来决定什么时候从数据线上接收数据。它们的主要差别就是发送端和接收端的时钟是否是同步的,或是各自都有自己的时钟信号。下面分别对这两种通信方式加以介绍。 (1)同步通信 在同步通信中,发送端和接受端都使用同一个时钟,这个时钟可以由它们中的任意一个提供,也可以是外部时钟源。它的时钟图如下图所示。同步时钟可以有固定的频率,也可以每隔一个不规则的周期进行切换。所有要传输的位都与这个时钟信号同步,即每个传输的位在时钟跳变(上升沿或下降沿)之后的一个规定时间内有效。接收端也利用时钟跳变来决定何时读取一位数据。同步传输使用不同的方式来表示一次传输的开始和结束,包括起始位和停止位等。 第二章 嵌入式处理器与SoC设计技术 28 发送方在时钟信号的下降沿发送数据 接受方在时钟信号的上升沿接受数据 时钟 数据 0x61 00000111 图1-11 同步通信时序图 同步通信对于同一块电路板上各个部件之间或者使用很短的电缆连接是有用的,而且速度也比异步传输要快。但是对于更长距离的连接,同步通信就不太适用了,因为需要传送时钟信号,这需要一根额外的时钟线,并且如果距离太长的话同步时钟很容易受到噪音的干扰。 (2)异步通信 在异步通信中,连接线不包括时钟线,时钟信号由发送端和接收端各自提供。因为连接的每一端都提供自己的时钟信号,所以每个终端的时钟频率必须保持一致,否则将产生失步。每个传输的字节都用一个起始位来与时钟同步,以及一个或几个停止位来表示传输字节的结束。串口通信中大多采用异步通信,如PC上的RS-232端口所使用的就是异步通信方式,PC利用它和Modem或其他设备通信,虽然RS-232也支持同步通信方式,但异步通信更加普遍,大多数RS-485也是使用异步通信。 异步通信有多种格式,最通用的是8-N-1,在这种方式中,发送方以一个起始位表示传输开始,后面紧跟8位数据,并以一个停止位表示一个字节传输结束。当接收方辨认出起始位后,就知道一个字节的传输开始了,并利用自己的时钟读取后面的8位数据,当接收到停止位后就停止读取,并把接收的数据送往接收缓冲。 8-N-1中的N表示传输不使用奇偶校验位。在异步传输中也可以使用一位作为奇偶校验位,例如7-E-1就是这种格式。在发送端利用校验位保证发送的7位数据加上校验位必定有偶数个l,接收端就可以利用这一特性判断传输过程是否出错。需要说明的是,传输数据的格式必须要由发送端和接收端共同约定好,接收方检验接收到的数据,如果不是期望的值,它就会向发送端发送出错通知。8-N-1异步传输时钟图如下图所示。 发送方利用一个内部时钟来决定是否发送数据 接受方检测开始信号的下降沿,然后利用它的 内部时钟从每一位的中间时刻读取接下来的位 数据0x61 10100010 图1-12 8-N-1异步传输时序图 第二章 嵌入式处理器与SoC设计技术 29 串口传输速率与流控 (1)串口速率 在串口传输中,常用波特率表示传输速度。波特(Baud)是码元传输速率的单位,1波特即为1秒钟传输1个码元。另一个表示传输速率的术语是比特率,它用于表示信息的传输速率,单位是bit/s,即一秒钟能传输多少信息。波特率与比特率在数量上有一定关系,若在编码方式上1个码元只携带1比特的信息量,则波特率等于比特率。但若1个码元携带有n比特的信息量,则MBaud的码元传输速率所对应的信息传输速率为nMbit/s。例如,以9600的波特率传输的串口,若一个码元携带2bit的信息,则它的比特率为19200bit/s。 所需要传输的数据包括起始位和停止位构成1个字,字中的数据位构成1个字符。在有些连接中,字符就是表示可以显示的正文字符(字母或者数字),而在其他连接中,字符是和正文无关的二进制数值。每秒传输的字符数等于波特率除以1个字的位数。由于在每个字中都包含有起始位和停止位,使得每个字节的传输时间增加了,例如在8-N-1方式中,每个字节的传输时间就增加了25%(因为每个字节的传输有10位而不是8位),所以,1字节的传输速率等于波特率的l/10,一个9600 bit/s的连接每秒传输960个字节。 (2)流控 这里讲到的“流”指的是数据流。数据在两个串口之间传输时,常常会出现丢失数据的现象,或者两台计算机的处理速度不同,如台式机与单片机之间的通信,接收端数据缓冲区已满,则此时继续发送来的数据就会丢失。例如,在网络上通过Modem进行数据传输,这个问题就尤为突出。流控制可以解决这个问题,当接收端数据处理不过来时,就发出“不再接收”的信号,发送端就停止发送,直到收到“可以继续发送”的信号再发送数据。因此流控制可以控制数据传输的进程,防止数据的丢失。PC机中常用的两种流控制分别是硬件流控制(包括RTS/CTS、DTR/CTS等)和软件流控制XON/XOFF(继续,停止)。下面将分别介绍不同的流控制方式。 硬件流控:硬件流控发生在使用多线电缆直接相连的系统之间。使用1-2根线进行数据传送,其他的线用于信令传送。例如,在使用请求发送/允许发送(RTS/CTS)信令方法中,一台终端设备通过使其RTS线有效表明可以发送数据,其他设备使其CTS线有效作为响应,为实现流控,接收者可以随时关闭其CTS线,当它准备好了接收数据时,就把这根线的电平置高,若没有准备好,就置低电平。 这种硬件握手方式的过程为:在编程时根据接收端缓冲区大小设置一个高位标志(可为缓冲区大小的75%)和一个低位标志(可为缓冲区大小的25%),当缓冲区内数据量达到高位时,在接收端将CTS线置低电平(送逻辑0),当发送端的程序检测到CTS为低后,就停止发送数据,直到接收端缓冲区的数据量低于低位而将CTS置高电平。RTS则用于标明发送设备请求发送数据。 常用的流控制信号还有DTR/DSR(数据终端就绪,数据设置就绪),它的原理与CTS/RTS类似。 软件流控:由于电缆线的限制。普通的控制通信中一般不用硬件流控制,而用软件流控制。一般通过XON/XOFF来实现软件流控制。常用方法是:当接收端的输入缓冲区内数据量超过设定的高位时,就向数据发送端发出XOFF字符(十进制的19或Control-S),发送端收到XOFF字符后就立即停止发送数据;当接收端的输入缓冲区内数据量低于设定的低位时,就向数据发送端发出XON字符(十进制的17或Control-Q),发送端收到XON字符 第二章 嵌入式处理器与SoC设计技术 30 后就立即开始发送数据。 应该注意。若传输的是二进制数据,标志字符也有可能在数据流中出现而引起误操作,这是软件流控制的缺陷,而硬件流控制不会有这个问题,但是CTS/RTS并不支持所有的硬件和操作系统。 由于流控制的多样性,当系统里用了流控制时,应作详细的说明,包括如何接线、如何应用等。 差错控制 当一台计算机想要发送数据时,接收方可能正被其他的任务占据着,无法立刻接收数据,在这种情况下必须采取相应的措施以防止数据丢失,如前面介绍的流控就是其中的一种措施。其他的措施还包括缓存、轮询或中断、错误检测等。下面将对这些差错控制方法进行说明。 (1)缓存 在串行通信中,缓存对于发送方和接收方都有重要意义。在发送方使用缓存,可以把要发送的数据先存储起来,等连接可用时集中发送,这样可以使应用程序更有效地工作。对于接收方,当应用程序来不及接收数据时,可以使用缓存把数据暂时缓存起来,这样可以防止数据丢失。 缓存可以是硬件的,也可以是软件的,或者两者都使用。在老式的PC串口上都有16个字节的硬件缓存内嵌在UART中。这在接收方意味着UART可以在软件读取它之前存储最多16个字节的数据。在发送的方向上,UART可以存储最多16个字节的数据,然后UART将会负责对这些数据的按位发送。 当硬件缓存不够大时,也可以使用软件缓冲,它的大小是可以编程的。端口的软件缓冲用于在硬件和软件驱动之间传送数据。 (2)轮询和中断 在一个串口端口发生的事件包括发送和接收数据、握手信号的改变以及错误通知等,应用程序可以通过中断和轮询的方式来获知这些事件的发生。 中断的处理方法就是当一个事件发生时,自动跳到处理程序中执行。应用程序对端口的行为反应非常迅速而且是自动的,不需要浪费时间进行检测。这种类型的编程称为事件驱动,因为一个外部的事件可以在任何时间插入并且使得程序的执行转向另一个代码分支。 另一种方法就是轮询端口,它通过周期性的读取特征信号来发现事件是否发生。这种类型的编程称为过程编程,并且不使用端口的硬件中断。这种编程方式需要确保对端口的轮询足够频繁,以保证不会遗失任何事件和数据。轮询的频率取决于缓存的大小和希望的数据量(以及对快速反应的需求)。例如。如果一个设备有16个字节的缓存并且每秒钟轮询2次端口缓存,则它每秒接收不能超过32个字节的数据,不然缓冲区就会溢出,从而导致数据丢失。 轮询通常适合于传输短的字符组,或者在计算机发送数据后希望立即得到答复的情况下。由于轮询不需要硬件中断,因此可以在一个没有分配硬件中断的端口使用轮询。很多轮询接口都使用系统计时中断来确定周期性读取端口操作的时间。 (3)差错检测 第二章 嵌入式处理器与SoC设计技术 31 一个接收者可以使用差错检测来检验所有数据是否正确到达,对一条消息进行差错检验的方法包括发送冗余数据和差错检验字节。 差错检验的一个最简单的形式是使用冗余或者副本数据,发送者对每条数据发送两次,然后接收者对接收到的两次数据进行比较,看是否一致。当然,这种方法意味着每条消息要花两倍时间进行传输。它在传输小数据量短字符组时仍然有用,许多红外线控制器都使用这种方法。 另一种差错检验的方法是和数据一道发送一个差错检验字节。通过对一条信息中的字节进行数学或者逻辑操作可以计算出校验和。一个典型的计算是将这条消息中所有的字节的值加起来,然后用最低的一个字节作为校验和。接收端重复这样的计算,如果得到一个不同的结果,就知道传输出错。 差错检验字节的另一种形式是使用CRC(循环冗余编码),它使用更为复杂的数学变换并且比校验和更加可靠。 当接收端检测到一个差错或者接收到一条它无法理解的消息时,它应当通知发送端使它能够重新发送或者采取别的行动来校正这种情况。经过数次发送,仍然出错或者接收端没有回复,发送端就应该发送一条出错消息,报警或者进行其他操作来通知这个问题的操作人员进行人工干预,然后尽可能地不影响继续其他任务。接收端也应该知道如果一条消息比预期的短该如何处理,它应当终止连接,然后通知主机出现了问题,而不是无休止地等待一个消息。 DTE和DCE通信过程 在数据通信领域,根据通信的位置不同有DTE和DCE之分。下面将对DTE与DCE通信进行相应的介绍。 DTE(Data Terminal Equipment)是数据终端设备,它是具有一定数据处理能力以及发送和接收数据能力的设备。大家都知道,大多数数据处理设备的数据传输能力都是有限的。直接将两个数据处理设备在很远的距离连接起来是不能通信的,必须在DTE和传输线路之间加上一个中间设备,这个设备就是数据电路端接设备DCE(Data Circuit-terminating Equipment),DCE的作用就是在DTE和传输线路之间提供信号变换和编码的功能,并且负责建立、保持和释放数据链路的连接。如下图所示为DTE通过DCE连接到通信传输线路的情况。 信号线与数据线信号线与数据线串行比特传输 DCEDCEDTEDTE数据电路端接数据电路端接数据终端设备数据终端设备设备设备 用户环境通信环境用户环境 图1-13 DTE通过DCE与通信传输线路相连 DTE可以是一台计算机,也可以是各种I/O设备。典型的DCE则是一个与模拟电话线路相连的调制解调器(MODEM)。DTE和DCE之间一般有许多根线,包括数据线和控制 第二章 嵌入式处理器与SoC设计技术 32 线。DCE将DTE传过来的数据按比特顺序逐个发往传输线路,或者反过来,从传输线路接收下来串行的比特流然后交给DTE。下面以使用Modem进行通信为例对串口的DTE与DCE通信过程加以说明,它们的连接图如下图所示。 TxDTxD RxDRxD RTSRTS 调CTSCTS调接接制计电电计制口DSRDSR口解算话话算解电电调机机机调机路SGSG路图图DCDDCD DTRDTR RIRI 图1-14 DTE与DCE通信连接图 注意:这里所说的发送和接收都是相对于DTE而言的。若在双方Modem之间采用普通电话交 换线进行通信,除了需要2-8号信号线外还要增加RI(22号)和DTR(20号)两个信号线进行 联络。 若DTE和DCE已经准备好,则DTR和DSR信号分别有效,它们表示设备本身已经可用,接下来就可以开始建立通信了,但这时通信并没有建立。 前先,通过电话机拔号呼叫对方,电话交换台向对方发出拔号呼叫信号,当对方DCE收到该信号后,使RI(振铃信号)有效,通知DTE已被呼叫。当对方“摘机”后,两方就建立了通信链路。 若计算机要发送数据至对方,则首先通过接口电路(串口)发出RTS(请求发送)信号。此时,若DCE(在这里是MODEM)允许传送,则向DTE回答CTS(允许发送)信号。一般可直接将RTS/CTS接高电平,即只要通信链路已建立,就可传送数据(RTS,CTS可只用于半双工系统中作发送方式和接收方式的切换)。 当DTE获得CTS信号后,就可以通过TXD线向DCE发出串行数据了,DCE(MODEM)将这些数字信号调制成模拟信号(又称载波信号),传给对方。 应用程序在向DTE的数据发送寄存器传送新的数据前,应检查DCE(MODEM)状态是否正常和数据输出寄存器是否为空。当对端的DCE收到载波信号后,就向对端的DTE发出DCD信号(数据载波检出),通知其DTE准备接收,同时,将载波信号解调为数据信号,从RXD线上送给DTE,DTE通过串行接收移位寄存器对接收到的位流进行移位,当收到1个字符的全部位流后,把该字符的数据位送到数据输入寄存器,CPU可以从数据输入寄存器读取字符。于是远程DTE之间的通信就建立起来了。 RS-232C串口规范简介 RS-232C标准是美国EIA(电子工业联合会)与贝尔等公司一起开发的通信协议。它适合于数据传输速率在0,20000bit/s范围内的通信。这个标准对串行通信接口的有关问题, 第二章 嵌入式处理器与SoC设计技术 33 如信号线功能、电气特性都作了明确规定。由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中得到了广泛采用。 串行通信接口标准经过使用和发展,目前已经有几种,但都是在RS-232C标准的基础上经过改进而形成的。RS-232C以其编程方便、价格便宜等优点,在嵌入式系统中有广泛的应用。所以,本书将以RS-232C为主来讨论。下面分别对它的电气特性、信号线功能加以介绍。 (1)电气特性 对于RS-232C规范的电气特性,它们表示数据l和数据0或者信号有效和无效的电平特性分别为: 在TxD和RxD上: 逻辑1(MARK)=-3V,-15V;逻辑0(SPACE)=+3,+15V 在RTS、CTS、DSR、DTR和DCD等控制线上: 信号有效(接通,ON状态,正电压)=+3V,15V: 信号无效(断开,OFF状态,负电压)=-3V,15V。 从以上的规定中可以看出,对于数据(信息码):逻辑“1”的电平应该低于-3V,逻辑“0”的电平高于+3V。对于控制信号:接通状态(ON)即信号有效的电平应该高于+3V,断开状态(OFF)即信号无效的电平应该低于-3V。所以当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3,+3V之间的电压则无意义,而低于-15V或高于+15V的电压也认为无意义,因此,在实际工作时应保证电平在?(3,15)V之间。 由于EIA-RS-232C是用正负电压来表示逻辑状态的,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。 实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MCl488、SN75150芯片,它们可完成TTL电平到EIA电平的转换,而MCl489、SN75154可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTL-EIA双向电平转换。 由于RS-232C并未定义连接器的物理特性,因此,出现了DB-25、DB-15和DB-9各种类型的连接器,其引脚的定义也各不相同。下面将分别重点介绍DB-25和DB-9这两种连接器。 DB-25: PC和XT机都采用DB-25型连接器。DB-25连接器定义了25根信号线,分为4组: 异步通信的9个电压信号(含信号地SG):2、3、4、5、6、7、8、20、22。 20mA电流环信号9个: 12、13、14、15、16、17、19、23、24。 空6个:9、10、11、18、2l、25。 保护地(PE)1个,作为设备接地端:1。 注意:DB-25接口使用的20mA电流环信号仅早期的IBM PC和IBM PC/XT机提供,至AT 机及其以后系列已不支持。 DB-9:在AT机及其以后,已不支持20mA电流环接口,而使用DB-9连接器,作为提供多功能I/O卡或主板上COM1和COM2两个串行接口的连接器,它只提供异步通信的9个信号。DB-9型连接器的引脚分配与DB-25型引脚信号有着巨大差别。因此,它若需要与配接DB-25型连接器的DCE设备连接,必须使用专门的电缆线。它们的外形如下图所 第二章 嵌入式处理器与SoC设计技术 34 示。 1325122451123SG910RI224DTR9DTR821CTS8320DCDRITxD77SGRTS1962DSR1865DSR1CTS174DCDRTS163RxD152TxD141PE 图1-15 DB-25型与DB-9连接器的外形 RS-232C协议的传输距离为: 电缆长度:在通信速率低于20kbit/s时,RS-232C所直接连接的最大物理距离为15m(50英尺)。 最大直接传输距离:RS-232C标准规定,若不使用Modem,在码元畸变小于4%的情况下,DTE和DCE之间最大传输距离为15m(50英尺)。可见这个最大的距离是在码元畸变小于4%的前提下给出的。为了保证码元畸变小于4%的要求,接u标准在电气特性中规定,驱动器的负载电容应小于2500pF。 (2)信号线 RS-232C规定标准接口有25条线,其中4条数据线、11条控制线、3条定时线、7条备用和未定义线,但常用的只有9根。每条信号线的功能如下表所示。 表1-3 RS-232C信号线功能说明 CCITT MODEM 232引脚 名称 说明 用途 异步 同步 1 101 AA 保护地 设备外壳接地 PE PE* 2 103 BA 发送数据 数据送Modem TXD 3 104 BB 接收数据 从Modem接收数据 RXD 4 105 CA 请求发送 半双工时控制发送器开和关 RTS 5 106 CB 允许发送 Modem允许发送 CTS 6 107 CC 数据终端准备好 Modem准备好 DSR 7 102 AB 信号地 信号公共地 SG SG* 8 109 CF 载波信号检测 Modem正在接收另一端送来DCD 的信号 9 空 10 空 11 空 12 接收信号检测(2) 在第2通道检测到信号 * 第二章 嵌入式处理器与SoC设计技术 35 13 允许发送(2) 第2通道允许发送 * 14 118 发送数据(2) 第2通道发送数据 * 15 113 DA 发送器定时 为Modem提供发送器定时信 * 号 16 119 接收数据(2) 第2通道接收数据 * 17 115 DD 接收器定时 为接口和终端提供定时 * 18 空 19 请求发送(2) 连接第2通道的发送器 * 20 108 CD 数据终端准备好 数据终端准备好 DTR 21 空 22 125 振铃 振铃指示 RI 23 111 CH 数据率选择 选择两个同步数据率 * 24 114 DB 发送器定时 为接口和终端提供定时 * 25 空 注:表中打星号*表示同步传输用到的信号线,这里假设DCE为Modem( 1.4.2 USB总线及其体系结构 USB(Universal Serial Bus)即通用串行总线。它是一种全新的、双向同步传输的、支持热插拔的数据传输总线,由Compaq、Intel、Microsoft以及NEC等公司共同开发。其目的是为了提供一种兼容低速和高速的、可扩充并且使用方便的外围设备接口,同时也为了解决计算机接口太多的弊端。现在,USB接口已被人们广泛接受,越来越多的USB产品不断涌现出来。 USB系统的描述 一个USB系统主要由3个部分组成: USB互连 USB主机 USB设备 USB互连是指USB设备与主机之间进行连接和通信的操作,主要包括总线的拓扑结构、数据流模式、USB的调度等。USB主机及设备的相关知识将在后续章节中加以介绍。 (1)总线布局 USB连接了USB设备和USB主机,USB的物理连接是层叠的星型结构,如下图所示。每个星型的中心是一个集线器,星形的每个点就是一个连接到集线器的某个端口的设备,这些设备有可能是其他集线器或外设。 但是在编程时,不必关心它的物理连接。总线上的所有设备共享一条通往主机的数据通道,编程时只需认为某个外设是独占USB端口的。 (2)USB主机 第二章 嵌入式处理器与SoC设计技术 36 一个USB系统中只有一个主机。USB和主机系统的接口称做主机控制器,主机控制器可由硬件、固件和软件综合实现。根集线器是由主机系统整合的,用以提供更多的连接点。 (3)USB设备 USB的设备如下所示: 网络集线器:向USB提供了更多的连接点。 功能器件:为系统提供具体功能,如ISDN的连接、数字的游戏杆或扬声器。 USB设备提供的USB标准接口的主要依据: 对USB协议的运用。 对标准USB操作的反馈,如设置和复位。 标准性能的描述性信息。 USB总线的电气特性 USB总线通过一根四线电缆传送信号和电源,下图中的D+和D-两根线用于发送信号。 VVBUSBUS D+D+ D-D- GNDGND 图1-16 USB电缆 USB总线存在3种数据传输速率: 高速信号传送的比特率定为480Mbit/s。 全速信号传送的比特率定为12Mbit/s。 低速信号传送的比特率定为1.5Mbit/s。 低速模式需要更少的EMI保护,3种数据传输模式可在同一USB总线传输的情况下自动地动态切换。因为过多的低速模式的使用将降低总线的利用率,所以低速模式只支持有限个低带宽的设备(如鼠标)。时钟被调制后与差分数据一同被传送出去,时钟信号被转换成NRZI码,并填充了比特以保证转换的连续性,每一数据包中附有同步信号以使接收方还原出原时钟信号。 电缆中包括VBUS、GND两条线向设备提供电源。VBUS使用+5V电源,USB对电缆长度的要求很宽,最长可为几米。通过选择合适的导线长度以匹配指定的IR drop和其他一些特性,如设备能源预算和电缆适应度。为了保证足够的输入电压和终端阻抗,重要的终端设备应位于电缆的尾部。在每个端口都可检测终端是否连接或分离,并区分出高速或低速设备。 第二章 嵌入式处理器与SoC设计技术 37 电源分配与管理 (1)电源分配 每个USB单元通过电缆只能提供有限的能源。主机对直接相连的USB设备提供电源供其使用,并且每个USB设备都可能有自己的电源。那些完全依靠电缆提供能源的设备称为“总线供能”设备。相反,那些可选择能源来源的设备称为“自供电”设备。而且,集线器也可由与之相连的USB设备提供电源。 (2)电源管理 USB主机拥有一个独立于USB总线的电源管理系统。USB的系统软件可以与主机的电源管理系统结合共同处理挂起或恢复等系统电源事件。另外,USB设备也可以由系统软件对其进行电源管理。USB合理的电源分配和电源管理特性使之可以被应用在低功耗系统中,如采用电池的笔记本电脑或其他手持移动设备如PDA等。 USB通信协议 下图是USB的通信模型示意图,从图中可以看出USB通信的数据流的结构。 主机的每一个层次分别对应设备相应的层次,通过逻辑通道连接起来,客户软件通过逻辑连接可以直接控制设备的接口模块。这种连接使得软件控制与接口一一对应起来,用户使用起来可以更加简单快捷。 主机端设备端 应用层客户软件应用 USB系统软件USB逻辑设备设备层 接口层USB主机控制器USB总线接口 逻辑通信流 实际通信流 图1-17 USB通信模型 USB总线有4种传输方式,分别是控制传输、中断传输、批量传输和同步传输。 控制传输:主要用于主机向USB设备发送命令或是USB设备将自身状态信息返回给主机。任何一个USB设备必须支持一个与控制类型相对应的端点0,即主控端点。控制传输在所有USB设备中都需要使用,主机对USB设备的配置命令需通过控制传输来发送,而设备的描述信息也需通过控制传输传递给主机。 中断传输:用来支持那些偶然需要少量数据通信,但服务时间受限制的设备。中断传 第二章 嵌入式处理器与SoC设计技术 38 输常常用在键盘、鼠标、游戏杆等外设上。 批量传输:主要用于需要传输大量数据,且数据传输速率不固定的设备。批量传输方式并不能保证传输的速率,但可保证传输的可靠性,当出现错误时会要求发送方重发。 同步传输:同步传输要求有一个恒定的速率。同步传输方式的发送方和接收方都必须保证传输速率的匹配,不然会造成数据的丢失。这种传输方式适用于实时性要求高而对准确性要求较低的场合,如音频和视频设备、语音和图像不能有明显滞后,但中间的某些数据错误则关系不大,不影响人的视觉和听觉。 USB数据单元 对应主机客户软件与设备应用间的不同通信服务,USB设备对数据流有不同的要求。为此,USB允许各种不同的数据流相互独立地进入一个USB设备,不同设备的不同端点用来区分不同的数据流。 (1)端点(Endpoint) 端点是USB设备的逻辑设备。一个USB设备有一个或多个端点,对主机而言,它们对应一个或多个逻辑设备。设备连上主机时,主机分配给每个逻辑设备一个唯一地址,而设备中的每个端点在设备内部有一个唯一的端点号,由设备设计时指定。这样,主机与设备间就可以依据端点来建立唯一通道。 所有USB设备至少要有一个0号端点,USB系统使用这个默认端点设置设备。对于低速设备,除0号端点外,只 能有2个额外的可选端点。而全速设备和高速设备则可以最多有15个额外输入端点和15个输出端点。 (2)通道(Pipe) 设备上的端点和主机上的逻辑设备地址构成一个USB通道,主机与设备间的信息交互就是通过通道进行的。 依据通信数据格式的不同,通道分为以下两种: 流(Stream):指不具有USB定义的格式的数据流。 消息(Message):指具有某种USB定义的格式的数据流。 消息通道要求把数据组织成USB定义的格式。 (3)字段(Field) USB的传输以包为单位,每个包由不同的字段组成。主要有以下几种字段: 同步字段(SYNC) 所有的包都是以同步字段开始,输入电路根据同步字段以本地时钟对齐输入数据。同步字段的最后2位是字段结束标记,同时标志包标识符(PID,Packet Identifier)字段的开始。 包标识符字段(PID) USB包的同步字段后紧跟着包标识符字段。包标识符由4位包类型字段及其后的4位校验字段构成,如下图所示。包标识符指出包的类型,校验字段起一个检错作用。 LSBMSB PID0PID1PID2PID3PID0PID1PID2PID3 第二章 嵌入式处理器与SoC设计技术 39 图1-18 PID格式 下表列出了各包标识符的类型、编码及相关说明。 表1-4 PID类型 PID[3:0] PID类型 PID名称 说明 令牌(Token) OUT 0001B 输出地址+端点号 IN 1001B 输入地址+端点号 SOF 0101B 帧开始标记与帧号 SETUP 1101B 控制管道建立地址+端点号 数据(Data) DATA0 0011B 偶数据包 DATA1 1011B 奇数据包 DATA2 0111B 微帧数据包(高速设备) MDDATA 1111B 一般数据包(高速设备) 握手(HandShake) ACK 0010B 接收器接收到无误数据包 NAK 1010B 接收设备不能接收数据或发送设备不能发送数据 STALL 1110B 端点挂起 NYET 0110B 设备收到无误数据包,但还没准备好下一个 专用(Special) PRE 1100B 主机发出低速设备通信前导信号 ERR 1100B 报告分割传输时的错误(高速设备) SPLIT 1000B 分割传输令牌包PID(高速设备) PING 0100B 流量控制检测(高速设备) 地址字段(Address) 地址字段指明外设地址,如下图所示。ADDR<6:0>共指定128个地址,每个地址对应一个单一外设。设备在复位及加电时,地址默认为零,具体值需由主机在枚举时指定。外设零地址为默认地址,不可被分配用于其他用途。 LSBMSB Addr0Addr1Addr2Addr3Addr4Addr5Addr6 图1-19 地址字段 当外设有多个端点时,由4位端点字段进行寻址,如下图所示。对于低速设备,每个外设最多提供3个通道,而全速设备和高速设备可支持最多16个任意类型通道。 LSBMSB Endp0Endp1Endp2Endp3 图1-20 端点字段 帧号字段(Frame Number) 帧号字段是一个11位长的字段,主机每通过一帧就将其内容加l,达到最大值11时归零。 数据字段(Data) 数据字段的长度可在0-1023字节间变动,但必须是整数个字节。 CRC校验字段 第二章 嵌入式处理器与SoC设计技术 40 校验字段用来校验所有非PID字段。其中,标记字段使用5位CRC字段,数据字段使用16位CRC字段。 (4)包格式 USB传输中的包有4种:令牌包、数据包、握手包以及SOF包。 令牌包(Token Packets) 令牌包由PID、ADDR、ENDP和CRC5字段构成。其中,PID字段指明包的类型;而ADDR和ENDP字段唯一确定接下来将收到数据包的端点;CRC5字段负责校验ADDR和ENDP字段。令牌包格式如下图所示。 8位7位4位5位 PIDADDRENDPCRC5 图1-21 令牌包格式 数据包(Data Packets) 数据包由PID、DATA和CRC字段组成。数据字段长度对低速设备而言足0-8字节,对全速设备而言是0,1023字节,而对高速设备而言则是0-8192字节。数据包有4种类型,由不同的PID、DATA0、DATAl、DATA2以及MDATA来区分。数据包格式如下图所示。 握手包(Handshake-Packet) 握手包仪由PID构成,主要用来报告数据事务的状态。握手包有以下4种类型: ACK包:表示数据包无误接收。 NAK包:用于表示外设暂时不能向主机传输数据,或从主机接收数据。 STALL包:表示外设不能传输或接收数据,或者不支持一个控制管道请求。 NYET包:表示外设接收到了无错误的数据包,但是还没有准备好接收下一个数据包。 SOF包(Start Of Frame) SOF包是由PID、帧号字段Frame Number及CRC字段组成。主机以每1.00 ms?0.0005ms(低速和全速设备)或是125us?0.0625us(高速设备)的速率向设备发送SOF(帧开始)包。它以精确的时间间隔发送SOF标识(Marker)及帧数。SOF包格式如下图所示。 8位11位5位 PIDFrame NumberCRC5 图1-22 SOF(帧开始)包 (5)描述符 任何一个USB标准设备都包含一个设备描述符表,用于说明设备属性,一般固化在设备内部。当主机检测到总线上有设备插入时,通过控制传输从默认通道中将设备的描述符读 USB设备的描述符有3种:设备描述符(Device Descriptors)、设备类描述符(Class 第二章 嵌入式处理器与SoC设计技术 41 Descriptors)和用户自定义描述符(User specific Descriptors)。其中设备描述符又分为4种:配置描述符(Configuration Descriptors)、接口描述符(Interface Descriptors)、端点描述符(Endpoint Descriptors)和字符串描述符(String Descriptors),它们之间的关系如下图所示。 设备描述符 配置1配置2配置3 描述符描述符描述符 接口1接口2接口1接口1 描述符描述符描述符描述符 端点1端点2端点3端点1端点1端点2 描述符描述符描述符描述符描述符描述符 图1-23 设备描述符关系示意图 USB设备请求 前面提到过:USB设备的某些属性要由主机通过默认控制通道进行设置或读取。这些操作是通过主机向设备发送SETUP包来完成的。每个SETUP包有8个字节,分为5个域,如下图所示。 bmRequestTypebRequestwValuewIndexwLength D7传输方向0:主机到设备 1:设备到主机 D6-D5请求类型0:标准 1:类 2:厂商 3:保留 0:设备D4-D0接收方 1:接口 2:端点 3:其他 4-31:保留 图1-24 SETUP数据包格式 上图中只标明了bmRequestType域的组成及含义,SETUP包中其余的内容包括一个bRequest值(具体请求如下表所示)、一个wValue代码(其含义与具体的请求相关)、一个wIndex值(当控制请求寻址端点或接口时,wIndex值指出具体地址)、一个wLength域(指出控制事务的数据阶段要传输的数据量,为0表示该事务没有数据段)。 第二章 嵌入式处理器与SoC设计技术 42 USB规范定义了一系列所有设备必须支持的标准请求,如下表所示。另外,一个设备类可定义更多的请求,设备厂商也可定义设备支持的请求。 表1-5 标准设备请求 请求代码 符号名 描述 可能的接受者 0 GET_STATUS 获得状态信息 任何 1 CLEAR_FEATURE 清除一个双态特征 任何 2 保留 3 SET_FEATURE 设置一个双态特征 任何 4 保留 5 SET_ADDRESS 设置设备地址 设备 6 GET_DESCRIPTOR 取设备、配置,或串描述符 设备 7 SET_DESCRIPTOR 设置一个描述符(可选) 设备 8 GET_CONFIGURATION 取当前配置索引 设备 9 SET_CONFIGURATION 设置一个新的当前配置 设备 10 GET_INTERFACE 取当前的alt接口索引 接口 11 SET_INTERFACE 使能alt接口设置 接口 12 SYNCH_FRAME 报告同步帧号 (等时)端点 USB设备枚举 当USB设备连上主机或是从主机移走时,主机启动一个总线枚举进程。以识别和管理设备的状态变化。其总线枚举的过程如下: (1)USB设备连上主机,所连的集线器通知主机本设备已连接上。此时,USB设备处于加电状态,它所连接的端口是无效的。 (2)主机一旦得知新设备已连上它的某个端口,它至少要等待100ms以确保插入操作的完成以及设备电源稳定工作。然后,主机向该端口发出端口使能及复位命令。 (3)集线器将发向端口的复位信号持续10ms,当复位信号撤消后,端口已经变为有效。这时USB设备处于默认状态,并且可以从主机汲取小于100mA的电能,所有设备寄存器及状态已经被复位,设备可对默认地址(00H)产生响应。 (4)主机给设备分配一个唯一的地址,设备以后就只对该地址进行响应。 (5)主机读取USB设备描述符,确认USB设备的属性。 (6)主机依照读取的USB设备描述符来进行配置,如果设备所需的USB资源得以满足,主机就发送配置命令给USB设备,表示配置完毕。从设备的角度来讲,它已经准备就绪了。 (7)为了节省电源,当总线保持空闲状态超过3ms以后,设备驱动程序进入挂起状态。挂起状态时设备的消耗电流不超过500uA。当被挂起时,USB设备保留了包括其地址和配置信息在内的所有内部状态。 当USB设备被取走时,集线器同样会通知主机,主机使对应端口无效,并更新拓扑信 第二章 嵌入式处理器与SoC设计技术 43 息。 1.4.3 PCI局部总线介绍 PCI的含义为外设部件互连(Peripheral Component Interconnect),顾名思义可知PCI局部总线是组件级的总线互连技术。PCI总线即可以做为片内SoC设备的互连技术,也可以做为板上器件间的互连,PCI总线在板级的互连中的应用更加的广泛。各类符合PCI规范的计算机板卡在市场上应用层出不穷。 PCI总线首先由Intel公司提出,发展背景为IBM PC系统的开放大环境,全世界的PC机制造商纷纷向IBM PC标准靠拢,从而使IBM PC系列产品风靡全球。与此同时,Intel公司与Microsoft公司也迅速壮大起来,对IBM公司构成了威胁。IBM公司为了保护自身利益,将计算机总线由ISA总线升级为了MCA总线,并于1987年4月在PS/2计算机上首先使用。MCA是32位总线,传输率位40MB/s,可共享资源,具有多重处理能力。为了防止其他厂家仿制,IBM公司没有对外公开MCA总线的技术标准,从而使其成为专有产品。 鉴于上述原因,Compaq、AST、Epson、HP、Olivetti和NEC等9家公司于1988年9月联合推出了一种兼容性更强的总线,即EISA总线。该总线除了具有与MCA总线完全相同的功能外,还与ISA总线100%兼容。EISA是32位总线,支持多处理器结构,具有较强的I/O扩展能力和负载能力,传输率为33MB/s,适用于网络服务器、高速图像处理、多媒体等领域。因EISA是兼容商共同推出的,所以其技术标准是公开的。 但日益强大的Intel公司决定不支持该标准,因为新出现的标准针对当时的问题只是暂时的解决方法,并没有时间跨度较长的解决方案,更不用说未来五年会遇到的问题。终于,历史走到了令人振奋的1991年,Intel公司对PCI局部总线进行了定义,并与IBM、Compaq、AST、HP、NEC等100多家公司共谋计算机总线的发展大业。于是,PCI总线标准1.0版技术规范于1992年6月22日应运而生。2.0修改版于1993年4月发布;2.1修改版于1995年第一季度发布;最新的2.2修改版于1998年12月18日完成,1999年2月发布。 PCI总线支持64位数据传输、多总线主控和线性突发方式(Burst),其数据传输率为132MB/s,这个其发展提供了有利条件。总的看来,PCI局部总线之所以能发展,其动力之一是图形用户接口(Graphic User Interface,即GUI)的发展。良好的用户接口界面的实现是以高性能的图形界面操作系统为基础的,而图形界面操作系统往往需要大容量存储器,因而刺激了RAM芯片的生产,更重要的是对总线的性能提出了更高的要求。例如,在多媒体视频图像显示中,若分辨率为640×480,30帧/s,显示颜色深度为24位,则多媒体显示卡的数据吞吐量=640×480×30×3,27.648MB/s,对于具有100Mb/s传输率的高速光纤网,需要总线吞吐量为100Mb/s,即12.5MB/s。由此可见,采用100Mb/s光纤传输视频动态图像必须借助于压缩技术。 由于外围设备数据吞吐量与总线传输率之间没有严格的比例关系,一般一条总线可能挂接3,5个高速外设,因而,总线的最大传输率应为高速外设的3,5倍。由此可以计算出多媒体视频卡对总线最大传输率的需求为: Tran Multimedia,27.468×(3,5),82.944,138.24MB/s 第二章 嵌入式处理器与SoC设计技术 44 而100Mb/s的高速光纤网络中,对总线最大传输率的需求为: Tran FDDI,12.5×(3,5),37.5,62.5MB/s 但ISA总线的最大传输率为8MB/s,EISA总线为33MB/s,无法满足图形操作系统和高速网络的要求,而PCI局部总线的传输率为132MB/s,可满足上述要求。 另一个推动PCI局部总线发展的原因是它可以降低系统成本。用大量的面向PCI局部总线的处理芯片来构造系统机、工作站、外围设备以及板卡,其性能优越,处理能力、传输速度都很高。反之,若不采用面向PCI的芯片进行设计,实现同样的功能,其成本将升高10%,15%。 可见,PCI成功的满足了工业要求,目前已经成为世界上应用最为广泛最为重要的扩展标准。 PCI局部总线的特点 PCI局部总线能够配合要求彼此间快速访问或快速访问系统存储器的适配器工作,也能让处理器以接近自身总线全速的速度访问适配器。注意,通过PCI局部总线的全部读写传输都可以用突发传输。突发传输的长度由总线主设备决定。在交易开始时,目标得到起始地址和交易类型,但没有传送长度;在主设备准备传送每一个数据项时,主设备都会通知目标该数据项是否为最后一个数据项。当最后一个数据项传送后交易即告结束。 下图表明了PCI、扩展、处理器和存储器总线之间的基本关系: Host/PCI桥,常称为北桥(North Bridge),连接主处理器总线到基础PCI局部总线。 PCI/ISA桥,常成为南桥(South Bridge),连接基础PCI局部总线到ISA总线和低速总线。南桥常含有中断控制器、IDE控制器、USB主控制器和DMA控制器。北桥和南桥构成芯片组。 在基础PCI局部总线或PCI插入卡上,可以嵌入式一个或多个PCI-PCI桥。 一个芯片组可以支持一个以上的北桥。 CPUCPU PCI 以太网卡PCI总线北桥主存储器 PCI SCSI 控制器 中断控IDE制器 南桥ISAUSB 图1-25 PCI系统结构图 第二章 嵌入式处理器与SoC设计技术 45 PCI主要特点如下: 独立于处理器:为PCI局部总线设计的器件是针对PCI,而不是针对处理器的,因此,设备的设计独立于处理器的升级和更换。 每个PCI局部总线支持约80个PCI功能:一个典型的PCI支持约10个电气负载。每一个设备对于总线是一个附在,因此,每一个设备可以包括8个PCI功能。 低功耗:PCI技术规范的主要设计目标是实现电流尽可能小的系统设计。 在全部读写传送中可以实现突发传输:32位PCI局部总线在读写传输中支持132MB/s的峰值传送速率,对于64位PCI传送支持264MB/s的峰值传送速率。对于64位66MHz的PCI局部总线,传送速率可以达到528MB/s。 总线速度2.0版规范支持的PCI局部总线速度达到33MHz,2.1以上版本增加了对66MHz总线操作的支持,即PCI-X。 64位总线带宽:64位的扩展完全定义。 访问时间短:当停靠在PCI局部总线上的主设备写PCI目标时,在33MHz的总线速度下,访问时间只需要60ns。 并行总线操作:支持完全总线并行操作,与处理器总线、PCI局部总线和扩展总线同步使用。 总线主设备支持:全面支持PCI局部总线主设备,允许同级PCI局部总线访问和通过PCI-PCI与扩展总线桥访问主存储器和扩展总线设备。另外,PCI主设备能够访问驻留于总线级别较低的另一个PCI局部总线设备的目标。 隐式总线仲裁:PCI局部总线仲裁能够在另一个总线主设备正在PCI局部总线上执行传送时发生。 引脚数少:总线信号使用经济,一个功能的PCI目标只有47个引脚,主设备只有49个引脚。 交易完整性校验:在地址、命令和数据上都进行奇偶校验。 3类地址空间:即存储器、输入输出I/O和配置地址空间。 自动配置:配置寄存器的全位级别规范,支持自动的设备检测和配置。 软件透明:在与PCI设备或面向扩展总线的同类设备通信时,软件驱动程序使用相同的命令集和状态定义。 插入卡:PCI规范包括了PCI连接器和插入卡的定义。 典型的PCI设备包括已纳入IC封装或集成于PCI扩展卡上的一套完整的周边适配器。网络、显示或SCSI适配器就是典型的例子。在引入PCI技术规范的起始阶段,许多供应商选择早已经使用的、不符合PCI规范的设备做为PCI局部总线的接口,这可以通过可编程逻辑阵列(PLA)轻易实现。 PCI配置空间 PCI结构被设计用来替代ISA标准其中一个重要的考虑因素就是尽可能地做到平台无关性,使在系统中增减外围设备得到简化。平台无关性一直是计算机总线的一个设计目标,这是PCI的一个重要特征。不过对于驱动程序开发者来说,最重要的还是对于接口PCI板卡或设备的自动检测的支持。PCI设备都是无跳线的,并且在引导的时候被自动配置。因 第二章 嵌入式处理器与SoC设计技术 46 此,设备驱动程序必须能够访问设备配置信息来完成初始化工作。 由于PCI是无跳线的,不能通过跳线告知系统PCI设备的信息,但PCI又要实现在系统初始化时对其进行自动配置。因此,PCI设备是通过配置空间来完成以上的工作的。除了Host-PCI桥意外,每一个PCI设备(包括PCI-PCI桥、PCI-ISA桥)都要实现PCI配置空间,该配置空间是由一系列地址连续的配置寄存器组成的,在PCI配置空间中对PCI设备信息进行描述,包括设备的制造厂商、类别,设备所申请的存储器和I/O空间,设备的中断信息以及整个PCI设备的工作方式等。 整个PCI配置空间一共256个字节,其中会直接影响PCI设备特性的寄存器集中在PCI配置空间的前64个字节中,这个区域称为PCI配置头,目前2.2版本的PCI局部总线规范定义了3种配置头的格式,分别是0、1和2型配置头。 类型0:标准的PCI应用设备,除类型1和类型2外所有的PCI设备。 类型1:PCI-PCI桥设备,用于对PCI总线扩展,将两条PCI总线进行连接。 类型2:PCI-CardBus桥,主要用于笔记本计算机的插卡式总线。 其中,类型0的PCI配置空间如下图所示。 设备ID厂商ID00H 状态寄存器命令寄存器04H 分类代码版本08H 内含自测试头标类型延迟计数Cache行容量0CH 10H 14H 18H基地址寄存器 1CH 20H 24H CardBus CIS指针28H 子系统ID子系统厂商ID2CH 扩展ROM基地址30H 保留能力指针34H 保留38H 内含自测试头标类型延迟计数Cache行容量3CH 图1-26 类型0的PCI配置空间 以下描述的寄存器在所有的PCI设备种都应当实现(包括桥设备): (1)厂商ID配置寄存器 第二章 嵌入式处理器与SoC设计技术 47 该16位寄存器代表PCI设备制造商信息。本寄存器是只读寄存器,其中烧入的内容是由PCI SIG分配给该制造商的一个编号。PCI SIG是一个PCI规范管理机构,每个生产PCI设备的厂商都应该向它申请一个自己的厂商ID号,每一个PCI厂商的ID都是唯一的,并且不可能是0xFFFF。在系统启动时,会扫描PCI总线,在每一个PCI的纸上读取厂商ID,如果读到的数值为0xFFFF,标明这个位置没有插入PCI卡;否则,就标明这个位置有PCI设备,同时读取该厂商ID。 (2)设备ID配置寄存器 该16位寄存器由设备制造商定义,标明设备的用途。它与厂商ID配置寄存器一同向系统提供一个确定设备所需驱动程序的途径。 (3)子系统厂商ID寄存器和子系统ID寄存器 同样的,子系统厂商ID也是由PCI SIG进行管理,厂商从它那里获得一个唯一的标志。而子系统ID则是由厂商自定的。这对寄存器的作用是显而易见的,如果使用了相同的PCI设备接口芯片(在PCI板卡上),并且供应商将厂商ID和设备ID已经进行了硬件固化,那么两个不同功能的PCI设备必须有一种被区分开来的方法。利用不同的寄存器,系统就可以区分使用相同的PCI设备接口芯片的不同设备了。 (4)版本ID寄存器 这个寄存器为8位,表示PCI设备的版本号。 (5)类别代码寄存器 这是一个24位的只读寄存器,共分为3个独立的8位单元:基本类型字节、子类型字节和编程接口字节。其中最高8位代表基本类型;中间8位代表代表子类型字节;最低8位代表编程接口字节。他们分别代表设备的基本功能(例如大容量存储控制器)、细化的设备子类型(例如IDE大容量存储控制器)以及在一些情况下存储器指定的编程接口(例如IDE寄存器组的指定格式)。 对于许多基本类型和子类型的组合来说,最低8位的编程接口一般都不用,硬件连线为0(即没有意义)。但是对于某些设备,比如VGA兼容设备和IDE控制器,编程接口字节还是有意义的。 类别代码寄存器的作用体现在当查找新的硬件的时候,会根据类别代码来自动判该设备属于何种设备。然后操作系统根据类别代码自动选择驱动程序。 (6)命令寄存器 该寄存器提供了对PCI设备的访问方式以及PCI设备的工作模式。这是一个16位的寄存器,目前只有低端的10位有意义,高6位保留。命令寄存器的各位的意义如下图。 第二章 嵌入式处理器与SoC设计技术 48 15109876543210 保留 快速背对背允许 SERR#使能 步进控制 奇偶校验错误 VGA调色板检测 存储器写并无效使能 特殊周期控制 总线主设备控制 存储器空间控制 I/O空间控制 图1-27 命令寄存器布局 命令寄存器各位含义的解释如下: I/O空间位:为1时表示PCI总线上出现的地址将被译码成I/O地址,0表示禁止。 存储器空间位:为1时表示PCI总线上出现的地址将被译码为存储器地址,0则禁止。 总线主设备控制:为1时表示该设备可以为主设备,为0时表示该设备不能成为主设备。 特殊周期控制:为1时表示设备将会监视PCI总线的特殊周期,0将会使设备忽略所有的PCI特殊周期。 存储器写并无效使能:为1表示设备将会产生存储器写并无效命令,当设置为0时,设备使用存储器写命令代替。 VGA调色板控制:本位只用于显示设备,为1时将会使VGA兼容设备检测所有对VGA颜色调色板寄存器的写操作。 奇偶校验错误:为1时设备将会通过使PERR#信号(详细请参看PCI接口信号)位有效来向系统报告校验错误。 步进控制:该位用来控制设备是否可以使用地址/数据步进。步进是实现突发传输的关键,若PCI设备的数据传输量很大,则应该使用步进。 SERR#使能:为1时表示设备能够驱动SERR#信号,可以利用它报告系统错误。 快速背靠背允许:如果PCI总线主设备可以与不同的目标设备在相邻的两次传输中执行快速背靠背传输,那么这一位将用于使能或者禁用这一个功能。 (7)状态寄存器 该寄存器用于记录一个PCI设备目前的工作状态。在状态寄存器中如果标明了具有某种功能,那么在硬件中必须有对这种功能的实现。 状态寄存器可读,并且读的方法与正常读没有差别。但是写的方法和正常写有差别。它只能对某些位进行重置操作。如果要重置某些位,只需要将该位写为1,其他位写0即可。状态寄存器的布局如下图所示。 第二章 嵌入式处理器与SoC设计技术 49 1110987654321015141312 保留 能力列表 66MHz能力 保留 快速背对背能力 主设备数据奇偶校验错 设备选择定时 信号目标废止 收到目标废止 收到主设备废止 信号系统错误 检测奇偶校验 图1-28 状态寄存器布局 (7)首部类型寄存器 这个8位寄存器的0,6位定义了首部寄存器的第4,15个双字(32bit)的格式,位7定义了该设备是否属于多功能设备。 类型0的其他配置寄存器都是可选的,不必在每个PCI设备中都实现,但是对于具体的一个PCI设备,这其中的某些寄存器是必须的。 (1)Cache行容量寄存器 对于使用存储器写和使失效命令的主设备而言,这个寄存器是必须实现的。这个寄存器中的值也被主设备用来决定是否用读、行读或者多行读来访问内存。该寄存器用来指明系统Cache行容量的双字递增数目。总线主设备为了保证在Cache行边界开始一次处理,必须知道Cache行的容量。如果这个寄存器的值为0,总线主设备不可以使用存储器写和失效命令,而只能使用写命令。 (2)延迟定时寄存器 对于需要执行突发传送操作的总线主设备而言,这个寄存器是必需的。延迟定时寄存器定义了一个时间段,当主设备启动一个传输时,它将在这个延迟定时寄存器超时以前一直保持总线的控制权。 (3)基地址寄存器 基地址寄存器在PCI设备功能的实现上相当重要,前面说道PCI总线的一大优势就是系统自动进行资源配置,这个寄存器也起了很大的作用,它也是大多数PCI设备需要实现的寄存器。基地址寄存器的位置在配置空间的第4个双字一直到第9个,它们被用来存放PCI设备映射的内存地址或者使用的I/O空间的首地址。 PCI规范使用一种机制,使I/O和存储器能够区分开来,即在基地址寄存器的最低位上,如果是0,表明这个基地址寄存器指向一个存储器空间;如果是1,那么就是指向一个I/O空间。该寄存器如下图所示。 第二章 嵌入式处理器与SoC设计技术 50 43210210 001基地址基地址 可预取位类型:为0,保留00-可以映射到32位地址空间的任I/O空间标志位:1何地方01-只能映射到1MB以下的地址空间10-可以映射到64位地址空间的任何地方11-保留 内存空间标志位:0 a)存储器基地址寄存器b)I/O基地址寄存器 图1-29 存储器和I/O基地址寄存器 PCI通过向一个基地址寄存器写全1,然后读回这个寄存器的值,没有被改变的最低位的长度也就是需要向系统申请的地址空间的大小。例如向基地址寄存器0写入0xFFFFFFFF,如果读出0x01000000,那么申请的地址空间为1MB。 (3)中断引脚寄存器 每个PCI设备总共具备4条可以选择的中断请求引脚,他们分别是INTA#、INTB#、INTC#、INTD#。该寄存器表示了设备使用相应的4个引脚做为中断的情况。 (4)中断线寄存器 可读写的中断寄存器用来表示PCI设备的中断是连接到主机的中断控制器的哪一个引脚上。通过读取这个寄存器的值,驱动程序可以注册中断处理函数。 PCI设备的扫描 在PCI设备的设计中,采用将所有的PCI设备的配置空间都采用相同的地址,而由PCI总线桥在访问时使用IDSEL#信号来区分当前正在访问的PCI设备的方式。CPU只需要通过一个统一的入口地址向北桥(Host-PCI桥)发出命令,由相应的PCI桥间接地完成具体的读写时序转换。 在X86体系结构的计算机系统中,PCI总线的设计在I/O地址空间保留了8个字节用于访问PCI设备的配置空间。这8个字节构成了两个32位的寄存器,第一个时地址寄存器0xCF8,第二个时数据寄存器0xCFF。要访问某个设备的某个配置寄存器时,CPU先往地址寄存器写入目标地址,然后通过数据寄存器读写数据。不过写入地址寄存器中的目标地址并不是CPU的总线编址,而是一种包括总线号、设备号、功能号以及配置寄存器地址的合成地址,它的组成如下图。 第二章 嵌入式处理器与SoC设计技术 51 保留不用总线号设备号功能号寄存器地址(8位) (7位)(8位)(5位)(3位)最低2位为0 最高位为1 图1-30 写入地址寄存器0xCF8的地址格式 这里的总线号、设备号以及功能号是对配置寄存器地址的扩充,用于查找具体设备。首先每条PCI总线都有其总线号,与北桥相连的PCI总线号固定为0,其余的则由系统在初始化扫描软件中依次指定。每扫描到一条PCI总线就为其定义一条总线号,序号依次递增。设备号一般代表着一块PCI设备,可能是器件,也可能是板卡。但一般来说,可以认为是一块PCI设备接口芯片。 在X86系统中,BIOS提供了对PCI总线操作的支持,即PCI总线和设备的扫描以及配置所需的功能和服务。很多操作系统也依赖于BIOS所提供的PCI总线和设备的访问和配置操作。但现在的操作系统,如Linux-2.4已经实现了自身对于PCI总线的操作和配置而脱离于BIOS,是否使用BIOS的服务来访问PCI成为了其内核的一项条件编译选项。 PCI设备的中断共享介绍 关于PCI局部总线的另外一个重要特征就是中断共享。在硬件设计上采用电平触发的方式:中断信号在系统一侧用电阻上拉,而要产生中断的板卡上利用三极管的集电极将信号拉低。这样,无论PCI总线上有几个PCI设备产生了中断,中断信号都是低;只有当所有的设备的中断都得到处理后,中断信号才会回复到高电平。实现原理见下图所示。 PCI设备1 IRQ# AVCCENB 中断路由器中断管理器 INT#INQ3连接CPU中断线PCI设备2 IRQ# B ENB 图1-31 中断共享硬件设计原理 PCI局部总线遵循的技术规范 PCI局部总线技术规范1.0版由Intel公司开发,现在由一个工业厂商协会管理,成为 第二章 嵌入式处理器与SoC设计技术 52 PCI SIG。所有的关于PCI局部总线的技术规范包括: 表1-6 PCI局部总线技术规范文件 文件名称 PCI局部总线规范 PCI-PCI桥规范 PCI系统设计指南 PCI BIOS标准 PCI局部总线电源管理接口规范 PCI热插拔规范 所有PCI局部总线相关技术规范可以从如下网址获得: cPCI总线 根据具体应用和规模的不同,有些嵌入式系统需要一种特殊的PCI总线。在嵌入式系统中采用较多的这类PCI总线是一种变形的、经过改进的PCI总线,称为“紧凑PCI总线(Compact PCI)”,缩写为“cPCI”。这种总线主要是为需要在工业环境下长期不问断运行的设备而设计的,有其自己的标准。在逻辑上,cPCI总线是PCI总线的扩充,其基本部分与PCI总线基本上是一致的,为PCI总线开发的驱动程序不加修改就可用于cPCI总线。二者的不同之处主要在物理上: (1)首先,cPCI总线标准考虑到了电路板“热插拔(Hot Plug-in)”和“热替换(Hot Swap)”的要求。在需要长期不间断运行的设备中,如果有个别电路板在运行中出现了故障,就得允许在不关闭系统电源的条件下把损坏的电路板拔下并换上替换的电路板。与此类似,如果系统在运行中需要加以扩充,也要允许在系统带电的条件下插入电路板才行。某些操作系统,如Linux,在内核中的PCI总线驱动部分已经在软件上考虑到了这方面的需要,每当因为在系统中插入一块电路板而产生中断时,系统就会启动一轮新的扫描过程。但是,热插入并不只是个软件问题,在硬件上也有特殊要求。将一块电路板插入系统时,在软件还没有来得及对此电路板进行初始化之前,电路板上与总线接触的所有引线(除电源线以外)上的电路都必须处于“高阻”状态,否则就会干扰总线上的其他器件。可是,要保证让这些电路处于高阻状态,就得保证当这些引线在与总线上的相应触点相接触时,该电路板已经加电。换言之,在插入一块电路板时,必须保证让用于电源的引线先接通,然后才能让其他引线接触到相应的触点。显然,如果所有引线和触点的长度和形状都一样,就无法保证在插入时让哪一些引线先接通。所以cPCI总线的标准对此做出了规定,保证在插入时让电源线首先接通,而拔下时则让电源线最后断开。 (2)PCI总线是在PC机上发展起来的,所以其原始的设计意图是将若干个插槽安装在CPU所在的“母板”上。后来也出现了将PCI插槽安装在一块无源的“背板(Back-plane)”上,而将 “母板”做成可以插入PCI插槽的形式,但是实用中并不多见。可是,cPCI总线的设计意图本来就是背板式的结构,典型的系统中包括一块CPU卡(实际上是一个单板机)以及若干块外围的电路卡,所以在背板上的插槽有主,从之分。CPU卡只能插在“主插槽”内,外围的电路卡则都插在“从插槽”内。此外,cPCI电路板的尺寸也比普通PCI 第二章 嵌入式处理器与SoC设计技术 53 卡的要大很多,以便容纳更多、更复杂的功能。系统的背板装在一个cPCI框架内,通常框架内还装有排风扇和电源 (有的还有备份电源)。框架分直立和水平两种。发热量较大的系统适合采用直立式,因为直立的电路板有利于空气流通,容易散热,缺点则是框架(从而机箱)的高度较大。发热量小的系统则可以采用水平式,这样可以使机箱做得比较簿。工业(如电信)设备一般都采用所谓“叠架式”安装,可以把好几台设备叠起来安装在同一个标准尺寸的安装架上,所以每台设备的宽度都是标准的(例如19英寸),而深度和高度则都应该是某个标称值。机箱的商度以1.75英寸为一个单元,称为lU,具体可以是lU、2U、3U等等。 (3)由于cPCI卡的尺寸较大,在一块cPCI卡上可以实现相当复杂的功能。但是有时候还是因地盘”太小而不够用,或者需要为cPCI卡的设计增加一些灵活性。为此,还可以把cPCI卡做成“子母卡”的方式,在cPCI卡上再插上尺寸较小作为可选项的子卡,称为“夹层卡(mezzanine card)”。以CPU为例,如果把VGA接口也做在CPU卡上,一方面“地盘”可能太小了,另一方面有些应用可能要求使用图形接口。此时就可以把VGA接口做成一个夹层卡,并在CPU卡上提供相应的插口。这样,VGA接口模块就可以作为可选项购买和使用了。 (4)插槽的形状和尺寸也不同。cPCI总线的插槽分成三段,一段在逻辑上基本等价于PCI总线,这是最主要的基本的一段。另一段并没有明确的定义,常常被用来提供CPU卡与磁盘驱动器等常规外设的连接(如果需要的话)。最后一段(物理上是中间一段)则用来实现一种称为H.110的总线。H.110是一种时分复用(TDM)总线,主要用于DSl、DS3(在北美地区是Tl/T3,在欧洲等地是EI/E3)等TDM链路的数字通信设备。从这一点也可以看出,cPCI总线主要是面向电信业的。 其他总线扩展形式 除cPCI总线以外,有些嵌入式系统也采用由速度较低的ISA总线变革过来的PC/104等总线。这些总线的速度和容量都比不上PCI总线,但是对有些应用已经够了,而且尺寸较小,结构也简单,所以还是有不少系统采用。 另一种常用的外设“总线”称为CardBus(如前所述),就是笔记本电脑或掌上电脑上用于Modem卡等外设的插槽。CardBus只有两个插槽,插在CardBus上的接口卡通称“PCMCIA”卡,所以这种总线又称为PCMCIA总线。 近年来,随着数码照相机等产品的发展,又出现了几种新的外设接口,一种称为CompactFLASH(CF接口),另一种称为FlashMEM。意图都是用来扩充系统的闪存容量(以存储更多的数字相片),但是也可能用于外设接口。 1.4.4 VME总线 诞生于25年前的VME(VersaModule Eurocard)总线是一种通用的计算机总线,结合了Motorola公司Versa总线的电气标准和在欧洲建立的Eurocard标准的机械形状因子,是一种开放式架构。它定义了一个在紧密耦合(closely coupled)硬件构架中可进行互连数据 第二章 嵌入式处理器与SoC设计技术 54 处理、数据存储和连接外围控制器件的系统。经过多年的改造升级,VME系统已经发展的非常完善,围绕其开发的产品遍及了工业控制、军用系统、航空航天、交通运输和医疗等领域。 VME总线的特点 VME的数据传输机制是异步的,有多个总线周期,地址宽度是16、24、32、40或64位,数据线路的宽度是8、16、24、32、64位,系统可以动态的选择它们。它的数据传输方式为异步方式,因此只受制于信号交换协议,而不依赖于系统时钟;其数据传输速率为0,500Mb/s;此外,还有Unaligned Data传输能力,误差纠正能力和自我诊断能力,用户可以定义I/O端口;其配有21个插卡插槽和多个背板,在军事应用中可以使用传导冷却模块。 VME总线的结构 因为是两种标准的结合,那么VME系统也可以被看作是两个部分。一个部分是它的机械构架,此部分决定着VMEbus 系统背板、前置面板和嵌入板的尺寸大小;而令一部分则是功能构架,它定义了系统的运转流程。 VME总线的机械结构 VME机械构架中的主要部分为背板,是一个印刷电路板。它的大小有三种型号:3U(160mm×100mm)、6U(160mm× 233mm)和9U(367 mm×400mm)。根据VME64x标准,VME系统中有三种连接器,它们分别是P0/J0、P1/J1和 P2/J2,“P”和“J”分别代表了PLUG和JACK连接器。P1/J1和P2/J2连接器有96个管脚,排列成三排,每排32管脚;P0/J0连接器则有95个管脚。3U型背板只具有P1/J1或P2/J2连接器,而6U型背板则同时具有J1和J2连接器。 VME总线的功能结构 如下图所示,VME的功能构架可以说是由信号线,背板接口逻辑和功能模块所组成的。背板接口逻辑的性能是由背板上的一些特性所左右的,比如信号线阻抗、传播时间、终端数值等等。它和信号线是系统各部分之间的纽带。功能模块则是执行具体任务的电路集合。其中,主要的模块叫做主设备(Master),其决定着数据传输的顺序;根据主设备数据传输情况而动作的模块叫做从设备(Slave),负责监控数据传输目标地址的模块被称为定位监控设备。此外,还有发出中断请求和处理中断请求的模块,判定和处理其他模块请求的仲裁模块。当然,还少不了发出时钟信号的模块和监控系统电源工作情况的模块。 第二章 嵌入式处理器与SoC设计技术 55 CPU板Memory板I/O板 数据处理设备数据存储设备数据输入/输出设备 功能功能功能功能功能模块模块模块模块模块 背板接口逻辑背板接口逻辑背板接口逻辑 背板 背板信号线 图1-32 VME功能结构图 这些模块虽然各有分工,但是要想集体配合,还需要总线的支持。VME系统的总线分为四大类:数据传输总线、数据传输仲裁总线、优先中断总线和通用总线。 数据传输总线是一个高速异步平行数据传输总线,能传输数据和地址信号。主设备、从设备、中断模块和中断处理模块通过其进行两两交换数据。另外两个模块,总线时钟(Bus Timer)和JACK 菊花链驱动器也通过数据传输总线参与数据处理工作。 数据传输仲裁总线是为确保在特定的时间内只有一个模块占用数据传输总线而设定的。工作在其上的请求模块和仲裁模块将负载协调各模块发出的指令。仲裁模块处于背板的第一个插槽内,决定哪个主设备将优先使用总线资源。具体的判定方法包括了优先权算法、Round-Robin算法和其他排序算法。优先权中断总线是处理各模块中断请求的总线。各种中断请求在VME中被分成了7个等级,根据等级的高低,它们依次对信号线进行中断工作。 最后一个总线是通用总线。所谓通用总线就是负责系统的一些基本工作,包括对时钟的控制、初始化、错误检测等任务的总线。它由两条时钟线、一个系统复位线、一个系统失效线、一个AC失效线和一个串行数据线构成。 各模块是以平行结构分布的,所有的数据和指令通过系统底层的4类总线进行传输,信号的模式是TTL电平信号。 VME总线家族 (1)VME64 随着周边技术的发展,VME系统的升级在所难免。于是在1995年,VME总线的新一 第二章 嵌入式处理器与SoC设计技术 56 代架构VME64脱颖而出。相对于传统的VME系统,VME64加大了传输带宽,拓展了地址空间和方便了板卡插拔。它将6U板的数据线宽和地址范围扩展到了64位,给3U板提供了32位和40位地址模块,传输带宽达到了80Mb/s,增加了总线锁定周期,增加了第一插槽探测功能,加入了对热插拔的支持。 (2)VME64 Extension VME64扩展集是1997通过的新标准,它又被称为VME64x。它增加了一个160管脚连接器系列(按5行排列),还在P1/J1和P2/J2之间加入了一个P0/J0 连接器,另外新增设了一个3.3V电源管脚。该系统新增的两个边缘总线循环则把数据速率提高到160 Mb/s。此外,还增加了EMC前置面板和ESD功能。 (3)VME320 VME320最大的改进可能是采用了星型互连的方法来达到数据传输加速的目的。它采用了一种叫做2eSST的协议,这是一种信源同步传输协议,可将理论数据速率提高到320 Mb/s。不过VME320并没有得到广泛的支持。 其他从VME中派生出来的协议还有很多,感兴趣的读者可以参看相关文档和资料。 VME总线的发展趋势 VME技术目前的优势在于多年的技术积累,其完备的规范和得力的技术支持能满足大部分客户的具体要求。此外,它的模块性也是一个非常大的优势,因为对于很多的嵌入式系统来说,加入额外的I/O是常有的事,而VME能很好的满足这一特点。VME提供了21个扩充插槽,而且新加入的模块并不影响系统的整体性能。 不过,VME毕竟是诞生于25年前的技术,很多用户就对VME在带宽方面的进展不太满意。因为在这个海量数据的时代,带宽是一个压倒性的指标。不过,厂商们并未对VME丧失信心,他们在想尽一切办法来延长VME的寿命。SBS公司推出的VXS标准和VITA(VME国际贸易协会)开发的VPX标准就是一种新的尝试。VXS为引用交换结构创造了条件,而VPX则将开关结构信号速率提升到了6.25Gb/s。与此同时,许多VME总线背板开始使用PMC(PCI Mezzanine Card)插槽,以便能直接使用PCI板卡。制造商们还吸取了PCI板卡的构造因素,来让VME板卡跟上行业的步伐。 VME的成就是众所公认的,但要想在未来的10年重新焕发活力,制造商们还要继续的努力。对于这种非常有弹性的技术,悄然的衰落可能不会是多数人所愿意看到的。 1.5 EDA技术在嵌入式系统硬件设计中的应用 1.5.1 EDA设计技术 随着半导体工艺水平的不断提高,芯片中已经能够集成几百万个门电路,一个完整的数字电子系统可以集成于一块芯片上(System on-a-Chip),而传统产品设计需要经过人工设 第二章 嵌入式处理器与SoC设计技术 57 计、制作试验板、调试再修改多次循环才能定型,完成这样的SoC设计已经十分困难。随着电子技术和计算机技术的飞速发展,计算机应用水平的不断提高,以及人们利用计算机进行电子系统辅助设计,从而多大大提高了设计效率,减轻了设计人员的工作强度,缩短了设计周期,提高了设计成功率,减少了设计缺陷。上述这些优点,使电子设计自动化(Electronic Design Automation,EDA)成为现代电子设计的主流。 EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包。利用EDA工具,电子工程师可以将电子产品的由电路设计、性能分析到IC设计图或PCB设计图整个过程在计算机上自动处理完成。 回顾近30年电子设计技术的发展历程,可将EDA技术分为3个阶段。 (1)20世纪70年代为CAD阶段,这一阶段人们开始用计算机辅助进行IC图编辑和PCB布局布线,取代了手工操作,产生了计算机辅助设计的概念。 (2)20世纪80年代为CAE阶段,与CAD相比,除了纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,以实现工程设计,这就是计算机辅助工程的概念。CAE的主要功能是:原理图输入,逻辑仿真,电路分析,自动布局布线,PCB后分析。 (3)20世纪90年代为ESDA阶段。尽管CAD/CAE技术取得了巨大的成功,但并没有把设计人员从繁重的设计工作中彻底解放出来。在整个设计过程中,自动化和智能化程度还不高,各种EDA软件界面千差万别,学习使用困难,并且互不兼容,直接影响到设计环节间的衔接。基于以上不足,人们开始追求贯彻整个设计过程的自动化,这就是电子系统设计自动化(Electronic System Design Automation,ESDA)。 1.5.2 ESDA技术的基本特征 ESDA代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件。下面介绍与ESDA基本特征有关的几个概念。 (1)“自顶向下”的设计方法 10年前,电子设计的基本思路还是选择标准集成电路“自底向上”(Bottom-up)的构造出一个新的系统,这样的设计方法就如同一砖一瓦建造金字塔,不仅效率低、成本高而且容易出错。 高层次设计给提供了一种“自项向下”(Top-Down)的全新设计方法。这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真和纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后用综合优化工具生成具体门电路的网表,其对应的物理实现级可以是PCB或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这一方面有利于早期发现结构设计上的错误,避免设计工作的浪费,同时也减少了逻辑功能仿真的工作量,提高了设计成功率。 (2)IC设计 现代电子产品的复杂度日益加深,一个电子系统可能由数万个中小规模集成电路成, 第二章 嵌入式处理器与SoC设计技术 58 这就带来了体积大、功耗大、可靠性差的问题,解决这一问题的有效方法就是采用芯片进行设计。ASIC按照设计方法的不同可分为全定制ASIC、半定制ASIC和可编程器件(也称为可编程逻辑器件)。设计全定制ASIC芯片时,设计师要定义芯片上所有晶体的几何图形和工艺规则,最后将设计结果交由IC厂家掩膜制造完成。优点是:芯片可以有最优的性能,即面积利用率高、速度快、功耗低。缺点是:开发周期长,费用高,只大批量产品开发。 半定制ASIC芯片的版图设计方法有所不同,分为门阵列设计法和标准单元设计。这两种方法都是约束性的设计方法,其主要目的就是简化设计,以牺牲芯片性能为代价缩短开发时间。 可编程逻辑芯片与上述掩膜ASIC的不同之处在于:设计人员完成版图设计后,实验室内就可以烧制出自己的芯片,无需IC厂家的参与,大大缩短了开发周期。 可编程逻辑元件自20世纪70年代以来,经历了PAL、GAL、CPLD、FPGA几个阶段,其中CPLD/FPGA属高密度可编程逻辑元件,目前集成度已高达200万门/片,掩膜ASIC集成度高的优点和可编程逻辑元件设计生产方便的特点结合在一起,特别于样品研制或小批量产品开发,使产品能以最快的速度上市,而当市场扩大时,它司容易的转由掩膜ASIC实现,因此开发风险也大为降低。 上述的ASIC芯片,尤其是CPLD/FPGA元件,已成为现代高层次电子设计方法的载体。 (3)硬件描述语言 硬件描述语言(Hardware Description Language,HDL)是一种用于设计硬件电子的计算机语言。它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式。 与传统的门级描述方式相比,它更适合大规模系统的设计。例如一个32位的加法器,图形输入软件需要输入500,1000个门,而利用HDL语言只需要书写一行A=B+C即可。而且HDL语言可读性强,易于修改和发现错误。早期的硬件描述语言,如AHDL,由不同的EDA厂商开发,互不兼容,而且不支持多层次设计,层次间翻译工作由人工完成。为了克服以上不足,1985年美国国防部正式推出了VHDL(Very High IC Hardware Description Language)语言,1987年IEEE采纳VHDL为硬件描述语言(IEEE STD-1076)。 VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门个设计层次,支持结构、数据流、行为3种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用VHDL来完成。VHDL还具有以下优点: VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现。 VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用。 VHDL的设计不依赖于特定的元件,方便了工艺的转换。 VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。 (4)系统框架结构 EDA系统框架结构(Framework)是一套配置和使用EDA软件包的规范,目前主要的EDA系统都建立了框架结构,如Cadence公司的Design Framework,Mentor公司的Falcon Framework,而且这些框架结构都遵守国际CFI组织(CAD Framework Initiative)制定的统一技术标准。Framework能将来自不同(EDA厂商的工具软件进行优化组合,集成在一个易 第二章 嵌入式处理器与SoC设计技术 59 于管理的统一的环境之下,而且还支持任务之间、设计师之间以及整个产品开发过程中信息的传输与共享,是并行工程和“自顶向下”设计方法的实现基础。 1.5.3 EDA技术的基本设计方法 (1)电路级设计 电子工程师接受系统设计任务后,首先确定设计方案,同时要选择能实现该方案的合适元件,然后根据具体的元件设计电路原理图。接着进行第一次仿真,包括数字电路的逻辑模拟、故障分析,模拟电路的交直流分析、瞬态分析。系统在进行仿真时,必须要有元件模型库的支持,计算机上模拟的输入输出波形代替了实际电路调试中的信号源和示波器。这一次仿真主要是检验设计方案在功能方面的正确性。 仿真通过后,根据原理图产生的电气连接网络表进行PCB的自动布局布线。在制作PCB之前还可以进行后分析,包括热分析、噪声及窜扰分析、电磁兼容分析、可靠性分析等,并且可以将分析后的结果参数反标回电路图,进行第二次仿真,也称为后仿真,这一次仿真主要是检验PCB在实际工作环境中的可行性。 由此可见,电路级的EDA技术使电子工程师在实际的电子系统产生前,就可以全面了解系统的功能特性和物理特性,从而将开发风险消灭在设计阶段,缩短了开发时问,降低了开发成本。 (2)系统级设计 进入20世纪90年代以来,电子信息类产品的开发明显出现两个特点:一是产品的复杂程度增加;二是产品的上市时限紧迫。然而电路级设计本质上是基于门级描述的单层次设计,设计的所有工作(包括设计输入,仿真和分析,设计修改等)都是在基本逻辑门这一层次上进行的,显然这种设计方法不能适应新的形势,为此引入了一种高层次的电子设计方法,也称为系统级的设计方法。 高层次设计是一种“概念驱动式”设计,设计人员无须通过门级原理图描述电路,而是针对设计目标进行功能描述,由于摆脱了电路细节的束缚,设计人员可以把精力集中于创造性的方案与概念构思上,一旦这些概念构思以高层次描述的形式输入计算机后,EDA系统就能以规则驱动的方式自动完成整个设计。这样,新的概念得以迅速有效地成为产品,大大缩短了产品的研制周期。不仅如此,高层次设计只是定义系统的行为特性,可以不涉及实现工艺,在厂家综合库的支持下,利用综合优化工具可以将高层次描述转换成针对某种工艺优化的网表,工艺转化变得轻松容易。 高层次设计步骤如下: 1.按照“自顶向下”的设计方法进行系统划分。 2.输入VHDL代码,这是高层次设计中最为普遍的输入方式。此外,还可以采用图形输入方式(框图、状态图等),这种输入方式具有直观、容易理解的优点。 3.将以上的设计输入编译成标准的VHDL文件。对于大型设计,还要进行代码级的功能仿真,主要是检验系统功能设计的正确性,因为对于大型设计,综合、适配要花费数小时,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间,一般情况下,可略 第二章 嵌入式处理器与SoC设计技术 60 去这一仿真步骤。 4.利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化硬件电路的关键步骤。综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库支持下才能完成。综合后,可利用产生的网表文件进行适配前的时序仿真,仿真过程不涉及具体元件的硬件特性,是较为粗略的一般设计,这一仿真步骤也可略去。 5.利用适配器将综合后的网络表文件针对某一具体的目标元件进行逻辑映射操作,包括底层元件配置、逻辑分割、逻辑优化、布局布线。适配完成后,产生多项设计结果: 适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等。 适配后的仿真模型。 元件编程文件。 根据适配后的仿真模型,可以进行适配后的时序仿真,因为已经得到元件的实际硬件特性(如时延特性),所以仿真结果能比较精确的预期未来芯片的实际性能。如果仿真结果达不到设计要求,就需要修改VHDL源代码或选择不同速度品质的器件,直至满足设计要求。 6.将适配器产生的元件编程文件通过编程器或下载电缆载入到目标芯片FPGA或CPLD中。如果是大批量产品开发,通过更换相应的厂家综合库,可以很容易转由ASIC形式实现。 1.6 电子电路测试 1.6.1 电子电路测试原理与方法 测试的意义在于检查设计的具体电路是否能够像设计者要求的那样正确工作。测试的任务就是确认IC芯片内部有没有隐藏的故障。由于半导体工艺水平的提高,芯片的复杂程度增加,测试难度越来越大。现在已经不能直接从I/O接口来完整地控制和观察芯片和内部节点的电学行为。 判断故障是否存在即只判断有无故障,称为故障检测(Fault Detection);若不仅判断故障是否存在,而且指出故障位置,称为故障诊断(Fault Diagnosis)或故障定位(Fault Isolation)。测试与仿真(模拟)是不一样的。仿真是对设计过程中得到的电路参数验证其正确性,是IC芯片在产品未生产之前进行的;测试是判断产品是否合格,是在IC芯片生产出来之后进行的,是产品制造过程中的工序之一。 经典的测试方法是用一个测试设备进行的。将被测IC芯片放到测试仪器上,测试设备根据需要产生一系列测试输入信号,加到被测元件上,在被测元件输出端得到输出信号,测试设备将实际输出信号和预期输出信号比较,如果吻合,表示测试通过,否则不能通过。 可测试设计的3个方面是测试生成、测试验证、测试设计。测试生成是指产生验证IC芯片行为的一组测试码。测试验证指给定测试集合的有效性测度,这通常是通过故障仿真来估算的。测试设计是设计者在电路设计阶段就考虑芯片的测试结构问题,在设计用户逻 第二章 嵌入式处理器与SoC设计技术 61 辑的同时,还要设计测试电路。 现代电子设计方法包含可测试设计。内建测试系统(BIST)是SoC片上系统的重要结构之一。JTAG测试接口是IC芯片测试方法的标准。 芯片测试分为样品测试和产品测试。样品测试需要非常严格的测试矢量,并检查可能导致芯片功能错误的故障。生产测试主要注意测试成本,给出IC芯片功能检查通过或不通过的信号。 可测试设计作为EDA工程的重要组成部分,受到设计者、生产者重视。他们从不同的角度提出了许多改善可测试性的建议: ? 将复杂的电路分块,使模块测试更加容易。 ? 采用电路技术,使测试矢量生成难度减少。 ? 改进可控性和可观察性。 ? 添加自检测电路。 1.6.2 硬件抗干扰测试 影响系统可靠安全运行的主要因素主要来自系统内部和外部的各种电气干扰,并受系统结构设计、元件选择、安装、制造工艺影响。这些都构成嵌入式系统的干扰因素,常会导致嵌入式系统运行失常,轻则影响产品质量和产量,重则会导致事故,造成重大经济损失。 形成干扰的基本要素有3个: 干扰源:指产生干扰的元件、设备或信号,用数学语言描述如下:du/dt。du/dt大的地方就是干扰源,如雷电、继电器、可控硅、电机、高频时钟等都可能成为干扰源。 传播路径:指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传播路径是通过导线的传导和空间的辐射。 敏感器件:指容易被干扰的对象,如A/D转换器、D/A转换器、单片机、数字IC、弱信号放大器等。 干扰的分类 干扰的分类有好多种,通常可以按照噪声产生的原因、传导方式、波形特性等进行不同的分类。按产生的原因,可分为放电噪声音、高频振荡噪声、浪涌噪声;按传导方式,可分为共模噪声和串模噪声;按波形分,可分为持续正弦波、脉冲电压、脉冲序列等。 干扰源产生的干扰信号是通过一定的耦合通道才对系统产生作用的。因此,有必要看看干扰源和被干扰对象之间的传递方式。干扰的耦合方式,无非是通过导线、空间、公共线等,细分下来,主要有以下几种。 直接耦合:这是最直接的方式,也是系统中存在最普遍的一种方式。比如干扰信号通过电源线侵入系统。对于这种形式,最有效的方法就是加入去耦电路。 公共阻抗耦合:这也是常见的耦合方式,这种形式常常发生在两个电路电流有共同通 第二章 嵌入式处理器与SoC设计技术 62 路的情况。为了防止这种耦合,通常在电路设计上就要考虑,使干扰源和被干扰对象问没有公共阻抗。 电容耦合:又称电场耦合或静电耦合,是由于分布电容的存在而产生的耦合。 电磁感应耦合:又称磁场耦合,是由于分布电磁感应而产生的耦合。 漏电耦合:这种耦合是纯电阻性的,在绝缘不好时就会发生。 常用硬件抗干扰技术 针对形成干扰的3要素,采取的抗干扰主要有以下手段。 (1)抑制干扰源 抑制干扰源就是尽可能的减小干扰源的du/dt和di/dt。这是抗干扰设计中最优先考虑和最重要的原则,常常会起到事半功倍的效果。减小干扰源的du/dt主要是通过在干扰源两端并联电容来实现。减小干扰源的di/dt:则是在干扰源回路串联电感或电阻及增加续流二极管来实现。 抑制干扰源的常用措施如下: 继电器线圈增加续流二极管,消除断开线圈时产生的反电动势干扰。仅加续流二极管会使继电器的断开时间滞后,增加稳压二极管后继电器在单位时间内可动作更多的次数。 在继电器接点两端并接火花抑制电路(一般是RC串联电路,电阻一般选几KΩ到几十KΩ,电容选0.01uF),减小电火花影响。 给电机加滤波电路,注意电容、电感引线要尽量短。 电路板上每个IC要并接一个0.01uF,0.1uF高频电容,以减小IC对电源的影响。注意高频电容的布线,连线应靠近电源端并尽量粗短,否则,等于增大了电容的等效串联电阻,会影响滤波效果。 布线时避免90折线,减少高频噪声发射。 可控硅两端并接RC抑制电路,减小可控硅产生的噪声(这个噪声严重时可能会把可控硅击穿的)。 (2)切断干扰传播路径 按干扰的传播路径可分为传导干扰和辐射干扰两类。 所谓传导干扰是指通过导线传播到敏感元件的干扰。高频干扰噪声和有用信号的频带不同,可以通过在导线上增加滤波器的方法切断高频干扰噪声的传播,有时也可加隔离光耦来解决。电源噪声的危害最大,要特别注意处理。 所谓辐射干扰是指通过空间辐射传播到敏感元件的干扰。一般的解决方法是增加干扰源与敏感元件的距离,用地线把它们隔离和在敏感元件上加屏蔽罩。 切断干扰传播路径的常用措施如下: 充分考虑电源对嵌入式系统的影响。电源做得好,整个电路的抗干扰就解决了一大半。许多嵌入式系统对电源噪声很敏感,要给嵌入式系统电源加滤波电路或稳压器,以减小电源噪声对嵌入式系统的干扰。比如,可以利用磁珠和电容组成π形滤波电路,当然条件要求不高时也可用100Ω电阻代替磁珠。 如果嵌入式微处理器的I/O接口用来控制电机等噪声器件,在I/O接口与噪声源之间应加隔离(增加兀形滤波电路)。 第二章 嵌入式处理器与SoC设计技术 63 注意晶振布线。晶振与嵌入式微处理器引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地并固定。 电路板合理分区,如强、弱信号,数字、模拟信号。尽可能把干扰源(如电机、继电器)与敏感元件(如单片机)远离。 用地线把数字区与模拟区隔离。数字地与模拟地要分离,最后在一点接于电源地。A/D、D/A芯片布线也以此为原则。 嵌入式微处理器和大功率器件的地线要单独接地,以减小相互干扰。大功率器件尽可能放在电路板边缘。 在嵌入式微处理器的I/O接口、电源线、电路板连接线等关键地方使用抗干扰元件如磁珠、磁环、电源滤波器、屏蔽罩,可显著提高电路的抗干扰性能。 (3)提高敏感元件的抗干扰性能 提高敏感元件的抗干扰性能是指从敏感元件这边考虑尽量减少对干扰噪声的拾取,以及从不正常状态尽快恢复的方法。 提高敏感元件抗干扰性能的常用措施如下: 布线时尽量减少回路环的面积,以降低感应噪声。 布线时,电源线和地线要尽量粗。除减小压降外,更重要的是降低耦合噪声。 对于嵌入式微处理器闲置的I/O接口,不要悬空,要接地或接电源。其他IC的闲置端在不改变系统逻辑的情况下接地或接电源。 对嵌入式微处理器使用电源监控及看门狗电路,可大幅度提高整个电路的抗干扰性能。 在速度能满足要求的前提下,尽量降低嵌入式微处理器的晶振和选用低速数字电路。 IC器件尽量直接焊在电路板上,少用IC座。 (4)其他常用抗干扰措施 交流端用电感电容滤波:去掉高频低频干扰脉冲。 变压器双隔离措施:变压器初级输入端串接电容,初、次级线圈间屏蔽层与初级间电容中心接点接大地,次级外屏蔽层接PCB,这是硬件抗干扰的关键手段。次级加低通滤波器,以吸收变压器产生的浪涌电压。 采用集成式直流稳压电源:有过流、过压、过热等保护作用。 I/O接口采用光电、磁电、继电器隔离,同时去掉公共地。 通信线用双绞线,排除平行互感。 防雷电用光纤隔离最为有效。 A/D转换用隔离放大器或采用现场转换以减少误差。 外壳接大地以解决人身安全及防外界电磁场干扰。 加复位电压检测电路。防止复位不充分,CPU就工作,尤其有EEPROM的元件,复位不充分会改变EEPROM的内容。 PCB工艺抗干扰。 电源线加粗,合理走线、接地,三总线分开以减少互感振荡。 CPU、RAM、ROM等主芯片、V和GND之问接电解电容及瓷片电容, 去掉高、CC 低频干扰信号。 独立系统结构,减少接插件与连线,提高可靠性,减少故障率。 集成块与插座接触可靠,用双簧插座,最好集成块直接焊在PCB上,防止元件接触不良故障。 第二章 嵌入式处理器与SoC设计技术 64 有条件地采用四层以上PCB,中间两层为电源及地。 思考题 1.硬件电路设计的基本流程是怎样的,请举一个实际的设计示例并进行说明。 2.PCB设计中的基本注意事项有哪些,如何增强PCB的可靠性,请举一个设计实例并进行说明。 3.调研一种手持设备中应用的电源管理芯片,说明其组成、工作原理以及在实际的设计中如何应用,从硬件和软件两个方面给出使用该电源管理芯片的电源管理解决方案。 4.NOR Flash和NAND Flash的区别在什么地方, 假设在一个手机的设计中,设计人员应该如何安排NOR Flash和Nand Flash的分配和使用,请从硬件和软件两个方面进行说明。 5.嵌入式CPU(如ARM)中常常集成了UART控制器,使用内部的编程接口(寄存器组)可以在软件上直接操作这些UART控制器进行RS-232C协议的通信。请调研两种嵌入式CPU中的UART模块,说明它们的基本工作原理、编程模型、中断处理方法以及波特率生成方法。如果需要在自己的设计中扩展高速串行通信口,而CPU内部集成的UART模块无法产生所需要的波特率时,应该怎么办, 6.调研一种工具软件,可以在Linux/Microsoft Windows下读取PCI卡的配置空间的信息。分析一种操作系统(Windows/Linux)下的PCI驱动程序结构和中断处理方法并举例说明。 7.举例说明一种采用VME总线的产品设计,描述该产品的特点、性能、基本设计原理以及VME的通信方式。 8.列举出常用的EDA软件,说明其版本以及相应的功能。如果设计一个智能手机的硬件原型,请组合出一套开发工具的解决方案并说明开发流程。 9.在设计一个高可靠、抗干扰能力强的系统时,如何在硬件上做出最大的保证, 第二章 嵌入式处理器与SoC设计技术 65 第二章 嵌入式处理器与SoC设计技术 嵌入式处理器是各种类型面向用户、面向产品、面向应用的嵌入式系统的核心部件。流行体系结构有30几个系列最主要的是冯诺依曼结构和哈佛结构。其功耗、体积、成本、可靠性、速度、处理能力、电磁兼容性等方面均受到应用要求的制约。由于应用的需求,现代的嵌入式处理器正向着高集成化的方向发展,把各种功能尽量集成到一个芯片上。 2.1 SoC片上系统简介 21世纪,随着半导体工艺技术的发展,IC设计者能够将愈来愈复杂的功能集成到单硅片上。SoC(片上系统)正是在集成电路(IC)向集成系统(IS)转变的大方向下产生的。从狭义角度讲,它是信息系统的芯片集成,是将系统集成在一块芯片上;从广义角度讲,SoC就是一个微小型系统,如果说中央处理器(CPU)是大脑,那么SoC就是包括大脑、心脏、眼睛和手的系统。SoC的出现使集成电路发展成为集成系统,整个电子整机的功 能将可以集成到一块芯片中。在不久的将来,集成电路与电子整机之间的界限将被彻底打破。 随着嵌入式技术的发展和集成电路技术的迅速提高,SoC逐渐成为嵌入式技术领域发展的趋势和方向,特别是在现代嵌入式系统向着微型化,专业化的方向前进时,各种通用处理器内核将作为SoC 设计公司的标准库,和许多其它嵌入式系统外设一样,成为VLSI设计中一种标准的器件,用标准的VHDL或者Verilog语言描述。用户只需定义出其整个应用系统,仿真通过后就可以将设计图交给半导体工厂制作样品。这样除个别无法集成的器件以外,整个嵌入式系统大部分均可集成到一块或几块芯片中去,应用系统电路板将变得很简洁,对于减小体积和功耗、提高可靠性非常有利。 2.1.1 SoC的定义及特点 按照传统的观点和理念,SoC(System on Chip),系统级芯片是指把整个系统集成到一个芯片上,系统包括嵌入式内核(如MPU、MCU或者DSP),一些专用的存储器,输入输出接口模块主要是USB、串口和网络模块,和专用功能模块等。利用发达的ASIC技术和深亚微米技术把数字电路和模拟电路,以及存储器全部做到一个芯片上即可构成一个系统级芯片。按照最新的观点和理论,SoC不仅包含了硬件系统,同时还涵盖了相应的嵌入式软件例如Windows或者Linux操作系统以及应用软件,构成了一个真正的软、硬件均具备的完整体系。SoC就有了新的定义方式,既是一个片上系统,也需要能够把很多专利性的技术集合在一个芯片上。对属于芯片提供商的来说,硬件和制造方面是它所主要关注的领域,但对客户来说,实际上包括更多的层次,从开发环境、软件操作系统和底层的硬件制造,客户关心的是整体系统。 SoC就是将微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口)集成在单一芯片上。它通常是客户定制的,或是面向特定用途的标准产品。SoC 是面向特定用户的能最大满足嵌入式系统要求的芯片,因而具有很多优势:能极大改善功耗开销,可减少印制板上部件数和管脚数,减少板卡失效的可能性,有利于板卡的性能改善(由于片内连线缩 第二章 嵌入式处理器与SoC设计技术 66 短),降低风冷要求,减少系统开发商成本,尤其适合数字化产品开发,如手持设备、信息家电等。从分立元件到集成电路再到片上系统,这是微电子领域的几次革命。21世纪,集成电路将进入SoC时代。 SoC作为嵌入式发展的最新方向,最早出现在20 世纪90 年代中期,1994 年MOTOROLA 公司发布的Flex CoreTM 系统,用来制作基于68000TM 和Power PCTM 的定制微处理器。1995年,LSILogic 公司为SONY 公司设计的SoC,可能是基于IP ( Intellectual Property)核进行SoC 设计的最早报道。从技术方面来讲,SoC是在ASIC(Application Specific Integrated Circuit特定应用集成电路)基础上发展起来的,但由于SoC可以充分利用已有的设计经验和IP核,显著提高了ASIC的设计能力。不仅提高了IC的密度和速度,而且减少了成本。现代的微电子技术领域在芯片级发展的必然方向是集成电路向集成系统转换。 SoC就是狭义上的集成系统(IS—Integrated System),把模型算法、芯片结构、各层次的电路甚至器件的设计都集成在一个芯片上。而不是在传统的PCB上实现系统功能,因此大大节省了工作量,但另一方面,SoC对设计者和工艺的要求比较高。开发SoC的主要目的是提高性能和降低成本。 作为系统级芯片SoC形成或产生过程包含以下三个方面: 单片集成系统的软硬件协同设计和验证,以实现系统功能为主要目的。 在SoC芯片的设计过程中,由于系统的复杂程度增加,功能集成程度增加,处理的事件也逐渐复杂,就要求软件、硬件很好的结合,增加SoC设计的软件比重, 必须保证软件和硬件协同才能实现整个芯片的功能正确。图7.1给出了一个较为普遍的面向SoC软硬件协同设计流程。 系统描述 系统功能模拟验证 软硬件划分 通信体系结构综合 通信行为描述软硬件协同模拟验软件描述 硬件描述证 软件开发硬件设计接口综合 软件综合硬件综合 软硬件协同仿真验软件实现代码硬件逻辑网表证 物理设计、系统集成与实现 第二章 嵌入式处理器与SoC设计技术 67 图2-1 SoC软硬件协同设计流程 软硬件协同(Software/Hardware Co-Design)说明、协同分析、协同设计、协同模拟和协同验证, 在很大程度上可以减少硬件设计风险, 缩短嵌入式软件的开发调试时间, 另一方面,在协同验证环境中能够及时发现软硬件中所存在的致命问题, 避免在最后集成测试阶段重新进行软硬件的调整。根据系统设计方法先确定高层模型, 而后开始进行系统的软硬件划分工作, 即确定哪部分运算由软件实现, 哪部分运算由硬件实现。这一过程涉及大量的人工工作,需要有丰富的设计经验, 能够在芯片性能与代价之间做出合理的折衷。完成软硬件划分工作后, 还需要确定软硬件间的接口,设计这两者之间的通信协议。软硬件划分的结果是建立硬件规范与软件规范,硬件规范包括基本功能说明、时序、芯片面积、功耗要求等信息, 还包括与软件接口的信息, I/O口的详细描述等。当软硬件划分工作完成后, 可以建立一个硬件行为模型和软件行为模型, 用这两个模型混合模拟仿真系统的功能, 以此为出发点, 可以建立一个可靠的硬件与软件的可执行功能描述,并用来验证后续设计工作的结果。 利用逻辑面积技术使用和产能占有比例有效提高即开发和研究IP核生成及复用技术。 这是SoC的最具特色的特性,正是使用可复用IP,使得SoC的设计变得越来越简单、方便,也提高了SoC的设计效率、缩短了设计周期。使用SoC技术的电子系统设计师以丰富的IP为基础,只需设计顶层模块,具体的模块可以直接调用IP核。SoC是以IP模块为基础的设计技术,IP是SoC应用的基础。SoC的IP复用并不是简单的IP核的堆砌,有着严格的时序、功率、性能、成本等多方面的要求。因此在SoC设计的过程中,会出现各种各样意想不到的困难。特别是由于IP核的特殊性和集成电路设计的高风险性,IP的复用要经过一定的接口才能融入到SoC芯片中。 根据不同的硬件描述级和交付方式,IP核一般分为三类:软核、硬核和固核。硬核是指经过预先布局且不能由系统设计者修改的IP,通常是经过完全的布局布线、以GDSII文件的形式提供(一般的硬核都经过物理设计和特定的制造工艺的实验验证,可移植性差利于IP核的保护); 软核通常以HDL语言或者是RTL或门级网表形式提交,具有较高的灵活性,与实现工艺无关,缺乏对时序、面积和功耗的预见性,且不利用知识产权的保护;固核介于硬核和软核之间,由RTL的描述和可综合的网表组成,一般通过GUI的形式对源代码进行加密,通过参数选择进行操作。 IP核作为提供给用户的一个模块,应有良好的开发文档和参考手册,包括数据手册、用户使用指南、仿真和重用模型等。在一个SoC中,由于采用较多不同功能的IP, 如果所有的IP都自己设计, 那么, 采用未经验证的IP, SoC的系统稳定性则会大大降低;如果采用交换或买卖经过验证的IP, 系统稳定性会大幅增加。由此可见重复使用验证过的IP可以提高系统单芯片设计的成功率。SoC芯片的IP模块可以通过自行开发或者外购, 尽管这样可以保证单个IP模块的正确性, 但将这些IP集成到一个SoC芯片中, 必须解决各种IP模块的连接问题,以保证系统级的功能正确性。因此SoC芯片中必须有通用总线的支持,才能使众多的模块集成在一起。模块集成的另一个重要问题是不同层次IP的集成。来自于IP Ven-dor的模块可能处于各种状态, 比如硬核、RTL、功能模型等等。如何将这些IP集成在一起是SoC设计中首先要解决的问题。IP模块的重用不仅包括源代码的重用,还包括Testbench(测试平台)和验证环境的重用。 因此外来IP的分析与消化在SoC设计中占有相当大的分量,并不是所有的IP都可以拿来就用。这在客观上提出要有一个平台能够很灵活的把这些IP模块集成在一起,使设计者能够将更多精力集中在自己的IP设计中。 超深亚微米(UDSM)、纳米集成电路的设计理论和技术,即与底层技术的结合。 SoC是在集成电路的基础上发展起来的。没有集成电路技术就不会有片上系统。现代科技的发展,使得超深亚微米(Very Deep Sub-M集成电路,简称VDSM)技术为支撑的SoC是国际超大规模集成电路(VLSI)的发展趋势和新世纪集成电路的主流。 第二章 嵌入式处理器与SoC设计技术 68 深亚微米集成电路设计,现在比较成熟的工艺是0.18um、0.15um、0.13um、0.09um,0.045um或更先进的技术虽已诞生但还没有广泛的应用。SoC的超深亚微米集成电路设计虽然已提出了相当长的时间,但是研究的思路和方法仍然在面向逻辑的设计思路中徘徊,现在设计过程中的大部分实际问题的解决都是靠布局规划和程序修改来实行,依靠的是设计者的丰富经验,没有形成一套理论。 首先,SoC是实现复杂功能的VLSI,它的规模决定了芯片的设计不仅需要设计者具备集成电路的知识,更要具备系统的知识,也要对芯片的应用有透彻的了解。这对设计者的知识结构提出了很高的要求;在FPGA向ASIC转换时,知识结构的改进是最困难的。 其次,深亚微米工艺提出的诸多挑战至今尚未得到彻底的解决,互连延迟主导系统性能的问题随着工艺技术的不断进步将变得越来越突出。在人们彻底实现从而向逻辑的设计方法向面向互连的设计方法的转变之前,这个问题将一直存在,并长期困扰整个集成电路设计业。 第三,单个芯片要处理的信息量和信息复杂度要求芯片必须具备强大的数据处理能力,嵌入式CPU或DSP的使用将是SoC的一个重要标志。事实上,一个芯片上集成一个或多个微处理器以完成复杂的系统功能,在今天的集成电路设计中已不少见。 第四,既然采用了嵌入式的CPU或DSP,芯片自然也就具备了可编程能力。对于大多数专用集成电路,由于其功能相对比较简单、应用范围也比较窄,它们虽然采用了内嵌入CPU或者DSP,在大多数情况下还是将所需的软件固化在芯片中。但是对于未来的SoC,由于其功能非常复杂,应用时会由于各种原因使原来的设计与实现应用有些差异,需要作必要的修改或变动以适应应用环境。采取外部对其编程的方式显然是一个比较明智的作法。允许外部对芯片进行编程的另外个考虑是随着芯片规模的不断扩大,开发一个SoC不仅需要克服众多的技术难题,而且开发成本也将越来越高,有能力进行SoC设计的商家也将逐渐会议集中到那些有比较强的技术和经济实力的单位,显然如果能够提供可由用户自己进行功能配置的SoC,将大大减少应用风险,并促进SoC的推广应用。 SoC的主要设计过程和特性,用简图表示如下: { SOC系统级研 究内容 软硬件协同设与底层相结合设计重用 计技术设计技术{技术 IP与软时基基基底硬延于核Ip软于低于Ip可层件驱的软硬平功结核重协动设核台硬件耗合的系同的计构/的件系的高{的接统模高计设验划统设层建口描拟层计证分综计设算/模综述与次/重技合重计测技合验综分用术技用技试与证合术析技术技术技集技技技术术术成术术术 图2-2 SoC的主要设计过程和特性 有SoC的发展特性,可以看出SoC的推动力是有多方面的,受着个方面的制约。从技 第二章 嵌入式处理器与SoC设计技术 69 术层面上看,主要有以下几个方面: (1)微电子技术的不断创新和发展,大规模集成电路的集成度和工艺水平不断提高,已从亚微米(0.5到1微米)进入到深亚微米(小于0.5微米),和超深亚微米(小于0.25微米)。其特点为:工艺特征尺寸越来越小、芯片尺寸越来越大、单片上的晶体管数越来越多、时钟速度越来越快、电源电压越来越低、布线层数越来越多、I/O引线越来越多。这使得将包括的微处理器、存储器、DSP和各种接口集成到一块芯片中成为可能。 (2)计算机性能的大幅度提高,使很多复杂算法得以实现,为嵌入式系统辅助设计提供了物理基础。 (3)EDA(Electronic Design Automation,采用CAD 技术进行电子系统和专用集成电路设计) 综合开发工具的自动化和智能化程度不断提高,为嵌入式系统设计提供了不同用途和不同级别的一体化开发集成环境。 (4)硬件描述语言HDL(Hardware Description Language)的发展为电子系统设计提供了建立各种硬件模型的工作媒介。目前,比较流行的HDL语言包括已成为IEEE STD1076标准的VHDL、IEEE STD 1364标准的Verilog HDL和Altera公司企业标准的AHDL等。 2.1.2 SoC的结构特点 从外观上,看SoC是一个芯片,一般是面向客户定制(CSIC),或是面向特定用途的标准产品(ASSP),是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容;同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程,是一个嵌入式计算机系统。
本文档为【电路硬件设计基础】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_337177
暂无简介~
格式:doc
大小:195KB
软件:Word
页数:111
分类:
上传时间:2018-03-05
浏览量:28