音响论坛 门户 技术 音响 查看内容

浅谈数字系统设计的一般结构和基本要素

2013-11-16 10:34| 发布者: admin| 查看: 326| 评论: 0|原作者: 中国音响网|来自: 未知

摘要: 与模拟电路相比,数字电路结构简单、工作稳定,对信号精度要求不高,并在EDA 技术、半导体工艺、平版印刷、金属化和封装等技术进步的支持下,数字集成电路变得更快速、更复杂,极大推动了处理器、FPGA/CPLD、存储器等数字芯片的迅猛发展。
与模拟电路相比,数字电路结构简单、工作稳定,对信号精度要求不高,并在EDA 技术、半导体工艺、平版印刷、金属化和封装等技术进步的支持下,数字集成电路变得更快速、更复杂,极大推动了处理器、FPGA/CPLD、存储器等数字芯片的迅猛发展。在现代电路系统中,模拟的电路成分越来越少,主要集中在系统前端的接口电路中,而主体功能都依赖于高速数字电路、DSP 技术和软件算法来实现,因此电子系统的设计越来越倾向于数字系统设计。并且随着处理器技术的巨大发展及各个领域的广泛应用,现代数字系统与嵌入式系统的界限越来越模糊,在很多场合,一个数字系统往往也是一个嵌入式系统。 

1 数字系统的一般设计模式

以大规模集成电路和计算机技术的发展为依托,现代电子系统的软硬件设计越来越趋于标准化。80/20% 这个规律是适用的,即在一个特定的应用系统中,有超过80% 的技术是通用的,一般化的技术,只有不到20% 的内容是针对具体应用设计的。越是大型的系统,通用化和标准化的概念越强烈,这有利于技术积累和社会分工合作,并使新产品从立项、研发到投放市场的速度越来越快。



图1 是现代电子系统的一般体系结构。在和应用场合都可以套用这种结构,并针对具体应用进行部分设计的调整和裁剪。在这个一般化的结构里包括处理器、存储器、总线系统、硬件加速器、通信和IO 模块构成。

在这个模型中,以处理器为核心,以总线为信号和数据交换的通道配合通信总线和接口电路形成一个完整并且灵活的电子系统,通过调整响应的接口电路和处理器软件就可以适应不同的应用需求。 [pagebreak]

2 数字系统的硬件组成

(1)微处理器微处理器(MPU)凭借其强大的控制功能、通用性、丰富的外设集成、成本优势和应用便利性,广泛地用于消费类电子、通信、汽车、工业等领域大部分数字系统设计中,处理器是系统的核心器件,它完成各种过程控制,信号处理算法等主体功能。当然有些系统非常简单到不需要处理器;另外有些FPGA 厂商的SOC 解决方案里,FPGA 作为系统核心芯片,但是内部集成硬核或软核的处理器。
决定处理器性能因素主要由三个方面的因素构成,位宽、主频和体系结构:位宽一般指处理器一次所能处理的二进制的位数;主频一般指处理器内核的工作频率;对于体系结构的定义和描述则相对复杂一些。
处理器的位宽越宽,处理一个数据所消耗的处理器周期越短;主频越高,单位时间完成的运算次数越多。因此位宽和主频对性能的影响是非常浅显的。
处理的体结构有多个衡量的角度,比如从指令集的角度来讲可分为精简指令集(RISC) 和复杂指令集(CISC);从总线结构来讲可分为冯•诺依曼结构和哈弗结构;从计算的并行能力来讲可以过分为标量处理器和超标量处理器;从机器周期来讲可以分为流水线结构和非流水线结构,等等。下面以BLACKfin 为例,来说明在使用一款处理器的时候如何来认识它。



