摘要:本文介绍了可编程系统芯片PSoC的设计构架,包括PSoC的内核、数字模块、模拟模块的组成和构造,以及使用PSoC混合信号阵列中的模块可以构造的用户模块和功能模块。最后介绍了"动态重构"的概念。
引言
到目前为止,有三种技术对电子工程师设计电子产品的模式产生了重大而又深远的影响,它们是:可编程微控制器(MCU),可编程逻辑阵列和可编程模拟阵列。与采用多个分立元件及单一功能的模拟与数字集成电路组成的电子系统相比,采用可编程技术和包含可编程芯片在内的电子系统将具有更简单的结构、更强的性能和更低的成本。而采用可编程技术也使电子工程师的智慧和想象力得到了更大的发挥,设计出来的产品智能化程度更高。
MCU自问世以来就受到电子开发工程师的青睐。由于它的可编程能力和可程序控制性能使得MCU得到广泛使用。然而,不同的用户根据不同的项目要求希望MCU能包含比以前更多的周边资源来进一步降低系统成本。事实上,现今的MCU厂商大都能提供多种系列多个型号的MCU供用户选择。因为指令系统和硬件结构的不兼容,设计工程师花在选型上的时间已经占据整个开发时间的相当的比例。现在MCU的发展趋势是系统在片芯片(System
on Chip,SoC),它是将微处理器核和所有的周边设备包括TIMER、PWM、ADC、DAC、UART、SPI、I2C、CAN、E2PROM、USB等等全部集成在一个芯片里,力图能满足所有设计工程师的需要。
可编程逻辑阵列可以整合系统设计过程中大量的逻辑运算功能,提高系统的可靠性。它已经历了门阵列(GAL)、可编程逻辑器件(PLD)、复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)四个发展阶段。由于它具有高速度,高集成,高性能,并且可用VHDL和Verilog程序编程,因而得到了越来越多的应用。
可编程模拟阵列(FPAA)由多个可编程模拟模块组成,可编程模拟模块采用开关电容、运算放大器和多路开关有机组合并通过时钟信号的作用,可以实现模拟信号的放大、比较、多种有源滤波和AD转换等诸多模拟功能。目前制造现场可编程模拟阵列的公司有Anadigm和莱迪思(Lattice)等。虽然由于价格的原因FPAA还没有被广泛使用,但FPAA包含多个可编程模拟模块,可以集多种模拟功能于一体,省略了许多外围的无源元件和PCB的面积,对模拟工程师仍然具有一定的吸引力。
赛普拉斯半导体基于微处理器的PSoC,不仅具有MCU的可编程能力,还包含了部分可编程逻辑运算功能,同时也提供了可编程模拟阵列,集三种可编程能力与一体。其中的周边数字功能(如TIMER、COUNTER、PWM、UART、SPI)由与可编程模拟阵列相对应的可编程数字阵列提供。通过对寄存器的配置或控制,三者之间可以相互作用,协调工作,是真正的可编程系统级芯片。
PSoC的功能框图
PSoC主要由PSoC核、数字阵列、模拟阵列和附加的系统资源所组成。其中PSoC的核就是称之为M8C的8位微处理器,以及相应的Flash存储器、SRAM、SROM和两个数字时钟源。而数字阵列则包含至少一排(4个)的数字模块,模拟阵列则包含至少一列(3个)的模拟模块,附加的系统资源主要有数字时钟、乘加器、抽样滤波器、I2C、系统复位(包括POR和LVD)、开关泵、内部电压参考和IO模拟输入多路器。虽然PSoC
的核心是一个8 位微处理器,但因为数字阵列中的数字模块和模拟阵列中模拟模块的通用性和可配置性,所以PSoC不仅可以处理数字信号而且可以处理模拟信号,它又被称作是一个具有嵌入式微控制器内核的混合信号阵列。
图1 PSoC的功能框图(略)
在PSoC的数字阵列和模拟阵列中,一个模块或几个模块可以被配置成一个用户模块,用户模块的主要任务就是向设计师提供几组能够由其进行配置和互连的通用积木式部件,以便执行多种功能。对于大多数设计师来说,复合可编程逻辑器件(CPLD)的“宏单元”是他们所熟悉的对用户模块最为贴近的类比。每个单元(同样,每个用户模块)都是根据核心功能来构筑的,当对其进行配置时,就会产生定制功能或板载外围元件的最终结果。例如,用一个数字模块可以配置一个8位的定时器或一个8位的PWM;用两个数字模块可以配置一个16位的PWM或一个UART,用一个模拟模块可以配置一个放大器或一个比较器,用两个模拟模块可以配置一个低通滤波器或一个带通滤波器;用一个数字模块和一个模拟模块可以配置一个⊿-∑ADC。PSoC的集成开发环境已经提供了几十种常用的用户模块供用户选择。这些数字和模拟单元也可由设计师自己配置,构造用户自己独一无二的用户模块。
PSoC的内核采用哈佛(Harvard)架构,在24MHz 的频率下具有高达4MIPS 的操作性能,并可以满足苛刻的USB 睡眠功耗规范要求。该器件具有一个具有全面可编程性的内部CPU
时钟,甚至在正常操作期间也可对其加以改变。它有2-32K的FLASHC程序存储空间,128-2K的RAM,这意味着PSoC 能够实现一个全混合信号设计,而无需任何的外部元件。PSoC
的CPU 内核允许对所有由用户模块配置组成的特殊功能寄存器进行存取操作。在这种场合,该内核还支持一种名为“动态重构”的概念。这一非常强大的能力使得PSoC
能够在硬件的控制之下对其所有的用户模块进行全面重构,并由此获得一个全新的“个性”和功能。该能力使得PSoC的资源得到更充分的利用,120%的资源利用率在PSoC已经成为可能。
PSoC的数字模块
数字阵列由一个或几个数字排组成,而一个数字排包含四个数字模块。这四个数字模块包括两个基本的数字模块(DBB)和两个通信的数字模块(DCB)。每一个数字模块都可以被构造成为一个独立的数字功能块。其中的数字功能包括:定时器、计数器、PWM、伪随机码发生器(PRS)和CRC校验。几个数字模块组合起来可以组成一个位数超过8位的数字功能块。如,三个数字模块可以构造成为一个24位的PWM。通信的数字模块可以构造主或从的SPI和全双工的UART。每一个数字模块的输入和输出都可以通过排输入总线或排输出总线或排广播总线与其他数字模块相连。每一个数字模块的输入和输出也可以经由排的输入和输出总线到全局的输入和输出总线(奇的或偶的)与任一通用的I/O口相连。排输出总线中相邻的两根线可以实施任何一种硬件逻辑运算(可编程逻辑功能)。数字模块的输出也可以作为模拟SC模块的时钟同步信号提供给模拟模块,见图2。
图2 PSoC的数字阵列、模拟阵列及其相关的总线和路由(略)
数字模块由数据通道、输入多路器、输出多路器、构造寄存器和相应的数据链路所组成,其框图见图3。每一个数字模块都有7个寄存器来控制和决定它的功能和状态。功能寄存器主要用于选择这个模块将要实施的功能;输入寄存器主要用于选择模块所采用的时钟源和数据源。输出寄存器主要用于选择模块的输出通路和输出方式。数据通道包含三个数据寄存器(DR0、DR1、DR2)和一个控制寄存器,作为不同的功能块,这些寄存器的作用也是不一样的。当一个数字模块被作为定时器、计数器和PWM时,DR0、DR1和DR2被分别作为周期寄存器,向下计数器和比较寄存器;而一个数字模块被作为PRS和CRC时,DR0、DR1和DR2被分别作为多项式寄存器,移位寄存器和种子寄存器;当一个数字模块被作为SPI和UART时,DR0、DR1和DR2被分别作为输入缓冲器,移位寄存器周和输出缓冲器。另外每一个数字模块都有一个中断屏蔽位来确定这个模块是允许还是禁止中断。每一个数字模块都有一个对应的中断向量和相应的中断服务程序。
图3 PSoC的数字模块(略)
由于数字模块的可构造性和可组合性,PSoC的数字模块还可以实现其他的数字功能,如数字缓冲器、数字反向器、红外接受器和红外发射器等等。
PSoC的模拟模块
PSoC的模拟阵列被设计成按列来排列。不同型号的PSoC,它的列数目是不一样的。一般它的数目是1、2或4列。每一列有3个模拟模块。每一列的第一个模块被称为连续时间的模拟模块(ACT),而第二和第三个模块被称为开关电容模拟模块(ASC)。每一列都有一个输入时钟多路选择器,可以选择的时钟信号可以是系统的时钟,也可以是来自数字模块的时钟信号,它主要用于开关电容模拟模块,它的频率大小可以大致确定输入到开关电容模拟模块的模拟信号的频宽。每一列也都有一个模拟总线和一个比较总线,模拟总线可以将模拟模块输出的模拟信号路由到这一列其他模拟模块,也可以经缓冲器输出到I/O口。比较总线可以连接到作为比较功能的模拟模块的输出,比较总线经模拟LUT(带缓冲的逻辑运算器)可以被路由到任一个数字模块,LUT上信号的跳变也可以产生中断,触发中断服务程序。通过模拟LUT,相邻两列比较总线也可以实施任何一种硬件逻辑运算(可编程逻辑功能)。
图4 PSoC的连续时间的模拟模块(略)
连续时间的模拟模块以一个轨之轨、低漂移、低噪声的运算放大器为核心,见图4,在其外围集成了多个由寄存器控制的多路选择器和电阻网络。通过多路选择器可以选择运放某一个输入端的基准电压,和另一个输入端的模拟信号路由,结合多路选择器和电阻网络可以选择运放的放大倍数或比较器的阀值电压。这一个模拟模块最基本的功能是用作可编程放大器或可编程模拟比较器,也可用作过零检测或下一级模拟输入的预处理。与其他模拟模块组合可以实施更为复杂的模拟功能,如仪表放大器,信号的调制和解调等等。这个模块还包含一个低功耗的模拟比较器,它和运放有相同的输入和输出,它用于在SLEEP方式时,虽然运放已经停止工作,外部事件仍然可以通过这个比较器来产生中断唤醒PSoC。
这个模块的输出有三个出口,分别可以输出到模拟总线(ABUS)、比较总线(CBUS)和本地输出(OUT、GOUT、LOUT),本地输出主要是用于和邻近的模拟模块相连。
图5 PSoC的C型开关电容模拟模块(略)
图6 PSoC的D型开关电容模拟模块(略)
开关电容模拟模块又有C型的开关电容模块(图5)和D型的开关电容模块(图6)两种类型。这两种类型在每一模拟列各有一个。开关电容模拟模块以一个轨之轨、低漂移、低噪声的运算放大器为核心,在其外围集成了多个由寄存器控制的多路选择器和四个(D型三个)可由用户设定的开关电容网络。多路选择器用于选择模拟输入的参考电压和模拟输入信号的路由以及信号和开关电容的拓扑形式。四个电容网络中的三个Acap、Bcap和CCap位于运放的输入端被称为输入开关电容网络,而另一个电容网络FCap则被称为反馈开关电容网络。输入开关电容网络中输入电容的设定范围从0到31个电容单位(每个电容单位大约为0.05pF),反馈开关电容仅可设定16和32电容单位。另外每一个模拟列都有一个分频器将列时钟信号4分频产生
1和 2来控制模块里的十多个模拟开关,使它们同步协调工作,实现诸多的模拟功能。这个模块的输出也有三个出口,分别可以输出到模拟总线(ABUS)、比较总线(CBUS)和本地输出(OUT),本地输出主要是用于和邻近的模拟模块相连。
D型的开关电容模块和C型的开关电容模块的区别在于D型没有CCap输入开关电容网络,但是它的BCap输入开关电容网络较C型有更大的灵活性。
基于开关电容理论的开关电容模块可以实现放大、比较、积分、微分、AD等基本的模拟功能。而几个开关电容模块的组合、开关电容模块与连续时间的模拟模块的组合或模拟模块与数字模块的组合,使得PSoC对模拟和数字以及模数混合信号的处理能力变得非常强大。例如,在PSoC的集成开发环境Designer里已经可以提供的ADC用户模块的数量有数十个,ADC分辨率从6位到14位,转换速度从几个sps到50ksps,ADC的种类有SAR、增量型和⊿-∑ADC。同样,Designer也可以提供滤波器用户模块,包括二阶和四阶的波特瓦尔兹、契比雪夫、贝塞尔滤波器,有低通、带通和带阻滤波器。模拟模块已经可以实现的功能还包括DAC、采样保持、调制解调、正弦波发生器和检测器、DTMF发生器、FSK调制、边带分离等等。
PSoC功能模块的构造
PSoC功能模块的构造是通过配置相应的寄存器来实现的。一个数字块有7个寄存器,而一个模拟块有4个寄存器用来构造模块的功能、输入信号的选择、输出信号的路由并提供模块的状态信息。另外还有许多寄存器用于对全局的系统资源、模块的周边设备、多功能IO口的配置。全局的系统资源包括时钟系统、电源管理系统、中断及其使能、模拟参考电压等等;模块的周边设备包括排的输入和输出总线、全局的输入和输出数字总线、模拟的输入多路选择器、模拟总线、比较总线、数字和模拟的LUT等。有两种方式可以产生用户所希望的功能模块:常用的功能模块可以从PSoC的集成开发环境Designer所提供的用户模块集中选择,只要进行简单的参数设置即可实现。模块的调用,参数的修改,数据的采集可以直接调用Designer所提供的相应模块的API函数;常用的功能模块,用户可以自行直接设置模块寄存器的值、时钟信号的频率和输入输出的路由,生成用户自己独特的用户模块。
所谓“动态重构”的概念,是指用户希望在不同的时候使用同一个或多个模块实施不同的功能,可以在开始构造模块时对同一个或多个模块实施双重或多重构造,程序在运行时首先使用初始构造,在运行过程中需要使用二重或其他构造时,可以先卸载正在使用的构造,随后装载欲使用的构造,并可反复多次来回重复使用。PSoC支持动态重构,使得PSoC的模拟和数字模块具有一块两用和一块多用的能力。较其他MCU、PSoC具有更高的资源利用率和资源分配的灵活性,系统的成本也更低。
|