APP下载

ADC中高精度转换序列发生器的设计

2013-12-05徐新宇薛海卫

电子与封装 2013年5期
关键词:序列化级联寄存器

万 清,徐新宇,薛海卫,王 澧

(中国电子科技集团公司第58研究所,江苏 无锡 214035)

1 引言

在信号处理过程中,自然界的模拟信号首先要经过A/D转换器(ADC)变换成数字信号,送到DSP中,所得的数字信号结果由D/A转换器送出。流水线模数转换器(ADC)是一种常用模数转换结构,其转换速率较高,消耗的芯片面积和功耗却较低,常嵌入在DSP中,用于无线通信、CCD图像数据处理、超声监测等高速应用领域[1~5]。本文设计了一种高精度的转换序列发生器,能分别单独处理8位数据,并行后能处理16位数据。将此转换序列发生器用于一款高性能DSP中,提高了DSP的精度。

2 ADC的结构分析

此ADC模块共有16个通道,可配置为两个独立的8通道模块,以便为事件管理器A和B(EVA和EVB)服务。这两个独立的8通道模块也可以级联组成一个16通道模块来使用。虽然有多个输入通道和两个序列发生器,但是在ADC模块中仅有一个转换器。图1为DSP中ADC模块的框图。ADC模块的功能主要有:(1)内建两个采样保持电路(S/H)的12位ADC核心;(2)6个输入通道,多路选择输入;(3)自动序列化能力,在一次转换任务中,能提供多达16个自动转换,并且每个转换可以通过编程选择16个输入通道中的任何一个;(4)序列发生器可以配置成两个独立的8状态序列发生器或一个16状态序列发生器(即两个8状态序列发生器级联);(5)16个结果寄存器(可独立寻址)用来保存转换结果;(6)灵活的中断控制机制,允许中断请求出现在每一个或每隔一个转换序列结束(EOS)时;(7)序列发生器可以工作在“启动/停止”模式,允许多个“时间序列”触发以使转换同步;(8)采样保持电路的采集时间可以单独预分频控制。

图1 DSP中ADC模块框图

两个8通道模块具有自动序列化一系列转换的能力。通过模拟多通道选择器,每个模块都可以选择可用的8个通道中的任何一个通道。在级联模式下,自动序列发生器可以作为一个单一的16通道序列发生器来使用。在每个序列发生器上,一旦转换结束,已选择通道的转换结果就被保存在各个通道相应的结果寄存器(ADCRESULT)中。自动序列化的功能允许系统对同一个通道转换多次,允许用户使用过采样算法。相比传统的单次采样转换,这将提高转换结果的精度。

3 自动转换序列发生器的设计

ADC的序列发生器由两个独立的8状态序列发生器(SEQ1和SEQ2)组成,它们可以级联组成一个16状态的序列发生器(SEQ)。“状态”一词表示序列发生器完成的自动转换数。单序列(16状态,级联)和双序列模式(8状态,分立)分别如图2和图3所示。

图2 级联模式下ADC自动序列化框图

图3 双序列模式下ADC自动序列化框图

在以上两种工作方式下,ADC都可以对一系列的转换进行自动排序。这意味着ADC每收到一个启动转换请求,模块可以自动执行多次转换。对于每一次转换,可以通过模拟多路开关选择16个可用输入通道中的任何一个。转换结束后,所选通道的转换结果被保存在相应的结果寄存器(ADCRESULT)中(如第一个转换结果保存在ADCRESULT0中,第二个转换结果保存在ADCRESULT1中等)。也可以对同一个通道采样多次,允许用户使用“过采样”,其较传统的单次采样转换结果提供了更高的精度。

在双序列发生器模式下,进行序列采样时,来自“非当前”序列发生器的启动转换(SOC)请求将在当前激活的序列发生器的序列初始化完成后自动执行。例如当一个来自SEQ1的SOC请求到来时,ADC正忙于应付SEQ2,则ADC将在完成SEQ2请求的工作后立即启动SEQ1。如果SEQ1和SEQ2同时发出SOC请求,则SEQ1的SOC请求具有高的优先级。例如当ADC正忙于应付SEQ1,在这个过程中又产生了来自SEQ1和SEQ2的SOC请求,则当完成SEQ1的当前转换序列后,来自SEQ1的SOC请求将被立即执行,SEQ2的SOC请求将保持待决。