图2 是ADI 公司BLACKfin 系类聚式处理器内核,它的汇聚功能指的是该处理器的指令集即支持强大的系统控制功能,同时也具备卓越地DSP 计算能力,这是ADI 公司和Intel 公司联合开发的新一代处理器。认识一个处理器仍然是从以下几个方面入手:计算核心、总线结构、寻址系统和指令系统译码。
从计算核心来看,它拥有,有两个16 位的定点乘法器、两个40 位ALU、两个40 位的筒型一位寄存器。另外为了提高视频处理能力,内部还集成了4 个8 位视频ALU。这些计算单元都可以在同一个处理器周期内并行工作,因此它是一款超标量的处理器。适合大规模数据实时处理的DSP 计算。
从总线结构来看,有独立的程序总线和数据总线,也就是在同一机器周期可以同时获得数据和指令,是典型的哈弗总线结构。并且它支持多种总线位宽的寻址,这非常适合控制领域处理不同类型数据的应用。
从寻址系统来看他具有两个寻址单元DAG0 和DAG1,在正常模式下,一个寻址单元给出程序地址,一个单元给出数据地址;在需要高性能计算的场合,两个寻址单元可以同时给出数据地址,程序由指令译码系统内部的高速缓冲指令寄存器LOOPBUFER 给出,该功能是为了配合高速的DSP 乘加计算而设计的。
了解这些结构在整体设计层面以及具体算法的优化设计层面都是非常有意义的。通过处理器的结构信息,有利与衡量处理的处理能力、开发成本,在性能要求严格的场合,软件设计必须配合处理器结构设计,以达到充分调动硬件资源的目的。

(2)存储器在一个系统中,存储器是用来存储程序和数据的,现代的电子系统一般会有相对复杂存储器结构,从它们与处理器的关系来看可以大体分为三类:
第一类是集成在处理器内部的高速缓冲存储器或者叫片内存储器。在一个小型系统中,片内存储器就可以构成整个系统的存储器系统为程序和数据提供存储器空间。但是在较复杂的应用中,程序和数据对空间的要求都比较大,片内存储器是远远不过的,但是因为片内存储器可以工作内核时钟频率上进行高速存取,所以一般作为系统的高速缓存使用,比如在图1 中所描述的处理器内部OnChipCache 。
第二类存储器是位于处理器外部的高速存储器,为大量的程序代码和数据提供驻留和访问空间,比如计算机系统中的内存条。从当前的技术角度来讲,这类存储器一般包括静态存储器(包括RAM/SRAM 等等)和动态存储器(DRAMSDRAM 、以及DDR SDRAM 等等)。静态存储器存取方式简单,但是电路结构复杂,相对动态存储器来讲不易提高集成度,并且功耗较高,因此静态存储器作为高速片外存储器的设计越来越少。动态存储器利用电容结构的充放电来处处数据,因此结构简单,集成度高,在计算机系统及嵌入式系统设计中的应用越来越广泛。但是动态存储器的电容结构存在着放电的问题,为了保持数据,需要对存储单元进行定期的刷新操作,因此控制起来比较复杂。在早期的设计中为了平衡成本和功耗,外部存储器也会考虑使用ROM 作为程序和固定参数的存储器,而使用静态随机存储器或片内存储器作为数据存储器,比如Thales 公司TSW2500 性发射机控制系统的SCS01 板就是这样一种结构。
第三类是非易失存储器,非易失存储器处于总线速率的最低端,他们一般采用异步并行总线或串行总线,包括EPROM、EEPROM、FLASH 等等,由于这类存储期访问速度不高,并且都存在擦鞋寿命的问题,因此一般使用非易失存储器存放程序的镜像文件和系统参数。系统上电后,处理器通过DMA 的方式加载非易失存储器中的Bootloader (启动加载程序)或者直接在非易失存储器中运行Bootloader ,该程序将操作系统和应用程序拷贝到片内核片外高速存储中,之后系统就可以在高速存储器中运行了。
对于一个复杂的系统的稳定性来讲,往往对存储器资源的管理比应用程序和算法更为关键和重要,系统的不稳定因素和安全问题往往来自对存储器空间错误和非法的访问。在计算机技术发展的过程中,很多技术是针对内存管理的,比如高级语言的变量定义的机制就是将部分内存管理的管理功能交给编译器去处理;操作系统中进程的核心概念之一也是如何来管理和分配存储器资源;还有处理器的MMU 单元为存储器的安全使用提供硬件机制。这些技术将开发人员从大量的内存管理的基础性工作中解放出,来而更专注于解决应用上的问题。 [pagebreak]

