1、基于USB2.0MIT-BIH心电数据回放系统的设计 摘要:设计基于USB2.0的D/A转换模块,文中对模块的主要芯片、主要原理、接口函数及主要性能进行了介绍。通过取一心电数据通过vc编程将其进行D/A转换,输出波形与原始波形进行比较,较好的实现了回放功能。由此可见,该模块的性能指标达到了设计要求。心电数据回放很好的实现,为一系列心电算法的仿真实践及实时心电监护仪的研制打好了基础。关键词:USB2.0 ; D/A转换模块; MIT-BIH; 心电数据库 中图分类号:TP335+.4 R318.6 文献标志码:ADesign Of MIT-BIH ECG Datebase Redisplay S
2、ystem Based On USB 2.0 Abstract: This design is based on the D/A converter module of USB2.0 whose main chips, important principles, interface functions and major performance are introduced in this papers. With the VC program, we can get a better data redisplay after putting one of the ECG Databases
3、to the D/A converter and comparing the output waveform with the original one. Our work would be very useful for promoting a series of simulation practices of ECG calculations and the development of ECG Monitor.Keywords: USB2.0; D/A converter module; MIT-BIH; ECG Database0前言回放系统的设计包括硬件的设计及软件编程的实现两大部分
4、,在硬件系统设计中应用基于USB2.0协议的微控制器对其它芯片进行控制,在上位机的软件编程下实现MIT-BIH心电数据库的回放。所谓心电数据的回放就是将原有的存储的数字心电信号,根据其存储的格式,利用设计的系统通过D/A转换最终从终端回放出模拟信号。1 系统工作原理和硬件设计上位机预先对心电数据进行处理,然后通过USB总线不断向端点FIFO中发送12位数据,CY7C68013通过GPIF将内部端点FIFO中的数据连续不丢失的传递到外部高速缓存器FIFO中,DAC7613E在CPLD逻辑时序控制下对输入的信号进行数模转换。具体模块功能如图1所示。图1 高速数据回放系统结构框图Fig.1 high
5、-speed data Redisplay system structure diagram1.1 接口电路和D/A转换模块电路选用EZ-USB FX2系列中CY7C68013作为数据传输的接口芯片,其GPIF引擎具有自动传输数据特性,使外围设备和主机通过CY7C68013可以无缝,高速地传输数据。其核心是一个可编程状态机,负责将端点FIFO与外设FIFO进行逻辑连接,控制数据的读写操作,实现由硬件来完成数据的自动传输。CY7C68013内部CPU只起到下载固件代码以及在固件中触发GPIF的作用,不参与USB数据的传输。FX2这种独创性结构可使数据传输率达到56MB/s,极大地提高了传输速率。
6、最大限度地利用了USB的带宽。CY7C68013有以下主要特征: (1) 软件。8051从下载到内部RAM的程序开始运行,这个特征允许固件程序通过主机下载到芯片内部RAM中,从而方便了调试和固件的改写。 (2) 四个可编程。BULK/INTERRUPT/ISOCHRO-NOUS端点,可以是双缓冲区,三缓冲区或者四缓冲区,这样可以根据外部数据的速率调整缓冲区的宽度和深度,以适应不同的需要。(3) GPIF。允许直接连接到大多数并行接口:8位和16位;由可编程波形描述符和配置寄存器来定义波形;支持多个Ready(RDY)输入和Control(CTL)输出。DAC7613E是由BURR-BROWN公
7、司生产的一种12位数字信号输入,1路信号输出的数模转换器,在一定的温度范围输出稳定。DAC7613E接收12位并行输入数据,拥有双重缓冲的DAC逻辑输入输出,建立时间为10s。DAC7613E在双极性特性中输入范围为000H-800H输出为-2.5-0V,输入范围为800H-FFFH时输出为0-2.5V;在单极性特征中输入范围为000H-800H,输出范围为0-5V。如图2为DAC7613E在双极性状态下的工作电路。图2 DAC7613E在双极性状态下的工作电路Fig. 2 DAC7613E in bipolar state of circuit高速FIFO选用CY7C4265,它是16位16
8、k的异步FIFO。如图2所示,GPIF的数据线FD11:0与FIFO的输入数据线D11:0相连;GPIF的控制信号CTL0与FIFO的写信号线相连,当为低时,GPIF可以在每个时钟IFCLK的上升沿向FIFO中写入1个数据;FIFO的负信号线、输出允许信号线受CPLD控制,当和为低时,DAC7615E也可以在时钟RCLK的上升沿从FIFO中读取一个数据。图3 接口电路和D/A转换模块Fig. 3 interface circuit and D / A converter module2 系统软件设计2.1 CPLD逻辑控制程序设计选用Verilog HDL语言来描述CPLD(XC95144XL
9、)的逻辑控制时序。CPLD完成的功能如下:一是产生外部FIFO的读时钟信号及DAC7615E的转换时钟信号;二是接收上位机命令对DAC7615E的启动和停止进行控制;三是通过编程对D/A转换时序进行控制。2.2 FX2固件程序的设计固件是运行于USB设备中的程序代码,用于辅助硬件完成USB的功能。主要完成如下功能:一是处理USB标准请求和用户自定义请求;二是根据USB规范设置设备的各种描述符;三是初始化系统得各级中断和内部端点的配置;通过EZ-USB FX2 提供了Keil C51编译环境下编写固件程序的框架,利用现成固件程序框架函数,根据设备需求添加相应的用户代码,完成特定目的。固件框架如图
10、4所示。图4 固件框架流程图Fig. 4 firmware framework flow chart固件代码中TD_Init( )是FX2的初始化,其主要作用是初始化设备,包括端点配置和端点的FIFO传输类型。系统中端点1用来传输上位机的控制字;端口2用来接收数据,端口6用来向外部FIFO输出数据。IN07VAL=bmEP2;OUT07VAL=bmEP6; /使能端点2输入和端点6输出EP2CFG=0XEA; /端点2输入、批量传输、最大包字节为1024、双缓冲EP6CFG=0XAA; /端点6输出、批量传输、最大包字节为1024、双缓冲固件中用TD_Poll( )函数来完成系统上的D/A转换
11、以及USB主机的数据传输。主机应用程序向USB发送3个字节的数据,设备收到数据后产生端点1输出中断。发送的3个字节中,第1字节为控制字,控制字第0位默认为D/A输出数据控制位。第2字节为输出极性,第3字节为输出数据。调用完成TD_Poll( )函数后,重复执行设备请求,再次调用TD_Poll( )函数;否则检测USB核是否有USB挂起事件,若有,调用TD_Suspend( )函数,其返回为真时,检测USB核是否有重新开始事件,没有时,设备进入挂起状态,反之,调用TD_Resume( ),进行下一次循环;当TD_Suspend( )函数返回为假时,直接转入下一次循环。2.3 应用程序的设计 Wi
12、n32应用程序调用Visual C+ 6.0编写,主要功能包括心电数据的处理、检测USB设备、打开和关闭设备句柄、设置输出极性、通道和输出数据、回放并分析心电信号。VC中提供的Windows API函数可直接访问USB设备驱动程序,进而实现对USB设备硬件的访问和控制。应用程序先调用OpenDevice 函数打开USB设备,然后调用DeviceIoControl函数和USB驱动程序通信,实现数据的读写,利用VC编程将标准MIT心电信号进行处理后按照原始采样频率发送数据,实现了微秒级的心电信号的回放。退出应用程序时,调用CloseDevice函数关闭USB设备。设计中用C+语言封装了对设备的输出
13、模式函数DA_Mode及输出电压函数DA_Data,应用程序中对设备的任何控制都是通过调用这两个函数来实现的。3 心率失常数据库(MIT-BIH Arrhythmia Database)回放按照前面所设计的电路模块,在MFC中,其主要程序如下:将数据读入内存后,将两路数据在内存中进行处理,变成标准的数据: double *data,*data_2;unsigned char tempdata5; long dattemp; data=new double650000;/开辟内存空间data_2=new double650000;/开辟内存空间 /信号1的数据dattemp=tempdata1;
14、dattemp&=0x0f;/保留第2个字节的低四位dattemp=8;/将第2个字节的低四位左移8位dattemp+=tempdata0;/加上第1个字节 dattemp=1;/左移一位,11位扩充为12位datai=dattemp; /信号2的数据处理略 打开设备操作: HANDLE hDevice;/ 创建句柄 hDevice=INVALID_HANDLE_VALUE; hDevice=XT_OpenDevice(0); if (hDevice=INVALID_HANDLE_VALUE)AfxMessageBox(设备句柄无效,请检查硬件是否连接正确!);/判断句柄是否有效,如果有效打开
15、句柄,否则提示检查是否连接正确发送数据操作: DA_Mode(hDevice,1);/通道数据设为双极性模式发送起始点为offset大小,总共点数为points大小的数据: for(k=0;kpoints;k+) int temp=dataoffset+k; DA_Data(hDevice,temp);/发送数据 Dalay_us(0.0028);/以采样频率360来确定周期延时,时间单位为毫秒 最后需要关闭设备及释放内存,程序略。自MIT-BIH Arrhythmia Database中取100.dat数据,起始点为0点,终点为1440点的两个信号的原始波形与回放后波形的比较: 图5 原始波
16、形与回放波形(数据1)Fig.5 the original waveform and redisplay one (data 1) 图6 原始波形与回放波形(数据2)Fig.6 the original waveform and redisplay one (data 2)由图5与图6中的波形比较可以看出,D/A模块较好的完成了回放功能。通过示波器实时分析,回放波形周期及幅度亦满足要求,即时序性满足要求。4 结论 基于USB2.0的MIT-BIH心电数据回放系统的设计,可用于实时的心电信号的回放。该系统在DA输出速度为2000-4000次/秒,输出电压建立时间小于100微秒性能下进行数据的回放
17、。系统性能稳定,满足设计要求,在工业生产和医学研究中将有广泛的应用前景。5 参考文献:1 Jae Wook Jeon. A microprocessor course: designing and implementing personal microcomputers. IEEE Transactions onEducation, 2000, 43(4):426-433.2郑哲, 王彦君, 李佳淇等. 一种专用目标模拟器的数字电路设计. 系统工程与电子技术, 2006, 26(12): 1950-1953.2 ZHENG Zhe, WANG Yan-jun, Li Jia-qi et . A
18、 target simulator for the digital circuit design. System Engineering and Electronic Technology, 2006, 26 (12): 1950-1953.3周立功等. PDIUSBD12 USB固件编程与驱动开发. 北京航天航空大学出版社, 2003, 2. 3ZHOU Li-gong et. PDIUSBD12 USB drive firmware programming and development. Beijing aerospace University Press, 2003, 2.4 G. B
19、. Moody, R. G. Mark. The Impact of the MIT-BIH Arrhythmia Database. IEEE Eng. Med. Biol. Mag, 2001, 20(3):45-50.5宋喜国, 邓亲恺. MIT-BIH 心率失常数据库的识读及应用. 中国医学物理学杂志, 2004, 21 (4) : 230-232.5SONG Xi-guo,DENG Qin-kai. MIT-BIH arrhythmia database of readers and applications. Chinese Journal of Medical Physics, 2004, 21 (4) : 230-232.