DSP中仅有一个ADC,在双序列模式下ADC由两个序列发生器共享。序列发生器工作在双8状态和16状态模式时基本相同,它们的细微差别如表1所示。

表1 单一模式和级联模式的比较

每次序列转换所选择的模拟输入通道是由ADC输入通道选择序列控制寄存器(ADCCHSELSEQn)中的CONVnn位域来定义的。CONVnn有4位长度,可用来指定16个通道中的任何一个进行转换。当使用级联方式的序列发生器时,最大可以实现16次转换,因此有16个这样的4位域(CONV00~15)可用,它们分布于4个16位寄存器(ADCCHSEL SEQ1~ADCCHSEL SEQ4)。CONVnn的值可以为0~15中的任何值。模拟通道可以设定为任何想要的顺序,且同一个通道可以选择多次。

ADC还能工作于并发采样模式或序列采样模式。对于每个转换(或并发采样模式下的一对转换),当前CONVnn位域定义了将被采样和转换的引脚(或一对引脚)。在序列采样模式下,CONVnn的4位全部用来定义输入引脚,其中最高位MSB定义了与输入引脚相连接的采样-保持缓冲器,低三位定义了偏移量。例如,如果CONVnn的值为0101b,则选择的输入引脚为ADCINA5。如果CONVnn的值为1101b,则选择的输入引脚为ADCINB5。在并发采样模式下,CONVnn寄存器的最高位MSB被舍弃,采样-保持缓冲器采样由CONVnn寄存器的第三位所定义的偏移量的输入引脚。例如,如果CONVnn寄存器的值为0110b,则采样保持器A(S/H-A)对ADCINA6进行采样,采样保持器B(S/H-B)对ADCINB6进行采样。如果CONVnn寄存器的值为1001b,采样保持器A(S/H-A)对ADCINA1进行采样,采样保持器B(S/H-B)对ADCINB1进行采样,且采样保持器A(S/H-A)中的电压值首先被转换,然后转换采样保持器B(S/H-B)中的电压值。采样保持器A(S/H-A)的转换结果存放在当前ADCRESULTn寄存器(SEQ1的ADCRESULT0,假定序列发生器已经复位)中,采样保持器B(S/H-B)的转换结果存放在下一个ADCRESULTn(SEQ1的ADCRESULT1,假定序列发生器已经复位)中,然后结果寄存器指针加2(指向SEQ1的ADCRESULT2,假定序列发生器初始时已经复位)。

图4显示了序列采样模式下(Sequential Sampling Mode)的时序。在本例中,ACQ_PS[3∶0]位被置为0 0 0 1 b。其中A D C通道地址存储在[CONVnn]的4位寄存器中;CONV00~07用于SEQ1,CONV08~15用于SEQ2。C1表示结果寄存器更新时间。S表示采集窗口。

图4 序列采样模式下的时序(SMODE=0)

图5显示了并发采样模式下(Simultaneous Sampling Mode)的时序。在本例中,ACQ_PS[3∶0]位被置为0001b。ADC通道地址存储在[CONVnn]的4位寄存器中;CONV00意味着A0/B0通道,CONV01意味着A1/B1通道。C1表示Ax通道转换结果保存到结果寄存器所需时间;C2表示Bx通道转换结果保存到结果寄存器所需时间。

图5 并发采样模式下的时序(SMODE=1)

4 连续自动序列化模式设计

在这种模式下,SEQ1/SEQ2在一次序列化过程中能够最多对任意通道进行8次转换(级联序列发生器为16次)。每次的转换结果按照地址从低到高的顺序保存在8个结果寄存器(SEQ1为ADCRESULT0~ADCRESULT7,SEQ2为ADCRESULT8~ADCRESULT15)的一个中。

