2006年3月
电子器件
ChineseJournalOfElectronDevices
Vol.29 No.1Mar.2006
AccomplishedHigh2SpeedSignalGeneratorsbyUseofMCUandCPLD
HEQi2rui,YANGJian2jun,LIAOYun,ZHANGYi2de,JIANGQuan
(Dept.ofOpto2ElectronicTechnology,UESTofChina,Chengdu6100,China)
Abstract:Thispaperpresentsadesignofhigh2speedsignalgenerators,whichsimulatesapulsesignalgen2eratedbyalasertodetecttheworkofalaserdetector.BasedonVHDL,logicandsynchronoussequentialcontrolcircuit,whichiskernelofthissystem,isdesignedinanEPM3128ACPLDchip.Itrealizesthatahigh2speedand12bitAD9762D/Aconverteriscontrolledbyalow2speedand8bitofC51MCU.Anon2periodicpulsesignalisgenerated,thewidthofthepulsecanbeadjustedfrom200nsto3μs,andthetimeintervalis50ns.Thesignalgeneratorsfullymeetthedemandofdetectingtheworkofthelaserdetector.Keywords:MCU;CPLD;high2speed;signalgeneratorsEEACC:1265
利用单片机和CPLD实现高速信号发生器何其锐,杨健君,廖 云,张义德,蒋 泉
(电子科技大学光电信息学院,成都6100)
摘 要:主要介绍了一种高速信号发生器的设计,用于模拟外来激光束产生的脉冲信号以检测激光探测仪是否正常工作。
利用VHDL语言对EPM3128ACPLD芯片进行逻辑和同步时序电路设计,作为系统的控制核心,完成8位低速单片机C51对12位高速D/A芯片AD9762的控制;最终产生了脉宽200ns~3μs可调,步长为50ns的非周期脉冲信号。所设计的信号发生器完全满足检测激光探测仪的要求。
关键词:单片机;CPLD;高速;信号发生器
中图分类号:TN911
文献标识码:A 文章编号:100529490(2006)0120197204
分辨率12bit,信号经放大后,输出的电压达到激光
探测仪的输入电压范围要求。
在激光功率的测量中,激光束通过光电转换、信号处理后,得到一个脉冲信号。激光探测仪通过对这个脉冲信号的采样、数据处理,可以测量出相应的输入激光束功率大小。在没有外来激光束的条件下,为了检测激光探测仪是否正常工作,需要做一个高速信号发生器来模拟外来激光束产生的脉冲信号。本文将主要介绍高速信号发生器的设计原理。
外来激光束所产生的脉冲信号是一个非周期的信号,脉冲的持续时间和外来激光束持续的时间相关,从200ns~3μs不等,电压范围0~5V。激光探测仪所用的A/D转换芯片的分辨率是12bit的,这样就要求高速信号发生器能根据需要产生一个200ns~3μs的脉冲信号,步长50ns,所用D/A芯片的
1 AD9762芯片简介[1]
AD9762是美国AD公司采用先进的COMS工
艺制作的12bit高速低功耗数模转换芯片,2~20mA差分电流输出,输出电阻>100kΩ,其转换速度高达125Msps。芯片采用单电压供电,工作电压范围从2.7~5.5V,其低功耗性能适用于便携设备。在3V电压工作情况下,满电流输出时芯片功耗仅45mW,如果芯片工作在节电模式时,5V电压工作情况下,芯片功耗仅25mW。AD9762的框图如图1所示。
收稿日期:2005205230
作者简介:何其锐(19752),男,硕士,目前从事信号处理等相关方向的研究,heqr@163.com.
198电 子 器 件第29卷
公司推出的高性能低价格EEPOM工艺PLD,有128个宏单元,2500个可用门,8个逻辑阵列单元,
最大I/O引脚数96个。芯片工作电压3.3V,I/O
口兼容5V,3.3V,2.5V逻辑电平。支持IEEE1149.1协议JTAG接口,可实现ISP(In2SystemProgrammable在系统编程)功能。
3 系统方案
图1 AD9762功能框图
系统框图如图3所示:
AD9762的时序控制图如图2所示。
图3 系统框图图2 AD9762时序控制图结合图1、图2,可以看到,AD9762外围电路结构简单,输入端由12bit数据总线和CLOCK锁存控制线构成,输出端由IOUTA、IOUTB构成差分电流输出。在AD9762的数据总线上,数据准备好以后,CLOCK时钟输入端的上升沿信号将12bit数据锁存进D/A,D/A转换同时启动,对应的IOUTA、IOUTB输出相应电流。考虑到AD9762输出的电流通过电阻转换成电压最高到1.25V,在该信号发生器设计中,只需在IOUTA引脚端接一个240Ω的电阻到地,实现电流到电压的转换,后面再用运放进行信号调理放大处理。
对AD9762的控制MCU选择有两方面的问题需要考虑:一个是要求MCU的数据总线宽度的要求,16bit的单片机不存在什么问题,而8bit的单片机需要两次数据输出锁存;第二是要求单片机最快能在200ns的时间内输出两次D/A转换的数据,并且间隔时间可以调整,间隔时间为50ns。如果采用单片机直接控制AD9762的方法,那么要求单片机的机器周期至少能达到50ns或更高,并且电路设计上还是会用到一些分立元件所搭建的组合逻辑电路。综合考虑MCU机器周期的时间、指令执行的周期,以及器件购买等方面因素,提出结合使用ATMEL公司的C51和ALTERA公司的CPLDEPM3128A控制AD9762的方案。
因为脉冲信号是随机产生的,其幅度和宽度也是根据当时测试的需要来确定,所以利用计算机通过串口把脉冲信号的幅度、宽度数据传送到C51单片机中。单片机接收到数据后,将CPLD作为外部RAM进行写操作,之后P2.5口给出一个脉冲信号作为CPLD的启动信号。CPLD把单片机送来的脉冲信号的幅度、宽度数据存放在寄存器中,并将收到的高4bit和低8bit幅度数据组合成12bit幅度数据。CPLD在收到启动信号后,根据AD9762的时序控制关系把幅度数据送到AD9762,并开始内部计数器对宽度数据进行倒计时,在倒计时结束后,把全“0”数据送到AD9762。AD9762输出的电流信号通过采样电阻转变成电压值后,通过运放电路调整放大,最后达到激光探测仪所需幅度电压。CPLD工作时钟信号由20MHz有源晶振提供,满足
系统50ns步长时间的要求。因脉冲信号的宽度要求从200ns~3μs不等,而CPLD的工作时钟周期为50ns。故倒计时的最大次数为:(3000-200)/50=56次,所以,宽度数据的有效数据只需6bit。综上所述,CPLD的设计主要由两部分组成,一是逻辑控制部分,实现CPLD和C51之间的接口设计;一是同步时序电路设计[3],负责控制AD9762的数据输出。
CPLD的设计用硬件描述语言VHDL实现[4]。3.1 CPLD的设计
2 EPM3128A[2]
EPM3128A复杂可编程逻辑器件是ALTETA
从图4可知,寄存器1由C51的ALE引脚信号的上升沿锁存,锁存的数据是P0口的D1~D0提供的地址数据。锁存的地址数据通过2-4译码器得到CE0、CE1、CE2三个输出信号作为寄存器2、3、4的片选信号。寄存器2、3、4的锁存端并联于C51的
第1期何其锐,杨健君等:利用单片机和CPLD实现高速信号发生器199
WR引脚,在片选信号有效的情况下,由WR的上升
信号,该单稳态触发器记数时间由CPLD的工作时钟提供。状态机在启动信号有效后,状态转移到S1。在S1状态,CPLD把12bit的D/A数据输出到AD9762,并对AD9762CLOCK引脚输出一个上升沿信号,启动AD9762的数据转换。同时,状态机启动倒计时计数器,并等待倒计时计数器的结束信号。
倒计时结束有效信号让状态机转移到S2状态。此状态下,CPLD把全“0”数据送到AD9762的数据总线上,AD9762的CLOCK引脚上电平清“0”。状态机在同步时钟的作用下,进入到S3状态。S3状态下,CPLD把全“0”数据送AD9762,并启动数据转换,从而结束AD8762的脉冲信号。S4状态把AD9762CLOCK引脚的电平清“0”,并在同步时钟
沿锁存P0口输出的数据。寄存器2锁存幅度信号的
低8bit数据,寄存器3锁存幅度信号的高4bit数据,寄存器4锁存宽度信号的6bit数据。
作用下回复到S0状态。至此,CPLD构成的同步时序电路完成了一次AD9762脉冲信号的产生控制。3.2 单片机的设计C51单片机在该系统中,平时处于等待状态。
图4 CPLD逻辑控制框图CPLD的另一部分是同步时序电路设计(图5)。共6个状态,其中S0~S5是工作状态,IDLE
表示其他无效状态。在状态机进入无效状态后,经过一个时钟周期后自动返回到S0状态。
在收到串口数据后,先校验接收到数据是否正确。
确认接收数据正确后,利用寄存器间接寻址外部RAM写指令[5]:
MOVX@Ri,A,
把接收到的幅度信号数据、宽度信号数据写到CPLD中。该系统中,低8bit的幅度信号数据地址
是00H,高4bit的幅度信号数据地址是01H,宽度信号数据地址是02H。在幅度信号、宽度信号数据写完后,C52对P2.5引脚先置“1”,再置“0”,作为对CPLD同步时序状态机中所需启动信号的触发信号。
4 实验结果
4.1 仿真实验结果
在MAX+PLUSII中,仿真结果如图6、图7所示。 仿真波形中,输出幅度信号数据、宽度信号数据已经给出,输出幅度信号数据为16进制数734H,图6的延时时间为0ns,图7的延时时间为50ns。START输入引脚就是模拟单片机P2.5引脚给出的启动信号,CLK20M输入引脚模拟20MHz晶振提供的时钟信号。CLK是输出到AD9762CLOCK端的控制信号,DATA是输出到AD9762的12bit数据总线,CSTA是CPLD内部状态机的寄存器。
从图6可知,START端输入一个高电平信号后,延时2个时钟周期后(所延时的时间是触发内部单稳态触发器造成的),内部状态机寄存器从S0态转到S1态,AD9762的数据总线上数据已经准备就
图5 CPLD同步时序状态转换图
CPLD在空闲时处于S0状态,等待高电平有效
的启动信号。C51的P2.5引脚的上升沿在
CPLD内部触发一个单稳态触发器,产生一个50ns的高电平信号,作为控制CPLD状态机的启动信号。因为本系统中,单片机采用的是12MHz的晶振,机器周期为1μs,而状态机完成一次有效状态循环最短时间为200ns。为了避免重复触发状态机,需在CPLD内部设计一个单稳态触发器产生启动
200电 子 器 件第29卷
图6 零延时仿真结果
图7 延时50ns仿真结果
绪,CLK输出端输出高电平信号,启动AD9762数
据转换。经过3个时钟周期(150ns)后,CLK输出端输出低电平信号,同时数据总线上数据变成“0”。在S3状态,CLK输出端输出高电平信号,重新启动AD9762数据转换,使AD9762输出的脉冲信号变成回到零电压。从时间上看,CLK端两个上升沿间隔200ns,保证的AD9762输出的脉冲电压宽度最少能达到200ns。从图7的仿真波形中可以看到,由于延时了50ns,CLK端两个上升沿间隔250ns,满足了系统所要求的脉冲宽度最短200ns,步长时间50ns的要求。4.2 实际波形测试结果
最后电路调试结果波形图如图8~图11所示。
图9 零延时AD9762输出端采样电阻电压波形
图10 50ns延时AD9762CLOCK端输入信号波形
图8 零延时AD9762CLOCK端输入信号波形
从示波器波形图中可以看到,AD9762CLOCK端输入信号波形与仿真结果一致,信号边沿的过冲现
象对AD9762数模转换启动未造成任何影响。AD9762在单片机和CPLD的控制下,能根据PC机送来的幅度数据和宽度数据产生相应的脉冲信号,完全符合系统的要求。目前该高速信号发生器已投入使用,运行状况良好。如果提高CPLD的时钟频率,还可以进一步缩短输出脉冲的最短时间和步进时间。
图11 50ns延时AD9762输出端采样电阻电压波形
(下转第204页)
204电 子 器 件第29卷
的嵌入,IEEE1149.6已经给出了完整的测试说明,1149.6主要是采用对跳变敏感的技术,使接受器能
由表1我们可以看出,外测试时电平触发只能对直流耦合电路进行有效的测试,而无法对交流耦
合连接电路进行故障检测,对交流耦合电路来说,若边界扫描单元发送的为电平信号,则接收端接收到的信号始终为“VV”即测试接受器的初始电平。
由表2我们可以了解到,1149.6标准的脉冲触发即可以进行直流耦合外测试,也可以进行交流耦合外测试,边界扫描单元通过捕捉信号的跳变来接收测试信号,达到测试耦合电路连接故障的目的。
表2 脉冲外测试—跳变触发
板上直流片上交流
测试驱动变换脉冲
耦合数据捕捉耦合数据捕捉
TX+ TX-RX+ RX-RX+ RX-01到10101010到010101
够对交流耦合网络进行跳变检测,而传统的直流耦
合网络通常采用电平敏感技术(例如1149.1)。1149.6给出的边界扫描结构,其测试接收器通常与任务接受器并行放置,因此可以在任务模式或测试模式时分别形成串行的通道。下列实验可证实测试接受器确实对原电路任务模式的工作有很小的影响。
需要注意的是,当驱动器交流耦合连接时,执行外测试指令,接受器的值将一直保持初始电压值不图3 边界扫描实现的展示图3 芯片测试及其结果在芯片上进行完整的边界扫描实现展示如图(3)所示,被嵌入芯片是一个带有差分传输/接受对的1.2V测试芯片。我们用TX+,TX-,RX+,RX-代表测量的测试点。
测试信号从并行-串行转换器的并行端输出,经过转换单元与LVDS接口后在LVDS接收器的串行端被检测接收。我们分别使用直流外测试指令与交流外测试指令进行测试,得到边界扫描测试电平触发直流外测试如表1,跳变触发外测试如表2。
表1 直流外测试—电平触发
测试驱动电平
TX+ TX-0110
变。这是由于耦合电容的隔直流作用会阻塞直流电平。通过芯片测试我们可以看到,使用这种方法确实可以实现对交流耦合高速I/O口的故障测试,同时在正常工作时,边界扫描单元的嵌入也没有影响到电路的正常运做。参考文献:
[1] IEEEStd1149.622003,1149.6IEEEStandardforBoundary2
ScanTestingofAdvancedDigitalnetworks[S],IEEE,USA,2003.
[2] BillEklow,ParkerKennethP,IEEE1149.6:ABoundary2Scan
StandardforAdvancedDigitalNetworks[S],2003.
[3] VandivierWahlandRearick.FirstICValidationofIEEEStd
1149.6[C].In:ProcInternationalTestConference,2003,pp,6322639.
[4] 于宗光.IEEE1149.1标准与边界扫描技术[J].电子与封装.
2003.3(5),40247.
[5] 陈新武,陈朝阳.适用于高速数字网络的边界扫描标准[J].计
直流耦合数据捕捉
RX+ RX-0110
交流耦合数据捕捉RX+ RX-VVVV
算机测量与控制,2004,12(7),6782690.
(上接第200页)
[3] 尤忠琪.数字集成电路教程[M].北京:科学出版社,2003.[4] 潘松.VHDL实用教程[M],成都:电子科技大学出版社,
2000.
[5] 李广弟.单片机基础(修订版),北京:北京航天航空大学出版
参考文献:
[1] AD9762DataSheet.AnalogDevices[S],2000.[2] EPM3128ADataSheet.Altera[S],2003.
社,2001.
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务