(3)总线系统和总线桥
总线(Bus )是系统各种功能部件之间传送信息的公共通信干线。总线的使用对于降低系统成本,提高系统的灵活性和可扩展性有着重要的意义。它通过一定的控制信息将处理器的数据和控制吞吐性能按照需求分配给不同的外部设备,从而降低系统的链接的复杂度;并且根据业务的不同和业务的升级的需要,可以灵活地在总线系统上扩展不同功能的外部功能模块。总线可以分为以下三种类型:
1)片级总线:或者叫前端总线,它是系统带宽最高的总线,是处理器直接与其他高速设备交互信息的通道。比如在计算机系统中,处理器的前端总线是处理器与北桥链接的总线,通过它可以高速访问内存和显卡等高速设备。在嵌入式处理中,片级总线根据处理器的规模,可以任为是集成在芯片内部,直接与内部高速存储器或缓存相连;也可以是片外的总线直接连接SDRAM 或者DDR SDRAM。
2)板级总线:或者叫系统总线,他一般通过总桥链接到前端总线,供系统扩展板卡或者IO 模块使用,常见的有ISA 总线、PCI 总线、SPI,IIC,RapidIO 等等。
3)外部总线:外部总一般是不同系统之间的通信总线,比如RS232、USB、CAN、以太网等等,他们为系统间的通信提供链接服务。
总线桥是沟通低速设备和高速设备的桥梁,多个低速设备通过总线桥,按照一定的优先等级以时分复用的方式共享处理器高速总线的带宽。在嵌入式处理器系统中,为了降低成本、减小体积和功耗,处理器使用内部的DMA 模块本质上也具有总线桥的功能,它将处理器的内部总线带宽分配给不同的存储和或者片内外设,下面以ADI 公司的ADSP-BF51X 系列处理器来说明这一点。

下面以ADI 公司的ADSP-BF51X 系列处理器来说明这一点。



该处理器内部包含两块由双口RAM 构成的高速缓存,RAM 的一端与BLACKfin 内核连接,另一个端口与外部总线控制器和DAM 控制器连接。DMA 控制可以将处理器的内核周期从大量的数据访问中解放出来,将外部数据直接写入内部高速存储器或者将处理结果从内部高速存储器搬移到外设或外部存储器中去。处理器内部集成多种总线系统,其中包括板级总线SPI、SPORT 、RSI、PPI、TWI;系统级的总线UART 和EMAC。这些总线接口有着不同的通信带宽,即使是工作在中断模式下,每接收一个数据单元处理器都要进行上下文切换,这是非常浪费处理器周期。利用DMA 控制器,可以降低内核上下文切换和外部低速设备的访问频率,并且在大多数情况下也能满足系统实时性的要求,从而可以大大提高内核计算资源的利用率。