一个序列的转换次数由MAX CONVn(MAX CONV寄存器中的一个3位域或4位域)控制,该值在启动一个序列化转换时,自动装载到自动序列状态寄存器(ADCASEQSR)的序列计数器状态位(SEQ CNTR[3∶0])中。MAX CONVn位域的值在0~7之间(级联序列发生器为0~15)。当序列发生器从状态CONV00开始并顺序地进行转换(CONV01,CONV02等)时,SEQ CNTRn位域的值从装载的值开始进行减法计数,直到SEQ CNTRn为0。一次序列化过程中,完成的转换次数等于(MAX CONVn+1)。

一旦序列发生器收到启动转换(SOC)触发信号,转换立即开始。SOC信号触发装入SEQ CNTRn位,转换按照CHSELSEQn寄存器中设定的那些通道顺序进行。每次转换结束后,SEQ CNTRn位自动减1。一旦SEQ CNTRn的值为0,将出现以下两种情况,这取决于ADCTRL1寄存器中连续运行位(CONT RUN)的状态:(1)如果CONT RUN置位(为1),则转换序列将自动重新开始(即SEQ CNTRn再次装入MAX CONV1的初始化值,SEQ1的状态置为CONV00)。在这种情况下,为了避免数据被覆盖,用户必须确保在下次转换序列开始之前读取结果寄存器的值。ADC模块中的仲裁逻辑保证了竞争(ADC模块正试图向结果寄存器写入数据而用户却试图从结果寄存器读取数据)出现时,结果寄存器不会被破坏。(2)如果CONT RUN为0,则序列发生器保持在最后的状态(本例中为CONV06),SEQ CNTRn继续保持0值。为了在下一个SOC重复此序列,则在下一个SOC信号到来之前,必须用RST SEQn复位序列发生器。

如果在每次SEQ CNTRn到0时,都置位中断标志位(INT ENA SEQn = 1,INT MOD SEQ1 = 0),在中断服务程序中,(如果需要)用户可以手动复位序列发生器(使用ADCTRL2寄存器的RST SEQn位)。这将使SEQn状态复位为初始值(SEQ1为CONV00,SEQ2为CONV08)。这个特点在序列发生器的启动/停止操作中很有用。

4.1 序列发生器启动/停止模式

除了连续自动序列化模式外,任何序列发生器(SEQ1、SEQ2或SEQ)都可以工作在启动/停止模式,它和在时间上分离的多个SOC触发信号同步。此方式和前例基本相同,但是序列发生器在完成一个转换序列后,序列发生器不必复位到初始状态CONV00就可以被重新触发,即序列发生器在中断服务子程序中不需要复位。因此,一个转换序列结束时,序列发生器将停留在当前转换状态。对于这种模式,ADCTRL1寄存器的连续运行位(COUNT RUN)必须置0,即被禁用。

4.2 输入触发描述

每一个序列发生器都有一套能被使能/禁止的输入触发信号。SEQ1、SEQ2和级联SEQ的有效输入触发信号如表2所示。

表2 序列发生器有效输入触发信号

在设计时应注意:(1)只要一个序列发生器处于空闲状态,则一个SOC触发就能启动一个自动转换序列。空闲状态是指在接收到一个触发之前序列发生器指向CONV00或序列发生器已经完成一个转换序列,即SEQ CNTRn已经为0。(2)当转换序列正在进行时,如果发生了一个SOC触发,则在ADCTRL2寄存器中的SOC SEQn位置位(该位在前一转换序列开始时已经被清0)。如果还有一个SOC触发发生,则它会被丢失(即当SOC SEQn位已经被置位时,随后的触发将被忽略)。(3)一旦触发,序列发生器将不能停止或暂停。程序必须等到一个序列结束(EOS)或对序列发生器进行复位,才能使序列发生器返回到空闲状态(SEQ1和级联方式为CONV00,SEQ2为CONV08)。(4)当SEQ1/2工作在级联方式,进入到SEQ2的触发源被忽略,而到SEQ1的触发源有效。因此,级联模式可以视为SEQ1具有最多16个状态而不是8个。

4.3 序列转换过程中的中断操作

