第30卷第4期电子器件V01.30No.42007年8月cIIineseJ啪1OfE1ect咖De、ricesAug.2007Designof200一ChannelA/DConverterBasedonFPGAandMCU+0己厂WPi—mi行g(C0耽班o,Ekf以阳ZⅡ以dh如"凇£io卵勘gi以PPr讥雪,H“凇n溉i掣Ⅲ叻。厂nc^加zog了,办“如o“H"砌竹412008,@泐)Abstract:InascientificresearchprOject,a200一channelanalog—to—digitalconverterrequirestobedesigned.Basedonthedemonstratingofdesignschemeofthesystem,wechoosetheschemebasedonFPGAandMCU.ThroughthedescriptionofthefunctionoftheFPGAandMCU,thedesignprocessofinternalcir—cuitofFPGAandVHDI。languagesourceprogramcodeareprovided,atthesametime,theMCU’ssoft—waredesignprocessbasedonembeddedreal—timeoperatingsystemRTX51andtheprogramflow—chartarepresented.Thetestingshowsthatthesystemhasachievedthetechnicaltargetandthefunctionrequire—mentbroughtforwardbythedesigntasks,andalsothesystemhasgoodreliability.Keywords:200—channelanalog_to—digitalconverter;pulse_width;FPGA;MCU;embeddedreal—timeoper—atingsystemRTX51EEACC:1265H基于FPGA和MCU的200通道A/D转换器的设计*欧伟明(湖南工业大学电气与信息工程学院,湖南株洲412008)摘要:在某科研项目中,需要设计一个200通道的AD转换器.在系统设计方案论证的基础上,选择了基于FPGA和Mcu的设计方案.根据对FPGA和MCU的所要完成的功能描述,给出了FPGA的内部电路设计过程及主要的VHDL语言源程序代码,给出了基于嵌入式实时操作系统RTx51的MCU软件设计过程及相应的程序流程框图.通过对制作的实物进行的测试表明,本系统达到了设计任务所提出的功能要求和技术指标,并且系统具有较好的可靠性.关键词:200通道AD转换器;脉冲宽度;FPGA;Mcu;嵌入式实时操作系统RTx51中图分类号:TP510.99文献标识码:A文章编号:1005—9490(2007)04·1234-05在某科研项目的进行过程中,笔者遇到了一个(3)由项目需求可知,正常情况下”脉冲宽度”最设计200通道模数转换器的问题,需要对200个信大值为80ms,非正常情况下”脉冲宽度”可能大于号进行”脉冲宽度”的测量,不妨设200个信号分别80ms,当出现”脉冲宽度”大于80ms时,显示出来是S,,Sz,……,Sz…具体的设计任务如下:的测量结果要求是某个固定值,当然该固定值应该(1)信号Si(i一1,2,……,200)的波形是不确定大于80ms.的,可能Si总是为低电平o,也可能出现若干个正(4)测量结果要求能上传到PC机.脉冲,需要对信号Si的高电平时间进行测量,要求1把信号Si的每一个正脉冲的高电平时间累加起来,系统设计方案论证并用数字的形式显示出来.为了叙述的方便,本文把对每一个被测信号Si(i一1,2,……,200)而言,这种测量称为”脉冲宽度”的测量.Si出现高电平的时刻是随机的,Si可能出现多个正(2)项目要求”脉冲宽度”的测量精度为o.1ms.脉冲,测量任务是把Si出现的所有正脉冲的高电平收稿日期:2006—11一08基金项目:中国包装总公司科研基金资助(05zBI(JA007)作者简介:欧伟明(1963一),男,副教授,主要研究方向为检测技术和嵌入式系统,ouweimin28@sina.co札万 方数据第4期欧伟明:基于FPGA和MCU的200通道A/D转换器的设计1235时间累加起来,然后,将测量结果上传到PC机,并用数字显示出来.显然,这是一种将信号s。的高电平时间转换为数字量的AD转换器,该AD转换器开始转换的时刻和结束转换的时刻都是由信号5i触发控制的,并且该AD转换器具有与PC机通信的功能.根据经验可知,现有的AD转换器集成电路中没有与此类似的芯片,这就要求设计者采用某种技术手段自行研制这种”200通道AD转换器”.1.1基于MCU的设计方案如果仅仅实现对单个信号Si”脉冲宽度”的测量,我们可以采用如图1所示的设计方案.Mnl图l针对单个信号的设计方案在图1中,微控制器(Micro—ControllerUnit,简称为MCU)是核心.MCU内部定时器T,工作于定时工作方式,并且由外部硬件和内部软件混合控制定时器T。,的启动与停止[1],”开始测量指令”和”结束测量指令”都由PC机发送而来,”开始测量指令”实现对系统的初始化,”结束测量指令”实现软件停止定时器T,工作并上传测量结果到PC机,从而实现对单个信号S;的”脉冲宽度”的测量.然而,项目要求对200个信号实现”脉冲宽度”的测量,若还是采用图1所示的设计方案,则势必出现两个问题,一是系统需要200个图1所示的电路,系统硬件电路相当复杂,系统的可靠性成问题;二是PC机要有200个RS232串行接口,这是不可能的.1.2基于PLC的设计方案笔者曾经考虑过采用可编程控制器(简称为PLC)实现”200通道AD转换器”,拟采用扫描的方式分别完成对信号S,,S2,……,S:。。的”脉冲宽度”的测量,但是,PI£的扫描速度(一般是毫秒数量级)会严重制约系统的测量精度[2],经估算,这种方案根本达不到”脉冲宽度”测量精度为o.1ms的要求.1.3基于n,GA和MCU的设计方案随着半导体制造技术的发展,从上世纪80年代中期开始,高密度可编程逻辑器件被应用到电子系统设计中.现场可编程门阵列(FieldProgrammableGateArray,简称为FPGA)具有运行速度快、其内部电路功能可通过硬件描述语言(如VHDL语言)进行设计描述的特点,如今,FPGA正处于革命性的数字信号处理技术的前沿[3|.微控制器MCU具有控制灵活的特点,被广泛地应用于工业测控系统万 方数据中.结合FPGA和MCU的系统设计方案如图2所示.图2基于FPGA和MCU的设计方案‘在图2中,200个”传感器”和”信号调理电路”产生200个被测信号S。(i一1,2,……,200),信号Si被输入到FPGA,在MCU的控制下,FPGA将信号Si的”脉冲宽度”转换为数字量.MCU发送给FP—GA的控制信号包括9位通道选择控制信号(9bitchannelselect)、清零控制信号(clr)、时钟脉冲锁定控制信号(10ck).测量结果由8位数据线(8bitda—ta)从FPGA传送给MCU.MCU是系统的现场控制核心.MCU接收由PC机经过RS232串行接口发送而来的控制指令,根据控制指令MCU直接控制FPGA的工作,系统的测量结果由MCU从FPGA取出后,经过RS232串行接口上传给PC机,并用数字的形式显示在PC机的显示屏上.采用基于FPGA和MCU的系统设计方案,来完成”200通道AD转换器”的设计.1.4主要电子器件的选择我们选择美国ALTERA公司的FPGA,芯片型号为EPlK30TCl44—3.该芯片具有典型门30000个,逻辑单元1728个,嵌入式阵列块(EAB)6个,每个EAB有以256×16、512×8、1024×4、2048×2bit任意组合的RAM,可做单口RAM,也可以设计成双口RAM,有24576bit内部RAM,该器件的内核电源电压为2.5V,功耗小,可用I/O引脚为102个,引脚电压可以与2.5V、3.3V、5V的电压器件兼容,并且可以进行摆率控制和漏极开路输出。EPlK30TCl44—3能够满足多功能、低功耗、低成本、高性能的系统设计.为了系统制作的方便,我们采用手头已有的FPGA适配板(湖南长沙三知电子有限公司生产)来实现FPGA电路的设计,该FP—GA适配板包含FPGA芯片EPlK30TCl44—3、下载电路、FPGA配置存储器、FPGA内核电源模块等.当FPGA配置存储器中下载配置文件后,该FPGA适配板只要接人+5V电源就可以正常工作于用户应用系统中(嵌入到用户系统中).1236电子器件第30卷为了以后能够在线升级更新系统的MCU应用程序,我们选择的微控制器MCU是带ISP接口的微控制器芯片AT89S52,它是美国ATMEL公司生产的8位单片机,具有快速8051内核、8kbyteFLASHEEPROM、256BIDATARAM,完全符合定控制信号”locklI作为阐门控制信号,它来自于微控制器AT89S52.外部时钟”clockIt是周期为o.01ms的方波脉冲信号,只有当阐门控制信号10ck=1时,外部时钟”clock”才能达到计数器的时钟脉冲输入端.我们知道计数器的计数误差最大为±1个字,那么计数器对Si的高电平测量误差不会大于o.01运行嵌入式实时操作系统RTX51Tiny的硬件要求,可1000次写/擦循环,数据可保留10年,oHz~24ms.根据前面给出的系统设计任务可知,正常情况下”脉冲宽度”最大值为80ms,对应于计数器的计MHz的全静态工作方式,三级程序存储器锁定,32根可编程I/O线,3个16位定时器/计数器,6个中断源,1个可编程串行通道UART,具有低功耗的闲置和掉电工作模式,片内含振荡器和时钟电路.因此,它可以满足本系统设计的需要.2数值为80ms÷o.01ms一8ooo,然而,212—4096,213=8192,所以有212<8000<213则计数器的位数可以确定为13bit,因此,计数器的最大计数值为8191.FPGA的VHDL程序设计一般来说,电子系统的设计过程是,首先根据系在图3中,多路数据选择器”selector”的输人数据是200个计数器的计数值,而每个计数器的13bit计数值通过多路数据选择器转换为16bit后(高3统设计任务完成系统设计方案的论证与选择,然后进行系统硬件电路的设计,再根据系统硬件电路完成系统软件的设计,最后进行系统的制作与调试.本系统的软件设计包括FPGA的程序设计及MCU的程序设计两个部分.2.1bit为o),分2次(每次8bit)送给微控制器bit一400×8AT89S52.由此可知,多路数据选择器”selector”实现的功能是从200×16bit中每次选择bit8bit传送给微控制器AT89S52,所以数据选择控制信号是9bit的,并且,数据选择控制信号”9channelselect”来自于微控制器AT89S52.FPGA内部逻辑电路框图在本系统中FPGA的功能是将200个信号Si(i—l,2,……,200)的”脉冲宽度”转换为数字量.根据前面的论述不难画出FPGA内部逻辑电路框图如图3所示.2.2主要V瑚DL源程序弄清了FPGA在系统中所要实现的逻辑功能后,就可以很方便地在FPGA的开发环境中完成其设计过程[4].笔者是在MAX_plusⅡ开发软件平台下完成FPGA设计过程的.计数器counter-001的VHDL源程序代码如下:u1:process(clr,clk,signaL001)beginifrising—edge(clk)thenifclr一’1,thendata_1<一”0000000000000”;一清零功能elsifsignal—OOl一’1’thenif(data一1/=”1111111111111”)then一最大值处理data.1<一data_1+’17;一加计数功能图3FH]A内部逻辑电路框图endendif:endif:由图3可知,FPGA内部逻辑电路主要由计数器和多路数据选择器组成.其中,计数器有200个(counte_001,countP002,……,counte-200),计数器是带有使能控制端EN、具有清零功能和计数功能3if:endprocess;的数字逻辑部件,被测信号Si作为计数器的使能控制信号EN,当EN一1时,计数器对时钟脉冲clk的上升沿进行计数,时钟脉冲clk来自于逻辑与门的输出端,这里的逻辑与门作为阐门使用,时钟脉冲锁基于RTx51的MCU软件设计在本系统中,微控制器MCU作为”200通道3.1软件功能描述。AD转换器“的现场控制中心,其主要功能是:万方数据 第4期欧伟明:基于FPGA和MCU的200通道A/D转换器的设计1237(1)能通过串行口接收PC机发送来的命令,包括”开始测量命令”和”结束测量命令”,并能通过串行口上传测量数据(共400byte)给PC机.(2)MCU控制FPGA的工作,一方面,当接收到”开始测量命令”时,清零FPGA的计数器,并允许外部脉冲信号clock送到上述计数器.另一方面,当接收到”结束测量命令”时,能从FPGA取数据并紧接着通过串行口上传给PC机.(3)定时1.5s喂狗一次(看门狗电路在图2中没有画出).(4)MCU具有程序ISP在线下载功能.微控制器MCU的功能通过软件实现.3.2软件流程框图为了保证系统的实时性和可靠性,采用基于嵌入式实时操作系统RTX51Tiny的MCU软件设计,并且用C51高级语言来编写程序.嵌入式实时操作系统RTX51Tiny集成在Keil肚Vision26.20集成开发环境的C51编译器中[5】.RTx51Tiny实时操作系统是德国Keil公司开发的一种应用于MC孓51系列单片机功能强大的、可用于目前世界上由Intel8051标准内核派生出的很多种增强型微控制器的实时操作系统.RTX51Tiny短小精悍,只占用900byteROM、7byteDA—TA型及3倍于任务数量的IDATA型RAM空问,可以很容易地运行在没有扩展外部存储器的单片机系统上.使用RTX51“ny的用户程序可以访问外部存储器,允许循环任务切换,并且支持信号传递和事件驱动,还能并行地利用中断功能.RTX51“ny允许”准并行”地同时执行16个任务[6].根据MCU的软件功能描述,把MCU的软件分解为5个任务,具体情况如下.任务o:系统初始化任务.包括串行口的初始化和FPGA中的计数器清零等,启动任务1~任务4,最后删除任务o.任务1:喂狗任务.每隔1.5s喂狗一次.任务2:接收PC机指令的任务.每隔20ms查询一次串行口接收中断标志位RI,当接收的是”开始测量命令”时,发信号给任务4.当接收的是”结束测量命令”时,发信号给任务3.任务3:上传测量数据任务.等待触发信号,若SIGNAL被置位,则从FPGA接收测量数据并通过串行口上传给PC机.任务4:开始测量任务.等待触发信号,若SIGNAL被置位,则启动任务o,系统初始化后开始测量.万 方数据MCU的软件流程框图如图4所示,MCU的软件用C51高级语言编写.图4MCU的软件流程框图4PC机上的应用软件设计4.1应用软件功能描述由前面的论述可知,”200通道AD转换器”是通过RS232串行口与外围电路或设备发生联系的,如果”200通道AD转换器”与PC机相连接,那么就要编写PC机上运行的应用软件.PC机上应用软件的功能是通过RS232串行口实现与”200通道AD转换器”的通信,PC机能够发送指令给”200通道AD转换器”,从而控制”200通道AD转换器”的工作,PC机能够接收”200通道AD转换器”上传而来的测量数据,并能够显示、保存、打印测量数据.4.2基于Ⅶ的应用软件设计PC机上运行的应用软件利用MSComm6.o控件由VisualBasic6.o开发写成[7],对串行口的设置情况是:”波特率”为2400bit/s,无”校验位”,”数据位”为8,”停止位”为1.通信的内容不是很复杂,拟定了一个简单而又能满足系统设计要求的通信协议(该通信协议的具体内容从略).该应用软件运行后出现如图5所示的人机界面.图5PC机上应用软件运行后的界面5测试结果与结论根据本设计制作了”200通道AD转换器”的实物,通过对制作的实物进行的测试结果表明,本系统完全实现了设计任务所提出的各项功能要求,达到甚至超过了设计任务所提出的技术指标要求,并经工况现场试用表明,系统具有较好的可靠性1238电子器件第30卷该AD转换器通过RS232串行接口接收控制命令,当接收到”开始测量命令”时,自动完成初始化过程并开始测量;当接收到”结束测量命令”时,该AD转换器通过RS232串行接口传送测量结果.该AD转换器能对200个不确定波形的输入信号进行”脉冲宽度”的测量,测量精度达到o.01ms,超过了设计任务所提出的测量精度o.1ms.该AD转换器的”脉冲宽度”测量上限是81.91ms,而设计任务说明在正常情况下,输人信号的”脉冲宽度”最大值为80ms.非正常情况下”脉冲宽度”可能大于80ms,当出现”脉冲宽度”大于80ms时,测量结果是一个固定值,该固定值为81.91ms.个方面的原因.一方面,虽然麟的开发是在一定该AD转换器具有较好的可靠性是基于以下两入到应用系统中时,实际上删是硬件电路,所以的软件平台下完成的,但当H’GA的设计完成后被嵌相对于具有CPU的电路而言,FPGA电路具有较高的可靠性.另一方面,在本设计中,微控制器MCU的软件设计是基于嵌入式实时操作系统RTx51而完成的,并且在硬件电路上设置了看门狗电路,所以本系统中的MCU具有较好的抗干扰性能.实际上,本文所论述的是一个具有RS232串行接口的”200通道AD转换器”,是基于FPGA和MCU而设计的.FPGA芯片是一种新型电子器件,在现代电子系统中得到了越来越广泛的应用.就目前的技术发展状况而言,将微处理器(microproces—sor)嵌入FPGA需要消耗较多的资源,对一些门数万 方数据较少的FPGA来说是不可能的.在未来一段较长的时间内,人们将更多地采用微控制器MCU与FP—GA相结合的方法设计电子系统.在由微控制器MCU与FPGA相结合的电子系统实现方案中,微控制器MCU主要负责键盘、显示、计算、通信、控制和系统的协调,而FPGA主要负责高速、高精度和高稳定性等技术指标的实现,也就是说,由微控制器MCU负责系统功能上的设计,FPGA负责系统的技术指标上的实现.所以,在现代电子系统设计中,采用基于FPGA和MCU的设计方案是一种比较好的选择.参考文献:[1]欧伟明,周春临,瞿遂春.电子信息系统设计[M].西安:西安电子科技大学出版社,2005,第3章:55—59.[2]万太福,唐贤水.可编程序控制器及其应用[M].重庆:重庆大学出版社,1994,第三章:25—26.[3]韦建敏,杨永明,郭巧惠.基于FPGA的实时心电信号处理系统设计[J].电子器件,2005,28(3):581—583.[4]潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2002,第2章:27—29.[5]徐爱钧,彭秀华.Keilcx51V7.o单片机高级语言编程与肛vision2应用实践[M].北京:电子工业出版社,2005,第12章:664—696.[6]KE工Lsoftware,Inc.《RTx51Real—timeKemel》[EB/oL].ht—tp://vnvw.keil.com/rtx51,2004.[7]蔡怀宇,黄战华,孙达志,等.Pc机与多台单片机并行通信接口的设计[J].计算机应用研究,2003,20(2):66—69.基于FPGA和MCU的200通道A/D转换器的设计
作者:作者单位:刊名:英文刊名:年,卷(期):被引用次数:
欧伟明, OU Wei-ming
湖南工业大学,电气与信息工程学院,湖南,株洲,412008电子器件
CHINESE JOURNAL OF ELECTRON DEVICES2007,30(4)1次
1.蔡怀宇;黄战华;孙达志 PC 机与多台单片机并行通信接口的设计[期刊论文]-计算机应用研究 2003(02)2.KEIL Software Inc RTX51 Real-time Kernel 2004
3.徐爱钧;彭秀华 Keil Cx51 V7.0单片机高级语言编程与μVision2应用实践 20054.潘松;黄继业 EDA技术实用教程 2002
5.韦建敏;杨永明;郭巧惠 基于FPGA 的实时心电信号处理系统设计[期刊论文]-电子器件 2005(03)6.万太福;唐贤水 可编程序控制器及其应用 19947.欧伟明;周春临;瞿遂春 电子信息系统设计 2005
1.孙涛.张华春 基于MIL-STD-1553B协议的远程终端的FPGA实现[期刊论文]-电子器件 2010(3)
本文链接:http://d.g.wanfangdata.com.cn/Periodical_dzqj200704027.aspx