(4)可编程器件:
当前使用的可编程器件主要包括CPLD(Complex Programmable Logic Device ,复杂可编程逻辑器件)和 FPGA(Field-Programmable Gate Array ,即现场可编程门阵列),它们是从PAL 和GAL 器件发展出来的,相对而言规模大,结构复杂,属于大规模集成电路范围。CPLD/FPGA 是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,解决了定制电路在实际应用中不够灵活的问题。
这些可编程器件使用硬件描述语言(Verilog 或 VHDL)完成的电路设计,经过综合与布局,通过JTAG 接口快速的烧录至 FPGA 或CPLD 上进行测试,是现代 IC 设计验证的技术主流。
硬件描述语言对可编程器件内部结构描述可分为基本的三个等级:算法级、RTL 级和门级。算法级具有较高的代码编写效率,但一般是不可综合的,因此算法级描述一般用于实现系统的快速建模和仿真。RTL 级是寄存器传输级,这是常用的描述方法,RTL 级描述可以直接反应电路结构特点,是可综合的。门级是以门电路为描述单元,可综合性高,但是效率低下,一般对小型设计可适合。
CPLD 和FPGA 同属可编程器件,但是应用的方向是有区别的。CPLD 集成度相对较低,但是系统上电后就可工作,不需要加载配置文件和初始化,因此在系统中主要完成粘合逻辑、电平匹配、上电管理、设计加密等功能。FPGA 内部集成度高,但是上电后需要进行配置文件的加载和初始化工作,因此它适合实现高性能的并行计算,复杂的总线协议转换等功能。
随着FPGA 在SOC 领域的发展,一些高端的FPGA 更倾向于集成处理器核,比如Xilinx 公司的Virtex6 及以上的版本系列 FPGA 内部集成了IBM PowerPC®440 和 405 处理器硬
核,用于实现高性能嵌入式应用。ALTERAL 公司的FPGA 向用户提供给了NOIS 处理器的IPCORE,但由于是软核,内核时钟不能太高。
可编程器件发展速度越来越快,在电子系统中发挥的作用也越来越重要,并且与处理器技术、软件技术相互融合,及能满足高度灵活性的要求,也能通过并行资源设计出高性能的计算能力,相信这种技术会越来越有应用前景。

(5)电源、时钟和复位电路电源、时钟和复位电路是基础性电路设计,不论是在原理图设计阶段还是在PCB 布局布线阶段都需要进行良好地规划和设计。
整个数字系统都是在时钟的驱动下运行的,小到计数器、寄存器这样时序电路,大到一个复杂的处理或者FPGA 设计,都需要时钟系统保证各个处理环节有序地进行。复位电路一般使用一个瞬间(一般是毫秒的时间)的高电平或低电平脉冲使数字系统初始化到一个合适的内部初始状态,它提高了系统的运行的确定性和稳定性。
在数字集成电路集成度越来越高的情况下,为了平衡系统的性能、功耗和速度,一般都要求电路板提供复杂的电源系统。在一个数字系统中,虽然是以数字电路为主,但是仍然会需要一定的模拟电路。并且为了较小数字开关噪声对模拟电路的影响,会将数字电路和模拟点路分开供电,为数字电路供电的电源系统叫数字电源,为模拟电路供电的电源系统叫模拟电源。
数字电源可以分为内核电源和IO 电源。为了满足接收器噪声门限的要求,IO 电源电平标准一般比内电源高,主要采用5V 和3.3V 供电。同时为了降低芯片内部逻辑器件的翻转速度和降低功耗,内核电源一般使用3.3V 及以下的电平标准,常用的有3.3V 、1.8V 和1.2V。
数字电路在处理强度上具有突发性,这可能带来集成电路的功耗的突变,为了适应这种功耗突变,数字系统电源必须具有较强的瞬间带载能力,以满足电路对瞬间大电流的需求,因此数字电路电源一般采用高效率大电流的开关电源。
数字系统中的一些接口性的模拟电路和混合电路,比如信号放大器,变频器,AD 转换器、DA 转换器等等,这些电路对噪声非常敏感,需要选用纹波和噪声新能良好的线性电源。模拟器件的电源系统有以下几个常用的标准±15V 、±12V 和5V 单电源供电系统,在一些FPGA 和处理中,也会使用2.5V 模拟电源为内部的PLL(锁相环)提供模拟电源。
数字电源和模拟电源在电路设计上是分开的,是在进行PCB 布局、布线时也要分区设计,以阻断开关噪声的耦合途径,提高模拟电路的信噪比和精确度。 [pagebreak]

3 编程语言