序列发生器可以在三种工作方式下产生中断。这三种方式由ADCTRL2中的中断模式使能控制位决定。首先,当第一个序列和第二个序列的采样数目不等时,中断方式1(每次EOS到来时产生中断请求)操作如下:(1)对于转换I1和I2,序列发生器初始化为MAX CONVn=1。(2)对于转换V1、V2和V3,在中断服务程序“a”中,将MAX CONVn的值通过软件改为2。(3)在中断服务程序“b”中将完成如下操作:对于转换I1和I2,MAX CONVn的值又改为1,从ADC结果寄存器中读取I1、I2、V1、V2、V3的值;复位序列发生器。(4)重复第(2)步和第(3)步。

其次,当第一个序列和第二个序列的采样数目相等时,中断方式2(每隔一个EOS信号产生中断请求)操作如下:(1)对于转换I1、I2和I3(或V1、V2和V3),序列发生器初始化为MAX CONVn=2。(2)在中断服务程序“b”和“d”中完成如下操作:从结果寄存器中读取I1、I2、I3、V1、V2和V3的值,复位序列发生器。(3)重复第(2)步操作。

最后,当第一个序列和第二个序列的采样数目相等(带虚读)时,中断方式2(每隔一个EOS信号产生中断请求)操作如下:(1)对于转换I1、I2和x,序列发生器初始化为MAX CONVn=2。(2)在中断服务子程序“b”和“d”中完成如下操作:从结果寄存器中读取I1、I2、x、V1、V2和V3的值,复位序列发生器。(3)重复第(2)步操作。值得注意的是:第3个采样(x)是一个假采样,并没有要求采样。然而,为了使中断服务子程序的开销和CPU的干预最小,采用了模式2的“相间”中断请求功能。以上三种中断操作如图6所示。

5 小结

本文设计了一种高精度的转换序列发生器,能分别单独处理8位数据,并行后能处理16位数据。这意味着ADC每收到一个启动转换请求,模块可以自动执行多次转换。对于每一次转换,可以通过模拟多路开关选择16个可用输入通道中的任何一个。转换结束后,所选通道的转换结果被保存在相应的结果寄存器中。也可以对同一个通道采样多次,允许用户使用“过采样”,其较传统的单次采样转换结果提供了更高的精度。

图6 序列转换过程中的中断操作

[1] LIMOTYRAKIS S, KULCHYCKI S D, SU D K, et a1. A 150-MS/s 8-b 71-Mw CMOS time-interleaved ADC [J].IEEE Journa1 of Solid—State Circuits, 2005, 40(5)∶1057-1067.

[2] 谢磊,李建,曾晓阳,等. 一个高性能低功耗10位30MS/s流水线A/D转换器[J]. 固体电学研究与进展,2009, 29(2)∶ 292-296.

[3] LEE Seung-chul, KIM Kwi-dong, KWON Jong-kee, et a1. A 10 bit 400 MS/s 160 mW 0.13 um CMOS dualchannel pipe1ine ADC without channel mismatch calibration [J]. IEEE Journal of Solid—State Circuits,2006, 41(7)∶ 1596-1605.

[4] ARIAS J, BOCCUZZI V, QUINTANILLA L, et a1. Low power pipeline ADC for wireless LANs [J]. IEEE Journal of Solid State Circuits, 2004, 39(8)∶ 1338-1340.

[5] HU J, DOI EV N, MURMANN B. A 9.4-bit, 50 MS/s,1.44mW pipelined ADC using dynamic source follower residue amplification [J]. IEEE Journal of Solid State Circuits, 2009, 44(4)∶ 1057- 1066.

猜你喜欢

序列化级联寄存器
如何建构序列化阅读教学
Lite寄存器模型的设计与实现
分簇结构向量寄存器分配策略研究*
级联LDPC码的STBC-OFDM系统
Java 反序列化漏洞研究
基于级联MUSIC的面阵中的二维DOA估计算法
作文训练微格化、序列化初探
LCL滤波器在6kV级联STATCOM中的应用
H桥级联型STATCOM的控制策略研究
Java序列化技术的探讨