詹贵阳,曾以成
(湘潭大学物理与光电工程学院,湖南 湘潭 411105)
电压比较器是对输入电压信号进行鉴别与比较的电路,是组成非正弦波发生电路的基本单元电路,可用于报警器电路、自动控制电路,测量电路等。
目前电压比较器的阀值电压大小有的采用固定模式[1-3]。有的采用编程可调节模式(通过编程控制DAC 的方式来调节阈值电压[4-8],或是通过编程控制RC 低通滤波器的积分时间来调节阈值电压[9])。但无论是采用固定模式,还是可调节模式,其阈值电压大小的设定主要依赖于设计时的建模理论及其后续电路模型估算;或是通过独立的第三方设备,如示波器等,监测输入到电压比较器的信号波形,再根据该波形峰值设定相应的阈值电压大小。前一种方式准确性较差;后一种方式操作繁琐,且在特定环境下(如没有示波器时)无可操作性。总之,目前设定阈值电压的方式,或要求具有很强的专业性,或是操作繁琐。基于此,为增加电压比较器阈值电压设定时的通用性,本文提出新增一个AD 模块,用于先检出波形峰值,然后根据峰值自动设定阈值电压大小,并实现阈值电压的自动调节。具体方法是AD 波形采样模块预先对输入脉冲信号采样,并将采样数据输入到FPGA,然后FPGA 读取波形峰值并根据峰值设定阈值电压大小,设定好的阈值电压数值再通过DA 阈值电压控制模块输出为模拟电压量,从而实现电压比较器阈值电压的自动设定和调节。
具有阈值电压自动设定和调节功能的电压比较器设计及FPGA 实现系统主要包括三个部分:以AD转换器为核心的AD 波形采样模块,FPGA 模块,以DA 转换器为核心的DA 阈值电压控制模块。
图1 系统结构图
整个系统工作过程如下:在启动电压比较器模块之前,首先将输入信号接到AD 模块,经AD 模块对设定时间内的波形采样后,采样数据输入FPGA模块的波形峰值读取逻辑单元,读取波形峰值,读得的峰值结果输入到FPGA 模块的阈值大小设定运算逻辑单元参与运算,将运算后得到的阈值电压数值接到FPGA 模块的DA 控制逻辑单元,FPGA 模块的DA 控制逻辑单元将阈值电压数值输出到DA 模块,DA 模块将接收到的阈值电压数值由数字量转为物理的模拟电压量,然后接到电压比较器模块的第二输入端,达到更新电压比较器模块阈值电压数值(甄别电压)的目的。
如图2、图3 所示,AD 波形采样模块主要3 部分电路组成。放大调理电路输出端接差分放大电路输入端,差分放大电路两输出端接到AD 模数转换电路的差分输入端。
图3 AD 波形采样模块电路原理图二
放大调理电路主要包括由电阻R6、R9 构成的分压电路及AD8065 构成的电压跟随器,用于将模拟输入的-5 V~5 V 电压信号压缩成-1 V~1 V 的电压信号。
由AD8138[10]为主构成的差分放大电路可推导出以下公式:
根据图2 中电路得VOCM=1.65 V,且每个输出节点上的输出电压由差模部分和共模部分组成。由式(1)可知:V+out,cm,V-out,cm大小相等,极性相同;且另有V+out,dm,V-out,dm大小相等,极性相反。由式(2)、式(3)可知:每个输出节点均增加共模电平1.65V,即每个节点的输出电压范围由原来理论的-1 V~1 V抬升至实际的0.65 V~2.65 V,即共模电平起到电平抬升转换作用(因为AD9238 是单电源+3.3 V供电,无法检测0 V 以下电压信号,差模信号进入AD9238 差分输入端之前,必须先进行电平转换)。且由式(4)可知:在输出节点上引入共模电压并不会改变两节点之间差模电压值。
图2 AD 波形采样模块电路原理图一
注:式(1)~式(4)中,符号Vout,dm指两节点之间电压之差,其他符号均指对地电压。
AD9238[11]为主构成AD 模数转换电路是将模拟信号差分输入,12 位数字量并行输出(最高位为符号位),并将输出的数字信号接入FPGA 模块相应I/O 口管脚。本文AD9238 参考电压采用内部供应模式(通过硬件设计使AD9238 管脚62(SENSE)接地达到目的),且参考电压Vadc_ref=1 V。
由TL431[12]为主构成基准源电路(其管脚2(REF)固定输出电压约为VREF=2.5 V),调节R19,则由分压定律,本文中设置DA 模块(TLC5620)的参考电压Vdac_ref=3 V。
DA 转换电路由TLC5620 为主构成。TLC5620[13]是11 位(8 位数据位)串行输入的数模转换芯片。由TLC5620 的数据手册,可设置本文阈值电压Vth公式:
式中:变量Code(8 位二进制数据位)输入范围是整数0~255。变量Rng 是输出电压倍增位(0 时不倍增,1 时倍增),本文设置Rng=0。TLC5620 的输入端接到FPGA 相应I/O 管脚,且用FPGA 对其进行时序控制。TLC5620 输出的阈值电压Vth接到电压比较器(LT1715)第二输入端。电压比较器的输出端接到FPGA 的I/O 管脚。
图4 DA 阈值电压控制模块电路原理图
FPGA 系统程序设计,主要包括波形峰值读取逻辑单元,阈值大小设定运算逻辑单元及DA 控制逻辑单元。
3.1.1 波形峰值检测
波形峰值读取逻辑单元设计主要含两部分,一部分是对波形峰值的判断读取,另一部分是检出所有峰值中的最小峰值,且在本文中将最小峰值的一半设定为电压比较器的阈值电压。
1.2.2 循证问题 根据循证护理的要求,结合患者的实际情况和肛裂手术的情况来提出几个主要问题:(1)影响患者术后便秘的因素具体是哪些?(2)采取怎样的措施才能防止肛裂术后发生便秘?(3)如何处理患者发生肛裂术后便秘。提出以上三个问题后,小组应该对以往的临床相关资料进行总结分析[3],了解到相关的信息。
目前波形峰值检测方法有窗口法[14-15],阈值法等。其中阈值法又分为将阈值设为固定值的双阈值法[16-21](高低阈值法)或单阈值法[22-23]。这些文献描述的方法多针对自身的应用领域,不太具有普遍的适用性。针对本系统电路的应用方式,提出了动态单阈值峰值检测法,即不设固定阈值,将每一个波形最低点作为本次峰值检测的阈值。具体算法如图5。
如图5(a),定义一个12 位缓存寄存器buffer_val 用来缓存每次波形采样的数据data_in1 值。则当前时钟采样data_in1 值与上一个时钟的data_in1值(已存入寄存器buffer_val)作比较,就会进入如图5(b)的峰值检测三态示意图。
图5
主要运行机制如下:
(1)满足条件data_in1 值==buffer_val 值时,处于谷底态,谷底采样计数点num3 自加1。当由谷底态进入上升态瞬间,上升沿采样计数点num1 等于0,将此刻buffer_val 值(peak_min_A)赋给peak_min1。
(2)满足条件data_in1 值>buffer_val 值时,处于上升态,上升沿采样计数点num1 自加1。当由上升态进入下降态瞬间,下降沿采样计数点num2 等于0,将此刻buffer_val 值(peak_max_A)赋给peak_max1。
(3)满足条件data_in1 值
3.1.2 最小峰值检测
图6 最小峰值检测的RTL 图
本文中将最小峰值的一半设定为电压比较器的阈值电压Vth。
注:式(6)中的‘5’表示还原未被放大器AD8065缩小之前的信号;绝对值号内表示去掉min_num 的符号位(min_num 的第12 位为符号位);‘1/2’表示取最小峰值的一半。联立式(5)、式(6),计算出变量Code 值,并输出到DA 控制逻辑单元。
如图7,A 框内部主要逻辑:针对AD9238 的时序控制逻辑,波形峰值检测,最小峰值检测。B 框内部主要逻辑:阈值大小设定运算逻辑单元,针对TLC5620 的DA 控制逻辑单元。
图7 FPGA 系统程序设计的顶层RTL 图
由图8 可知:
图8 FPGA 系统程序设计仿真结果示意图
(1)在num2=0 时,peak_max1 先后取得峰值12′hffc,12′he08。
(2)最小峰值min_num 先后取值为12′hffc,12′he08,并最终停留在12′he08。
(3)DAC_disp_data 先后取值为8′hd4,8′ha0,并最终停留在8′ha0。
将min_num=12′he08 代入式(6),得阈值电压Vth1=1.885 V。将Code=DAC_disp_data=8′ha0 代入式(5),得阈值电压Vth2=1.875 V。经计算Vth1与Vth2两者仿真理论相对偏差约为0.53%。该理论相对偏差是由于TLC5620 输出的有效数据较少(TLC5620 有效数据位是8 位,AD9238 有效数据位是11 位),分辨率低造成的。
为了验证本文设计的系统电路及程序正确性,进行实测实验。首先使用KEYSIGHT 公司生产的型号为33600A 波形发生器生成如图5(a)所示的一组具两个不同峰值的波形,并在满足奈奎斯特定理的基础上,设置AD9238 的采样速率为5 Msample/s。然后接入系统电路进行测试,并使用万用表实测TLC5620 输出的阈值电压大小。同时,用Tektronix 生产的MDO3052 型示波器测量波形发生器生成的波形,并与本文系统电路测量的结果对比。
由表1 可知:本文系统电路实测阈值电压与理论阈值电压有微小差别,但在误差范围内,两者最大相对偏差为3.778%;示波器所测阈值电压与理论阈值电压也有一定差别。另外,由表1 中数据还可知系统电路实测阈值电压与示波器所测阈值电压具有很好的相关性。
表1 输入波形10 kHz 时阈值电压实测结果(电压单位:V)
本系统电路以AD 转换器、DA 转换器以及FPGA 为核心,采用硬件电路设计与FPGA 系统程序设计相结合的方式。先用AD 模块对波形采样,并将采样数据输入到FPGA。然后FPGA 根据采样数据读取波形峰值,并将读取到的最小峰值的一半输出到DA 模块,该数值被DA 模块以模拟电压方式输出,并接到电压比较器的第二输入端,从而实现电压比较器阈值电压(甄别电压)自动设定和调节。而传统电压比较器阈值电压设定主要依赖于设计时的建模理论及其后续电路模型估算,该方式的准确性较差;或是通过独立的第三方设备,如示波器等,监测输入到电压比较器的信号波形,再根据该波形峰值设定相应的阈值电压大小,此方式操作繁琐,且在特定环境下(如没有示波器时)无可操作性。但是,该系统电路因为是先启动AD 模块运行,直到电压比较器的阈值电压更新后,再启动电压比较器工作,所以其主要适用于测量那些脉冲信号可重复稳定发射的领域,如放射探测,辐射防护,非破坏性物质分析,自动控制等领域。