处理器已经成为现代电子系统的核心器件,他们灵灵活而强大的功能一方面来自于处理器的内部结构和电路速度,另一方面来自复杂的软件系统,而编程语言是软件系统的描述工具。在一个嵌入式应用中,最常用的有下几种编程语言:汇编语言、C 语言、C++语言和JAVA 语言。
汇编语言又称作(机器码)助记符,因此它和机器码的关系密切,是直接操作处理器内部电路的,可以根据不同的处理器结构,最大效率的利用处理器的内部资源,所以被认为是编程效率最高的语言。汇编语言对编程人员的知识和技能也提出了非常高的要求,汇编语言的程序员不仅要熟悉处理器的内部结构,还要精通算法和应用,只有这样才能编出有针对性的高效代码结构。一个大型系统,不论是在编程效率反面还是带稳定性方面来讲,都不适合单独使用汇编语言来实现,它一般不超总体代码量的20% 。汇编语言主要应用在底层设计中,比在MPU 系统中使用汇编语言编写任务调度程序,以降低处理器在多任务环境下上下文切换的代价;在DSP 系统中,基本FIR、IIR、FFT 等这些需要高性能计算的场合,也适合使用汇编语言来充分利用处理器的内部资源的并行处理资源,提高计算速度。因为每种处理器平台都有适合自己硬件资源特点的指令集,汇编语言在不同的处理器平台的上一般是不可以移植的,
C 语言被认为是一种通用语言,从Intel 公司最高端的多核处理器到8 位的8051 都可以使用C 语言作为编程语言。C 语言已经可以很好地将程序的实现功能和处理器内部结构分离开,编程人员可以将注意力集中在软件功能上,而不是对处理的管理上。C 语言就有良好的可移植性,大多数处理器厂商的编译环境都支持C 语言的标准语法格式和函数库。在开发阶段如果注意一些可移植性的规则,那么大部分C 代码都可以通过重新编译而在新的平台上正常运行。一般认为使用C 语言编写的代码比使用汇编语言编写的代码在实际运行时性能只下降20% 左右。
C++ 语言是在是在C 语言基础上发展起来的面向对象的编程语言。面向对象是客观世界的一种计算机语言方式的描述,它进一步减小了现实的需求与计算机实现的之间的距离,成为现代软件工程的主流和核心模型。大多数的32 为处理器上都支持C++语言,它使系统的设计更容易模块化和解耦,是代码的可读性和可维护性进一步提高,同时它的执行效率也更低。
JAVA 语言也是一种面向对象的语言,但它是一种跨平台的语言,使用JAVA 语言编写的代码经过编译以后可在任何一个安装了JAVA 虚拟机的平台上运行。由于虚拟机也需占用一定的处理器资源,因此为了获得在移动平台上良好的性能,有些处理器内部继承了JAVA 加速器,将字节码转换为该平台的机器码,进而提高执行效率。
编程语言是相通的,学会一种编程语言,很快就能学会另一种编程语言,使用语言是为了表达设计思想,同时语言本身也承载这设计思想,从面向机器、面向过程到面向对象等等,这些设计思想的演化,编程语言也从机器码、汇编、C 演化到C++、JAVA 等。

4 总结

本文介绍了现代架构的基本模型,但是并没有针对任何具体应用,在任何具体的应用中,只是对这些基本要素进行不同组织形式,努力做好基础性结构的考虑和设计,是获得一个良好的具体应用前提条件。当然在针对不同应用类型的产品开发过程中永远在追求时间、成本、质量这些衡量因素上的平衡;但是这种平衡并不意味着是一成不变的,哪怕是面对同一应用领域,这种平衡的努力也都是遵循着“波浪式前进和螺旋式上升”的规律。随着基础知识、基本技能和实践经验的积累,在每一个具体的、新的研发周期里,这种平衡也会拔到一个新的高度,这就是技术的进步。
发表评论

微信扫码关注公众号